UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

2 lines 11.9 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.13.4`}}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]=`2469a5a6-3228-4e03-8347-36739e06c7de`,e._sentryDebugIdIdentifier=`sentry-dbid-2469a5a6-3228-4e03-8347-36739e06c7de`)})()}catch{}import{o as e}from"./chunk-DxpFCn6T.js";import{$ as t,A as n,C as r,E as i,N as a,Nt as o,S as s,Sn as c,T as l,Wt as u,X as d,Z as f,_ as p,_n as m,j as h,w as g,yt as _}from"./vue.runtime.esm-bundler-D9KLAxvJ.js";import{bt as v,xt as y}from"./_MapCache-CUJwh2qp.js";import{Bi as b,Bt as x,Qi as S,Zi as C,_t as w}from"./src-wni2AGA3.js";import{t as T}from"./_plugin-vue_export-helper-Dm3nT7Ps.js";import{Pn as E,Tr as D,_i as O,d as k,en as A,ia as j,mn as M,r as N,s as P,w as F}from"./users.store-BHWXXawf.js";import{Fa as I,Go as L,Mi as R,Ri as z,Uo as B,_a as V,ji as H,jo as U,ms as W,qs as G,va as K}from"./constants-CIP7tKq1.js";import{t as q}from"./useCanvasOperations-CI7Ylcwf.js";import{t as J}from"./NodeIcon-0naEDfOR.js";import{t as Y}from"./KeyboardShortcutTooltip-CrTbwZwY.js";var X=e(L(),1),Z={trackBulk:!1,trackHistory:!0};function Q(){let e=N(),t=P(),n=j(),r=F(),i=D(),a=w(),o=O(),c=q(),l=v(),u=A(),d=s(()=>H(t.workflow.connections)),f=s(()=>t.workflowObject);function p(e){i.showMessage({type:`error`,message:e,title:l.baseText(`workflowExtraction.error.failure`),duration:15*1e3})}function m(e){switch(e.errorCode){case`Input Edge To Non-Root Node`:return l.baseText(`workflowExtraction.error.selectionGraph.inputEdgeToNonRoot`,{interpolate:{node:e.node}});case`Output Edge From Non-Leaf Node`:return l.baseText(`workflowExtraction.error.selectionGraph.outputEdgeFromNonLeaf`,{interpolate:{node:e.node}});case`Multiple Input Nodes`:return l.baseText(`workflowExtraction.error.selectionGraph.multipleInputNodes`,{interpolate:{nodes:[...e.nodes].map(e=>`'${e}'`).join(`, `)}});case`Multiple Output Nodes`:return l.baseText(`workflowExtraction.error.selectionGraph.multipleOutputNodes`,{interpolate:{nodes:[...e.nodes].map(e=>`'${e}'`).join(`, `)}});case`No Continuous Path From Root To Leaf In Selection`:return l.baseText(`workflowExtraction.error.selectionGraph.noContinuousPathFromRootToLeaf`,{interpolate:{start:e.start,end:e.end}})}}function h(e,t,n,r){return{parameters:{workflowId:{__rl:!0,value:e,mode:`list`},workflowInputs:{mappingMode:`defineBelow`,value:Object.fromEntries(r.entries().map(([e,t])=>[e,`={{ ${t} }}`])),matchingColumns:[...r.keys()],schema:[...r.keys().map(e=>({id:e,displayName:e,required:!1,defaultMatch:!1,display:!0,canBeUsedToMatch:!0,removed:!1}))],attemptToConvertTypes:!1,convertFieldsToString:!0},options:{}},type:`n8n-nodes-base.executeWorkflow`,typeVersion:1.2,position:n,name:t}}function g(e,{start:t,end:i},a,o,s,c,l,u){let d=Object.fromEntries(Object.entries(o).filter(([e])=>a.some(t=>t.name===e)));i&&delete d[i];let f=a.find(e=>e.name===t),p=f??a.sort((e,t)=>e.position[1]-t.position[1])[0],m=[p.position[0]-E,p.position[1]],h=a.find(e=>e.name===i),g=h??a.sort((e,t)=>t.position[1]-e.position[1])[0],_=[g.position[0]+E,g.position[1]],v=c.size>0,y=r.getNodeType(p.type,p.typeVersion),b=f!==void 0||y&&I(y,`main`)?{[l]:{main:[[{node:p.name,type:`main`,index:0}]]}}:{},x=h&&v?{[h.name]:{main:[[{node:u,type:`main`,index:0}]]}}:{},S=v?[{parameters:{assignments:{assignments:[...c.entries().map(e=>({id:B(),name:e[0],value:`={{ ${e[1]} }}`,type:`string`}))]},options:{}},type:`n8n-nodes-base.set`,typeVersion:3.4,position:_,id:B(),name:u}]:[],C=s.size===0?{inputSource:`passthrough`}:{workflowInputs:{values:[...s.keys().map(e=>({name:e,type:`any`}))]}},w={id:B(),typeVersion:1.1,name:l,type:U,position:m,parameters:C};return{name:e,nodes:[...a,...S,w],connections:{...d,...b,...x},settings:{executionOrder:`v1`},projectId:n?.value?.homeProject?.id,parentFolderId:n?.value?.parentFolder?.id??void 0}}function _(e){let t=e.reduce((e,t)=>[e[0]+t.position[0],e[1]+t.position[1],e[2]+1],[0,0,0]);return[t[0]/t[2],t[1]/t[2]]}async function y(e){try{let n=await t.createNewWorkflow(e);try{await t.publishWorkflow(n.id,{versionId:n.versionId})}catch(e){console.error(`Failed to activate extracted sub-workflow:`,e)}let{href:r}=a.resolve({name:W.WORKFLOW,params:{name:n.id}});return i.showMessage({title:l.baseText(`workflowExtraction.success.title`),message:l.baseText(`workflowExtraction.success.message`,{interpolate:{url:r}}),type:`success`,duration:10*1e3}),n}catch(e){return i.showError(e,l.baseText(`workflowExtraction.error.subworkflowCreationFailed`)),null}}function b(e){if(Array.isArray(e))return p(l.baseText(`workflowExtraction.error.selectionGraph.listHeader`,{interpolate:{body:e.map(m).map(e=>`- ${e}`).join(`<br>`)}})),!1;let{start:n,end:r}=e,i=(e,n)=>{let r=t.getNodeByName(e);if(!r)return!0;let i=F().getNodeType(r.type,r.typeVersion);return i?n(f.value,r,i).filter(e=>typeof e==`string`?e===`main`:e.type===`main`).length<=1:!0};return n&&!i(n,V)?(p(l.baseText(`workflowExtraction.error.inputNodeHasMultipleInputBranches`,{interpolate:{node:n}})),!1):r&&!i(r,K)?(p(l.baseText(`workflowExtraction.error.outputNodeHasMultipleOutputBranches`,{interpolate:{node:r}})),!1):!Array.isArray(e)}async function x(n,r,i,a,s){o.startRecordingUndo(),e.resetLastInteractedWith();let l=(await c.addNodes([n],{...Z,forcePosition:!0}))[0];i&&c.replaceNodeConnections(i,l.id,{...Z,replaceInputs:!1}),r&&c.replaceNodeConnections(r,l.id,{...Z,replaceOutputs:!1}),c.deleteNodes(a.map(e=>e.id),Z);for(let e of s){let n=t.workflow.nodes.find(t=>t.id===e.id);(0,X.default)(e,n)||c.replaceNodeParameters(e.id,{...n?.parameters},{...e.parameters},Z)}e.markStateDirty(),o.stopRecordingUndo()}function S(n){let r=n.map(t.getNodeById).filter(e=>e!==void 0),i=r.filter(e=>F().getNodeType(e.type,e.typeVersion)?.group.includes(`trigger`));if(i.length>0)return p(l.baseText(`workflowExtraction.error.triggerSelected`,{interpolate:{nodes:i.map(e=>`'${e.name}'`).join(`, `)}})),!1;let a=R(new Set(r.map(e=>e.name)),d.value);return b(a)?(e.openModalWithData({name:G,data:{subGraph:r,selection:a}}),!0):!1}async function C(e,n,r){let{start:i,end:a}=e,o=t.workflow.nodes.map(e=>e.name),s=`Start`,c=n.map(e=>e.name);for(;c.includes(s);)s+=`_1`;let l=`Return`;for(;c.includes(l);)l+=`_1`;let u=a?f.value.getChildNodes(a,`main`,1).map(e=>f.value.getNode(e)?.name).filter(e=>e!==void 0):[],d=a?f.value.getChildNodes(a,`ALL`).map(e=>f.value.getNode(e)).filter(e=>e!==null):[],{nodes:p,variables:m}=z(n,o,s,i?[i]:void 0),v=`Call ${r}`;for(;o.includes(v);)v+=`_1`;let{nodes:b,variables:S}=z(d,d.map(e=>e.name).concat(c),v,u),C=await y(g(r,e,p,t.workflow.connections,m,S,s,l));if(C===null)return!1;let w=_(n);return await x(h(C.id,v,w,m),n.find(e=>e.name===i)?.id,n.find(e=>e.name===a)?.id,n,b),!0}function T(e,t){u.track(`User started nodes to sub-workflow extraction`,{node_count:e,success:t})}function k(e,t){u.track(`User extracted nodes to sub-workflow`,{node_count:e,success:t})}async function M(e,t,n){let r=await C(e,t,n);k(t.length,r)}function L(e){let t=S(e);T(e.length,t)}return{adjacencyList:d,extractWorkflow:L,tryExtractNodesIntoSubworkflow:S,extractNodesIntoSubworkflow:M}}var $=o({customActions:{},delegatedClickHandler:null});function ee(){function e({key:e,action:t}){$.customActions[e]=t}function t(e){let{[e]:t,...n}=$.customActions;$.customActions=n}function n(e){let t={};for(let n=0;n<e.attributes.length;n++){let r=e.attributes[n];r.name.startsWith(`data-action-parameter-`)&&(t[r.name.replace(`data-action-parameter-`,``)]=r.value)}return t}function r(e){let t=e.target;if(!(t instanceof Element)||t.tagName!==`A`)return;let r=t.getAttribute(`data-action`);if(r&&typeof a.value[r]==`function`){e.preventDefault();let i=n(t);a.value[r](i)}}function i(){window.top?window.top.location.reload():window.location.reload()}let a=s(()=>({reload:i,...$.customActions}));return d(()=>{$.delegatedClickHandler||($.delegatedClickHandler=r,window.addEventListener(`click`,r),M.on(`registerGlobalLinkAction`,e))}),f(()=>{window.removeEventListener(`click`,r),$.delegatedClickHandler=null,M.off(`registerGlobalLinkAction`,e)}),{registerCustomAction:e,unregisterCustomAction:t}}var te=T(a({__name:`CanvasRunWorkflowButton`,props:{selectedTriggerNodeName:{},triggerNodes:{},waitingForWebhook:{type:Boolean},executing:{type:Boolean},disabled:{type:Boolean},hideTooltip:{type:Boolean},label:{},size:{},includeChatTrigger:{type:Boolean},getNodeType:{type:Function}},emits:[`mouseenter`,`mouseleave`,`execute`,`selectTriggerNode`],setup(e,{emit:a}){let o=a,d=e,f=v(),w=s(()=>d.triggerNodes.filter(e=>!e.disabled&&(d.includeChatTrigger?!0:!k(e)))),T=s(()=>d.executing?d.waitingForWebhook?f.baseText(`nodeView.runButtonText.waitingForTriggerEvent`):f.baseText(`nodeView.runButtonText.executingWorkflow`):d.label??f.baseText(`nodeView.runButtonText.executeWorkflow`)),E=s(()=>d.triggerNodes.filter(e=>d.includeChatTrigger?!0:!k(e)).toSorted((e,t)=>{let[n,r]=e.position,[i,a]=t.position;return r===a?n-i:r-a}).map(e=>({label:b(e.name,50),disabled:!!e.disabled||d.executing,id:e.name,checked:d.selectedTriggerNodeName===e.name}))),D=s(()=>w.value.length>1&&d.selectedTriggerNodeName!==void 0);function O(e){let t=d.triggerNodes.find(t=>t.name===e);return t?d.getNodeType(t.type,t.typeVersion):null}return(a,s)=>(t(),i(`div`,{class:m([a.$style.component,D.value?a.$style.split:``])},[h(Y,{label:T.value,shortcut:{metaKey:!0,keys:[`↵`]},disabled:e.executing||e.hideTooltip},{default:_(()=>[h(u(S),{variant:`solid`,class:m(a.$style.button),loading:e.executing,iconOnly:e.executing,"aria-label":u(f).baseText(`nodeView.runButtonText.executeWorkflow`),disabled:e.disabled,size:e.size??`large`,icon:`flask-conical`,"data-test-id":`execute-workflow-button`,onMouseenter:s[0]||=e=>a.$emit(`mouseenter`,e),onMouseleave:s[1]||=e=>a.$emit(`mouseleave`,e),onClick:s[2]||=e=>o(`execute`)},{default:_(()=>[r(`span`,{class:m(a.$style.buttonContent)},[n(c(T.value)+` `,1),D.value?(t(),g(u(C),{key:0,class:m(a.$style.subText),bold:!1},{default:_(()=>[h(u(y),{keypath:`nodeView.runButtonText.from`,scope:`global`},{nodeName:_(()=>[h(u(C),{bold:``,size:`mini`},{default:_(()=>[n(c(u(b)(d.selectedTriggerNodeName??``,25)),1)]),_:1})]),_:1})]),_:1},8,[`class`])):l(``,!0)],2)]),_:1},8,[`class`,`loading`,`iconOnly`,`aria-label`,`disabled`,`size`])]),_:1},8,[`label`,`disabled`]),D.value?(t(),i(p,{key:0},[r(`div`,{role:`presentation`,class:m(a.$style.divider)},null,2),h(u(x),{class:m(a.$style.menu),items:E.value,disabled:e.disabled,placement:`top`,"extra-popper-class":a.$style.menuPopper,onSelect:s[3]||=e=>o(`selectTriggerNode`,e)},{activator:_(()=>[h(u(S),{variant:`solid`,"icon-size":`large`,disabled:e.disabled,class:m(a.$style.chevron),"aria-label":`Select trigger node`,icon:`chevron-down`},null,8,[`disabled`,`class`])]),menuItem:_(e=>[r(`div`,{class:m([a.$style.menuItem,e.disabled?a.$style.disabled:``])},[h(J,{class:m(a.$style.menuIcon),size:16,"node-type":O(e.id)},null,8,[`class`,`node-type`]),r(`span`,null,[h(u(y),{keypath:`nodeView.runButtonText.from`,scope:`global`},{nodeName:_(()=>[h(u(C),{bold:``,size:`small`},{default:_(()=>[n(c(e.label),1)]),_:2},1024)]),_:2},1024)])],2)]),_:1},8,[`class`,`items`,`disabled`,`extra-popper-class`])],64)):l(``,!0)],2))}}),[[`__cssModules`,{$style:{component:`_component_1chpr_125`,split:`_split_1chpr_131`,button:`_button_1chpr_131`,divider:`_divider_1chpr_139`,chevron:`_chevron_1chpr_144`,menu:`_menu_1chpr_151`,menuPopper:`_menuPopper_1chpr_155`,menuItem:`_menuItem_1chpr_159`,disabled:`_disabled_1chpr_165`,menuIcon:`_menuIcon_1chpr_165`,buttonContent:`_buttonContent_1chpr_169`,subText:`_subText_1chpr_176`}}]]);export{ee as n,Q as r,te as t}; //# sourceMappingURL=CanvasRunWorkflowButton-B_JNC0IF.js.map