n8n-editor-ui
Version:
Workflow Editor UI for n8n
2 lines • 43.6 kB
JavaScript
!function(){try{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).SENTRY_RELEASE={id:"n8n@2.16.1"}}catch(e){}}(),System.register(["./chunk-legacy-Dz3fjYb5.js","./vue.runtime.esm-bundler-legacy-BW6xDdqj.js","./core-legacy-VD8c7QJ-.js","./src-legacy-B67uuxhB.js","./_plugin-vue_export-helper-legacy-DFdC_I5Z.js","./users.store-legacy-azRUgFdP.js","./constants-legacy-2_ytuuS3.js","./useRootStore-legacy-CC08el-l.js","./settings.store-legacy-I6rZOvfF.js","./executions.store-legacy-Cfatr-ks.js","./usePinnedData-legacy-BfjAvFWp.js","./canvas.utils-legacy-DBwbAhDp.js","./canvas.eventBus-legacy-DR7gyyyi.js","./core-legacy-Dmlhxihn.js","./xml-legacy-jSxA5-ri.js","./VueMarkdown-legacy-0OwySplk.js","./setupPanel.store-legacy-CxgQYJWF.js","./templateTransforms-legacy-Ab-iJUKf.js"],(function(e,t){var o,n,a,r,i,s,d,c,u,l,p,f,y,g,m,v,h,w,N,k,b,I,x,T,B,H,E,C,D,_,U,O,S,W,A,P,j,V,M,R,L,F,z,$,q,Z,G,J,Q,K,Y,X,ee,te,oe,ne,ae,re,ie,se,de,ce,ue,le,pe,fe,ye,ge,me,ve,he,we,Ne,ke,be,Ie,xe,Te,Be,He,Ee,Ce,De,_e,Ue,Oe,Se,We,Ae,Pe,je,Ve,Me,Re,Le,Fe,ze,$e,qe,Ze,Ge,Je,Qe,Ke,Ye,Xe,et,tt,ot,nt,at,rt,it,st,dt,ct,ut,lt,pt,ft,yt,gt,mt,vt,ht,wt,Nt,kt,bt,It,xt,Tt,Bt,Ht,Et,Ct,Dt,_t,Ut,Ot,St;function Wt(){return{uniqueNodeName:function(e,t=[]){const{canvasNames:o}=Ne();if(!o.has(e)&&!t.includes(e))return e;const n=Ie().allNodeTypes.reduce(((e,t)=>{if("string"!=typeof t.defaults.name)throw new Error("Expected node name default to be a string");return/\d$/.test(t.defaults.name)&&e.push(t.defaults.name),e}),[]).find((t=>e.startsWith(t)));if(n){let a="",r=1;const i=e.split(n).pop(),s=i?.[i.length-1];for(s&&Number.isInteger(Number(s))&&(r=parseInt(s,10),e=e.slice(0,-1)),a=e;o.has(a)||t.includes(a);)a=e+r++;return a}if(/^\d+-?\d*$/.test(e)){let n="",a=1;const r=e.match(/(?<base>\d+)-?(?<suffix>\d*)/);if(!r?.groups)throw new Error("Failed to find match for unique name");for(""!==r?.groups?.suffix&&(a=parseInt(r.groups.suffix,10)),n=r.groups.base;o.has(n)||t.includes(n);)n=r.groups.base+"-"+a++;return n}let a="",r=1;const i=e.match(/(?<base>.*\D+)(?<suffix>\d*)/);if(!i?.groups)throw new Error("Failed to find match for unique name");for(""!==i?.groups?.suffix&&(r=parseInt(i.groups.suffix,10)),a=i.groups.base;o.has(a)||t.includes(a);)a=i.groups.base+r++;return a}}}function At(){return{options:l(Tt)}}return e({S:function(){return l(xt)},b:function(){const{options:e}=At(),t=e?.defaultLanguage??"en";return{t:function(o){const n=e?.i18n?.[t]?.[o];return i(n)?n.value:n??o},te:function(o){return!!e?.i18n?.[t]?.[o]}}},d:function(e){const t=Ce();let o={id:t,sender:"bot",text:e};try{const n=JSON.parse(e);n.type===Bt&&(o={id:t,sender:"bot",type:"component",key:It.WITH_BUTTONS,arguments:{text:n.text,buttons:n.buttons,blockUserInput:n.blockUserInput}})}catch{}return o},f:function(e){return"component"===e.type&&e.key===It.WITH_BUTTONS&&"boolean"==typeof e.arguments?.blockUserInput&&e.arguments?.blockUserInput},t:function(){const e=Ye(),t=Ne(),o=A(),n=le(),a=j(),r=he(),i=ce(),s=Ie(),d=be(),u=Xe(),l=ye(),p=st(),y=et(),g=oe(),m=Dt(),h=Ut(),w=ve(),N=V(),k=mt(),b=f((()=>t.workflowId?ge(we(t.workflowId)):void 0)),I=H(),x=F(),T=q(),B=fe(),C=de(),D=M(),O=E(),{uniqueNodeName:G}=Wt(),ue=U(),He=_(),Ee=c([0,0]),Ce=!!localStorage.getItem("NodeView.preventOpeningNDV"),Ue=f((()=>t.workflow)),Ae=f((()=>t.workflowObject)),Ve=f((()=>t.workflowTriggerNodes));function Le(e,{trackHistory:t=!1,trackBulk:o=!0}={}){t&&o&&a.startRecordingUndo(),e.forEach((({id:e,position:o})=>{$e(e,o,{trackHistory:t})})),t&&o&&a.stopRecordingUndo()}function $e(e,t,{trackHistory:o=!1}={}){const n=b?.value?.getNodeById(e);if(!n)return;const r=[...n.position],i=[t.x,t.y];b?.value?.setNodePositionById(e,i),o&&a.pushCommandToUndo(new R(n.name,r,i,Date.now()))}function Je(e,t,o,{trackHistory:n=!1,trackBulk:r=!0}={}){const i=b?.value?.getNodeById(e);i&&(n&&r&&a.startRecordingUndo(),b?.value?.setNodeParameters({name:i.name,value:o}),n&&a.pushCommandToUndo(new z(e,t,o,Date.now())),n&&r&&a.stopRecordingUndo())}async function Ke(e,o,{trackHistory:n=!1,trackBulk:r=!0,showErrorToast:s=!0}={}){if(e===o)return!1;n&&r&&a.startRecordingUndo(),o=G(o);const d=t.cloneWorkflowObject();try{d.renameNode(e,o)}catch(c){return s&&x.showMessage({type:"error",title:c.message,message:c.description}),!1}return n&&a.pushCommandToUndo(new ee(e,o,Date.now())),t.renameNodeSelectedAndExecution({old:e,new:o}),b?.value?.setNodes(Object.values(d.nodes)),b?.value?.setConnections(d.connectionsBySourceNode),i.activeNodeName===e&&i.setActiveNodeName(o,"other"),n&&r&&a.stopRecordingUndo(),o}function ct(e,{trackHistory:t=!1}={}){const o=b?.value?.getNodeById(e);if(!o)return;const n=b.value?.outgoingConnectionsByNodeName(o.name)??{},r=b.value?.incomingConnectionsByNodeName(o.name)??{};for(const[i,s]of Object.entries(r))for(const e of s.at(0)??[]){const o=b?.value?.getNodeByName(e.node)?.id;if(o)for(const r of n[i]?.at(0)??[]){const n=b?.value?.getNodeByName(r.node)?.id;n&&(t&&a.pushCommandToUndo(new Z([{node:e.node,type:i,index:e.index},{node:r.node,type:i,index:r.index}],Date.now())),Tt({source:o,sourceHandle:rt({mode:Be.Output,type:i,index:e.index}),target:n,targetHandle:rt({mode:Be.Input,type:i,index:r.index})}))}}}function ut(e,{trackHistory:o=!1,trackBulk:n=!0}={}){const i=b?.value?.getNodeById(e);i&&(o&&n&&a.startRecordingUndo(),r.lastInteractedWithNodeId===e&&(r.lastInteractedWithNodeId=void 0),ct(e,{trackHistory:o}),Bt(e,{trackHistory:o,trackBulk:!1}),t.removeNodeExecutionDataById(e),b?.value?.removeNodeById(e),o&&(a.pushCommandToUndo(new Q(i,Date.now())),n&&a.stopRecordingUndo()),function(e){const o=b?.value?.getNodeById(e);o&&("n8n-nodes-base.stickyNote"===o.type?C.track("User deleted workflow note",{workflow_id:t.workflowId}):(D.run("node.deleteNode",{node:o}),C.track("User deleted node",{node_type:o.type,workflow_id:t.workflowId})))}(e))}function lt(e,{trackHistory:t=!0,trackBulk:o=!0}={}){t&&o&&a.startRecordingUndo(),e.forEach((e=>ut(e,{trackHistory:t,trackBulk:!1}))),t&&o&&a.stopRecordingUndo()}function pt(e,o,{trackHistory:n=!1,trackBulk:r=!0,replaceInputs:i=!0,replaceOutputs:s=!0}={}){const d=b?.value?.getNodeById(e),c=b?.value?.getNodeById(o);if(!d||!c)return;const u=t.workflowObject,l=i?(0,St.default)(u.getParentNodes(d.name,"ALL",1)):[],p=s?(0,St.default)(u.getChildNodes(d.name,"ALL",1)):[],f=[...u.getConnectionsBetweenNodes(l,[d.name]),...u.getConnectionsBetweenNodes([d.name],p)];n&&r&&a.startRecordingUndo();for(const t of f){const e=b?.value?.getNodeByName(t[0].node),o=b?.value?.getNodeByName(t[1].node);if(!e||!o)continue;Et(ot(e,o,t),{trackHistory:n,trackBulk:!1});const a={...t[0],node:t[0].node===d.name?c.name:t[0].node},r={...t[1],node:t[1].node===d.name?c.name:t[1].node},i=e.name===d.name?c:e,s=o.name===d.name?c:o;if(!Pt(i,s,a,r))continue;const u=ot(i,s,[a,r]);Tt(u,{trackHistory:n}),_t(u.target),At(u.source)}n&&r&&a.stopRecordingUndo()}function ft(e,t){i.setActiveNodeName(e,t)}function yt(e,t){return s.getNodeType(e,t)??s.communityNodeType(e)?.nodeDescription??{properties:[],displayName:e,name:e,group:[],description:"",version:t??1,defaults:{},inputs:[],outputs:[]}}async function gt(e,{viewport:t,...o}={}){let n,i=o.position;const d=[],c=e.map((e=>{const t=e.typeVersion??function(e){let t=e.defaultVersion;return void 0===t&&(t=Array.isArray(e.version)?e.version.slice(-1)[0]:e.version),t}(yt(e.type));return{...e,typeVersion:t}}));await async function(e){const t=s.allNodeTypes,o=[];t.forEach((t=>{const n=Array.isArray(t.version)?t.version:[t.version];e.find((e=>e.type===t.name&&n.includes(e.typeVersion)))&&!t.hasOwnProperty("properties")&&o.push({name:t.name,version:Array.isArray(t.version)?t.version.slice(-1)[0]:t.version})})),o.length>0&&await s.getNodesInformation(o)}(c),o.trackHistory&&o.trackBulk&&a.startRecordingUndo();for(const[a,r]of c.entries()){const{isAutoAdd:e,placeholder:s,openDetail:c,actionName:l,positionOffset:p,...f}=r,y=f.position??i,g=y&&p?[y[0]+p[0],y[1]+p[1]]:y,m=yt(f.type,f.typeVersion);try{const i=ht({...f,position:g},m,{...o,...0===a?{viewport:t}:{},openNDV:c,isAutoAdd:e,actionName:l});n=i,r.placeholder&&(i.placeholder=!0),d.push(i)}catch(u){x.showError(u,I.baseText("error")),console.error(u);continue}i=[n.position[0]+2*K[0]+16,n.position[1]]}return n&&function(e){const t=Ae.value.getParentNodesByDepth(e.name,1);t.length>1&&t.slice(1).forEach(((e,t)=>{const o=b?.value?.getNodeByName(e.name);o&&$e(o.id,{x:o.position[0],y:o.position[1]+100*(t+1)})}))}(n),o.trackHistory&&o.trackBulk&&a.stopRecordingUndo(),o.keepPristine||r.markStateDirty(),d}function ht(o,n,d={}){!function(e){if(void 0!==e.maxNodes&&T.getNodeTypeCount(e.name)>=e.maxNodes)throw new Error(I.baseText("nodeView.showMessage.showMaxNodeTypeError.message",{adjustToNumber:e.maxNodes,interpolate:{nodeTypeDataDisplayName:e.displayName}}))}(n);const c=function(t,o,n={}){const a=t.id??B.assignNodeId(t),r=t.name??B.getDefaultNodeName(t)??o.defaults.name,i=t.type??o.name,d=t.typeVersion,c=n.forcePosition&&t.position?t.position:Nt(t,o,{viewport:n.viewport}),u=t.disabled??!1,l=t.parameters??{},p={...t,id:a,name:r,type:i,typeVersion:d,position:c,disabled:u,parameters:l,placeholder:t.placeholder};return function(t){t.name=G(I.localizeNodeName(e.defaultLocale,t.name,t.type))}(p),s.getIsNodeInstalled(p.type)&&(wt(p,o),kt(p,o)),p}(o,n,{viewport:d.viewport});if(!c)throw new Error(I.baseText("nodeViewV2.showError.failedToCreateNode"));return b?.value?.addNode(c),d.trackHistory&&a.pushCommandToUndo(new J(c,Date.now())),d.isAutoAdd||function(e,t={}){const o=r.lastInteractedWithNode;if(!o)return;const n=qe(e.type),a=o.id,i=r.lastInteractedWithNodeConnection,s=r.lastInteractedWithNodeHandle;if(n&&i){const{type:t}=nt(s),o=e.id,n=rt({mode:Be.Input,type:t,index:0});return Tt({target:i.target,targetHandle:i.targetHandle,source:o,sourceHandle:n}),Et(i),void Tt({source:i.source,sourceHandle:i.sourceHandle,target:o,targetHandle:n})}const d={trackHistory:t.trackHistory,trackBulk:!1};if(s){const{type:t,mode:o}=nt(s),n=e.id,r=rt({mode:Be.Input,type:t,index:0});o===Be.Input?Tt({source:n,sourceHandle:r,target:a,targetHandle:s},d):Tt({source:a,sourceHandle:s,target:n,targetHandle:r},d)}else Tt({source:a,sourceHandle:rt({mode:Be.Output,type:Me.Main,index:0}),target:e.id,targetHandle:rt({mode:Be.Input,type:Me.Main,index:0})},d);i&&(Et(i,d),b?.value?.getNodeById(i.target)&&Tt({source:e.id,sourceHandle:rt({mode:Be.Input,type:Me.Main,index:0}),target:i.target,targetHandle:i.targetHandle},d))}(c,d),v((()=>{d.keepPristine||r.markStateDirty(),t.setNodePristine(c.name,!0),B.matchCredentials(c),B.updateNodeParameterIssues(c),B.updateNodeCredentialIssues(c),B.updateNodeInputIssues(c);const e=c.type===Pe,o=e||!d.openNDV||Ce?void 0:h.isNdvInFocusPanelEnabled&&N.focusPanelActive&&void 0===N.resolvedParameter?"focus_panel":h.isZoomedViewEnabled?"zoomed_view":"ndv";d.telemetry&&function(e,o,n){e.type===Pe?C.track("User inserted workflow note",{workflow_id:t.workflowId}):function(e,o,n){const a=e.parameters,i="string"==typeof a?.resource?a.resource:void 0,s="string"==typeof a?.operation?a.operation:void 0;p.onNodeAddedToCanvas({node_id:e.id,node_type:e.type,node_version:e.typeVersion,is_auto_add:o.isAutoAdd,workflow_id:t.workflowId,drag_and_drop:o.dragAndDrop,input_node_type:r.lastInteractedWithNode?r.lastInteractedWithNode.type:void 0,resource:i,operation:s,action:o.actionName,next_view_shown:n})}(e,o,n)}(c,d,o),e||(D.run("nodeView.addNodeButton",{nodeTypeName:c.type}),"focus_panel"===o||("zoomed_view"===o?h.setNodeNameToBeFocused(c.name):"ndv"===o&&i.setActiveNodeName(c.name,"added_new_node")))})),c}function wt(e,t){e.parameters=Re(t?.properties??[],e.parameters,!0,!1,e,t)??{}}function Nt(e,t,o={}){const n=r.lastInteractedWithNode,a=r.lastInteractedWithNodeConnection,i=r.lastInteractedWithNodeHandle,{type:d,index:c}=nt(i??a?.sourceHandle??""),u=d===Me.Main?K:X,l=[u[0]/2,u[1]/2];let p=e.position;if(p)return me(b?.value?.allNodes??[],p,{offset:l,size:u,viewport:o.viewport,normalize:!1});if(n){const i=s.getNodeType(n.type,n.typeVersion),y=Ae.value.getNode(n.name),g=r.lastCancelledConnectionPosition;if(g){const e=d===Me.Main?0:-u[0]/2,t=d===Me.Main?-u[1]/2:0;p=[g[0]+e,g[1]+t],r.lastCancelledConnectionPosition=void 0}else if(i&&y){if(qe(e.type)&&a&&d===Me.AiTool){const e=b?.value?.getNodeById(a.target);if(e){const t=e.position[1],a=n.position[1],r=(a-t)/2,i=t+r;if(p=[n.position[0]-L[0]/2,i],Math.abs(i-a)<$){const e=$/2;$e(n.id,{x:n.position[0],y:n.position[1]+(r>0?e:-e)},{trackHistory:!0})}return me(b?.value?.allNodes??[],p,{offset:l,size:u,viewport:o.viewport})}}const r=ze(Ae.value,y,i),s=Ge(r),g=(s||[]).filter((e=>e!==Me.Main)),m=Ze(Ae.value,y,i),v=Ge(m).filter((e=>e===Me.Main));let h=0;if(a){let e=!1;"string"==typeof t.inputs?e=!0:Array.isArray(t.inputs)&&(e=Ge(t.inputs).filter((e=>e!==Me.Main)).length>0);const o=e?L:K,a=$+(e?L[0]-K[0]:0);!function(e,t,{trackHistory:o=!1,nodeSize:n=K}){const a=b?.value?.getNodeByName(e);if(!a)return;const r=[a.position[0]+$,a.position[1]];if(function(e,t,o){const n=16,a={x:e[0],y:e[1],width:t[0]+n,height:t[1]};for(const r of o)if("n8n-nodes-base.stickyNote"!==r.type&&se(a,bt(r)))return!1;return!0}(r,n,(b?.value?.allNodes??[]).filter((t=>t.name!==e&&"n8n-nodes-base.stickyNote"!==t.type))))return;const{nodesToMove:i,stickiesToStretch:s,stickiesToMoveAndStretch:d,stickyAssociatedNodes:c}=It(r,e,n);for(const u of i)$e(u.id,{x:u.position[0]+t,y:u.position[1]},{trackHistory:o});for(const u of d){const e=b?.value?.getNodeById(u.id);e&&xt(e,r,n,c.get(u.id)??[],{trackHistory:o})}for(const u of s)xt(u,r,n,c.get(u.id)??[],{trackHistory:o})}(n.name,a,{trackHistory:!0,nodeSize:o})}v.length>1&&(h=ke(v.length,K[1],16)[c]);let w=[];try{w=Ze(Ae.value,e,t)}catch(f){}const N=Ge(w),k={[Me.AiLanguageModel]:2*u[0],[Me.AiMemory]:u[0]}[d]??0;if(N.length>0&&N.every((e=>e!==Me.Main))){const e=g.findIndex((e=>w[0]===e)),t=Math.max(g.length+1,1);p=[n.position[0]+L[0]/t*(e+1)-u[0]/2-k,n.position[1]+$]}else{let e=$;s.find((e=>e!==Me.Main))&&(e+=140),p=[n.position[0]+e,n.position[1]+h],a&&(p=[p[0],n.position[1]])}}}return p||(p=s.isTriggerNode(e.type)&&0===Ve.value.length?[0,0]:Ee.value),me(b?.value?.allNodes??[],p,{offset:l,size:u,viewport:o.viewport})}function kt(e,t){Qe(e,t),["n8n-nodes-base.webhook","n8n-nodes-base.formTrigger","@n8n/n8n-nodes-langchain.mcpTrigger"].includes(e.type)&&""===e.parameters.path&&(e.parameters.path=e.webhookId)}function bt(e){return"n8n-nodes-base.stickyNote"===e.type?{x:e.position[0],y:e.position[1],width:e.parameters.width||K[0],height:e.parameters.height||K[1]}:{x:e.position[0],y:e.position[1],width:K[0],height:K[1]}}function It(e,t,o=K){const n=b?.value?.allNodes??[],a=e[0],r=e[1],i=2*K[1],s=e=>e.position[0]+K[0]>a||e.position[0]>=a,d=(e,t,o,n,a)=>((e,t,o)=>e.position[0]>=t.position[0]&&e.position[0]+K[0]<=t.position[0]+o.width&&e.position[1]>=t.position[1]&&e.position[1]+K[1]<=t.position[1]+o.height)(e,t,o)||((e,t,o)=>Math.abs(e.x-t.x)<=o.x&&Math.abs(e.y-t.y)<=o.y)((e=>({x:e.position[0]+K[0]/2,y:e.position[1]+K[1]/2}))(e),n,a),c=(e,t,o,n,a)=>a.filter((a=>d(a,e,t,o,n))),u=n.filter((e=>"n8n-nodes-base.stickyNote"!==e.type&&e.name!==t&&(e=>Math.abs(e.position[1]-r)<=i)(e)&&s(e))),l=new Set(u.map((e=>e.name)));for(const I of u)T.getConnectedNodes("downstream",Ae.value,I.name).filter((e=>{const t=b?.value?.getNodeByName(e);return!!t&&s(t)})).forEach((e=>l.add(e)));const p=n.filter((e=>"n8n-nodes-base.stickyNote"!==e.type&&l.has(e.name))),f=[],y=[],g=[],m=new Map,v=n.filter((e=>e.type===Pe)),h=Math.min(r,...p.map((e=>e.position[1]))),w=Math.max(r+o[1],...p.map((e=>e.position[1]+K[1]))),N=b?.value?.getNodeByName(t),k={x:o[0]/2,y:o[1]/2};for(const b of v){const e=bt(b),t=b.position[0],n=t+e.width,r=b.position[1],i=!(r+e.height<=h||r>=w),s=a>=t&&a<=n,u={x:b.position[0]+e.width/2,y:b.position[1]+e.height/2};if(N&&d(N,b,e,u,k)&&s){const t=c(b,e,u,k,p);m.set(b.id,t),f.push(b);continue}const l=c(b,e,u,k,p);l.length>0&&m.set(b.id,l);const v=l.length>0;i&&(v?a+o[0]>t+2*$/3?g.push(b):y.push(b):s?f.push(b):t>=a&&y.push(b))}return{nodesToMove:[...p,...y,...g],stickiesToStretch:f,stickiesToMoveAndStretch:g,stickyAssociatedNodes:m}}function xt(e,t,o,n,{trackHistory:a=!1}){const r=bt(e),i=e.position[0],s=i+r.width;let d=t[0]-20,c=t[0]+o[0]+20;for(const f of n){const e=b?.value?.getNodeById(f.id);if(!e)continue;const t=e.position[0]-20,o=e.position[0]+K[0]+20;d=Math.min(d,t),c=Math.max(c,o)}const u=Math.min(i,d),l=Math.max(s,c)-u,p={...e.parameters,width:l};Je(e.id,e.parameters,p,{trackHistory:a,trackBulk:!1}),u!==i&&$e(e.id,{x:u,y:e.position[1]},{trackHistory:a})}function Tt(e,{trackHistory:t=!1,keepPristine:o=!1}={}){const n=b?.value?.getNodeById(e.source),i=b?.value?.getNodeById(e.target);if(!n||!i)return;t&&a.pushCommandToUndo(new Z(at(n,i,e),Date.now()));const s=at(n,i,e);Pt(n,i,s[0],s[1])&&(b.value?.addConnection({connection:s}),v((()=>{B.updateNodeInputIssues(n),B.updateNodeInputIssues(i)})),o||r.markStateDirty())}function Bt(e,{trackHistory:t=!1,trackBulk:o=!0}={}){const n=b?.value?.getNodeById(e);if(!n)return;t&&o&&a.startRecordingUndo();const r=(0,Ot.default)(b.value?.connectionsBySourceNode??{});for(const a of Object.keys(r)){const e=b?.value?.getNodeByName(a);if(e)for(const o of Object.keys(r[a]))for(const i of Object.keys(r[a][o])){const s=r[a][o][parseInt(i,10)]??[];for(const a of Object.keys(s)){const r=s[parseInt(a,10)];if(!r)continue;const d=b?.value?.getNodeByName(r.node);!d||d.id!==n.id&&e.name!==n.name||Et({source:e.id,sourceHandle:rt({mode:Be.Output,type:o,index:parseInt(i,10)}),target:d.id,targetHandle:rt({mode:Be.Input,type:r.type,index:r.index})},{trackHistory:t,trackBulk:!1})}}}b.value?.removeAllNodeConnection(n),t&&o&&a.stopRecordingUndo()}function Et(e,{trackHistory:t=!1,trackBulk:o=!0}={}){const n=b?.value?.getNodeById(e.source),r=b?.value?.getNodeById(e.target);if(!n||!r)return;const i=at(n,r,e);t&&o&&a.startRecordingUndo(),b.value?.removeConnection({connection:i}),v((()=>{B.updateNodeInputIssues(n),B.updateNodeInputIssues(r)})),t&&(a.pushCommandToUndo(new Y(i,Date.now())),o&&a.stopRecordingUndo())}function Ct(e,t){const o=b?.value?.getNodeById(e),n=t===Be.Input;o&&s.getNodeType(o.type,o.typeVersion)&&it(b?.value?.connectionsBySourceNode??{},b?.value?.allNodes??[]).forEach((t=>{if(n?t.target===e:t.source===e){const e=n?t.source:t.target,a=b?.value?.getNodeById(e);if(!a||!t.data)return;const[r,i]=n?[a,o]:[o,a];Pt(r,i,t.data.source,t.data.target)||v((()=>Et(t)))}}))}function _t(e){return Ct(e,Be.Input)}function At(e){return Ct(e,Be.Output)}function Pt(e,t,o,n){const a=[Pe],r=e=>_e(e.type)&&!Ie().getIsNodeInstalled(e.type),i=r(e),d=r(t),c=e=>s.getNodeType(e.type,e.typeVersion)??s.communityNodeType(e.type)?.nodeDescription,u=(e,t)=>e.filter((e=>("string"==typeof e?e:e.type)===t)),l=e=>{if(e&&"object"==typeof e&&"filter"in e)return e.filter};if(o.type!==n.type)return!1;if(a.includes(e.type)||a.includes(t.type))return!1;const p=c(e),f=Ae.value.getNode(e.name);if(!f)return!1;let y=[];p&&(y=Ze(Ae.value,f,p)||[]);const g=u(y,o.type),m=g.length>0,v=o.index<g.length,h=l(v?g[o.index]:void 0);if(!(m&&v||i))return!1;const w=c(t),N=Ae.value.getNode(t.name);if(!N)return!1;let k=[];w&&(k=ze(Ae.value,N,w)||[]);const b=u(k,n.type),T=b.length>0,B=n.index<b.length;function H(e,t){const o=!!e?.nodes?.length&&!e.nodes.includes(t),n=!!e?.excludedNodes?.length&&e.excludedNodes.includes(t);return o||n}const E=H(l(B?b[n.index]:void 0),e.type),C=H(h,t.type);return E||C?(x.showToast({title:I.baseText("nodeView.showError.nodeNodeCompatible.title"),message:I.baseText("nodeView.showError.nodeNodeCompatible.message",{interpolate:{sourceNodeName:e.name,targetNodeName:t.name}}),type:"error",duration:5e3}),!1):!!(T&&B||d)}async function jt(e,{trackBulk:t=!0,trackHistory:o=!1,keepPristine:n=!1}={}){await v(),t&&o&&a.startRecordingUndo();for(const a of e)Tt(a,{trackHistory:o,keepPristine:n});t&&o&&a.stopRecordingUndo(),n||r.markStateDirty()}function Vt(){if(p.setNodeCreatorState({createNodeActive:!1}),t.executionWaitingForWebhook)try{t.removeTestWebhook(t.workflowId)}catch(e){}t.resetWorkflow(),o.resetState(),t.currentWorkflowExecutions=[],o.setActiveExecutionId(void 0),t.lastSuccessfulExecution=null,r.resetLastInteractedWith(),r.markStateClean(),y.activeExecution=null,B.credentialsUpdated.value=!1}async function Mt(e){const{workflowDocumentStore:t}=await T.initState(e,S());return e.nodes.forEach((e=>{const t=yt(e.type,e.typeVersion),o=s.getIsNodeInstalled(e.type);B.matchCredentials(e),o&&(wt(e,t),kt(e,t))})),t.setNodes(e.nodes),t.setConnections(e.connections),{workflowDocumentStore:t}}async function Rt(o,i,{importTags:d=!0,trackBulk:c=!0,trackHistory:p=!0,viewport:f,regenerateIds:y=!0,trackEvents:g=!0,setStateDirty:m=!0}={}){if(r.resetLastInteractedWith(),!o.hasOwnProperty("nodes")||!o.hasOwnProperty("connections"))return{};try{const v={};if(o.nodes){const e=new Set(o.nodes.map((e=>e.name)));o.nodes.forEach((t=>{if(!t.name){const o=G(s.getNodeType(t.type)?.displayName??t.type,Array.from(e));t.name=o,e.add(o)}if(t.webhookId&&je.includes(t.type)&&t.webhookId&&(B.assignWebhookId(t),t.parameters.path?t.parameters.path=t.webhookId:t.parameters.options?.path&&(t.parameters.options.path=t.webhookId)),t.id){const e=t.id;if(y){const o=B.assignNodeId(t);v[o]=e}}else B.assignNodeId(t)}))}!function(e){if(e?.nodes)for(const t of e.nodes)if(t.credentials)for(const[e,o]of Object.entries(t.credentials))"string"!=typeof o&&null!==o.id&&(n.getCredentialById(o.id)||delete t.credentials[e])}(o);try{if(g){const n=JSON.stringify(Se(o,T.getNodeTypes(),{nodeIdMap:v,sourceInstanceId:o.meta&&o.meta.instanceId!==e.instanceId?o.meta.instanceId:"",isCloudDeployment:u.isCloudDeployment}).nodeGraph);"paste"===i?C.track("User pasted nodes",{workflow_id:t.workflowId,node_graph_string:n}):"duplicate"===i?C.track("User duplicated nodes",{workflow_id:t.workflowId,node_graph_string:n}):C.track("User imported workflow",{source:i,workflow_id:t.workflowId,node_graph_string:n})}}catch{}return T.updateNodePositions(o,me(Ue.value.nodes,Ee.value,{...o.nodes&&o.nodes.length>1?{size:ae(o.nodes)}:{},viewport:f})),await async function(o,{trackBulk:n=!0,trackHistory:i=!1,viewport:d=te,setStateDirty:c=!0}={}){const u={},l=new Set((o.nodes??[]).map((e=>e.name)));if(!o.nodes)throw new Error(I.baseText("nodeView.noNodesGivenToAdd"));const p=T.getNodeTypesMaxCount();let f,y;const g=[];await B.loadNodesProperties(o.nodes.map((e=>({name:e.type,version:e.typeVersion})))),o.nodes.forEach((t=>{if(void 0!==p[t.type]){if(p[t.type].exist>=p[t.type].max)return void(u[t.name]=p[t.type].nodeNames[0]);p[t.type].exist+=1}f=t.name;const o=I.localizeNodeName(e.defaultLocale,t.name,t.type);l.delete(f),y=G(o,Array.from(l)),l.add(y),u[f]=y,g.push(t)}));const m={},v=o.connections??{},h=g.map((e=>e.name));let w,N,k,b,H;for(w of Object.keys(v)){if(!h.includes(w))continue;const e={};for(N of Object.keys(v[w]))for(e[N]=[],k=0;k<v[w][N].length;k++){const t=[],o=v[w][N][k];if(o)for(b=0;b<o.length;b++)H=o[b],h.includes(H.node)&&t.push(H);e[N].push(t)}m[w]=e}const E=t.createWorkflowObject(g,m,!0);for(const e of Object.keys(E.nodes)){const t=E.nodes[e];s.getIsNodeInstalled(t.type)||(t.parameters=g.find((t=>t.name===e))?.parameters??t.parameters)}for(f in u){const e=u[f];e&&f!==e&&E.renameNode(f,e)}if(o.pinData){let e=!0;for(const t of Object.keys(o.pinData)){if(!e){x.showError(new Error(I.baseText("ndv.pinData.error.tooLarge.description")),I.baseText("ndv.pinData.error.tooLarge.title"));continue}const n=E.nodes[u[t]??t];if(n)try{tt(n).setData(o.pinData[t],"add-nodes"),e=!0}catch(C){e=!1,console.error(C)}}}return n&&i&&a.startRecordingUndo(),await gt(Object.values(E.nodes),{trackBulk:!1,trackHistory:i,viewport:d,keepPristine:!0}),await jt(it(E.connectionsBySourceNode,Object.values(E.nodes)),{trackBulk:!1,trackHistory:i,keepPristine:!0}),n&&i&&a.stopRecordingUndo(),c?r.markStateDirty():r.markStateClean(),{nodes:Object.values(E.nodes),connections:E.connectionsBySourceNode}}(o,{trackBulk:c,trackHistory:p,viewport:f,setStateDirty:m}),d&&u.areTagsEnabled&&Array.isArray(o.tags)&&await async function(e){const t=await l.fetchAll(),o=new Set(t.map((e=>e.name))),n=e.tags,a=n.filter((e=>!o.has(e.name))),r=[];for(const s of a){const e=l.create(s.name).then((e=>(t.push(e),e)));r.push(e)}await Promise.all(r);const i=n.reduce(((e,o)=>{const n=t.find((e=>e.name===o.name));return n&&e.push(n.id),e}),[]);b?.value?.addTags(i)}(o),o.name&&(b.value?.setName(o.name),m&&r.markStateDirty("metadata")),o}catch(v){return console.error(v),x.showError(v,I.baseText("nodeView.showError.importWorkflowData.title")),{}}}function Lt(e){const t={nodes:[],connections:{},pinData:{}},o=new Set;for(const n of e){const e=T.getNodeDataToSave(n),a=b?.value?pe(b.value.pinData)[n.name]:void 0;a&&(t.pinData[n.name]=a),e.credentials&&u.isEnterpriseFeatureEnabled[Oe.Sharing]&&(e.credentials=Ft(e.credentials,b?.value?.usedCredentials??{})),t.nodes.push(e),o.add(n.name)}return t.connections=function(e,t){const o={};for(const n of e){const e=b.value?.outgoingConnectionsByNodeName(n.name)??{};if(!Object.keys(e).length)continue;const a=zt(e,t);Object.keys(a).length&&(o[n.name]=a)}return o}(t.nodes,o),T.removeForeignCredentialsFromWorkflow(t,n.allCredentials),t}function Ft(e,t){return Object.fromEntries(Object.entries(e).filter((([,e])=>e.id&&(!t[e.id]||t[e.id]?.currentUserHasAccess))))}function zt(e,t){const o={};for(const[n,a]of Object.entries(e)){const e=a.map((e=>(e??[]).filter((e=>t.has(e.node)))));e.length&&(o[n]=e)}return o}async function $t(o){const n=De(Lt(b?.value?.getNodesByIds(o)??[]));n.meta={...n.meta,...b?.value?.meta,instanceId:e.instanceId},await O.copy(JSON.stringify(n,null,2)),C.track("User copied nodes",{node_types:n.nodes.map((e=>e.type)),workflow_id:t.workflowId})}async function qt({name:e,workflow:n}){let a=n.nodes?.map(t.convertTemplateNodeToNodeUi);k.isFeatureEnabled&&a&&(a=vt(a)),n.connections&&b.value?.setConnections(n.connections),await gt(a??[],{keepPristine:!0});const r=await o.getNewWorkflowData(e,g.currentProjectId);b.value?.setName(r.name)}function Zt(e,t,{trackHistory:o=!0,trackBulk:n=!0}={}){const i=b?.value?.getNodeById(e),s=b?.value?.getNodeById(t);if(!i||!s)return;o&&n&&a.startRecordingUndo();const[d,c]=i.position;$e(t,{x:d,y:c},{trackHistory:o}),pt(e,t,{trackBulk:!1,trackHistory:o}),ut(e,{trackHistory:o,trackBulk:!1}),r.markStateDirty(),o&&n&&a.stopRecordingUndo()}function Gt(){setTimeout((()=>dt.emit("fitView")))}function Jt(){k.isFeatureEnabled&&(N.openFocusPanel(),N.setSelectedTab("setup"))}return{lastClickPosition:Ee,editableWorkflow:Ue,editableWorkflowObject:Ae,triggerNodes:Ve,requireNodeTypeDescription:yt,addNodes:gt,addNode:ht,resolveNodePosition:Nt,revertAddNode:async function(e){const t=b?.value?.getNodeByName(e);t&&ut(t.id)},updateNodesPosition:Le,updateNodePosition:$e,tidyUp:function({result:e,source:t,target:o},{trackEvents:n=!0,trackHistory:a=!0,trackBulk:r=!0}={}){Le(e.nodes.map((({id:e,x:t,y:o})=>({id:e,position:{x:t,y:o}}))),{trackBulk:r,trackHistory:a}),n&&function({result:e,source:t,target:o}){C.track("User tidied up canvas",{source:t,target:o,nodes_count:e.nodes.length})}({result:e,source:t,target:o})},revertUpdateNodePosition:function(e,t){const o=b?.value?.getNodeByName(e);o&&$e(o.id,t)},setNodeActive:function(e,o){const n=b?.value?.getNodeById(e);n&&(t.setNodePristine(n.name,!1),ft(n.name,o))},setNodeActiveByName:ft,clearNodeActive:function(){i.unsetActiveNodeName()},setNodeSelected:function(e){if(!e)return r.lastInteractedWithNodeId=void 0,void(r.lastSelectedNode="");const t=b?.value?.getNodeById(e);t&&(r.lastInteractedWithNodeId=e,r.lastSelectedNode=t.name)},toggleNodesDisabled:function(e,{trackHistory:t=!0,trackBulk:o=!0}={}){t&&o&&a.startRecordingUndo();const n=b?.value?.getNodesByIds(e)??[];B.disableNodes(n,{trackHistory:t,trackBulk:!1}),t&&o&&a.stopRecordingUndo()},revertToggleNodeDisabled:function(e){const t=b?.value?.getNodeByName(e);t&&B.disableNodes([t])},toggleNodesPinned:function(e,t,{trackHistory:o=!0,trackBulk:n=!0}={}){o&&n&&a.startRecordingUndo();const r=(b?.value?.getNodesByIds(e)??[]).map((e=>({node:e,pinnedData:tt(e)}))).filter((({pinnedData:e})=>e.canPinNode(!0))),i=r.some((({pinnedData:e})=>!e.hasData.value));for(const{node:a,pinnedData:s}of r)if(i){const e=re().getInputDataWithPinned(a);0!==e.length&&s.setData(e,t)}else s.unsetData(t);o&&n&&a.stopRecordingUndo()},setNodeParameters:function(e,t){const o=b?.value?.getNodeById(e);o&&b?.value?.setNodeParameters({name:o.name,value:t},!0)},renameNode:Ke,revertRenameNode:async function(e,t){await Ke(e,t)},replaceNodeParameters:Je,revertReplaceNodeParameters:async function(e,t,o){Je(e,o,t)},deleteNode:ut,deleteNodes:lt,copyNodes:$t,cutNodes:async function(e){await $t(e),lt(e)},duplicateNodes:async function(e,t={}){return(await Rt(De(Lt(b?.value?.getNodesByIds(e)??[])),"duplicate",{viewport:t.viewport,importTags:!1})).nodes?.map((e=>e.id)).filter(xe)??[]},getNodesToSave:Lt,getNodesToShift:It,revertDeleteNode:function(e){b?.value?.addNode(e),r.markStateDirty()},addConnections:jt,createConnection:Tt,revertCreateConnection:function(e){const t=e[0].node,o=b?.value?.getNodeByName(t),n=e[1].node,a=b?.value?.getNodeByName(n);o&&a&&Et(ot(o,a,e))},deleteConnection:Et,revertDeleteConnection:function(e){b.value?.addConnection({connection:e})},deleteConnectionsByNodeId:Bt,revalidateNodeInputConnections:_t,revalidateNodeOutputConnections:At,isConnectionAllowed:Pt,filterConnectionsByNodes:zt,connectAdjacentNodes:ct,importWorkflowData:Rt,fetchWorkflowDataFromUrl:async function(e){let o;const n=g.currentProjectId??g.personalProject?.id;if(!n)throw new Error("No project selected");d.startLoading();try{o=await t.getWorkflowFromUrl(e,n)}catch(a){return void x.showError(a,I.baseText("nodeView.showError.getWorkflowDataFromUrl.title"))}finally{d.stopLoading()}return o},resetWorkspace:Vt,initializeWorkspace:Mt,resolveNodeWebhook:kt,openExecution:async function(e,n){let a;try{a=await t.getExecution(e)}catch(s){return void x.showError(s,I.baseText("nodeView.showError.openExecution.title"))}if(void 0===a)throw new Error(`Execution with id "${e}" could not be found!`);if("error"===a.status&&a.data?.resultData.error){const{title:e,message:t}=ne({error:a.data.resultData.error,lastNodeExecuted:a.data.resultData.lastNodeExecuted});x.showMessage({title:e,message:t,type:"error",duration:0})}if(await Mt(a.workflowData),o.setWorkflowExecutionData(a),["manual","evaluation"].includes(a.mode)||b?.value?.setPinData({}),n){const e=b?.value?.getNodeById(n);e?i.setActiveNodeName(e.name,"other"):x.showError(new Error(`Node with id "${n}" could not be found!`),I.baseText("nodeView.showError.openExecution.node"))}return r.markStateClean(),a},startChat:function(e){if(!(b?.value?.allNodes??[]).some(ie))return;const o=t.workflowObject;m.toggleOpen(!0);const n={workflow_id:o.id,button_type:e};D.run("nodeView.onOpenChat",n),C.track("User clicked chat open button",n),setTimeout((()=>{Ht.emit("focusInput")}),0)},importTemplate:qt,replaceNodeConnections:pt,tryToOpenSubworkflowInNewTab:function(t){const o=b?.value?.getNodeById(t);if(!o)return!1;const n=Fe(o);return!!n&&(window.open(`${e.baseUrl}workflow/${n}`,"_blank"),!0)},initializeUnknownNodes:e=>{e.forEach((e=>{const t=yt(Te(e.type),e.typeVersion);B.matchCredentials(e),wt(e,t),kt(e,t);const o=b?.value?.getNodeByName(e.name);o&&b?.value?.updateNodeById(o.id,{...e,type:Te(e.type)})}))},replaceNode:Zt,addNodesAndConnections:async function(e,t,{trackBulk:o=!0,trackHistory:n=!0,...i}){n&&o&&a.startRecordingUndo();const s=await gt(e,{...i,trackHistory:n,trackBulk:!1,telemetry:!0}),d=Ue.value.nodes.length-e.length;if(await jt(t.map((({from:e,to:t})=>{const o=Ue.value.nodes[d+e.nodeIndex],n=Ue.value.nodes[d+t.nodeIndex],a=e.type??t.type??Me.Main;return{source:o.id,sourceHandle:rt({mode:Be.Output,type:P(a)?a:Me.Main,index:e.outputIndex??0}),target:n.id,targetHandle:rt({mode:Be.Input,type:P(a)?a:Me.Main,index:t.inputIndex??0}),data:{source:{index:e.outputIndex??0,type:a},target:{index:t.inputIndex??0,type:a}}}})),{trackHistory:n,trackBulk:!1}),r.resetLastInteractedWith(),s.length>0&&i.replaceNodeId){const e=s[s.length-1].id;Zt(i.replaceNodeId,e,{trackHistory:n,trackBulk:!1})}return n&&o&&a.stopRecordingUndo(),{addedNodes:s}},fitView:Gt,openWorkflowTemplate:async function(e){let n;Vt(),d.startLoading(),d.setLoadingText(I.baseText("nodeView.loadingTemplate")),t.currentWorkflowExecutions=[],y.activeExecution=null;try{if(D.run("template.requested",{templateId:e}),n=await w.getFixedWorkflowTemplate(e),!n)throw new Error(I.baseText("nodeView.workflowTemplateWithIdCouldNotBeFound",{interpolate:{templateId:e}}))}catch(a){return x.showError(a,I.baseText("nodeView.couldntImportWorkflow")),void(await ue.replace({name:We.NEW_WORKFLOW}))}!function(e){C.track("User inserted workflow template",{source:"workflow",template_id:W(e),wf_template_repo_session_id:w.previousSessionId})}(e),r.isBlankRedirect=!0,await ue.replace({name:We.NEW_WORKFLOW,query:{templateId:e}}),"string"==typeof He.params.name&&o.setWorkflowId(He.params.name),await qt({name:n.name,workflow:n.workflow}),b?.value?.addToMeta({templateId:`${e}`}),Jt(),d.stopLoading(),D.run("template.open",{templateId:e,templateName:n.name,workflow:n.workflow}),Gt()},openWorkflowTemplateFromJSON:async function(e){if(!e.nodes||!e.connections)return x.showError(new Error(I.baseText("nodeView.couldntLoadWorkflow.invalidWorkflowObject")),I.baseText("nodeView.couldntImportWorkflow")),void(await ue.replace({name:We.NEW_WORKFLOW}));Vt(),d.startLoading(),d.setLoadingText(I.baseText("nodeView.loadingTemplate")),t.currentWorkflowExecutions=[],y.activeExecution=null,r.isBlankRedirect=!0;const n=e.meta.templateId,a=He.query.parentFolderId;await g.refreshCurrentProject(),await ue.replace({name:We.NEW_WORKFLOW,query:{templateId:n,parentFolderId:a,projectId:g.currentProjectId}}),"string"==typeof He.params.name&&o.setWorkflowId(He.params.name),await qt({name:e.name,workflow:e}),b?.value?.addToMeta({templateId:`${n}`}),Jt(),d.stopLoading(),Gt()}}},u:function(e,t,o,n){const a=new URL(e).origin,r=a.startsWith("https")?"wss":"ws";return`${a.replace(/^https?/,r)}/chat?sessionId=${o}&executionId=${t}${n?"&isPublic=true":""}`},x:At}),{setters:[function(e){o=e.o,n=e.t},function(e){a=e.$,r=e.A,i=e.At,s=e.C,d=e.E,c=e.Ft,u=e.N,l=e.R,p=e.Rt,f=e.S,y=e.Sn,g=e.T,m=e.U,v=e.W,h=e.Wt,w=e._,N=e._n,k=e.it,b=e.j,I=e.rt,x=e.st,T=e.w,B=e.yt},function(e){H=e.at,E=e.c,C=e.v},function(e){D=e.Oi,_=e.ct,U=e.lt},function(e){O=e.t},function(e){S=e.Dt,W=e.Ea,A=e.Et,P=e.Fr,j=e.Hr,V=e.Ht,M=e.In,R=e.Jr,L=e.Jt,F=e.Pn,z=e.Qr,$=e.Qt,q=e.Tt,Z=e.Ur,G=e.Vr,J=e.Wr,Q=e.Xr,K=e.Xt,Y=e.Yr,X=e.Yt,ee=e.Zr,te=e.Zt,oe=e.ai,ne=e.b,ae=e.cn,re=e.ct,ie=e.d,se=e.en,de=e.fr,ce=e.gr,ue=e.hr,le=e.it,pe=e.la,fe=e.lr,ye=e.nr,ge=e.oa,me=e.on,ve=e.qt,he=e.r,we=e.ra,Ne=e.s,ke=e.tn,be=e.ur,Ie=e.w,xe=e.xa,Te=e.z,Be=e.zr},function(e){He=e.$s,e.Cn,Ee=e.Ei,Ce=e.Eo,De=e.Fa,_e=e.Ia,Ue=e.Pi,Oe=e.Qc,Se=e.Qi,We=e.Qo,Ae=e.Uc,e.an,Pe=e.ar,je=e.dr,Ve=e.ec,Me=e.eo,Re=e.ia,Le=e.jc,Fe=e.la,ze=e.na,$e=e.nc,qe=e.pa,e.pr,Ze=e.ra,Ge=e.ta,Je=e.tc,Qe=e.xa},function(e){Ke=e.T,Ye=e.t},function(e){Xe=e.t},function(e){et=e.t},function(e){tt=e.t},function(e){ot=e.a,nt=e.c,at=e.i,rt=e.n,it=e.o},function(e){st=e.n,dt=e.t},function(e){ct=e.t},function(e){ut=e.a,lt=e.i,pt=e.n,ft=e.r,yt=e.t},function(e){gt=e.t},function(e){mt=e.t},function(e){vt=e.t}],execute:function(){(ht=document.createElement("style")).textContent=".chat-button-wrapper-disabled{cursor:not-allowed}.chat-button{text-align:center;vertical-align:middle;user-select:none;padding:var(--chat--button--padding);font-size:var(--chat--button--font-size);line-height:var(--chat--button--line-height);border-radius:var(--chat--button--border-radius);transition:color var(--chat--transition-duration) ease-in-out, background-color var(--chat--transition-duration) ease-in-out, border-color var(--chat--transition-duration) ease-in-out, box-shadow var(--chat--transition-duration) ease-in-out;cursor:pointer;text-decoration:none;display:inline-flex}.chat-button:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.chat-button-primary{color:var(--chat--button--color--primary);background-color:var(--chat--button--background--primary);border:var(--chat--button--border--primary)}.chat-button-primary:hover{color:var(--chat--button--color--primary--hover);background-color:var(--chat--button--background--primary--hover);border:var(--chat--button--border--primary--hover)}.chat-button-primary-disabled{pointer-events:none;color:var(--chat--button--color--primary--disabled);background-color:var(--chat--button--background--primary--disabled);border:var(--chat--button--border--primary--disabled)}.chat-button-secondary{color:var(--chat--button--color--secondary);background-color:var(--chat--button--background--secondary);border:var(--chat--button--border--secondary)}.chat-button-secondary:hover{color:var(--chat--button--color--secondary--hover);background-color:var(--chat--button--background--secondary--hover);border:var(--chat--button--border--secondary--hover)}.chat-button-secondary-disabled{pointer-events:none;color:var(--chat--button--color--secondary--disabled);background-color:var(--chat--button--background--secondary--disabled);border:var(--chat--button--border--secondary--disabled)}.chat-message-markdown{box-sizing:border-box;font-size:inherit;display:block}.chat-message-markdown>:first-child{margin-top:0}.chat-message-markdown>:last-child{margin-bottom:0}.chat-message-markdown pre{font-family:inherit;font-size:inherit;white-space:pre-wrap;box-sizing:border-box;padding:var(--chat--spacing);background:var(--chat--message--pre--background);border-radius:var(--chat--border-radius);margin:0}._buttons_1hb9q_125{gap:var(--chat--spacing);margin-top:var(--chat--spacing);display:flex}\n/*$vite$:1*/",document.head.appendChild(ht);try{t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},(i=(new t.Error).stack)&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[i]="37bebaeb-65f8-4d7e-9156-48be3b5e4735",t._sentryDebugIdIdentifier="sentry-dbid-37bebaeb-65f8-4d7e-9156-48be3b5e4735")}catch(t){}var t,i;wt=u({inheritAttrs:!1,__name:"Button",props:{type:{default:"primary"},element:{default:"button"},disabled:{type:Boolean,default:!1}},setup(e){const t=e,o=f((()=>`chat-button-${t.type}${t.disabled?"-disabled":""}`));return(n,r)=>(a(),d("span",{class:N({"chat-button-wrapper-disabled":t.disabled})},[(a(),T(x(e.element),m({class:["chat-button",o.value]},n.$attrs),{default:B((()=>[k(n.$slots,"default")])),_:3},16,["class"]))],2))}}),e("y",Nt=wt),kt=o(D()),e("v",bt=u({__name:"MarkdownRenderer",props:{text:{}},setup(e){ct.registerLanguage("javascript",lt),ct.registerLanguage("typescript",pt),ct.registerLanguage("python",ft),ct.registerLanguage("xml",yt),ct.registerLanguage("bash",ut);const t=e=>{e.use(kt.default,{attrs:{target:"_blank",rel:"noopener"}})},o={highlight(e,t){if(t&&ct.getLanguage(t))try{return ct.highlight(e,{language:t}).value}catch{}return""}};return(n,r)=>(a(),T(h(gt),{class:"chat-message-markdown",source:e.text,options:o,plugins:[t]},null,8,["source","plugins"]))}})),e("_",O(u({__name:"MessageWithButtons",props:{text:{},buttons:{}},setup(e){const t=At(),o=c(null),n=(e,n)=>{try{const a=new URL(t.options.webhookUrl).origin;return new URL(e,window.location.href).origin===a&&(null===o.value||n===o.value)}catch{return!1}};return(t,i)=>(a(),d("div",null,[b(bt,{text:e.text},null,8,["text"]),s("div",{class:N(t.$style.buttons)},[(a(!0),d(w,null,I(e.buttons,((e,t)=>(a(),d(w,{key:e.text},[n(e.link,t)?(a(),T(Nt,{key:0,element:"button",type:e.type,disabled:t===o.value,onClick:n=>(async(e,t)=>{null===o.value&&(await fetch(e)).ok&&(o.value=t)})(e.link,t)},{default:B((()=>[r(y(e.text),1)])),_:2},1032,["type","disabled","onClick"])):g("",!0)],64)))),128))],2)]))}}),[["__cssModules",{$style:{buttons:"_buttons_1hb9q_125"}}]])),e("g",It={WITH_BUTTONS:"with-buttons"}),It.WITH_BUTTONS,e("h","n8n-chat/sessionId"),e("m",xt="Chat"),e("p",Tt="ChatOptions"),Bt="with-buttons",e("l",Ht=function(){const e=new Map;function t(t,o){const n=e.get(t);n&&n.splice(n.indexOf(o)>>>0,1)}return{on:function(o,n){let a=e.get(o);return a?a.push(n):a=[n],e.set(o,a),()=>t(o,n)},off:t,emit:function(t,o){const n=e.get(t);n&&n.slice().forEach((async e=>{await e(o)}))}}}()),e("a","N8N_CANVAS_CHAT_HEIGHT"),e("o","N8N_CANVAS_CHAT_WIDTH"),e("i","N8N_LOGS_OVERVIEW_PANEL_WIDTH"),e("s",Et={CLOSED:"closed",ATTACHED:"attached",FLOATING:"floating"}),e("c",Ct={INPUT:"input",OUTPUT:"output",BOTH:"both"}),e("r",Dt=Ke("logs",(()=>{const e=C(Je,!1),t=c(!1),o=f((()=>e.value?t.value?Et.FLOATING:Et.ATTACHED:Et.CLOSED)),n=c(0),a=C(He,Ct.OUTPUT,{writeDefaults:!1}),r=C(Ve,Ct.BOTH,{writeDefaults:!1}),i=C($e,!0,{writeDefaults:!1}),s=c(!1),d=de(),u=c(p()),l=c([]);function p(){return Ce().replace(/-/g,"")}return{state:o,isOpen:f((()=>o.value!==Et.CLOSED)),detailsState:f((()=>s.value?r.value:a.value)),height:f((()=>n.value)),isLogSelectionSyncedWithCanvas:f((()=>i.value)),chatSessionId:f((()=>u.value)),chatSessionMessages:f((()=>l.value)),addChatMessage:function(e){l.value.push(e)},setHeight:function(e){n.value=e},toggleOpen:function(t){e.value=t??!e.value},setPreferPoppedOut:function(e){t.value=e},setSubNodeSelected:function(e){s.value=e},toggleInputOpen:function(e){const t=[Ct.INPUT,Ct.BOTH],o=s.value?r:a,n=t.includes(o.value);e!==n&&(o.value=n?Ct.OUTPUT:Ct.BOTH,d.track("User toggled log view sub pane",{pane:"input",newState:n?"hidden":"visible",isSubNode:s.value}))},toggleOutputOpen:function(e){const t=[Ct.OUTPUT,Ct.BOTH],o=s.value?r:a,n=t.includes(o.value);e!==n&&(o.value=n?Ct.INPUT:Ct.BOTH,d.track("User toggled log view sub pane",{pane:"output",newState:n?"hidden":"visible",isSubNode:s.value}))},toggleLogSelectionSync:function(e){i.value=e??!i.value},resetChatSessionId:function(){u.value=p()},resetMessages:function(){l.value=[]}}}))),_t=n(((e,t)=>{var o=Ue();t.exports=function(e){return e&&e.length?o(e):[]}})),e("n",Ut=Ke("experimentalNdv",(()=>{const e=Ne(),t=ue(),o=f((()=>t.getVariant(Le.name)===Le.variant)),n=f((()=>t.getVariant(Ae.name)===Ae.variant)),a=f((()=>o.value?2:4)),r=c(),i=p({}),s=c(),d=c(!1);function u(e){return o.value&&Math.abs(e-a.value)<1e-6}function l(e,{canvasDimensions:t,canvasViewport:o,setCenter:n}){i.value={...i.value,[e.id]:!1};const r=e.dimensions.width*(u(o.zoom)?1:1.5);s.value===e.data.name&&(s.value=void 0),n(e.position.x+r/2,e.position.y+(.5*t.height-80)/a.value,{duration:200,zoom:a.value,interpolate:"linear"})}return{isZoomedViewEnabled:o,isNdvInFocusPanelEnabled:n,maxCanvasZoom:a,previousZoom:f((()=>r.value)),collapsedNodes:f((()=>i.value)),nodeNameToBeFocused:f((()=>s.value)),isMapperOpen:f((()=>d.value)),isActive:u,setNodeExpanded:function(e,t){i.value={...i.value,[e]:void 0===t?!i.value[e]:!t}},expandAllNodes:function(){i.value={}},collapseAllNodes:function(){i.value=e.allNodes.reduce(((e,t)=>(e[t.id]=!0,e)),{})},toggleZoomMode:function(e){if(u(e.canvasViewport.zoom))return void 0===r.value?void e.fitView({duration:200,interpolate:"linear"}):void e.setViewport(r.value,{duration:200,interpolate:"linear"});r.value=e.canvasViewport;const t=e.selectedNodes.filter((e=>e.data.render.type===G.Default)).toSorted(((e,t)=>e.position.y===t.position.y?e.position.x-t.position.x:e.position.y-t.position.y))[0];t?l(t,e):e.zoomTo(a.value,{duration:200,interpolate:"linear"})},focusNode:l,setNodeNameToBeFocused:function(e){s.value=e},setMapperOpen:function(e){d.value=e}}}))),Ot=o(Ee(),1),St=o(_t(),1)}}}));
//# sourceMappingURL=useCanvasOperations-legacy-B8cM-OAy.js.map