UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

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