n8n-editor-ui
Version:
Workflow Editor UI for n8n
1 lines • 60.6 kB
JavaScript
(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]=`a97ef370-72ac-4ad1-9137-cb585edff0a7`,e._sentryDebugIdIdentifier=`sentry-dbid-a97ef370-72ac-4ad1-9137-cb585edff0a7`)})()}catch{}import{o as e}from"./chunk-CACdhNlC.js";import{$ as t,$t as n,A as r,C as i,E as a,F as o,Ft as s,I as c,K as l,N as u,O as d,Qt as f,R as p,S as m,Sn as h,T as g,U as _,W as v,Wt as y,X as b,_ as x,_n as S,at as C,bt as ee,c as w,en as T,gt as E,it as D,j as O,p as k,pt as A,q as j,rt as M,st as N,tt as P,vn as F,w as I,yn as L,yt as R}from"./vue.runtime.esm-bundler-C3C09Zii.js";import{T as te,at as z,u as B,v as V}from"./core-Bz5WjPxS.js";import{Bi as H,D as ne,Di as U,Ft as re,Hi as ie,Ki as W,Mi as ae,Mt as oe,N as G,Ni as se,Qi as ce,Ri as K,S as le,Vi as ue,W as q,Xi as J,Zi as de,ct as fe,ft as pe,gi as me,h as he,lt as ge,m as _e,n as ve,nt as ye,qi as be,xt as xe,zi as Se}from"./src-XqE2yCpG.js";import{d as Ce}from"./get-BjzKP_3k.js";import{t as Y}from"./_plugin-vue_export-helper-CIL7EULb.js";import{Bn as we,Ds as Te,Dt as Ee,E as De,Fn as Oe,Li as ke,Ln as Ae,Ot as je,Pn as Me,Rt as Ne,Tt as Pe,Vt as Fe,aa as Ie,ai as Le,ei as Re,fr as ze,gi as Be,gr as Ve,jt as X,mr as He,nr as Ue,oa as We,oi as Ge,r as Ke,ra as qe,s as Je,si as Ye,sr as Xe,t as Ze,w as Qe,zn as $e,zt as et}from"./users.store-xP93bV7X.js";import{t as tt}from"./BaseLayout-YhvjbE97.js";import{As as nt,Bo as rt,Bs as it,Cc as at,Eo as ot,Ls as st,Ps as ct,Pt as lt,Qc as ut,Qo as Z,Qs as dt,Rs as ft,S as pt,Tc as mt,Xs as ht,Zo as Q,g as gt,hl as $,ks as _t,m as vt,nl as yt,p as bt,ps as xt,ss as St,t as Ct,xc as wt,zs as Tt}from"./constants-DuQbSl-q.js";import{t as Et}from"./useRootStore-XEREVjMN.js";import{t as Dt}from"./settings.store-CAFiYCMH.js";import{t as Ot}from"./banners.store-CAM7bMAe.js";import{n as kt,t as At}from"./useDebounce-DyDXl6eh.js";import{t as jt}from"./useClipboard-D2UtD35U.js";import{t as Mt}from"./executions.store-BkB9JOf7.js";import{t as Nt}from"./assistant.store-C47L2JfA.js";import{t as Pt}from"./chatPanel.store-D4PUJTF0.js";import{t as Ft}from"./pushConnection.store-D7Wwlyyp.js";import{t as It}from"./useInjectWorkflowId-BV3E4pXM.js";import{t as Lt}from"./collaboration.store-4D2ISERe.js";import{t as Rt}from"./TimeAgo-D3e2Vl9V.js";import{t as zt}from"./folders.store-CNB9Lo_F.js";import{t as Bt}from"./WorkflowTagsDropdown-C2Xept2r.js";import{t as Vt}from"./dist-BL9AkvYs.js";import{t as Ht}from"./router-kvSL2kqM.js";import{a as Ut,r as Wt}from"./mcp.constants-CL3iQXDk.js";import{n as Gt,t as Kt}from"./LoadingView-iEDFAKMP.js";import{i as qt,r as Jt}from"./utils-xNUhZBbi.js";import{t as Yt}from"./useKeybindings-HxiGjy_j.js";import{t as Xt}from"./chatHubPanel.store-BHZAKW4-.js";import{t as Zt}from"./useWorkflowActivate-D-sHBSZw.js";import{t as Qt}from"./chat.store-mz4IZJ73.js";import{m as $t,u as en}from"./fileUtils-D6dhtxVJ.js";import{t as tn}from"./useProvideWorkflowId-D9yqtqoi.js";import{t as nn}from"./ChatAgentAvatar-DKWX_rQ_.js";import{t as rn}from"./AppSidebar-DjAJNMUr.js";import{i as an,n as on,r as sn,t as cn}from"./usePostMessageHandler-mcWIU9zy.js";import{t as ln}from"./usePushConnection-B4egyiyG.js";import{i as un,n as dn,r as fn,t as pn}from"./ChatGreetings-DnhhyYq1.js";import{n as mn}from"./ToolsSelector-B0IuM6LH.js";import{t as hn}from"./FolderBreadcrumbs-CKScDJwE.js";import{t as gn}from"./ConnectionTracker-DKoLG4SI.js";import{t as _n}from"./useWorkflowsCache-Cn3wJsHK.js";import"./usePushConnection-9-wGyKnT.js";var vn=u({__name:`MenuGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=e;return(e,r)=>(t(),I(y(W),_({role:`group`},n),{default:R(()=>[D(e.$slots,`default`)]),_:3},16))}}),yn=u({__name:`MenuLabel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},setup(e){let n=e;return(e,r)=>(t(),I(y(W),F(o(n)),{default:R(()=>[D(e.$slots,`default`)]),_:3},16))}}),bn=u({__name:`DropdownMenuGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=e;return be(),(e,r)=>(t(),I(y(vn),F(o(n)),{default:R(()=>[D(e.$slots,`default`)]),_:3},16))}}),xn=u({__name:`DropdownMenuLabel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=e;return be(),(e,r)=>(t(),I(y(yn),F(o(n)),{default:R(()=>[D(e.$slots,`default`)]),_:3},16))}});function Sn(){let e=fe();return{layoutProps:m(()=>e.meta.layoutProps??{})}}var Cn=Y(u({__name:`AskAssistantFloatingButton`,setup(e){let n=Nt(),r=je(),o=Pt(),s=Dt(),c=z(),{APP_Z_INDEXES:l}=Oe(),u=m(()=>{let e=n.lastUnread;return e?.type===`block`?e.title:e?.type===`text`?e.content:e?.type===`code-diff`?e.description:``}),d=m(()=>s.settings.ai.allowSendingParameterValues),f=async()=>{r.isAIBuilderEnabled&&d.value?o.isOpen&&o.isBuilderModeActive?o.close():await o.open({mode:`builder`}):await o.toggle({mode:`assistant`}),o.isOpen&&n.trackUserOpenedAssistant({source:`canvas`,task:`placeholder`,has_existing_session:!n.isSessionEnded})};return(e,r)=>(t(),a(`div`,{class:S(e.$style.container),"data-test-id":`ask-assistant-floating-button`},[O(y(U),{"z-index":y(l).ASK_ASSISTANT_FLOATING_BUTTON_TOOLTIP,placement:`top`,visible:!!u.value,"popper-class":e.$style.tooltip},{content:R(()=>[i(`div`,{class:S(e.$style.text)},h(u.value),3),i(`div`,{class:S(e.$style.assistant)},[O(y(me),{size:`mini`}),i(`span`,null,h(y(c).baseText(`aiAssistant.name`)),1)],2)]),default:R(()=>[O(y(se),{"unread-count":y(n).unreadCount,onClick:f},null,8,[`unread-count`])]),_:1},8,[`z-index`,`visible`,`popper-class`])],2))}}),[[`__cssModules`,{$style:{container:`_container_m8h8t_125`,tooltip:`_tooltip_m8h8t_132`,assistant:`_assistant_m8h8t_138`,text:`_text_m8h8t_148`}}]]),wn=Y(u({__name:`CanvasChatSessionDropdown`,props:{sessionId:{},sessionTitle:{},workflowId:{}},emits:[`select-session`],setup(e,{emit:n}){let c=e,l=n,u=z(),d=Qt(),f=p(wt,s()),g=m(()=>!!f.value),_=m(()=>f.value?.document.body),v=s(!1),b=s(!1),C=s(!1),ee=s(null),w=m(()=>(d.sessions.ids??[]).reduce((e,t)=>{let n=d.sessions.byId[t];return n&&n.workflowId===c.workflowId&&n.type===`manual`&&e.push(n),e},[])),T=m(()=>$t(w.value)),D=m(()=>w.value.length===0&&!b.value);async function k(e){if(v.value=e,e&&!C.value){b.value=!0;try{await d.fetchSessions(!0,{type:`manual`}),C.value=!0}finally{b.value=!1}}}function A(e){l(`select-session`,e),v.value=!1}function j(e){return e.id}return E(()=>c.workflowId,()=>{v.value=!1,C.value=!1}),E(v,(e,t,n)=>{let r=_.value;if(!r||!e)return;let i=r.ownerDocument;if(!i||i===document)return;let a,o=setTimeout(()=>{a=e=>{(ee.value?.$el)?.contains(e.target)||setTimeout(()=>{v.value&&=!1},0)},i.addEventListener(`pointerdown`,a)},0);n(()=>{clearTimeout(o),a&&i.removeEventListener(`pointerdown`,a)})}),(n,s)=>(t(),I(y(ie),{modal:!g.value,open:v.value,"onUpdate:open":k},{default:R(()=>[O(y(K),{class:S([n.$style.trigger,{[n.$style.open]:v.value}]),title:y(u).baseText(`chatHub.canvas.session.tooltip.sessionId`,{interpolate:{sessionId:c.sessionId}}),"data-test-id":`canvas-chat-session-dropdown`},{default:R(()=>[O(y(J),{size:`small`,class:S(n.$style.triggerText)},{default:R(()=>[r(h(e.sessionTitle),1)]),_:1},8,[`class`]),O(y(ce),{icon:`chevron-down`,size:`small`,class:S(n.$style.chevron)},null,8,[`class`])]),_:1},8,[`class`,`title`]),O(y(Se),F(o(_.value?{to:_.value}:{})),{default:R(()=>[O(y(ue),{ref_key:`contentRef`,ref:ee,class:S(n.$style.content),"side-offset":4,align:`start`,"avoid-collisions":!0},{default:R(()=>[b.value?(t(),a(`div`,{key:0,class:S(n.$style.emptyState)},[O(y(J),{size:`small`,color:`text-light`},{default:R(()=>[...s[0]||=[r(`…`,-1)]]),_:1})],2)):D.value?(t(),a(`div`,{key:1,class:S(n.$style.emptyState)},[O(y(J),{size:`small`,color:`text-light`},{default:R(()=>[r(h(y(u).baseText(`chatHub.canvas.session.noSessions`)),1)]),_:1})],2)):(t(!0),a(x,{key:2},M(T.value,e=>(t(),I(y(bn),{key:e.group,class:S(n.$style.group)},{default:R(()=>[O(y(xn),{class:S(n.$style.groupLabel)},{default:R(()=>[r(h(e.group),1)]),_:2},1032,[`class`]),(t(!0),a(x,null,M(e.sessions,e=>(t(),I(y(H),{key:e.id,class:S([n.$style.sessionItem,{[n.$style.active]:e.id===c.sessionId}]),onSelect:t=>A(e.id)},{default:R(()=>[i(`span`,{class:S(n.$style.sessionTitle)},h(j(e)),3)]),_:2},1032,[`class`,`onSelect`]))),128))]),_:2},1032,[`class`]))),128))]),_:1},8,[`class`])]),_:1},16)]),_:1},8,[`modal`,`open`]))}}),[[`__cssModules`,{$style:{trigger:`_trigger_1wl1x_125`,triggerText:`_triggerText_1wl1x_141`,chevron:`_chevron_1wl1x_147`,open:`_open_1wl1x_151`,content:`_content_1wl1x_155`,slideDown:`_slideDown_1wl1x_1`,slideUp:`_slideUp_1wl1x_1`,emptyState:`_emptyState_1wl1x_174`,group:`_group_1wl1x_179`,groupLabel:`_groupLabel_1wl1x_183`,sessionItem:`_sessionItem_1wl1x_191`,active:`_active_1wl1x_209`,sessionTitle:`_sessionTitle_1wl1x_213`}}]]),Tn=Y(u({__name:`CanvasChatHubPanel`,props:{floating:{type:Boolean,default:!1}},emits:[`close`,`pop-out`],setup(e,{expose:n,emit:o}){let c=e,l=o,u=z(),d=Qt(),f=Je(),p=Ie(),_=Xt(),v=ze(),b=jt(),C=Me(),ee=m(()=>window.parent===window),w=m(()=>_.isPoppedOut),T=s(ot()),D=s(),k=A(`inputRef`),j=A(`scrollable`),N=m(()=>p?.value?.allNodes??[]),P=m(()=>N.value.find(e=>e.type===lt)),F=m(()=>{let e=P.value?.parameters?.agentName;return typeof e==`string`&&e.trim()?e.trim():p?.value?.name||`Workflow`}),L=m(()=>{let e=f.workflowId;if(!e)return null;let t=P.value?.parameters,n=t?.agentIcon,r=d.getAgent({provider:`n8n`,workflowId:e},{name:F.value,icon:n??null}),i=t?.options,a=t?.agentDescription,o=typeof a==`string`&&a.trim()?a.trim():null,s=(t?.suggestedPrompts)?.prompts?.filter(e=>typeof e.text==`string`&&e.text.trim().length>0).map(e=>({text:e.text,...e.icon?{icon:e.icon}:{}}));return{...r,...o===null?{}:{description:o},...s?.length?{suggestedPrompts:s}:{},...i?{metadata:{...r.metadata,allowFileUploads:i.allowFileUploads===!0,allowedFilesMimeTypes:typeof i.allowedFilesMimeTypes==`string`?i.allowedFilesMimeTypes:r.metadata.allowedFilesMimeTypes}}:{}}}),{chatMessages:te,isResponding:B,isNewSession:V,messagingState:H,arrivedState:ne,scrollToBottom:re,loadSession:ie}=un({sessionId:T,scrollableRef:j}),W=m(()=>L.value?.metadata.allowFileUploads??!1);function oe(e){k.value?.addAttachments(e)}let G=mn(W,oe),se=m(()=>u.baseText(`chat.window.session.id`,{interpolate:{id:`${T.value.slice(0,5)}...`}}));async function ce(){await b.copy(T.value),C.showMessage({title:u.baseText(`generic.copiedToClipboard`),message:``,type:`success`})}function K(){v.track(`User clicked new chat button`,{source:`canvas`}),T.value=ot()}async function le(e){T.value=e;try{await ie(e)}catch{T.value=ot()}}E(()=>f.workflowId,()=>{T.value=ot()});async function ue(e,t){!e.trim()||B.value||!L.value||(await d.sendMessage(T.value,e,L.value,{},t),k.value?.reset())}async function q(){await d.stopStreamingMessage(T.value)}async function de(e){B.value||e.type!==`ai`||!L.value||(D.value=void 0,await d.regenerateMessage(T.value,e.id,L.value,{}))}function fe(e){D.value=e}function pe(){D.value=void 0}async function me(e,t,n){!D.value||B.value||!L.value||(await d.editMessage(T.value,D.value,e,L.value,{},t,n),D.value=void 0)}function he(e){L.value&&v.track(`User clicked chat hub suggested prompt`,{...en(L.value.model),source:`canvas`}),k.value?.setText(e),k.value?.focus()}function ge(){k.value?.focus()}return n({focusInput:ge,sessionId:T,sessionIdText:se,handleNewSession:K,handleSelectSession:le,copySessionId:ce}),(e,n)=>(t(),a(`div`,{class:S([e.$style.panel,{[e.$style.poppedOut]:w.value,[e.$style.floating]:c.floating,[e.$style.isDraggingFile]:y(G).isDragging.value}]),onDragenter:n[3]||=(...e)=>y(G).handleDragEnter&&y(G).handleDragEnter(...e),onDragleave:n[4]||=(...e)=>y(G).handleDragLeave&&y(G).handleDragLeave(...e),onDragover:n[5]||=(...e)=>y(G).handleDragOver&&y(G).handleDragOver(...e),onDrop:n[6]||=(...e)=>y(G).handleDrop&&y(G).handleDrop(...e),onPaste:n[7]||=(...e)=>y(G).handlePaste&&y(G).handlePaste(...e)},[y(G).isDragging.value?(t(),a(`div`,{key:0,class:S(e.$style.dropOverlay)},[O(y(J),{size:`large`,color:`text-dark`},{default:R(()=>[r(h(y(u).baseText(`chatHub.chat.dropOverlay`)),1)]),_:1})],2)):g(``,!0),c.floating?g(``,!0):(t(),a(`div`,{key:1,class:S(e.$style.header)},[i(`div`,{class:S(e.$style.headerTitle)},[O(nn,{agent:L.value,size:`sm`},null,8,[`agent`]),O(y(J),{size:`medium`,bold:!0,class:S(e.$style.headerTitleText)},{default:R(()=>[r(h(F.value),1)]),_:1},8,[`class`]),i(`span`,{class:S(e.$style.previewBadge)},h(y(u).baseText(`chatHub.canvas.previewBadge`)),3)],2),i(`div`,{class:S(e.$style.headerActions)},[O(wn,{"session-id":T.value,"session-title":se.value,"workflow-id":y(f).workflowId,onSelectSession:le},null,8,[`session-id`,`session-title`,`workflow-id`]),O(y(U),{placement:`bottom`},{content:R(()=>[r(h(T.value)+` `,1),n[8]||=i(`br`,null,null,-1),r(` `+h(y(u).baseText(`chat.window.session.id.copy`)),1)]),default:R(()=>[O(y(ae),{icon:`copy`,variant:`ghost`,size:`small`,"data-test-id":`canvas-chat-session-id`,onClick:ce})]),_:1}),O(y(U),{placement:`bottom`},{content:R(()=>[r(h(y(u).baseText(`chat.window.session.resetSession`)),1)]),default:R(()=>[O(y(ae),{icon:`undo-2`,variant:`ghost`,size:`small`,"data-test-id":`canvas-chat-hub-new-session`,onClick:K})]),_:1}),ee.value&&!w.value?(t(),I(y(U),{key:0,placement:`bottom`},{content:R(()=>[r(h(y(u).baseText(`runData.panel.actions.popOut`)),1)]),default:R(()=>[O(y(ae),{icon:`external-link`,variant:`ghost`,size:`small`,"data-test-id":`canvas-chat-hub-pop-out`,onClick:n[0]||=e=>l(`pop-out`)})]),_:1})):g(``,!0),O(y(ae),{icon:`x`,variant:`ghost`,size:`small`,"data-test-id":`canvas-chat-hub-close`,onClick:n[1]||=e=>l(`close`)})],2)],2)),O(y(_e),{type:`scroll`,"enable-vertical-scroll":!0,"enable-horizontal-scroll":!1,"as-child":``,class:S(e.$style.scrollArea)},{default:R(()=>[i(`div`,{ref:`scrollable`,class:S({[e.$style.scrollable]:!0,[e.$style.isNewSession]:y(V)})},[y(V)?(t(),a(`div`,{key:0,class:S(e.$style.greetingsWrapper)},[O(pn,{"selected-agent":L.value,onSelectPrompt:he},null,8,[`selected-agent`])],2)):(t(),a(`div`,{key:1,role:`log`,"aria-live":`polite`,class:S(e.$style.messageList)},[(t(!0),a(x,null,M(y(te),e=>(t(),I(fn,{key:e.id,message:e,compact:!1,"is-editing":D.value===e.id,"is-edit-submitting":y(d).streaming?.revisionOfMessageId===e.id,"has-session-streaming":y(B),"cached-agent-display-name":L.value?.name??null,"cached-agent-icon":L.value?.icon??null,"accepted-mime-types":L.value?.metadata.allowedFilesMimeTypes??``,onStartEdit:t=>fe(e.id),onCancelEdit:pe,onUpdate:me,onRegenerate:de},null,8,[`message`,`is-editing`,`is-edit-submitting`,`has-session-streaming`,`cached-agent-display-name`,`cached-agent-icon`,`accepted-mime-types`,`onStartEdit`]))),128))],2)),i(`div`,{class:S(e.$style.promptContainer)},[!y(ne).bottom&&!y(V)?(t(),I(y(ae),{key:0,variant:`subtle`,icon:`arrow-down`,class:S(e.$style.scrollToBottomButton),title:y(u).baseText(`chatHub.chat.scrollToBottom`),onClick:n[2]||=e=>y(re)(!0)},null,8,[`class`,`title`])):g(``,!0),O(dn,{ref_key:`inputRef`,ref:k,class:S(e.$style.prompt),"selected-model":L.value,"checked-tool-ids":[],"messaging-state":y(H),"is-tools-selectable":!1,"is-new-session":y(V),"show-credits-claimed-callout":!1,"show-dynamic-credentials-missing-callout":!1,compact:c.floating,"accepted-mime-types":L.value?.metadata.allowedFilesMimeTypes??``,placeholder:y(u).baseText(`chatHub.chat.prompt.placeholder.sendPreview`),"ai-credits-quota":`0`,onSubmit:ue,onStop:q},null,8,[`class`,`selected-model`,`messaging-state`,`is-new-session`,`compact`,`accepted-mime-types`,`placeholder`])],2)],2)]),_:1},8,[`class`])],34))}}),[[`__cssModules`,{$style:{panel:`_panel_1ev99_125`,poppedOut:`_poppedOut_1ev99_133`,floating:`_floating_1ev99_136`,header:`_header_1ev99_141`,headerTitle:`_headerTitle_1ev99_152`,headerTitleText:`_headerTitleText_1ev99_159`,headerActions:`_headerActions_1ev99_165`,previewBadge:`_previewBadge_1ev99_173`,scrollArea:`_scrollArea_1ev99_184`,scrollable:`_scrollable_1ev99_189`,isNewSession:`_isNewSession_1ev99_198`,promptContainer:`_promptContainer_1ev99_201`,prompt:`_prompt_1ev99_201`,greetingsWrapper:`_greetingsWrapper_1ev99_208`,messageList:`_messageList_1ev99_215`,scrollToBottomButton:`_scrollToBottomButton_1ev99_241`,isDraggingFile:`_isDraggingFile_1ev99_249`,dropOverlay:`_dropOverlay_1ev99_253`}}]]),En=u({__name:`CanvasChatFloatingMenu`,props:{sessionId:{},workflowId:{},canPopOut:{type:Boolean}},emits:[`select-session`,`copy-session-id`,`new-session`,`pop-out`],setup(e,{emit:n}){let r=e,i=n,a=z(),o=Qt(),c=p(wt,s()),l=m(()=>!!c.value),u=m(()=>c.value?.document.body),d=s(!1),f=s(!1),h=m(()=>(o.sessions.ids??[]).reduce((e,t)=>{let n=o.sessions.byId[t];return n&&n.workflowId===r.workflowId&&n.type===`manual`&&e.push(n),e},[])),g=m(()=>{let e=$t(h.value);if(e.length===0&&!d.value)return[{id:`__no-sessions__`,label:a.baseText(`chatHub.canvas.session.noSessions`),disabled:!0}];let t=[];for(let n=0;n<e.length;n++){let i=e[n];t.push({id:`__group-${n}__`,label:i.group,disabled:!0,divided:n>0});for(let e of i.sessions)t.push({id:e.id,label:e.id,checked:e.id===r.sessionId})}return t}),_=m(()=>{let e=[{id:`sessions`,label:a.baseText(`chatHub.canvas.menu.sessions`),icon:{type:`icon`,value:`history`},children:g.value,loading:d.value},{id:`copy-session-id`,label:a.baseText(`chatHub.canvas.menu.copySessionId`),icon:{type:`icon`,value:`copy`},divided:!0},{id:`new-session`,label:a.baseText(`chatHub.canvas.menu.newSession`),icon:{type:`icon`,value:`undo-2`}}];return r.canPopOut&&e.push({id:`pop-out`,label:a.baseText(`chatHub.canvas.menu.popOut`),icon:{type:`icon`,value:`external-link`}}),e});async function v(e,t){if(e===`sessions`&&t&&!f.value){f.value=!0,d.value=!0;try{await o.fetchSessions(!0,{type:`manual`})}finally{d.value=!1}}}function b(e){switch(e){case`copy-session-id`:i(`copy-session-id`);break;case`new-session`:i(`new-session`);break;case`pop-out`:setTimeout(()=>{document.activeElement?.blur?.(),i(`pop-out`)});break;default:e!==`__no-sessions__`&&i(`select-session`,e);break}}return E(()=>r.workflowId,()=>{f.value=!1}),(e,n)=>(t(),I(y(ve),{items:_.value,"portal-target":u.value,modal:!l.value,placement:`bottom-end`,"data-test-id":`canvas-chat-floating-menu`,onSelect:b,"onSubmenu:toggle":v},null,8,[`items`,`portal-target`,`modal`]))}}),Dn=16,On=560,kn=700,An=Y(u({__name:`CanvasChatFloatingWindow`,emits:[`close`,`pop-out`],setup(e,{expose:n,emit:i}){let a=i,o=z(),c=Je(),l=Xt(),u=m(()=>l.isPoppedOut),d=s(),f=A(`floatingWindowRef`),p=m(()=>window.parent===window),_=te(ht,{});function b(){let e=document.getElementById(`canvas`);if(e){let t=e.getBoundingClientRect();return{x:t.left,y:t.top}}return{x:0,y:0}}let x=m(()=>{if(_.value.x!==void 0&&_.value.y!==void 0)return{x:_.value.x,y:_.value.y};let e=b();return{x:e.x+Dn,y:e.y+Dn}}),C=m(()=>_.value.width??On),ee=m(()=>_.value.height??kn);function w(e){_.value={..._.value,x:e.x,y:e.y}}function T(e){_.value={..._.value,width:e.width,height:e.height}}function D(){if(u.value)return;_.value={};let e=b();f.value?.resetPosition({x:e.x+Dn,y:e.y+Dn},{width:On,height:kn})}E(()=>d.value,async e=>{e&&(await v(),e.focusInput())});function k(){d.value?.focusInput()}return n({focusInput:k,canvasChatHubRef:d}),(e,n)=>(t(),I(y(pe),{ref_key:`floatingWindowRef`,ref:f,width:C.value,height:ee.value,"min-width":400,"min-height":300,"initial-position":x.value,class:S({[e.$style.poppedOut]:u.value}),"data-test-id":`canvas-chat-floating-window`,onClose:n[5]||=e=>a(`close`),onMove:w,onResize:T,onHeaderDoubleClick:D},{"header-icon":R(()=>[O(nn,{agent:null,size:`sm`})]),header:R(()=>[O(y(J),{size:`medium`,bold:!0,class:S(e.$style.headerTitle)},{default:R(()=>[r(h(y(o).baseText(`chatHub.canvas.floatingTitle`)),1)]),_:1},8,[`class`])]),"header-actions":R(()=>[d.value?.sessionId?(t(),I(En,{key:0,"session-id":d.value.sessionId,"workflow-id":y(c).workflowId,"can-pop-out":p.value&&!u.value,onSelectSession:d.value.handleSelectSession,onCopySessionId:n[0]||=e=>d.value.copySessionId(),onNewSession:n[1]||=e=>d.value.handleNewSession(),onPopOut:n[2]||=e=>a(`pop-out`)},null,8,[`session-id`,`workflow-id`,`can-pop-out`,`onSelectSession`])):g(``,!0)]),default:R(()=>[O(Tn,{ref_key:`canvasChatHubRef`,ref:d,floating:!0,onClose:n[3]||=e=>a(`close`),onPopOut:n[4]||=e=>a(`pop-out`)},null,512)]),_:1},8,[`width`,`height`,`initial-position`,`class`]))}}),[[`__cssModules`,{$style:{headerTitle:`_headerTitle_gh5qv_125`,poppedOut:`_poppedOut_gh5qv_131`}}]]),jn=Y(u({__name:`CanvasChatOverlay`,setup(e,{expose:n}){let r=fe(),o=Xt(),c=Je(),l=m(()=>c.workflowId?We(qe(c.workflowId)):void 0),u=s(),d=A(`popOutContainer`),f=A(`popOutContent`),p=m(()=>o.isPoppedOut),h=m(()=>o.isOpen),_=s(!1);E(h,e=>{e&&(_.value=!0,v(()=>{u.value?.focusInput()}))},{immediate:!0}),an({title:m(()=>`Chat - ${l.value?.name||`Workflow`}`),initialWidth:560,initialHeight:700,container:d,content:f,shouldPopOut:m(()=>p.value&&o.isOpen),onRequestClose:()=>{o.close()}}),E(()=>r.meta.nodeView,e=>{!e&&p.value&&o.close()});function y(){o.close()}function b(){o.popOut()}function x(){u.value?.focusInput()}return n({focusInput:x}),(e,n)=>(t(),a(`div`,{ref_key:`popOutContainer`,ref:d,class:S(e.$style.popOutContainer)},[i(`div`,{ref_key:`popOutContent`,ref:f,class:S([e.$style.popOutContent,{[e.$style.poppedOut]:p.value}])},[_.value?ee((t(),I(An,{key:0,ref_key:`canvasChatFloatingWindowRef`,ref:u,onClose:y,onPopOut:b},null,512)),[[k,h.value]]):g(``,!0)],2)],2))}}),[[`__cssModules`,{$style:{popOutContainer:`_popOutContainer_wed02_125`,popOutContent:`_popOutContent_wed02_129`,poppedOut:`_poppedOut_wed02_132`}}]]),Mn=Y(u({__name:`TabBar`,props:{items:{},modelValue:{default:Q.WORKFLOW},floating:{type:Boolean,default:!1}},emits:[`update:modelValue`],setup(e,{emit:n}){let r=n;function i(e,t){r(`update:modelValue`,e,t)}return(n,r)=>e.items?(t(),a(`div`,{key:0,class:S({[n.$style.container]:!0,[n.$style.floating]:e.floating,"tab-bar-container":!0})},[O(y(G),{"model-value":e.modelValue,options:e.items,"onUpdate:modelValue":i},null,8,[`model-value`,`options`])],2)):g(``,!0)}}),[[`__cssModules`,{$style:{container:`_container_8p938_125`,floating:`_floating_8p938_140`}}]]),Nn=u({__name:`BreakpointsObserver`,props:{valueXS:{},valueXL:{},valueLG:{},valueMD:{},valueSM:{},valueDefault:{}},setup(e){let n=e,{callDebounced:r}=At(),i=Ot(),o=s(window.innerWidth),c=m(()=>o.value<768?`XS`:o.value>=1920?`XL`:o.value>=1200?`LG`:o.value>=992?`MD`:`SM`),l=m(()=>n.valueXS&&o.value<768?n.valueXS:n.valueXL&&o.value>=1920?n.valueXL:n.valueLG&&o.value>=1200?n.valueLG:n.valueMD&&o.value>=992?n.valueMD:n.valueSM?n.valueSM:n.valueDefault),u=()=>{r(d,{debounceTime:50})},d=async()=>{o.value=window.innerWidth,await v();let e=await Te();i.updateBannersHeight(e)};return b(()=>{window.addEventListener(`resize`,u)}),j(()=>{window.removeEventListener(`resize`,u)}),(e,n)=>(t(),a(`span`,null,[D(e.$slots,`default`,{bp:c.value,value:l.value})]))}}),Pn=u({__name:`WorkflowProductionChecklist`,props:{workflow:{}},setup(e){let n=e,r=z(),i=ge(),a=De(),o=Qe(),c=_n(),l=Ke(),u=Ae(),d=ze(),f=Ge(),h=Dt(),_=Ze(),v=p(at,null),x=s(!1),S=s(null),C=m(()=>n.workflow.nodes.some(e=>o.getNodeType(e.type,e.typeVersion)?.codex?.categories?.includes(`AI`))),ee=m(()=>a.evaluationSetOutputsNodeExist),w=m(()=>!!n.workflow.settings?.errorWorkflow),T=m(()=>n.workflow.nodes.some(e=>e.type===`n8n-nodes-base.errorTrigger`&&e.disabled!==!0)),D=m(()=>n.workflow?.nodes?n.workflow.nodes.some(e=>e.type===`n8n-nodes-base.timeSaved`&&e.disabled!==!0):!1),O=m(()=>n.workflow.settings?.timeSavedPerExecution!==void 0||D.value),k=m(()=>l.isModalActiveById[_t]),A=m(()=>f.preferences.branchReadOnly),j=m(()=>_.isInstanceOwner),M=m(()=>_.isAdmin),N=m(()=>h.isModuleActive(`mcp`)),P=m(()=>h.moduleSettings.mcp?.mcpAccessEnabled??!1),F=m(()=>j.value||M.value),L=m(()=>{if(c.isCacheLoading.value)return[];let e=!!v?.value?.activeVersionId,t=[],i=S.value?.suggestedActions??{};e&&!T.value&&!i.errorWorkflow?.ignored&&t.push({id:`errorWorkflow`,title:r.baseText(`workflowProductionChecklist.errorWorkflow.title`),description:r.baseText(`workflowProductionChecklist.errorWorkflow.description`),moreInfoLink:bt,completed:w.value}),e&&C.value&&a.isEvaluationEnabled&&!i.evaluations?.ignored&&t.push({id:`evaluations`,title:r.baseText(`workflowProductionChecklist.evaluations.title`),description:r.baseText(`workflowProductionChecklist.evaluations.description`),moreInfoLink:vt,completed:ee.value}),e&&!i.timeSaved?.ignored&&t.push({id:`timeSaved`,title:r.baseText(`workflowProductionChecklist.timeSaved.title`),description:r.baseText(`workflowProductionChecklist.timeSaved.description`),moreInfoLink:pt,completed:O.value});let o=s();return o&&t.push(o),t;function s(){if(!N.value)return null;let e={title:r.baseText(`mcp.productionChecklist.title`),moreInfoLink:Wt};return P.value?i[`workflow-mcp-access`]?.ignored?null:{...e,id:`workflow-mcp-access`,description:r.baseText(`mcp.productionChecklist.workflow.description`),completed:n.workflow.settings?.availableInMCP??!1}:!F.value||i[`instance-mcp-access`]?.ignored?null:{...e,id:`instance-mcp-access`,description:r.baseText(`mcp.productionChecklist.instance.description`),completed:!1}}});async function R(){n.workflow.id&&(S.value=await c.getMergedWorkflowSettings(n.workflow.id))}async function te(e){switch(e){case`evaluations`:await i.push({name:Z.EVALUATION_EDIT,params:{name:n.workflow.id}});break;case`errorWorkflow`:case`timeSaved`:case`workflow-mcp-access`:l.openModal(Tt);break;case`instance-mcp-access`:await i.push({name:Ut});break;default:break}x.value=!1}function B(e){return[`evaluations`,`errorWorkflow`,`timeSaved`,`workflow-mcp-access`,`instance-mcp-access`].includes(e)}async function V(e){B(e)&&(await c.ignoreSuggestedAction(n.workflow.id,e),await R(),d.track(`user clicked ignore suggested action`,{actionId:e}))}async function H(){await u.confirm(r.baseText(`workflowProductionChecklist.ignoreAllConfirmation.description`),r.baseText(`workflowProductionChecklist.ignoreAllConfirmation.title`),{confirmButtonText:r.baseText(`workflowProductionChecklist.ignoreAllConfirmation.confirm`)})===`confirm`&&(await c.ignoreAllSuggestedActionsForAllWorkflows(L.value.map(e=>e.id)),await R(),d.track(`user clicked ignore suggested actions for all workflows`))}function U(){x.value=!0}function re(){d.track(`user opened suggested actions checklist`)}function ie(e){e?(x.value=!0,re()):k.value||(x.value=!1)}return E(()=>!!v?.value?.activeVersionId,async(e,t)=>{e&&!t&&(S.value?.firstActivatedAt||setTimeout(()=>{U()},0),await c.updateFirstActivatedAt(n.workflow.id))}),b(async()=>{await R()}),(e,n)=>L.value.length>0?(t(),I(y(ne),{key:0,open:x.value,title:y(r).baseText(`workflowProductionChecklist.title`),actions:L.value,"ignore-all-label":y(r).baseText(`workflowProductionChecklist.turnOffWorkflowSuggestions`),notice:A.value?y(r).baseText(`workflowProductionChecklist.readOnlyNotice`):``,"popover-alignment":`end`,onActionClick:te,onIgnoreClick:V,onIgnoreAll:H,"onUpdate:open":ie},null,8,[`open`,`title`,`actions`,`ignore-all-label`,`notice`])):g(``,!0)}}),Fn=u({__name:`IntersectionObserver`,props:{threshold:{default:0},enabled:{type:Boolean,default:!1},eventBus:{}},emits:[`observed`],setup(e,{emit:n}){let r=e,i=n,o=s(null),c=s(null);return j(()=>{r.enabled&&o.value&&o.value.disconnect()}),b(()=>{if(!r.enabled)return;let e={root:c.value,rootMargin:`0px`,threshold:r.threshold},t=new IntersectionObserver(e=>{e.forEach(({target:e,isIntersecting:t})=>{i(`observed`,{el:e,isIntersecting:t})})},e);o.value=t,r.eventBus.on(`observe`,e=>{e&&t.observe(e)}),r.eventBus.on(`unobserve`,e=>{t.unobserve(e)})}),(e,n)=>(t(),a(`div`,{ref_key:`root`,ref:c},[D(e.$slots,`default`)],512))}}),In=u({__name:`IntersectionObserved`,props:{enabled:{type:Boolean,default:!1},eventBus:{}},setup(e){let n=e,r=s(null);return b(async()=>{n.enabled&&(await v(),n.eventBus.emit(`observe`,r.value))}),j(()=>{n.enabled&&n.eventBus.emit(`unobserve`,r.value)}),(e,n)=>(t(),a(`span`,{ref_key:`observed`,ref:r},[D(e.$slots,`default`)],512))}}),Ln=e(kt(),1),Rn={class:`tags`},zn=[`onClick`],Bn=Y(u({__name:`TagsContainer`,props:{tagIds:{},tagsById:{},limit:{default:20},clickable:{type:Boolean,default:!1},responsive:{type:Boolean,default:!1}},emits:[`click`],setup(e,{emit:n}){let r=e,o=n,c=s(320),l=xe(),u=s({}),d=s(),f=m(()=>({"max-width":`${c.value}px`})),p=m(()=>{let e=r.tagIds.map(e=>r.tagsById[e]).filter(Boolean),t=r.limit?e.slice(0,r.limit):e;t=t.map(e=>({...e,hidden:r.responsive&&!u.value[e.id]}));let n=t.length;if(r.responsive&&(n=Object.values(u.value).reduce((e,t)=>t?e+1:e,0)),n<e.length){let r=e.slice(n),i=r.reduce((e,t)=>e?`${e}, ${t.name}`:t.name,``),a={id:`count`,name:`+${r.length}`,title:i,isCount:!0};t.splice(n,0,a)}return t}),h=()=>{let e=d.value?.$el?.parentNode;e&&(c.value=0,v(()=>{c.value=e.clientWidth}))},g=(0,Ln.default)(h,100),_=({el:e,isIntersecting:t})=>{e.dataset.id&&(u.value={...u.value,[e.dataset.id]:t})},C=(e,t)=>{r.clickable&&e.stopPropagation(),t.hidden||o(`click`,t.id)};return b(()=>{h(),window.addEventListener(`resize`,g)}),j(()=>{window.removeEventListener(`resize`,g)}),(n,r)=>(t(),I(Fn,{ref_key:`tagsContainer`,ref:d,threshold:1,class:`tags-container`,style:L(f.value),enabled:e.responsive,"event-bus":y(l),onObserved:_},{default:R(()=>[i(`span`,Rn,[(t(!0),a(x,null,M(p.value,n=>(t(),a(`span`,{key:n.id,class:S({clickable:!n.hidden}),onClick:e=>C(e,n)},[n.isCount?(t(),I(y(q),{key:0,title:n.title,text:n.name,clickable:!1,class:`count-container`},null,8,[`title`,`text`])):(t(),I(In,{key:1,class:S({hideTag:n.hidden}),"data-id":n.id,enabled:e.responsive,"event-bus":y(l)},{default:R(()=>[O(y(q),{title:n.name,text:n.name,clickable:e.clickable},null,8,[`title`,`text`,`clickable`])]),_:2},1032,[`class`,`data-id`,`enabled`,`event-bus`]))],10,zn))),128))])]),_:1},8,[`style`,`enabled`,`event-bus`]))}}),[[`__scopeId`,`data-v-8ecf8b55`]]),Vn=u({__name:`WorkflowTagsContainer`,props:{tagIds:{},limit:{},clickable:{type:Boolean},responsive:{type:Boolean}},emits:[`click`],setup(e,{emit:n}){let r=n,i=Ue(),a=m(()=>i.tagsById);function o(e){r(`click`,e)}return(n,r)=>(t(),I(Bn,{"tag-ids":e.tagIds,"tags-by-id":a.value,limit:e.limit,clickable:e.clickable,responsive:e.responsive,onClick:o},null,8,[`tag-ids`,`tags-by-id`,`limit`,`clickable`,`responsive`]))}}),Hn=e(we(),1),Un=(e,t)=>e??(typeof t==`string`?t:void 0),Wn=Y(u({__name:`ActionsDropdownMenu`,props:{workflowPermissions:{},isNewWorkflow:{type:Boolean},isArchived:{type:Boolean},id:{},name:{},tags:{},currentFolder:{}},setup(e,{expose:n}){let r=e,o=s(),c=Me(),l=z(),u=fe(),d=Le(),f=Ge(),p=Lt(),h=Xe(),g=Ke(),_=w(),v=Et(),b=Ue(),x=Dt(),C=Ze(),ee=Pe(),T=xe(),{showMoveToProjectToast:E}=Gt(),D=ze(),k=m(()=>u.meta&&(u.meta.nodeView||u.meta.keepWorkflowAlive===!0)),A=m(()=>[Z.EXECUTION_HOME.toString(),Z.WORKFLOW_EXECUTIONS.toString(),Z.EXECUTION_PREVIEW].includes(u.name||``)),j=m(()=>p.shouldBeReadOnly),M=m(()=>x.isEnterpriseFeatureEnabled[ut.Sharing]);function N(){let e=o.value;if(e?.files&&e.files.length!==0){let t=new FileReader;t.onload=()=>{let n;try{n=JSON.parse(t.result)}catch{c.showMessage({title:l.baseText(`mainSidebar.showMessage.handleFileImport.title`),message:l.baseText(`mainSidebar.showMessage.handleFileImport.message`),type:`error`});return}finally{t.onload=null,e.value=``}X.emit(`importWorkflowData`,{data:n})},t.readAsText(e.files[0])}}let P=m(()=>{let e=[{id:$.DOWNLOAD,label:l.baseText(`menuActions.download`),disabled:!k.value}];return M.value&&r.workflowPermissions.share&&e.push({id:$.SHARE,label:l.baseText(`workflowDetails.share`),disabled:!k.value}),r.workflowPermissions.move&&d.isTeamProjectFeatureEnabled&&e.push({id:$.CHANGE_OWNER,label:l.baseText(`workflows.item.changeOwner`),disabled:r.isNewWorkflow}),!j.value&&!r.isArchived&&!f.preferences.branchReadOnly&&e.push({id:$.RENAME,label:l.baseText(`generic.rename`),disabled:!k.value||r.workflowPermissions.update!==!0}),(r.workflowPermissions.update===!0&&!j.value&&!r.isArchived&&!f.preferences.branchReadOnly||r.isNewWorkflow)&&(e.unshift({id:$.DUPLICATE,label:l.baseText(`menuActions.duplicate`),disabled:!k.value||!r.id}),e.unshift({id:$.EDIT_DESCRIPTION,label:l.baseText(`menuActions.editDescription`),disabled:!k.value||!r.id}),e.push({id:$.IMPORT_FROM_URL,label:l.baseText(`menuActions.importFromUrl`),disabled:!k.value||A.value},{id:$.IMPORT_FROM_FILE,label:l.baseText(`menuActions.importFromFile`),disabled:!k.value||A.value})),Ye([`rbac`],{rbac:{scope:`sourceControl:push`}})&&e.push({id:$.PUSH,label:l.baseText(`menuActions.push`),disabled:!f.isEnterpriseSourceControlEnabled||!k.value||A.value||f.preferences.branchReadOnly}),e.push({id:$.SETTINGS,label:l.baseText(`generic.settings`),disabled:!k.value||r.isNewWorkflow}),(r.workflowPermissions.delete===!0&&!j.value&&!f.preferences.branchReadOnly||r.isNewWorkflow)&&(r.isArchived?(e.push({id:$.UNARCHIVE,label:l.baseText(`menuActions.unarchive`),disabled:!k.value||r.isNewWorkflow}),e.push({id:$.DELETE,label:l.baseText(`menuActions.delete`),disabled:!k.value||r.isNewWorkflow,customClass:_.deleteItem,divided:!0})):e.push({id:$.ARCHIVE,label:l.baseText(`menuActions.archive`),disabled:!k.value||r.isNewWorkflow,customClass:_.deleteItem,divided:!0})),e});async function F(e){switch(e){case $.EDIT_DESCRIPTION:{let e=Un(r.id,u.params.name);if(!e)return;let t=h.getWorkflowById(e).description;g.openModalWithData({name:nt,data:{workflowId:e,workflowDescription:t}});break}case $.DUPLICATE:g.openModalWithData({name:St,data:{id:r.id,name:r.name,tags:r.tags,parentFolderId:r.currentFolder?.id}});break;case $.RENAME:X.emit(`renameWorkflow`);break;case $.DOWNLOAD:{let e=await ee.getWorkflowDataToSave(),{tags:t,...n}=e,i={...n,meta:{...n.meta,instanceId:v.instanceId},tags:(t??[]).map(e=>{let{usageCount:t,...n}=b.tagsById[e];return n})},a=new Blob([JSON.stringify(i,null,2)],{type:`application/json;charset=utf-8`}),o=r.name||`unsaved_workflow`;o=Vt(o),He.track(`User exported workflow`,{workflow_id:e.id}),(0,Hn.default)(a,o+`.json`);break}case $.IMPORT_FROM_URL:g.openModal(xt);break;case $.IMPORT_FROM_FILE:X.emit(`importWorkflowFromFile`);break;case $.PUSH:try{Ht.push({query:{...u.query,sourceControl:`push`}})}catch(e){switch(e.message){case`source_control_not_connected`:c.showError({...e,message:``},l.baseText(`settings.sourceControl.error.not.connected.title`),l.baseText(`settings.sourceControl.error.not.connected.message`));break;default:c.showError(e,l.baseText(`error`))}}break;case $.SETTINGS:g.openModal(Tt);break;case $.SHARE:g.openModalWithData({name:it,data:{id:r.id}}),D.track(`User opened sharing modal`,{workflow_id:r.id,user_id_sharer:C.currentUser?.id,sub_view:u.name===Z.WORKFLOWS?`Workflows listing`:`Workflow editor`});break;case $.ARCHIVE:X.emit(`archiveWorkflow`);break;case $.UNARCHIVE:X.emit(`unarchiveWorkflow`);break;case $.DELETE:X.emit(`deleteWorkflow`);break;case $.CHANGE_OWNER:{let e=Un(r.id,u.params.name);if(!e)return;let t=h.workflowsById[e],n=async()=>await Ht.push({name:Z.WORKFLOWS});T.once(`workflow-transferred`,async e=>{await n(),E({resourceType:Re.Workflow,resourceTypeLabel:l.baseText(`generic.workflow`).toLowerCase(),resourceName:e.source.workflow.name,targetProject:e.toast.targetProject,targetProjectName:e.toast.targetProjectName,destinationFolderId:e.destination.parentFolder.id,shareUsedCredentials:e.toast.shareUsedCredentials,areAllUsedCredentialsShareable:e.toast.areAllUsedCredentialsShareable})}),g.openMoveToFolderModal(`workflow`,{id:t.id,name:t.name,parentFolderId:r.currentFolder?.id,sharedWithProjects:t.sharedWithProjects,homeProjectId:t.homeProject?.id},T);break}default:break}}return n({importFileRef:o}),(e,n)=>(t(),a(`div`,{class:S([y(_).group])},[i(`input`,{ref_key:`importFileRef`,ref:o,class:S(y(_).hiddenInput),type:`file`,"data-test-id":`workflow-import-input`,onChange:n[0]||=e=>N()},null,34),O(y(oe),{items:P.value,"data-test-id":`workflow-menu`,onSelect:F},null,8,[`items`])],2))}}),[[`__cssModules`,{$style:{deleteItem:`_deleteItem_ldsb8_125`,group:`_group_ldsb8_129`,hiddenInput:`_hiddenInput_ldsb8_134`}}]]),Gn={key:0},Kn={key:1},qn={key:2},Jn={key:3},Yn=u({__name:`WorkflowHistoryButton`,props:{workflowId:{},isNewWorkflow:{type:Boolean}},setup(e){let n=z(),r=e,i=Ke(),o=Fe(),c=s(!1),{debounce:l}=At(),u=l(()=>{c.value=!1},{debounceTime:yt,trailing:!0});E(()=>i.isActionActive.workflowSaving,e=>{e?c.value=!0:u()});let d=m(()=>({name:Z.WORKFLOW_HISTORY,params:{workflowId:r.workflowId}})),f=m(()=>o.autoSaveState===Ct.Scheduled),p=m(()=>r.isNewWorkflow||f.value||c.value);return(r,i)=>e.workflowId?(t(),I(y(U),{key:0,placement:`bottom`,"show-after":300},{content:R(()=>[e.isNewWorkflow?(t(),a(`span`,Gn,h(y(n).baseText(`workflowHistory.button.tooltip.empty`)),1)):f.value?(t(),a(`span`,Kn,h(y(n).baseText(`workflowHistory.button.tooltip.scheduled`)),1)):c.value?(t(),a(`span`,qn,h(y(n).baseText(`workflowHistory.button.tooltip.saving`)),1)):(t(),a(`span`,Jn,h(y(n).baseText(`workflowHistory.button.tooltip`)),1))]),default:R(()=>[(t(),I(N(p.value?`div`:y(ye)),{to:p.value?void 0:d.value},{default:R(()=>[O(y(ae),{class:`n8n-button--highlight`,variant:`ghost`,disabled:p.value,loading:c.value,"data-test-id":`workflow-history-button`,icon:`history`,"aria-label":y(n).baseText(`workflowHistory.title`),size:`medium`},null,8,[`disabled`,`loading`,`aria-label`])]),_:1},8,[`to`]))]),_:1})):g(``,!0)}}),Xn=Y(u({__name:`CollaborationPane`,setup(e){let n=Lt(),r=Ze();E(B(),e=>{e===`hidden`?n.stopHeartbeat():n.startHeartbeat()});let i=m(()=>n.collaborators.length>1),o=m(()=>{let e=n.collaborators.map(({user:e})=>e),t=e.findIndex(e=>e.id===r.currentUser?.id);if(t<1)return{defaultGroup:e};let[i]=e.splice(t,1);return{defaultGroup:[i,...e]}}),s=m(()=>r.currentUser?.email);return b(()=>{n.initialize()}),j(()=>{n.terminate()}),(e,n)=>i.value?(t(),a(`div`,{key:0,class:S(`collaboration-pane-container ${e.$style.container}`),"data-test-id":`collaboration-pane`},[O(y(le),{users:o.value,"current-user-email":s.value},null,8,[`users`,`current-user-email`])],2)):g(``,!0)}}),[[`__cssModules`,{$style:{container:`_container_cvwuq_125`}}]]),Zn={"data-test-id":`workflow-active-version-info`},Qn=function(e){return e.PUBLISH=`publish`,e.NAME_VERSION=`name-version`,e.UNPUBLISH=`unpublish`,e}(Qn||{}),$n=Y(u({__name:`WorkflowHeaderDraftPublishActions`,props:{id:{},tags:{},name:{},currentFolder:{},isArchived:{type:Boolean},isNewWorkflow:{type:Boolean},workflowPermissions:{}},setup(e,{expose:n}){let o=e,c=A(`actionsMenu`),l=Ke(),u=Je(),d=m(()=>We(qe(o.id))),f=Lt(),p=Le(),_=$e(),v=Dt(),C=z(),ee=ge(),w=Me(),T=Fe(),{saveCurrentWorkflow:E,cancelAutoSave:D}=et({router:ee}),k=Zt(),M=m(()=>v.isEnterpriseFeatureEnabled[ut.NamedVersions]),N=s(!1),P=m(()=>c.value?.importFileRef),F=m(()=>ke(u.workflowTriggerNodes)),L=m(()=>F.value.length>0),te=m(()=>{let e=!!K.value,t=u.workflow.versionId!==K.value?.versionId||l.hasUnsavedWorkflowChanges;return e?L.value?u.nodesIssuesExist?`published-node-issues`:t?`published-with-changes`:`published-no-changes`:`published-invalid-trigger`:L.value&&!u.nodesIssuesExist?`not-published-eligible`:`not-published-not-eligible`}),B=m(()=>f.shouldBeReadOnly),V=m(()=>o.workflowPermissions.update),H=m(()=>o.workflowPermissions.publish),ne=m(()=>o.workflowPermissions.unpublish),re=m(()=>p.currentProject?.type===Be.Personal),ie=async()=>{let e=!1;if(T.autoSaveState===Ct.InProgress&&T.pendingSave){N.value=!0;try{await T.pendingSave,e=!0}catch{}finally{N.value=!1}}else T.autoSaveState===Ct.Scheduled&&D();return(!e||l.stateIsDirty||o.isNewWorkflow)&&(N.value=!0,e=await E({},!0),N.value=!1),e},W=async()=>{(l.stateIsDirty||o.isNewWorkflow)&&!await ie()||l.openModalWithData({name:ft,data:{}})},G=m(()=>{if(!H.value){let e={text:C.baseText(`workflows.publish`),enabled:!1,showIndicator:!1,indicatorClass:``,tooltip:re.value?C.baseText(`workflows.publish.personalSpaceRestricted`):C.baseText(`workflows.publish.permissionDenied`),showVersionInfo:!1};return K.value?{...e,showIndicator:!0,showVersionInfo:!0,indicatorClass:`published`}:e}return o.isNewWorkflow?{text:C.baseText(`workflows.publish`),enabled:L.value&&!u.nodesIssuesExist,showIndicator:!1,indicatorClass:``,tooltip:L.value?u.nodesIssuesExist?C.baseText(`workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.title`,{interpolate:{count:u.nodesWithIssues.length},adjustToNumber:u.nodesWithIssues.length}):``:C.baseText(`workflows.publishModal.noTriggerMessage`),showVersionInfo:!1}:{"not-published-not-eligible":{text:C.baseText(`workflows.publish`),enabled:!1,showIndicator:!1,indicatorClass:``,tooltip:L.value?C.baseText(`workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.title`,{interpolate:{count:u.nodesWithIssues.length},adjustToNumber:u.nodesWithIssues.length}):C.baseText(`workflows.publishModal.noTriggerMessage`),showVersionInfo:!1},"not-published-eligible":{text:C.baseText(`workflows.publish`),enabled:!0,showIndicator:!1,indicatorClass:``,tooltip:``,showVersionInfo:!1},"published-no-changes":{text:C.baseText(`generic.published`),enabled:!1,showIndicator:!0,indicatorClass:`published`,tooltip:``,showVersionInfo:!0},"published-with-changes":{text:C.baseText(`workflows.publish`),enabled:!0,showIndicator:!0,indicatorClass:`changes`,tooltip:C.baseText(`workflows.publishModal.changes`),showVersionInfo:!1},"published-node-issues":{text:C.baseText(`workflows.publish`),enabled:!1,showIndicator:!0,indicatorClass:`error`,tooltip:C.baseText(`workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.title`,{interpolate:{count:u.nodesWithIssues.length},adjustToNumber:u.nodesWithIssues.length}),showVersionInfo:!0},"published-invalid-trigger":{text:C.baseText(`workflows.publish`),enabled:!1,showIndicator:!0,indicatorClass:`changes`,tooltip:C.baseText(`workflows.publishModal.noTriggerMessage`),showVersionInfo:!0}}[te.value]}),se=m(()=>o.isNewWorkflow?!1:o.isArchived||!V.value&&!H.value),ce=m(()=>o.isNewWorkflow||B.value||!G.value.enabled||!H.value),K=m(()=>d.value?.activeVersion??null),le=m(()=>K.value?K.value.name??Jt(K.value.versionId):``),ue=m(()=>qt(K.value?.workflowPublishHistory??[])?.createdAt),q=m(()=>{let e=[{id:Qn.PUBLISH,label:C.baseText(`workflows.publish`),shortcut:{shiftKey:!0,keys:[`P`]},disabled:ce.value}];return M.value&&e.push({id:Qn.NAME_VERSION,label:C.baseText(`generic.nameVersion`),shortcut:{metaKey:!0,keys:[`S`]},disabled:!V.value||!u.workflow.versionId}),e.push({id:Qn.UNPUBLISH,label:C.baseText(`workflows.unpublish`),disabled:!K.value||B.value||!ne.value,divided:!0,shortcut:{metaKey:!0,keys:[`U`]}}),e}),J=async()=>{if((l.stateIsDirty||o.isNewWorkflow)&&!await ie())return;let e=u.workflow.versionId,t=u.versionData,n=xe(),r=s({versionId:e,versionName:t?.name??void 0,description:t?.description??void 0,modalTitle:C.baseText(`workflowHistory.nameVersionModal.title`),submitButtonLabel:C.baseText(`workflowHistory.nameVersionModal.confirmButton`),submitting:!1,eventBus:n});n.once(`submit`,async t=>{r.value.submitting=!0;try{await _.updateWorkflowHistoryVersion(o.id,e,{name:t.name,description:t.description}),u.setWorkflowVersionData({versionId:e,name:t.name,description:t.description}),w.showMessage({title:C.baseText(`workflowHistory.action.nameVersion.success.title`),type:`success`}),l.closeModal(ct)}catch(e){w.showError(e,C.baseText(`workflowHistory.action.nameVersion.error.title`))}finally{r.value.submitting=!1}}),l.openModalWithData({name:ct,data:r.value})},fe=()=>{if(!K.value){w.showMessage({title:C.baseText(`workflowHistory.action.unpublish.notAvailable`),type:`warning`});return}let e=xe();e.once(`unpublish`,async()=>{let e=await k.unpublishWorkflowFromHistory(o.id);l.closeModal(st),e&&w.showMessage({title:C.baseText(`workflowHistory.action.unpublish.success.title`),type:`success`})}),l.openModalWithData({name:st,data:{versionName:K.value.name,eventBus:e}})},pe=async e=>{switch(e){case Qn.PUBLISH:await W();break;case Qn.NAME_VERSION:await J();break;case Qn.UNPUBLISH:fe();break;default:break}};return Yt({shift_p:{disabled:()=>ce.value,run:async()=>{await W()}},"ctrl+s":{disabled:()=>!M.value||!V.value||!u.workflow.versionId,run:async()=>{await J()}},"ctrl+u":{disabled:()=>!K.value||!ne.value||B.value,run:fe}}),b(()=>{X.on(`publishWorkflow`,W),X.on(`unpublishWorkflow`,fe)}),j(()=>{X.off(`publishWorkflow`,W),X.off(`unpublishWorkflow`,fe)}),n({importFileRef:P}),(n,s)=>(t(),a(`div`,{class:S(n.$style.container)},[e.isNewWorkflow?g(``,!0):(t(),I(Xn,{key:0})),se.value?g(``,!0):(t(),a(`div`,{key:1,class:S(n.$style.publishButtonWrapper)},[i(`div`,{class:S(n.$style.buttonGroup)},[O(y(U),{disabled:te.value===`not-published-eligible`&&o.workflowPermissions.publish,"show-after":300,offset:15},{content:R(()=>[i(`div`,null,[G.value.tooltip?(t(),a(x,{key:0},[r(h(G.value.tooltip)+` `,1),s[0]||=i(`br`,null,null,-1)],64)):g(``,!0),K.value&&G.value.showVersionInfo?(t(),a(x,{key:1},[i(`span`,Zn,h(le.value),1),s[1]||=i(`br`,null,null,-1),r(h(y(C).baseText(`workflowHistory.item.active`))+` `,1),ue.value?(t(),I(Rt,{key:0,date:ue.value},null,8,[`date`])):g(``,!0)],64)):g(``,!0)])]),default:R(()=>[O(y(de),{class:S(n.$style.groupButtonLeft),loading:N.value,disabled:!G.value.enabled||ce.value,variant:`subtle`,"data-test-id":`workflow-open-publish-modal-button`,onClick:W},{default:R(()=>[i(`div`,{class:S([n.$style.flex])},[G.value.showIndicator?(t(),a(`span`,{key:0,"data-test-id":`workflow-active-version-indicator`,class:S({[n.$style.indicatorDot]:!0,[n.$style.indicatorPublished]:G.value.indicatorClass===`published`,[n.$style.indicatorChanges]:G.value.indicatorClass===`changes`,[n.$style.indicatorIssues]:G.value.indicatorClass===`error`})},null,2)):g(``,!0),i(`span`,{class:S([te.value===`published-no-changes`&&n.$style.indicatorPublishedText])},h(G.value.text),3)],2)]),_:1},8,[`class`,`loading`,`disabled`])]),_:1},8,[`disabled`]),O(y(oe),{items:q.value,placement:`bottom-end`,"data-test-id":`version-menu`,onSelect:pe},{activator:R(()=>[O(y(ae),{class:S(n.$style.groupButtonRight),variant:`subtle`,icon:`chevron-down`,"aria-label":y(C).baseText(`node.moreActions`),"data-test-id":`version-menu-button`},null,8,[`class`,`aria-label`])]),_:1},8,[`items`])],2)],2)),O(Yn,{"workflow-id":o.id,"is-new-workflow":e.isNewWorkflow},null,8,[`workflow-id`,`is-new-workflow`]),O(Wn,{id:e.id,ref:`actionsMenu`,"workflow-permissions":e.workflowPermissions,"is-new-workflow":e.isNewWorkflow,"is-archived":e.isArchived,name:e.name,tags:e.tags,"current-folder":e.currentFolder},null,8,[`id`,`workflow-permissions`,`is-new-workflow`,`is-archived`,`name`,`tags`,`current-folder`])],2))}}),[[`__cssModules`,{$style:{container:`_container_joo8n_125`,activeVersionIndicator:`_activeVersionIndicator_joo8n_129`,icon:`_icon_joo8n_133`,publishButtonWrapper:`_publishButtonWrapper_joo8n_137`,buttonGroup:`_buttonGroup_joo8n_143`,groupButtonLeft:`_groupButtonLeft_joo8n_147`,groupButtonRight:`_groupButtonRight_joo8n_159`,indicatorDot:`_indicatorDot_joo8n_168`,indicatorPublished:`_indicatorPublished_joo8n_176`,indicatorPublishedText:`_indicatorPublishedText_joo8n_180`,indicatorChanges:`_indicatorChanges_joo8n_184`,indicatorIssues:`_indicatorIssues_joo8n_188`,flex:`_flex_joo8n_192`}}]]),er={class:`tags`,"data-test-id":`workflow-tags-container`},tr={key:1},nr=u({__name:`WorkflowDetails`,props:{id:{},tags:{},name:{},currentFolder:{},isArchived:{type:Boolean},description:{}},setup(e){let n={XS:150,SM:200,MD:250,LG:500,XL:1e3},o=e,c=w(),l=Dt(),u=Ke(),d=Je(),f=Xe(),_=Le(),v=Lt(),C=Ge(),ee=zt(),T=z(),D=ge(),k=fe(),M=z(),N=ze(),P=Ae(),F=Me(),L=Ne(),te=It(),B=p(at,null),V=s(!1),H=s([]),ne=A(`workflowHeaderActions`),U=xe(),ie=(e,t)=>{if(e.length!==t.length)return!0;let n=new Set(e);return t.reduce((e,t)=>e||!n.has(t),!1)},W=m(()=>!d.isWorkflowSaved[o.id]),ae=m(()=>rt(B?.value?.scopes).workflow),oe=m(()=>C.preferences.branchReadOnly||v.shouldBeReadOnly),G=m(()=>W.value?oe.value:oe.value||o.isArchived||!ae.value.update),se=m(()=>o.tags),ce=m(()=>{if(!W.value&&o.currentFolder)return o.currentFolder;let e=k.query.parentFolderId;return e?ee.getCachedFolder(e):null});E(()=>o.id,()=>{V.value=!1,q.value?.forceCancel()});function K(){G.value||(H.value=[...o.tags],V.value=!0,setTimeout(()=>{q.value?.forceCancel(),U.emit(`focus`)},0))}function le(){let e=o.tags,t=H.value;if(!ie(e,t)){V.value=!1;return}if(G.value){V.value=!1;return}v.requestWriteAccess(),B?.value&&B.value.setTags(t),u.markStateDirty(`metadata`),N.track(`User edited workflow tags`,{workflow_id:o.id,new_tag_count:t.length}),V.value=!1}function ue(){V.value=!1}let q=A(`renameInput`);function J(){q.value?.forceFocus&&q.value.forceFocus()}function de(e){let t=e.trim();if(!t){F.showMessage({title:M.baseText(`renameAction.emptyName.title`),message:M.baseText(`renameAction.emptyName.message`),type:`error`}),q.value?.forceCancel();return}if(t===o.name){q.value?.forceCancel();return}B?.value?.setName(t),u.markStateDirty(`metadata`),L.setDocumentTitle(t,`IDLE`),q.value?.forceCancel()}async function pe(){if(B?.value?.active&&await P.confirm(M.baseText(`mainSidebar.confirmMessage.workflowArchive.message`,{interpolate:{workflowName:o.name}}),M.baseText(`mainSidebar.confirmMessage.workflowArchive.headline`),{type:`warning`,confirmButtonText:M.baseText(`mainSidebar.confirmMessage.workflowArchive.confirmButtonText`),cancelButtonText:M.baseText(`mainSidebar.confirmMessage.workflowArchive.cancelButtonText`)})!==`confirm`)return;try{let e=o.id===te.value?B?.value?.checksum:void 0;await d.archiveWorkflow(o.id,e),B?.value?.setActiveState({activeVersionId:null,activeVersion:null})}catch(e){F.showError(e,M.baseText(`generic.archiveWorkflowError`));return}u.markStateClean(),F.showMessage({title:M.baseText(`mainSidebar.showMessage.handleArchive.title`,{interpolate:{workflowName:o.name}}),type:`success`});let e=f.getWorkflowById(o.id);e?.homeProject?.type===Be.Team?await D.push({name:Z.PROJECTS_WORKFLOWS,params:{projectId:e.homeProject.id}}):await D.push({name:Z.WORKFLOWS})}async function me(){await