n8n-editor-ui
Version:
Workflow Editor UI for n8n
2 lines • 43 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.13.4"}}catch(e){}}(),System.register(["./chunk-legacy-TXBRODOR.js","./vue.runtime.esm-bundler-legacy-IafOlCW8.js","./_MapCache-legacy-DwgdC8YO.js","./src-legacy-Dwzr7bD0.js","./_plugin-vue_export-helper-legacy-DEZAmQqp.js","./users.store-legacy-OKuN0qAC.js","./constants-legacy-DNCca_FT.js","./_baseOrderBy-legacy-PsQY_Pvh.js","./executions.store-legacy-z6ytCHo9.js","./usePinnedData-legacy-CxgKkO-J.js","./canvas.utils-legacy-BYFKir1g.js","./canvas.eventBus-legacy-DA8zEJ09.js","./core-legacy-DCTs3hh7.js","./xml-legacy-Bk3VU2D8.js","./VueMarkdown-legacy-CWoKVTxo.js","./setupPanel.store-legacy-D5xiJOzj.js","./templateTransforms-legacy-bPWknje4.js"],(function(e,t){var o,n,a,r,i,s,d,c,u,l,p,f,y,g,m,w,h,N,k,v,b,I,x,T,B,H,E,_,D,O,C,S,U,W,A,P,j,M,V,R,L,F,z,$,q,G,Z,J,K,Y,X,Q,ee,te,oe,ne,ae,re,ie,se,de,ce,ue,le,pe,fe,ye,ge,me,we,he,Ne,ke,ve,be,Ie,xe,Te,Be,He,Ee,_e,De,Oe,Ce,Se,Ue,We,Ae,Pe,je,Me,Ve,Re,Le,Fe,ze,$e,qe,Ge,Ze,Je,Ke,Ye,Xe,Qe,et,tt,ot,nt,at,rt,it,st,dt,ct,ut,lt,pt,ft,yt,gt,mt,wt,ht,Nt,kt,vt,bt,It,xt,Tt,Bt,Ht,Et,_t,Dt,Ot,Ct,St,Ut;function Wt(){return{uniqueNodeName:function(e,t=[]){const{canvasNames:o}=ve();if(!o.has(e)&&!t.includes(e))return e;const n=xe().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=Qe(),t=ve(),o=fe(),n=ie(),a=ne(),r=Ne(),i=ke(),s=xe(),d=K(),u=A(),l=ge(),p=st(),y=et(),g=F(),m=Dt(),h=Ct(),N=M(),k=X(),v=mt(),b=_(),I=te(),x=L(),T=U(),B=le(),H=V(),D=E(),{uniqueNodeName:S}=Wt(),$=O(),pe=C(),Ee=c([0,0]),Ce=!!localStorage.getItem("NodeView.preventOpeningNDV"),Se=f((()=>t.workflow)),We=f((()=>t.workflowObject)),je=f((()=>t.workflowTriggerNodes));function Ve(e,{trackHistory:t=!1,trackBulk:o=!0}={}){t&&o&&a.startRecordingUndo(),e.forEach((({id:e,position:o})=>{Le(e,o,{trackHistory:t})})),t&&o&&a.stopRecordingUndo()}function Le(e,n,{trackHistory:r=!1}={}){const i=t.getNodeById(e);if(!i)return;const s=[...i.position],d=[n.x,n.y];o.setNodePositionById(e,d),r&&a.pushCommandToUndo(new P(i.name,s,d,Date.now()))}function ze(e,n,r,{trackHistory:i=!1,trackBulk:s=!0}={}){const d=t.getNodeById(e);d&&(i&&s&&a.startRecordingUndo(),o.setNodeParameters({name:d.name,value:r}),i&&a.pushCommandToUndo(new j(e,n,r,Date.now())),i&&s&&a.stopRecordingUndo())}async function Ze(e,o,{trackHistory:n=!1,trackBulk:r=!0,showErrorToast:s=!0}={}){if(e===o)return!1;n&&r&&a.startRecordingUndo(),o=S(o);const d=t.cloneWorkflowObject();try{d.renameNode(e,o)}catch(c){return s&&I.showMessage({type:"error",title:c.message,message:c.description}),!1}return n&&a.pushCommandToUndo(new R(e,o,Date.now())),t.renameNodeSelectedAndExecution({old:e,new:o}),t.setNodes(Object.values(d.nodes)),t.setConnections(d.connectionsBySourceNode),i.activeNodeName===e&&i.setActiveNodeName(o,"other"),n&&r&&a.stopRecordingUndo(),o}function Xe(e,{trackHistory:o=!1}={}){const n=t.getNodeById(e);if(!n)return;const r=t.outgoingConnectionsByNodeName(n.name),i=t.incomingConnectionsByNodeName(n.name);for(const[s,d]of Object.entries(i))for(const e of d.at(0)??[]){const n=t.getNodeByName(e.node)?.id;if(n)for(const i of r[s]?.at(0)??[]){const r=t.getNodeByName(i.node)?.id;r&&(o&&a.pushCommandToUndo(new Ie([{node:e.node,type:s,index:e.index},{node:i.node,type:s,index:i.index}],Date.now())),xt({source:n,sourceHandle:rt({mode:we.Output,type:s,index:e.index}),target:r,targetHandle:rt({mode:we.Input,type:s,index:i.index})}))}}}function ct(e,{trackHistory:o=!1,trackBulk:n=!0}={}){const i=t.getNodeById(e);i&&(o&&n&&a.startRecordingUndo(),r.lastInteractedWithNodeId===e&&(r.lastInteractedWithNodeId=void 0),Xe(e,{trackHistory:o}),Tt(e,{trackHistory:o,trackBulk:!1}),t.removeNodeExecutionDataById(e),t.removeNodeById(e),o&&(a.pushCommandToUndo(new ee(i,Date.now())),n&&a.stopRecordingUndo()),function(e){const o=t.getNodeById(e);o&&("n8n-nodes-base.stickyNote"===o.type?B.track("User deleted workflow note",{workflow_id:t.workflowId}):(H.run("node.deleteNode",{node:o}),B.track("User deleted node",{node_type:o.type,workflow_id:t.workflowId})))}(e))}function ut(e,{trackHistory:t=!0,trackBulk:o=!0}={}){t&&o&&a.startRecordingUndo(),e.forEach((e=>ct(e,{trackHistory:t,trackBulk:!1}))),t&&o&&a.stopRecordingUndo()}function lt(e,o,{trackHistory:n=!1,trackBulk:r=!0,replaceInputs:i=!0,replaceOutputs:s=!0}={}){const d=t.getNodeById(e),c=t.getNodeById(o);if(!d||!c)return;const u=t.workflowObject,l=i?(0,Ut.default)(u.getParentNodes(d.name,"ALL",1)):[],p=s?(0,Ut.default)(u.getChildNodes(d.name,"ALL",1)):[],f=[...u.getConnectionsBetweenNodes(l,[d.name]),...u.getConnectionsBetweenNodes([d.name],p)];n&&r&&a.startRecordingUndo();for(const a of f){const e=t.getNodeByName(a[0].node),o=t.getNodeByName(a[1].node);if(!e||!o)continue;Bt(ot(e,o,a),{trackHistory:n,trackBulk:!1});const r={...a[0],node:a[0].node===d.name?c.name:a[0].node},i={...a[1],node:a[1].node===d.name?c.name:a[1].node},s=e.name===d.name?c:e,u=o.name===d.name?c:o;if(!At(s,u,r,i))continue;const l=ot(s,u,[r,i]);xt(l,{trackHistory:n}),_t(l.target),Ot(l.source)}n&&r&&a.stopRecordingUndo()}function pt(e,t){i.setActiveNodeName(e,t)}function ft(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 yt(e,{viewport:o,...n}={}){let i,d=n.position;const c=[],u=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}(ft(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)}(u),n.trackHistory&&n.trackBulk&&a.startRecordingUndo();for(const[t,a]of u.entries()){const{isAutoAdd:e,placeholder:r,openDetail:s,actionName:u,positionOffset:p,...f}=a,y=f.position??d,g=y&&p?[y[0]+p[0],y[1]+p[1]]:y,m=ft(f.type,f.typeVersion);try{const r=gt({...f,position:g},m,{...n,...0===t?{viewport:o}:{},openNDV:s,isAutoAdd:e,actionName:u});i=r,a.placeholder&&(r.placeholder=!0),c.push(r)}catch(l){I.showError(l,b.baseText("error")),console.error(l);continue}d=[i.position[0]+2*ye[0]+16,i.position[1]]}return i&&function(e){const o=We.value.getParentNodesByDepth(e.name,1);o.length>1&&o.slice(1).forEach(((e,o)=>{const n=t.getNodeByName(e.name);n&&Le(n.id,{x:n.position[0],y:n.position[1]+100*(o+1)})}))}(i),n.trackHistory&&n.trackBulk&&a.stopRecordingUndo(),n.keepPristine||r.markStateDirty(),c}function gt(o,n,d={}){!function(e){if(void 0!==e.maxNodes&&x.getNodeTypeCount(e.name)>=e.maxNodes)throw new Error(b.baseText("nodeView.showMessage.showMaxNodeTypeError.message",{adjustToNumber:e.maxNodes,interpolate:{nodeTypeDataDisplayName:e.displayName}}))}(n);const c=function(t,o,n={}){const a=t.id??T.assignNodeId(t),r=t.name??T.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=S(b.localizeNodeName(e.defaultLocale,t.name,t.type))}(p),s.getIsNodeInstalled(p.type)&&(ht(p,o),kt(p,o)),p}(o,n,{viewport:d.viewport});if(!c)throw new Error(b.baseText("nodeViewV2.showError.failedToCreateNode"));return t.addNode(c),d.trackHistory&&a.pushCommandToUndo(new Be(c,Date.now())),d.isAutoAdd||function(e,o={}){const n=r.lastInteractedWithNode;if(!n)return;const a=De(e.type),i=n.id,s=r.lastInteractedWithNodeConnection,d=r.lastInteractedWithNodeHandle;if(a&&s){const{type:t}=nt(d),o=e.id,n=rt({mode:we.Input,type:t,index:0});return xt({target:s.target,targetHandle:s.targetHandle,source:o,sourceHandle:n}),Bt(s),void xt({source:s.source,sourceHandle:s.sourceHandle,target:o,targetHandle:n})}const c={trackHistory:o.trackHistory,trackBulk:!1};if(d){const{type:t,mode:o}=nt(d),n=e.id,a=rt({mode:we.Input,type:t,index:0});o===we.Input?xt({source:n,sourceHandle:a,target:i,targetHandle:d},c):xt({source:i,sourceHandle:d,target:n,targetHandle:a},c)}else xt({source:i,sourceHandle:rt({mode:we.Output,type:Fe.Main,index:0}),target:e.id,targetHandle:rt({mode:we.Input,type:Fe.Main,index:0})},c);s&&(Bt(s,c),t.getNodeById(s.target)&&xt({source:e.id,sourceHandle:rt({mode:we.Input,type:Fe.Main,index:0}),target:s.target,targetHandle:s.targetHandle},c))}(c,d),w((()=>{d.keepPristine||r.markStateDirty(),t.setNodePristine(c.name,!0),T.matchCredentials(c),T.updateNodeParameterIssues(c),T.updateNodeCredentialIssues(c),T.updateNodeInputIssues(c);const e=c.type===Re,o=e||!d.openNDV||Ce?void 0:h.isNdvInFocusPanelEnabled&&k.focusPanelActive&&void 0===k.resolvedParameter?"focus_panel":h.isZoomedViewEnabled?"zoomed_view":"ndv";d.telemetry&&function(e,o,n){e.type===Re?B.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||(H.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 ht(e,t){e.parameters=Ye(t?.properties??[],e.parameters,!0,!1,e,t)??{}}function Nt(e,o,n={}){const a=r.lastInteractedWithNode,i=r.lastInteractedWithNodeConnection,d=r.lastInteractedWithNodeHandle,{type:c,index:u}=nt(d??i?.sourceHandle??""),l=c===Fe.Main?ye:W,p=[l[0]/2,l[1]/2];let f=e.position;if(f)return z(t.allNodes,f,{offset:p,size:l,viewport:n.viewport,normalize:!1});if(a){const d=s.getNodeType(a.type,a.typeVersion),g=We.value.getNode(a.name),m=r.lastCancelledConnectionPosition;if(m){const e=c===Fe.Main?0:-l[0]/2,t=c===Fe.Main?-l[1]/2:0;f=[m[0]+e,m[1]+t],r.lastCancelledConnectionPosition=void 0}else if(d&&g){if(De(e.type)&&i&&c===Fe.AiTool){const e=t.getNodeById(i.target);if(e){const o=e.position[1],r=a.position[1],i=(r-o)/2,s=o+i;if(f=[a.position[0]-J[0]/2,s],Math.abs(s-r)<Y){const e=Y/2;Le(a.id,{x:a.position[0],y:a.position[1]+(i>0?e:-e)},{trackHistory:!0})}return z(t.allNodes,f,{offset:p,size:l,viewport:n.viewport})}}const r=Pe(We.value,g,d),s=Me(r),m=(s||[]).filter((e=>e!==Fe.Main)),w=Je(We.value,g,d),h=Me(w).filter((e=>e===Fe.Main));let N=0;if(i){let e=!1;"string"==typeof o.inputs?e=!0:Array.isArray(o.inputs)&&(e=Me(o.inputs).filter((e=>e!==Fe.Main)).length>0);const n=e?J:ye,r=Y+(e?J[0]-ye[0]:0);!function(e,o,{trackHistory:n=!1,nodeSize:a=ye}){const r=t.nodesByName[e];if(!r)return;const i=[r.position[0]+Y,r.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&&q(a,vt(r)))return!1;return!0}(i,a,Object.values(t.nodesByName).filter((t=>t.name!==e&&"n8n-nodes-base.stickyNote"!==t.type))))return;const{nodesToMove:s,stickiesToStretch:d,stickiesToMoveAndStretch:c,stickyAssociatedNodes:u}=bt(i,e,a);for(const t of s)Le(t.id,{x:t.position[0]+o,y:t.position[1]},{trackHistory:n});for(const l of c){const e=t.getNodeById(l.id);e&&It(e,i,a,u.get(l.id)??[],{trackHistory:n})}for(const t of d)It(t,i,a,u.get(t.id)??[],{trackHistory:n})}(a.name,r,{trackHistory:!0,nodeSize:n})}h.length>1&&(N=G(h.length,ye[1],16)[u]);let k=[];try{k=Je(We.value,e,o)}catch(y){}const v=Me(k),b={[Fe.AiLanguageModel]:2*l[0],[Fe.AiMemory]:l[0]}[c]??0;if(v.length>0&&v.every((e=>e!==Fe.Main))){const e=m.findIndex((e=>k[0]===e)),t=Math.max(m.length+1,1);f=[a.position[0]+J[0]/t*(e+1)-l[0]/2-b,a.position[1]+Y]}else{let e=Y;s.find((e=>e!==Fe.Main))&&(e+=140),f=[a.position[0]+e,a.position[1]+N],i&&(f=[f[0],a.position[1]])}}}return f||(f=s.isTriggerNode(e.type)&&0===je.value.length?[0,0]:Ee.value),z(t.allNodes,f,{offset:p,size:l,viewport:n.viewport})}function kt(e,t){_e(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 vt(e){return"n8n-nodes-base.stickyNote"===e.type?{x:e.position[0],y:e.position[1],width:e.parameters.width||ye[0],height:e.parameters.height||ye[1]}:{x:e.position[0],y:e.position[1],width:ye[0],height:ye[1]}}function bt(e,o,n=ye){const a=Object.values(t.nodesByName),r=e[0],i=e[1],s=2*ye[1],d=e=>e.position[0]+ye[0]>r||e.position[0]>=r,c=(e,t,o,n,a)=>((e,t,o)=>e.position[0]>=t.position[0]&&e.position[0]+ye[0]<=t.position[0]+o.width&&e.position[1]>=t.position[1]&&e.position[1]+ye[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]+ye[0]/2,y:e.position[1]+ye[1]/2}))(e),n,a),u=(e,t,o,n,a)=>a.filter((a=>c(a,e,t,o,n))),l=a.filter((e=>"n8n-nodes-base.stickyNote"!==e.type&&e.name!==o&&(e=>Math.abs(e.position[1]-i)<=s)(e)&&d(e))),p=new Set(l.map((e=>e.name)));for(const I of l)x.getConnectedNodes("downstream",We.value,I.name).filter((e=>{const o=t.getNodeByName(e);return!!o&&d(o)})).forEach((e=>p.add(e)));const f=a.filter((e=>"n8n-nodes-base.stickyNote"!==e.type&&p.has(e.name))),y=[],g=[],m=[],w=new Map,h=a.filter((e=>e.type===Re)),N=Math.min(i,...f.map((e=>e.position[1]))),k=Math.max(i+n[1],...f.map((e=>e.position[1]+ye[1]))),v=t.nodesByName[o],b={x:n[0]/2,y:n[1]/2};for(const t of h){const e=vt(t),o=t.position[0],a=o+e.width,i=t.position[1],s=!(i+e.height<=N||i>=k),d=r>=o&&r<=a,l={x:t.position[0]+e.width/2,y:t.position[1]+e.height/2};if(v&&c(v,t,e,l,b)&&d){const o=u(t,e,l,b,f);w.set(t.id,o),y.push(t);continue}const p=u(t,e,l,b,f);p.length>0&&w.set(t.id,p);const h=p.length>0;s&&(h?r+n[0]>o+2*Y/3?m.push(t):g.push(t):d?y.push(t):o>=r&&g.push(t))}return{nodesToMove:[...f,...g,...m],stickiesToStretch:y,stickiesToMoveAndStretch:m,stickyAssociatedNodes:w}}function It(e,o,n,a,{trackHistory:r=!1}){const i=vt(e),s=e.position[0],d=s+i.width;let c=o[0]-20,u=o[0]+n[0]+20;for(const y of a){const e=t.getNodeById(y.id);if(!e)continue;const o=e.position[0]-20,n=e.position[0]+ye[0]+20;c=Math.min(c,o),u=Math.max(u,n)}const l=Math.min(s,c),p=Math.max(d,u)-l,f={...e.parameters,width:p};ze(e.id,e.parameters,f,{trackHistory:r,trackBulk:!1}),l!==s&&Le(e.id,{x:l,y:e.position[1]},{trackHistory:r})}function xt(e,{trackHistory:o=!1,keepPristine:n=!1}={}){const i=t.getNodeById(e.source),s=t.getNodeById(e.target);if(!i||!s)return;o&&a.pushCommandToUndo(new Ie(at(i,s,e),Date.now()));const d=at(i,s,e);At(i,s,d[0],d[1])&&(t.addConnection({connection:d}),w((()=>{T.updateNodeInputIssues(i),T.updateNodeInputIssues(s)})),n||r.markStateDirty())}function Tt(e,{trackHistory:o=!1,trackBulk:n=!0}={}){const r=t.getNodeById(e);if(!r)return;o&&n&&a.startRecordingUndo();const i=(0,St.default)(t.workflow.connections);for(const a of Object.keys(i)){const e=t.getNodeByName(a);if(e)for(const n of Object.keys(i[a]))for(const s of Object.keys(i[a][n])){const d=i[a][n][parseInt(s,10)]??[];for(const a of Object.keys(d)){const i=d[parseInt(a,10)];if(!i)continue;const c=t.getNodeByName(i.node);!c||c.id!==r.id&&e.name!==r.name||Bt({source:e.id,sourceHandle:rt({mode:we.Output,type:n,index:parseInt(s,10)}),target:c.id,targetHandle:rt({mode:we.Input,type:i.type,index:i.index})},{trackHistory:o,trackBulk:!1})}}}delete t.workflow.connections[r.name],o&&n&&a.stopRecordingUndo()}function Bt(e,{trackHistory:o=!1,trackBulk:n=!0}={}){const r=t.getNodeById(e.source),i=t.getNodeById(e.target);if(!r||!i)return;const s=at(r,i,e);o&&n&&a.startRecordingUndo(),t.removeConnection({connection:s}),w((()=>{T.updateNodeInputIssues(r),T.updateNodeInputIssues(i)})),o&&(a.pushCommandToUndo(new Te(s,Date.now())),n&&a.stopRecordingUndo())}function Et(e,o){const n=t.getNodeById(e),a=o===we.Input;n&&s.getNodeType(n.type,n.typeVersion)&&it(t.workflow.connections,t.workflow.nodes).forEach((o=>{if(a?o.target===e:o.source===e){const e=a?o.source:o.target,r=t.getNodeById(e);if(!r||!o.data)return;const[i,s]=a?[r,n]:[n,r];At(i,s,o.data.source,o.data.target)||w((()=>Bt(o)))}}))}function _t(e){return Et(e,we.Input)}function Ot(e){return Et(e,we.Output)}function At(e,t,o,n){const a=[Re],r=e=>Ae(e.type)&&!xe().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=We.value.getNode(e.name);if(!f)return!1;let y=[];p&&(y=Je(We.value,f,p)||[]);const g=u(y,o.type),m=g.length>0,w=o.index<g.length,h=l(w?g[o.index]:void 0);if(!(m&&w||i))return!1;const N=c(t),k=We.value.getNode(t.name);if(!k)return!1;let v=[];N&&(v=Pe(We.value,k,N)||[]);const x=u(v,n.type),T=x.length>0,B=n.index<x.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?x[n.index]:void 0),e.type),_=H(h,t.type);return E||_?(I.showToast({title:b.baseText("nodeView.showError.nodeNodeCompatible.title"),message:b.baseText("nodeView.showError.nodeNodeCompatible.message",{interpolate:{sourceNodeName:e.name,targetNodeName:t.name}}),type:"error",duration:5e3}),!1):!!(T&&B||d)}async function Pt(e,{trackBulk:t=!0,trackHistory:o=!1,keepPristine:n=!1}={}){await w(),t&&o&&a.startRecordingUndo();for(const a of e)xt(a,{trackHistory:o,keepPristine:n});t&&o&&a.stopRecordingUndo(),n||r.markStateDirty()}function jt(){if(p.setNodeCreatorState({createNodeActive:!1}),p.setShowScrim(!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,T.credentialsUpdated.value=!1}async function Mt(e){const{workflowDocumentStore:o}=await x.initState(e,re());return e.nodes.forEach((e=>{const t=ft(e.type,e.typeVersion),o=s.getIsNodeInstalled(e.type);T.matchCredentials(e),o&&(ht(e,t),kt(e,t))})),t.setNodes(e.nodes),t.setConnections(e.connections),{workflowDocumentStore:o}}async function Vt(i,d,{importTags:c=!0,trackBulk:p=!0,trackHistory:f=!0,viewport:y,regenerateIds:g=!0,trackEvents:m=!0,setStateDirty:w=!0}={}){if(r.resetLastInteractedWith(),!i.hasOwnProperty("nodes")||!i.hasOwnProperty("connections"))return{};try{const h={};if(i.nodes){const e=new Set(i.nodes.map((e=>e.name)));i.nodes.forEach((t=>{if(!t.name){const o=S(s.getNodeType(t.type)?.displayName??t.type,Array.from(e));t.name=o,e.add(o)}if(t.webhookId&&Oe.includes(t.type)&&t.webhookId&&(T.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(g){const o=T.assignNodeId(t);h[o]=e}}else T.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])}(i);try{if(m){const o=JSON.stringify(qe(i,x.getNodeTypes(),{nodeIdMap:h,sourceInstanceId:i.meta&&i.meta.instanceId!==e.instanceId?i.meta.instanceId:"",isCloudDeployment:u.isCloudDeployment}).nodeGraph);"paste"===d?B.track("User pasted nodes",{workflow_id:t.workflowId,node_graph_string:o}):"duplicate"===d?B.track("User duplicated nodes",{workflow_id:t.workflowId,node_graph_string:o}):B.track("User imported workflow",{source:d,workflow_id:t.workflowId,node_graph_string:o})}}catch{}return x.updateNodePositions(i,z(Se.value.nodes,Ee.value,{...i.nodes&&i.nodes.length>1?{size:oe(i.nodes)}:{},viewport:y})),await async function(o,{trackBulk:n=!0,trackHistory:i=!1,viewport:d=Z,setStateDirty:c=!0}={}){const u={},l=new Set((o.nodes??[]).map((e=>e.name)));if(!o.nodes)throw new Error(b.baseText("nodeView.noNodesGivenToAdd"));const p=x.getNodeTypesMaxCount();let f,y;const g=[];await T.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=b.localizeNodeName(e.defaultLocale,t.name,t.type);l.delete(f),y=S(o,Array.from(l)),l.add(y),u[f]=y,g.push(t)}));const m={},w=o.connections??{},h=g.map((e=>e.name));let N,k,v,B,H;for(N of Object.keys(w)){if(!h.includes(N))continue;const e={};for(k of Object.keys(w[N]))for(e[k]=[],v=0;v<w[N][k].length;v++){const t=[],o=w[N][k][v];if(o)for(B=0;B<o.length;B++)H=o[B],h.includes(H.node)&&t.push(H);e[k].push(t)}m[N]=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){I.showError(new Error(b.baseText("ndv.pinData.error.tooLarge.description")),b.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(_){e=!1,console.error(_)}}}return n&&i&&a.startRecordingUndo(),await yt(Object.values(E.nodes),{trackBulk:!1,trackHistory:i,viewport:d,keepPristine:!0}),await Pt(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}}(i,{trackBulk:p,trackHistory:f,viewport:y,setStateDirty:w}),c&&u.areTagsEnabled&&Array.isArray(i.tags)&&await async function(e){const o=await l.fetchAll(),n=new Set(o.map((e=>e.name))),a=e.tags,r=a.filter((e=>!n.has(e.name))),i=[];for(const t of r){const e=l.create(t.name).then((e=>(o.push(e),e)));i.push(e)}await Promise.all(i);const s=a.reduce(((e,t)=>{const n=o.find((e=>e.name===t.name));return n&&e.push(n.id),e}),[]);ae(he(t.workflowId)).addTags(s)}(i),i.name&&o.setWorkflowName({newName:i.name,setStateDirty:w}),i}catch(h){return console.error(h),I.showError(h,b.baseText("nodeView.showError.importWorkflowData.title")),{}}}function Rt(e){const o={nodes:[],connections:{},pinData:{}},a=new Set;for(const n of e){const e=x.getNodeDataToSave(n),r=t.workflowId?ae(he(t.workflowId)):null,i=r?ce(r.pinData)[n.name]:void 0;i&&(o.pinData[n.name]=i),e.credentials&&u.isEnterpriseFeatureEnabled[Ge.Sharing]&&(e.credentials=Lt(e.credentials,r?.usedCredentials??{})),o.nodes.push(e),a.add(n.name)}return o.connections=function(e,o){const n={};for(const a of e){const e=t.outgoingConnectionsByNodeName(a.name);if(!Object.keys(e).length)continue;const r=Ft(e,o);Object.keys(r).length&&(n[a.name]=r)}return n}(o.nodes,a),x.removeForeignCredentialsFromWorkflow(o,n.allCredentials),o}function Lt(e,t){return Object.fromEntries(Object.entries(e).filter((([,e])=>e.id&&(!t[e.id]||t[e.id]?.currentUserHasAccess))))}function Ft(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 zt(o){const n=Ue(Rt(t.getNodesByIds(o))),a=ae(he(t.workflowId));n.meta={...n.meta,...a.meta,instanceId:e.instanceId},await D.copy(JSON.stringify(n,null,2)),B.track("User copied nodes",{node_types:n.nodes.map((e=>e.type)),workflow_id:t.workflowId})}async function $t({name:e,workflow:n}){let a=n.nodes?.map(t.convertTemplateNodeToNodeUi);v.isFeatureEnabled&&a&&(a=wt(a)),n.connections&&t.setConnections(n.connections),await yt(a??[],{keepPristine:!0}),await o.getNewWorkflowData(e,g.currentProjectId)}function qt(e,o,{trackHistory:n=!0,trackBulk:i=!0}={}){const s=t.getNodeById(e),d=t.getNodeById(o);if(!s||!d)return;n&&i&&a.startRecordingUndo();const[c,u]=s.position;Le(o,{x:c,y:u},{trackHistory:n}),lt(e,o,{trackBulk:!1,trackHistory:n}),ct(e,{trackHistory:n,trackBulk:!1}),r.markStateDirty(),n&&i&&a.stopRecordingUndo()}function Gt(){setTimeout((()=>dt.emit("fitView")))}function Zt(){v.isFeatureEnabled&&(k.openFocusPanel(),k.setSelectedTab("setup"))}return{lastClickPosition:Ee,editableWorkflow:Se,editableWorkflowObject:We,triggerNodes:je,requireNodeTypeDescription:ft,addNodes:yt,addNode:gt,resolveNodePosition:Nt,revertAddNode:async function(e){const o=t.getNodeByName(e);o&&ct(o.id)},updateNodesPosition:Ve,updateNodePosition:Le,tidyUp:function({result:e,source:t,target:o},{trackEvents:n=!0,trackHistory:a=!0,trackBulk:r=!0}={}){Ve(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}){B.track("User tidied up canvas",{source:t,target:o,nodes_count:e.nodes.length})}({result:e,source:t,target:o})},revertUpdateNodePosition:function(e,o){const n=t.getNodeByName(e);n&&Le(n.id,o)},setNodeActive:function(e,o){const n=t.getNodeById(e);n&&(t.setNodePristine(n.name,!1),pt(n.name,o))},setNodeActiveByName:pt,clearNodeActive:function(){i.unsetActiveNodeName()},setNodeSelected:function(e){if(!e)return r.lastInteractedWithNodeId=void 0,void(r.lastSelectedNode="");const o=t.getNodeById(e);o&&(r.lastInteractedWithNodeId=e,r.lastSelectedNode=o.name)},toggleNodesDisabled:function(e,{trackHistory:o=!0,trackBulk:n=!0}={}){o&&n&&a.startRecordingUndo();const r=t.getNodesByIds(e);T.disableNodes(r,{trackHistory:o,trackBulk:!1}),o&&n&&a.stopRecordingUndo()},revertToggleNodeDisabled:function(e){const o=t.getNodeByName(e);o&&T.disableNodes([o])},toggleNodesPinned:function(e,o,{trackHistory:n=!0,trackBulk:r=!0}={}){n&&r&&a.startRecordingUndo();const i=t.getNodesByIds(e).map((e=>({node:e,pinnedData:tt(e)}))).filter((({pinnedData:e})=>e.canPinNode(!0))),s=i.some((({pinnedData:e})=>!e.hasData.value));for(const{node:t,pinnedData:a}of i)if(s){const e=me().getInputDataWithPinned(t);0!==e.length&&a.setData(e,o)}else a.unsetData(o);n&&r&&a.stopRecordingUndo()},setNodeParameters:function(e,n){const a=t.getNodeById(e);a&&o.setNodeParameters({name:a.name,value:n},!0)},renameNode:Ze,revertRenameNode:async function(e,t){await Ze(e,t)},replaceNodeParameters:ze,revertReplaceNodeParameters:async function(e,t,o){ze(e,o,t)},deleteNode:ct,deleteNodes:ut,copyNodes:zt,cutNodes:async function(e){await zt(e),ut(e)},duplicateNodes:async function(e,o={}){return(await Vt(Ue(Rt(t.getNodesByIds(e))),"duplicate",{viewport:o.viewport,importTags:!1})).nodes?.map((e=>e.id)).filter(de)??[]},getNodesToSave:Rt,getNodesToShift:bt,revertDeleteNode:function(e){t.addNode(e),r.markStateDirty()},addConnections:Pt,createConnection:xt,revertCreateConnection:function(e){const o=e[0].node,n=t.getNodeByName(o),a=e[1].node,r=t.getNodeByName(a);n&&r&&Bt(ot(n,r,e))},deleteConnection:Bt,revertDeleteConnection:function(e){t.addConnection({connection:e})},deleteConnectionsByNodeId:Tt,revalidateNodeInputConnections:_t,revalidateNodeOutputConnections:Ot,isConnectionAllowed:At,filterConnectionsByNodes:Ft,connectAdjacentNodes:Xe,importWorkflowData:Vt,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 I.showError(a,b.baseText("nodeView.showError.getWorkflowDataFromUrl.title"))}finally{d.stopLoading()}return o},resetWorkspace:jt,initializeWorkspace:Mt,resolveNodeWebhook:kt,openExecution:async function(e,n){let a;try{a=await t.getExecution(e)}catch(s){return void I.showError(s,b.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}=se({error:a.data.resultData.error,lastNodeExecuted:a.data.resultData.lastNodeExecuted});I.showMessage({title:e,message:t,type:"error",duration:0})}if(await Mt(a.workflowData),o.setWorkflowExecutionData(a),["manual","evaluation"].includes(a.mode)||t.workflowId&&ae(he(t.workflowId)).setPinData({}),n){const e=t.getNodeById(n);e?i.setActiveNodeName(e.name,"other"):I.showError(new Error(`Node with id "${n}" could not be found!`),b.baseText("nodeView.showError.openExecution.node"))}return r.markStateClean(),a},startChat:function(e){if(!t.allNodes.some(ue))return;const o=t.workflowObject;m.toggleOpen(!0);const n={workflow_id:o.id,button_type:e};H.run("nodeView.onOpenChat",n),B.track("User clicked chat open button",n),setTimeout((()=>{Ht.emit("focusInput")}),0)},importTemplate:$t,replaceNodeConnections:lt,tryToOpenSubworkflowInNewTab:function(o){const n=t.getNodeById(o);if(!n)return!1;const a=Ke(n);return!!a&&(window.open(`${e.baseUrl}workflow/${a}`,"_blank"),!0)},initializeUnknownNodes:e=>{e.forEach((e=>{const n=ft(He(e.type),e.typeVersion);T.matchCredentials(e),ht(e,n),kt(e,n);const a=t.workflow.nodes.findIndex((t=>t.name===e.name));o.updateNodeAtIndex(a,{...e,type:He(e.type)})}))},replaceNode:qt,addNodesAndConnections:async function(e,t,{trackBulk:o=!0,trackHistory:n=!0,...i}){n&&o&&a.startRecordingUndo();const s=await yt(e,{...i,trackHistory:n,trackBulk:!1,telemetry:!0}),d=Se.value.nodes.length-e.length;if(await Pt(t.map((({from:e,to:t})=>{const o=Se.value.nodes[d+e.nodeIndex],n=Se.value.nodes[d+t.nodeIndex],a=e.type??t.type??Fe.Main;return{source:o.id,sourceHandle:rt({mode:we.Output,type:be(a)?a:Fe.Main,index:e.outputIndex??0}),target:n.id,targetHandle:rt({mode:we.Input,type:be(a)?a:Fe.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;qt(i.replaceNodeId,e,{trackHistory:n,trackBulk:!1})}return n&&o&&a.stopRecordingUndo(),{addedNodes:s}},fitView:Gt,openWorkflowTemplate:async function(e){let n;jt(),d.startLoading(),d.setLoadingText(b.baseText("nodeView.loadingTemplate")),t.currentWorkflowExecutions=[],y.activeExecution=null;try{if(H.run("template.requested",{templateId:e}),n=await N.getFixedWorkflowTemplate(e),!n)throw new Error(b.baseText("nodeView.workflowTemplateWithIdCouldNotBeFound",{interpolate:{templateId:e}}))}catch(a){return I.showError(a,b.baseText("nodeView.couldntImportWorkflow")),void(await $.replace({name:$e.NEW_WORKFLOW}))}!function(e){B.track("User inserted workflow template",{source:"workflow",template_id:Q(e),wf_template_repo_session_id:N.previousSessionId})}(e),r.isBlankRedirect=!0,await $.replace({name:$e.NEW_WORKFLOW,query:{templateId:e}}),await $t({name:n.name,workflow:n.workflow}),"string"==typeof pe.params.name&&o.setWorkflowId(pe.params.name),ae(he(t.workflowId)).addToMeta({templateId:`${e}`}),Zt(),d.stopLoading(),H.run("template.open",{templateId:e,templateName:n.name,workflow:n.workflow}),Gt()},openWorkflowTemplateFromJSON:async function(e){if(!e.nodes||!e.connections)return I.showError(new Error(b.baseText("nodeView.couldntLoadWorkflow.invalidWorkflowObject")),b.baseText("nodeView.couldntImportWorkflow")),void(await $.replace({name:$e.NEW_WORKFLOW}));jt(),d.startLoading(),d.setLoadingText(b.baseText("nodeView.loadingTemplate")),t.currentWorkflowExecutions=[],y.activeExecution=null,r.isBlankRedirect=!0;const o=e.meta.templateId,n=pe.query.parentFolderId;await g.refreshCurrentProject(),await $.replace({name:$e.NEW_WORKFLOW,query:{templateId:o,parentFolderId:n,projectId:g.currentProjectId}}),await $t({name:e.name,workflow:e}),ae(he(t.workflowId)).addToMeta({templateId:`${o}`}),Zt(),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,w=e.W,h=e.Wt,N=e._,k=e._n,v=e.it,b=e.j,I=e.rt,x=e.st,T=e.w,B=e.yt},function(e){H=e.M,E=e.S,_=e.bt},function(e){D=e.Ni,O=e._t,C=e.gt},function(e){S=e.t},function(e){U=e.$t,W=e.An,A=e.As,P=e.Ci,j=e.Di,M=e.Dn,V=e.Dr,R=e.Ei,L=e.Et,F=e.Ft,z=e.Hn,$=e.Hr,q=e.In,G=e.Ln,Z=e.Mn,e.Nn,J=e.On,K=e.Or,Y=e.Pn,X=e.Sn,Q=e.Ta,ee=e.Ti,te=e.Tr,oe=e.Wn,ne=e._i,ae=e.aa,re=e.an,ie=e.at,se=e.b,de=e.ba,ce=e.ca,ue=e.d,le=e.en,pe=e.gi,fe=e.in,ye=e.jn,ge=e.kt,me=e.lt,we=e.mi,he=e.na,Ne=e.r,ke=e.rn,ve=e.s,be=e.ui,Ie=e.vi,xe=e.w,Te=e.wi,Be=e.yi,He=e.z},function(e){Ee=e.Gc,_e=e.Ia,De=e.Oa,e.Pn,Oe=e.Sr,Ce=e.Uo,Se=e.Vi,Ue=e.Xa,We=e.Yi,Ae=e.Za,Pe=e._a,je=e._c,Me=e.ga,Ve=e.gc,e.gn,Re=e.gr,Le=e.hc,Fe=e.ho,ze=e.mc,$e=e.ms,qe=e.pa,Ge=e.pl,Ze=e.rl,Je=e.va,Ke=e.wa,e.wr,Ye=e.ya},function(e){Xe=e.j,Qe=e.r},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){wt=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]="4159f369-0693-4438-bd99-93fb25c39b1f",t._sentryDebugIdIdentifier="sentry-dbid-4159f369-0693-4438-bd99-93fb25c39b1f")}catch(t){}var t,i;Nt=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:k({"chat-button-wrapper-disabled":t.disabled})},[(a(),T(x(e.element),m({class:["chat-button",o.value]},n.$attrs),{default:B((()=>[v(n.$slots,"default")])),_:3},16,["class"]))],2))}}),e("y",kt=Nt),vt=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(vt.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("_",S(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:k(t.$style.buttons)},[(a(!0),d(N,null,I(e.buttons,((e,t)=>(a(),d(N,{key:e.text},[n(e.link,t)?(a(),T(kt,{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",_t={INPUT:"input",OUTPUT:"output",BOTH:"both"}),e("r",Dt=Xe("logs",(()=>{const e=H(Ve,!1),t=c(!1),o=f((()=>e.value?t.value?Et.FLOATING:Et.ATTACHED:Et.CLOSED)),n=c(0),a=H(ze,_t.OUTPUT,{writeDefaults:!1}),r=H(Le,_t.BOTH,{writeDefaults:!1}),i=H(je,!0,{writeDefaults:!1}),s=c(!1),d=le(),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=[_t.INPUT,_t.BOTH],o=s.value?r:a,n=t.includes(o.value);e!==n&&(o.value=n?_t.OUTPUT:_t.BOTH,d.track("User toggled log view sub pane",{pane:"input",newState:n?"hidden":"visible",isSubNode:s.value}))},toggleOutputOpen:function(e){const t=[_t.OUTPUT,_t.BOTH],o=s.value?r:a,n=t.includes(o.value);e!==n&&(o.value=n?_t.INPUT:_t.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=[]}}}))),Ot=n(((e,t)=>{var o=We();t.exports=function(e){return e&&e.length?o(e):[]}})),e("n",Ct=Xe("experimentalNdv",(()=>{const e=ve(),t=$(),o=f((()=>t.getVariant(Ee.name)===Ee.variant)),n=f((()=>t.getVariant(Ze.name)===Ze.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===pe.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}}}))),St=o(Se(),1),Ut=o(Ot(),1)}}}));
//# sourceMappingURL=useCanvasOperations-legacy-DHjpE9Af.js.map