n8n-editor-ui
Version:
Workflow Editor UI for n8n
1 lines • 98.4 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]=`7d0bd8d7-1537-456f-bf13-ecf8ee7757d8`,e._sentryDebugIdIdentifier=`sentry-dbid-7d0bd8d7-1537-456f-bf13-ecf8ee7757d8`)})()}catch{}import{o as e}from"./chunk-CACdhNlC.js";import{$ as t,A as n,C as r,E as i,Ft as a,Mt as o,N as s,O as c,S as l,Sn as u,T as d,Wt as f,X as p,Z as m,_ as h,_n as g,at as _,bt as v,gt as y,h as b,it as x,j as S,m as C,n as w,p as T,pt as E,q as D,rt as O,w as k,yn as ee,yt as A}from"./vue.runtime.esm-bundler-C3C09Zii.js";import{at as j}from"./core-Bz5WjPxS.js";import{At as M,Di as N,Ft as P,J as te,Ji as ne,Pi as re,Qi as F,T as I,Xi as L,Yi as ie,Zi as ae,_t as oe,bi as se,ct as ce,dt as le,h as ue,ji as de,jt as fe,lt as pe,tt as R,ut as me,v as he,vt as ge,wt as z,xt as _e}from"./src-XqE2yCpG.js";import{t as B}from"./_plugin-vue_export-helper-CIL7EULb.js";import{An as V,Ga as H,Ja as ve,Ka as ye,Ln as be,Mn as xe,Nn as Se,Pn as Ce,Rt as we,Xa as Te,ai as Ee,ei as De,eo as Oe,et as ke,fr as Ae,gi as je,hr as Me,it as Ne,nr as Pe,oi as Fe,qa as Ie,qt as U,r as Le,s as Re,sr as ze,t as Be,vr as Ve,w as He,z as Ue}from"./users.store-xP93bV7X.js";import{Bo as We,Bs as Ge,Fc as Ke,Js as W,Ls as qe,Qc as Je,Qo as G,Ra as K,Yc as Ye,cl as Xe,cs as q,el as Ze,eo as J,ls as Qe,ss as Y}from"./constants-DuQbSl-q.js";import{D as $e,T as et}from"./useRootStore-XEREVjMN.js";import{An as tt,t as nt}from"./settings.store-CAFiYCMH.js";import{t as X}from"./banners.store-CAM7bMAe.js";import{t as rt}from"./dateformat-Cs9X8ykY.js";import{n as it,t as at}from"./useDebounce-DyDXl6eh.js";import{t as ot}from"./Modal-gWM7cVuX.js";import{n as st,t as ct}from"./ContactAdministratorToInstall-Fp2QDIRo.js";import{t as lt}from"./ProjectCardBadge-oqs-4qFh.js";import{t as ut}from"./usage.store-BVY0SoSp.js";import{t as dt}from"./useDynamicCredentials-DWt_uw-C.js";import{t as ft}from"./Draggable-C5UHad2G.js";import{t as pt}from"./NodeIcon-T2UcO71E.js";import{t as Z}from"./TimeAgo-D3e2Vl9V.js";import{t as mt}from"./folders.store-CNB9Lo_F.js";import{t as ht}from"./WorkflowTagsDropdown-C2Xept2r.js";import{t as gt}from"./insights.store-i6LlshbL.js";import{t as _t}from"./useMcp-TYldLbSa.js";import{n as vt,r as yt,t as bt}from"./shuffle-C2G95_QT.js";import{t as xt}from"./useWorkflowActivate-D-sHBSZw.js";import{r as St,t as Ct}from"./readyToRun.store-DUyOyjE3.js";import{t as wt}from"./aiTemplatesStarterCollection.store-DhjVvT3h.js";import{t as Tt}from"./readyToRunWorkflows.store-BZsMy9Y6.js";import{t as Et}from"./FolderBreadcrumbs-CKScDJwE.js";import{t as Dt}from"./emptyStateBuilderPrompt.store-B6Wyp6iR.js";import{t as Ot}from"./EmptySharedSectionActionBox-_g-Zo60Q.js";import{t as kt}from"./ResourcesListLayout-BANHdcmL.js";import{n as At,t as jt}from"./ProjectHeader-CZLMSWNr.js";import{n as Mt,t as Nt}from"./DependencyPill-DaytNi4_.js";import{t as Pt}from"./mcp.store-BiiU-pKy.js";import{n as Ft,t as Q}from"./RecommendedTemplateCard-DNolG202.js";import{n as It,t as Lt}from"./shield-alt-B_WXSj_m.js";import{t as Rt}from"./InsightsSummary-fRg21vR0.js";var zt={"data-test-id":`folder-card`},Bt={key:0},Vt=s({__name:`FolderCard`,props:{data:{},personalProject:{},actions:{default:()=>[]},readOnly:{type:Boolean,default:!0},showOwnershipBadge:{type:Boolean,default:!1}},emits:[`action`,`folderOpened`],setup(e,{emit:o}){let s=e,c=j(),p=ce(),m=pe(),h=mt(),v=o,y=a(new Promise(()=>{})),x=a([]),C=l(()=>c.baseText(`generic.folder`).toLowerCase()),w=l(()=>O(s.data.id)),T=l(()=>s.data.homeProject?.type===je.Personal?c.baseText(`projects.menu.personal`):s.data.homeProject?.name),E=l(()=>s.data.parentFolder?[{id:s.data.parentFolder.id,name:s.data.parentFolder.name,label:s.data.parentFolder.name,href:m.resolve({name:G.PROJECTS_FOLDERS,params:{projectId:s.data.homeProject?.id,folderId:s.data.parentFolder.id}}).href}]:[]),D=l(()=>s.showOwnershipBadge&&E.value.length),O=e=>m.resolve({name:G.PROJECTS_FOLDERS,params:{projectId:p.params.projectId,folderId:e},query:p.query}).href,ee=async e=>{if(e===H.OPEN){v(`folderOpened`,{folder:s.data}),await m.push(w.value);return}v(`action`,{action:e,folderId:s.data.id})},N=async()=>{if(!s.data.homeProject?.id||!T.value||!s.data.parentFolder)y.value=Promise.resolve([]);else{if(x.value.length){y.value=Promise.resolve(x.value);return}let e=h.getHiddenBreadcrumbsItems({id:s.data.homeProject.id,name:T.value},s.data.parentFolder.id);y.value=e,x.value=await e}},te=async e=>{e.href&&await m.push(e.href)};return(a,o)=>{let l=_(`RouterLink`);return t(),i(`div`,zt,[S(l,{to:w.value,onClick:o[1]||=()=>v(`folderOpened`,{folder:s.data})},{default:A(()=>[S(f(z),{class:g(a.$style.card)},{prepend:A(()=>[S(f(F),{"data-test-id":`folder-card-icon`,class:g(a.$style[`folder-icon`]),icon:`folder`,size:`xlarge`,"stroke-width":1},null,8,[`class`])]),header:A(()=>[r(`div`,{class:g(a.$style[`card-header`])},[S(f(ne),{tag:`h2`,bold:``,size:`small`,"data-test-id":`folder-card-name`},{default:A(()=>[n(u(e.data.name),1)]),_:1}),e.readOnly?(t(),k(f(P),{key:0,class:`ml-3xs`,theme:`tertiary`,bold:``},{default:A(()=>[n(u(f(c).baseText(`workflows.item.readonly`)),1)]),_:1})):d(``,!0)],2)]),footer:A(()=>[r(`div`,{class:g(a.$style[`card-footer`])},[e.data.workflowCount>0?(t(),k(f(L),{key:0,size:`small`,color:`text-light`,class:g([a.$style[`info-cell`],a.$style[`info-cell--workflow-count`]]),"data-test-id":`folder-card-folder-count`},{default:A(()=>[n(u(f(c).baseText(`generic.workflow`,{interpolate:{count:e.data.workflowCount}})),1)]),_:1},8,[`class`])):d(``,!0),e.data.subFolderCount>0?(t(),k(f(L),{key:1,size:`small`,color:`text-light`,class:g([a.$style[`info-cell`],a.$style[`info-cell--workflow-count`]]),"data-test-id":`folder-card-workflow-count`},{default:A(()=>[n(u(f(c).baseText(`generic.folderCount`,{interpolate:{count:e.data.subFolderCount}})),1)]),_:1},8,[`class`])):d(``,!0),S(f(L),{size:`small`,color:`text-light`,class:g([a.$style[`info-cell`],a.$style[`info-cell--updated`]]),"data-test-id":`folder-card-last-updated`},{default:A(()=>[n(u(f(c).baseText(`workerList.item.lastUpdated`))+` `,1),S(Z,{date:String(e.data.updatedAt)},null,8,[`date`])]),_:1},8,[`class`]),S(f(L),{size:`small`,color:`text-light`,class:g([a.$style[`info-cell`],a.$style[`info-cell--created`]]),"data-test-id":`folder-card-created`},{default:A(()=>[n(u(f(c).baseText(`workflows.item.created`))+` `,1),S(Z,{date:String(e.data.createdAt)},null,8,[`date`])]),_:1},8,[`class`])],2)]),append:A(()=>[r(`div`,{class:g(a.$style[`card-actions`]),onClick:o[0]||=b(()=>{},[`prevent`])},[e.data.homeProject&&e.showOwnershipBadge?(t(),i(`div`,Bt,[S(lt,{class:g({[a.$style.cardBadge]:!0,[a.$style[`with-breadcrumbs`]]:D.value}),resource:e.data,"resource-type":f(De).Workflow,"resource-type-label":C.value,"personal-project":e.personalProject,"show-badge-border":!1},{default:A(()=>[D.value?(t(),i(`div`,{key:0,class:g(a.$style.breadcrumbs)},[S(f(he),{items:E.value,"hidden-items":e.data.parentFolder?.parentFolderId===null?void 0:y.value,"path-truncated":e.data.parentFolder?.parentFolderId!==null,"highlight-last-item":!1,"hidden-items-trigger":`hover`,theme:`small`,"data-test-id":`folder-card-breadcrumbs`,onTooltipOpened:N,onItemSelected:te},{prepend:A(()=>[...o[2]||=[]]),_:1},8,[`items`,`hidden-items`,`path-truncated`])],2)):d(``,!0)]),_:1},8,[`class`,`resource`,`resource-type`,`resource-type-label`,`personal-project`])])):d(``,!0),e.actions.length?(t(),k(f(M),{key:1,actions:e.actions,theme:`dark`,"data-test-id":`folder-card-actions`,onAction:ee},null,8,[`actions`])):d(``,!0)],2)]),_:1},8,[`class`])]),_:1},8,[`to`])])}}}),Ht=`_card_mp6zu_125`,Ut=`_cardBadge_mp6zu_159`,Wt=B(Vt,[[`__cssModules`,{$style:{card:Ht,"folder-icon":`_folder-icon_mp6zu_133`,"card-header":`_card-header_mp6zu_142`,"card-footer":`_card-footer_mp6zu_150`,"info-cell":`_info-cell_mp6zu_154`,cardBadge:Ut,"with-breadcrumbs":`_with-breadcrumbs_mp6zu_159`,"card-actions":`_card-actions_mp6zu_166`,"info-cell--created":`_info-cell--created_mp6zu_184`}}]]),Gt=e(rt(),1),Kt={key:0},qt=s({__name:`WorkflowCard`,props:{data:{},readOnly:{type:Boolean,default:!1},workflowListEventBus:{default:void 0},showOwnershipBadge:{type:Boolean,default:!1},areTagsEnabled:{type:Boolean,default:!0},isMcpEnabled:{type:Boolean,default:!1},areFoldersEnabled:{type:Boolean,default:!1}},emits:[`expand:tags`,`click:tag`,`workflow:deleted`,`workflow:archived`,`workflow:unarchived`,`workflow:unpublished`,`workflow:active-toggle`,`action:move-to-folder`],setup(e,{emit:o}){let s={OPEN:`open`,SHARE:`share`,DUPLICATE:`duplicate`,DELETE:`delete`,ARCHIVE:`archive`,UNARCHIVE:`unarchive`,MOVE_TO_FOLDER:`moveToFolder`,ENABLE_MCP_ACCESS:`enableMCPAccess`,REMOVE_MCP_ACCESS:`removeMCPAccess`,UNPUBLISH:`unpublish`},c=e,p=o,m=Ce(),h=be(),_=j(),y=pe(),x=ce(),C=Ae(),w=_t(),{isEnabled:E}=dt(),{hasDependencies:D}=Mt(),O=Le(),ee=Be(),te=Re(),ne=ze(),re=Ee(),ie=mt(),ae=Pt(),oe=xt(),se=a(new Promise(()=>{})),le=a([]),ue=a(null),de=l(()=>_.baseText(`generic.workflow`).toLowerCase()),fe=l(()=>ee.currentUser??{}),R=l(()=>We(c.data.scopes).workflow),me=l(()=>We(ee.currentUser?.globalScopes).workflow),ge=l(()=>We(re.myProjects?.find(e=>c.data.homeProject?.id===e.id)?.scopes).workflow),B=l(()=>me.value.create??ge.value.create),V=l(()=>c.showOwnershipBadge&&!we.value&&ve.value.length),H=l(()=>c.data.homeProject?.type===je.Personal?_.baseText(`projects.menu.personal`):c.data.homeProject?.name),ve=l(()=>c.data.parentFolder?[{id:c.data.parentFolder.id,name:c.data.parentFolder.name,label:c.data.parentFolder.name,href:y.resolve({name:G.PROJECTS_FOLDERS,params:{projectId:c.data.homeProject?.id,folderId:c.data.parentFolder.id}}).href}]:[]),ye=l(()=>{let e=[{label:_.baseText(`workflows.item.open`),value:s.OPEN}];return R.value.share&&e.push({label:_.baseText(`workflows.item.share`),value:s.SHARE}),R.value.read&&B.value&&!c.readOnly&&!c.data.isArchived&&e.push({label:_.baseText(`workflows.item.duplicate`),value:s.DUPLICATE}),!c.readOnly&&c.areFoldersEnabled&&(R.value.update||R.value.move&&re.isTeamProjectFeatureEnabled)&&x.name!==G.SHARED_WORKFLOWS&&e.push({label:_.baseText(`folders.actions.moveToFolder`),value:s.MOVE_TO_FOLDER}),R.value.delete&&!c.readOnly&&(c.data.isArchived?(e.push({label:_.baseText(`workflows.item.delete`),value:s.DELETE}),e.push({label:_.baseText(`workflows.item.unarchive`),value:s.UNARCHIVE})):e.push({label:_.baseText(`workflows.item.archive`),value:s.ARCHIVE})),Te.value&&R.value.unpublish&&!c.readOnly&&!c.data.isArchived&&e.push({label:_.baseText(`menuActions.unpublish`),value:s.UNPUBLISH}),c.isMcpEnabled&&R.value.update&&!c.readOnly&&!c.data.isArchived&&(Se.value?e.push({label:_.baseText(`workflows.item.disableMCPAccess`),value:s.REMOVE_MCP_ACCESS}):e.push({label:_.baseText(`workflows.item.enableMCPAccess`),value:s.ENABLE_MCP_ACCESS})),e}),xe=l(()=>{let e=new Date().getFullYear().toString();return(0,Gt.default)(c.data.createdAt,`d mmmm${String(c.data.createdAt).startsWith(e)?``:`, yyyy`}`)}),Se=l(()=>ue.value===null?c.data.settings?.availableInMCP??!1:ue.value),we=l(()=>c.data.homeProject?.type!==je.Team&&c.data.homeProject?.id!==re.personalProject?.id),Te=l(()=>c.data.activeVersionId!==null),Oe=l(()=>E.value&&c.data.hasResolvableCredentials),ke=l(()=>E.value&&c.data.hasResolvableCredentials&&!c.data.settings?.credentialResolverId),Me=l(()=>D(c.data.id));async function Ne(e){if(e?.ctrlKey||e?.metaKey){let e=y.resolve({name:G.WORKFLOW,params:{name:c.data.id}});window.open(e.href,`_blank`);return}await y.push({name:G.WORKFLOW,params:{name:c.data.id}})}function Pe(e,t){t.stopPropagation(),p(`click:tag`,e,t)}function Fe(){p(`expand:tags`)}async function Ie(e){switch(e){case s.OPEN:await Ne();break;case s.DUPLICATE:O.openModalWithData({name:Y,data:{id:c.data.id,name:c.data.name,tags:(c.data.tags??[]).map(e=>typeof e!=`string`&&`id`in e?e.id:e),externalEventBus:c.workflowListEventBus,parentFolderId:c.data.parentFolder?.id}});break;case s.SHARE:O.openModalWithData({name:Ge,data:{id:c.data.id}}),C.track(`User opened sharing modal`,{workflow_id:c.data.id,user_id_sharer:fe.value.id,sub_view:`Workflows listing`});break;case s.DELETE:await He();break;case s.ARCHIVE:await Ue();break;case s.UNARCHIVE:await Ke();break;case s.MOVE_TO_FOLDER:p(`action:move-to-folder`,{id:c.data.id,name:c.data.name,parentFolderId:c.data.parentFolder?.id,sharedWithProjects:c.data.sharedWithProjects,homeProjectId:c.data.homeProject?.id});break;case s.ENABLE_MCP_ACCESS:await Ve(!0);break;case s.REMOVE_MCP_ACCESS:await Ve(!1);break;case s.UNPUBLISH:await U();break}}async function U(){if(!c.data.activeVersionId){m.showMessage({title:_.baseText(`workflowHistory.action.unpublish.notAvailable`),type:`warning`});return}let e=_e();e.once(`unpublish`,async()=>{let e=await oe.unpublishWorkflowFromHistory(c.data.id);O.closeModal(qe),e&&(p(`workflow:unpublished`,{id:c.data.id}),m.showMessage({title:_.baseText(`workflowHistory.action.unpublish.success.title`),type:`success`}))}),O.openModalWithData({name:qe,data:{versionName:c.data.name,eventBus:e}})}async function Ve(e){try{await ae.toggleWorkflowMcpAccess(c.data.id,e),ue.value=e,w.trackMcpAccessEnabledForWorkflow(c.data.id)}catch(e){m.showError(e,_.baseText(`workflowSettings.toggleMCP.error.title`));return}}async function He(){if(await h.confirm(_.baseText(`mainSidebar.confirmMessage.workflowDelete.message`,{interpolate:{workflowName:c.data.name}}),_.baseText(`mainSidebar.confirmMessage.workflowDelete.headline`),{type:`warning`,confirmButtonText:_.baseText(`mainSidebar.confirmMessage.workflowDelete.confirmButtonText`),cancelButtonText:_.baseText(`mainSidebar.confirmMessage.workflowDelete.cancelButtonText`)})===`confirm`){try{await ne.deleteWorkflow(c.data.id)}catch(e){m.showError(e,_.baseText(`generic.deleteWorkflowError`));return}m.showMessage({title:_.baseText(`mainSidebar.showMessage.handleSelect1.title`,{interpolate:{workflowName:c.data.name}}),type:`success`}),p(`workflow:deleted`)}}async function Ue(){if(!(c.data.active&&await h.confirm(_.baseText(`mainSidebar.confirmMessage.workflowArchive.message`,{interpolate:{workflowName:c.data.name}}),_.baseText(`mainSidebar.confirmMessage.workflowArchive.headline`),{type:`warning`,confirmButtonText:_.baseText(`mainSidebar.confirmMessage.workflowArchive.confirmButtonText`),cancelButtonText:_.baseText(`mainSidebar.confirmMessage.workflowArchive.cancelButtonText`)})!==`confirm`)){try{await te.archiveWorkflow(c.data.id)}catch(e){m.showError(e,_.baseText(`generic.archiveWorkflowError`));return}m.showMessage({title:_.baseText(`mainSidebar.showMessage.handleArchive.title`,{interpolate:{workflowName:c.data.name}}),type:`success`}),p(`workflow:archived`)}}async function Ke(){try{await te.unarchiveWorkflow(c.data.id)}catch(e){m.showError(e,_.baseText(`generic.unarchiveWorkflowError`));return}m.showMessage({title:_.baseText(`mainSidebar.showMessage.handleUnarchive.title`,{interpolate:{workflowName:c.data.name}}),type:`success`}),p(`workflow:unarchived`)}let W=async()=>{if(!c.data.homeProject?.id||!H.value||!c.data.parentFolder)se.value=Promise.resolve([]);else{if(le.value.length){se.value=Promise.resolve(le.value);return}let e=ie.getHiddenBreadcrumbsItems({id:c.data.homeProject.id,name:H.value},c.data.parentFolder.id);se.value=e,le.value=await e}},Je=async e=>{e.href&&await y.push(e.href)},K=l(()=>c.data.tags?.map(e=>typeof e==`string`?{id:e,name:e}:e)??[]);return(a,o)=>(t(),k(f(z),{class:g({[a.$style.cardLink]:!0,[a.$style.cardArchived]:e.data.isArchived}),"data-test-id":`workflow-card`,onClick:Ne},{header:A(()=>[S(f(L),{tag:`h2`,bold:``,class:g({[a.$style.cardHeading]:!0,[a.$style.cardHeadingArchived]:e.data.isArchived}),"data-test-id":`workflow-card-name`},{default:A(()=>[n(u(e.data.name)+` `,1),R.value.update?d(``,!0):(t(),k(f(P),{key:0,class:`ml-3xs`,theme:`tertiary`,bold:``},{default:A(()=>[n(u(f(_).baseText(`workflows.item.readonly`)),1)]),_:1})),Oe.value?(t(),k(f(N),{key:1,placement:`top`},{content:A(()=>[r(`div`,{class:g(a.$style.tooltipContent)},[r(`strong`,null,u(f(_).baseText(`workflows.dynamic.tooltipTitle`)),1),r(`span`,null,u(f(_).baseText(`workflows.dynamic.tooltip`)),1)],2)]),default:A(()=>[S(f(P),{theme:`tertiary`,class:`ml-3xs pl-3xs pr-3xs`,"data-test-id":`workflow-card-dynamic-credentials`},{default:A(()=>[r(`span`,{class:g(a.$style.dynamicBadgeText)},[S(f(F),{icon:`key-round`,size:`medium`}),n(` `+u(f(_).baseText(`credentials.dynamic.badge`)),1)],2)]),_:1})]),_:1})):d(``,!0),ke.value?(t(),k(f(P),{key:2,theme:`warning`,class:`ml-3xs pl-3xs pr-3xs`,"data-test-id":`workflow-card-resolver-missing`},{default:A(()=>[r(`span`,{class:g(a.$style.resolverMissingBadge)},u(f(_).baseText(`workflows.dynamic.resolverMissing`)),3)]),_:1})):d(``,!0)]),_:1},8,[`class`])]),append:A(()=>[r(`div`,{class:g(a.$style.cardActions),onClick:o[0]||=b(()=>{},[`stop`])},[Me.value?(t(),k(Nt,{key:0,"resource-type":`workflow`,"resource-id":e.data.id,source:`workflow_card`,"data-test-id":`workflow-card-dependencies`},null,8,[`resource-id`])):d(``,!0),e.showOwnershipBadge?(t(),k(lt,{key:1,class:g({[a.$style.cardBadge]:!0,[a.$style[`with-breadcrumbs`]]:V.value}),resource:e.data,"resource-type":f(De).Workflow,"resource-type-label":de.value,"personal-project":f(re).personalProject,"show-badge-border":!1},{default:A(()=>[V.value?(t(),i(`div`,{key:0,class:g(a.$style.breadcrumbs)},[S(f(he),{items:ve.value,"hidden-items":e.data.parentFolder?.parentFolderId===null?void 0:se.value,"path-truncated":e.data.parentFolder?.parentFolderId!==null,"highlight-last-item":!1,"hidden-items-trigger":`hover`,theme:`small`,"data-test-id":`workflow-card-breadcrumbs`,onTooltipOpened:W,onItemSelected:Je},{prepend:A(()=>[...o[2]||=[]]),_:1},8,[`items`,`hidden-items`,`path-truncated`])],2)):d(``,!0)]),_:1},8,[`class`,`resource`,`resource-type`,`resource-type-label`,`personal-project`])):d(``,!0),e.data.isArchived?(t(),k(f(L),{key:2,color:`text-light`,size:`small`,bold:``,class:`ml-s mr-s`,"data-test-id":`workflow-card-archived`},{default:A(()=>[n(u(f(_).baseText(`workflows.item.archived`)),1)]),_:1})):Te.value?(t(),i(`div`,{key:3,class:g(a.$style.publishIndicator),"data-test-id":`workflow-card-publish-indicator`},[r(`span`,{class:g(a.$style.publishIndicatorDot)},null,2),S(f(L),{size:`small`,color:`text-base`},{default:A(()=>[n(u(f(_).baseText(`workflows.published`)),1)]),_:1})],2)):d(``,!0),S(f(M),{actions:ye.value,theme:`dark`,"data-test-id":`workflow-card-actions`,onAction:Ie},null,8,[`actions`])],2)]),default:A(()=>[r(`div`,{class:g(a.$style.cardDescription)},[v(r(`span`,null,[n(u(f(_).baseText(`workflows.item.updated`))+` `,1),S(Z,{date:String(e.data.updatedAt)},null,8,[`date`]),o[1]||=n(` | `,-1)],512),[[T,e.data]]),v(r(`span`,null,[n(u(f(_).baseText(`workflows.item.created`))+` `+u(xe.value)+` `,1),c.isMcpEnabled&&Se.value?(t(),i(`span`,Kt,`|`)):d(``,!0)],512),[[T,e.data]]),v(r(`span`,{class:g([a.$style[`description-cell`],a.$style[`description-cell--mcp`]]),"data-test-id":`workflow-card-mcp`},[S(f(N),{placement:`right`,content:f(_).baseText(`workflows.item.availableInMCP`),"data-test-id":`workflow-card-mcp-tooltip`},{default:A(()=>[S(f(F),{icon:`mcp`,size:`medium`})]),_:1},8,[`content`])],2),[[T,c.isMcpEnabled&&Se.value]]),c.areTagsEnabled&&e.data.tags&&e.data.tags.length>0?v((t(),i(`span`,{key:0,class:g(a.$style.cardTags)},[S(f(I),{tags:K.value,"truncate-at":3,truncate:``,"data-test-id":`workflow-card-tags`,"onClick:tag":Pe,onExpand:Fe},null,8,[`tags`])],2)),[[T,e.data]]):d(``,!0)],2)]),_:1},8,[`class`]))}}),Jt=`_cardLink_z50zt_125`,Yt=`_cardHeading_z50zt_135`,Xt=`_cardHeadingArchived_z50zt_143`,Zt=`_cardDescription_z50zt_151`,Qt=`_cardTags_z50zt_161`,$t=`_cardActions_z50zt_166`,en=`_cardBadge_z50zt_177`,tn=`_cardArchived_z50zt_188`,nn=`_dynamicBadgeText_z50zt_202`,rn=`_resolverMissingBadge_z50zt_210`,an=`_tooltipContent_z50zt_218`,on=`_publishIndicator_z50zt_224`,$=`_publishIndicatorDot_z50zt_236`,sn=`_breadcrumbs_z50zt_255`,cn=B(qt,[[`__cssModules`,{$style:{cardLink:Jt,cardHeading:Yt,cardHeadingArchived:Xt,"description-popper":`_description-popper_z50zt_147`,cardDescription:Zt,cardTags:Qt,cardActions:$t,cardBadge:en,"with-breadcrumbs":`_with-breadcrumbs_z50zt_181`,cardArchived:tn,"description-cell--mcp":`_description-cell--mcp_z50zt_194`,dynamicBadgeText:nn,resolverMissingBadge:rn,tooltipContent:an,publishIndicator:on,publishIndicatorDot:$,breadcrumbs:sn}}]]),ln=80,un=20;function dn(e){let t,n=0,r=e.edgeSize??ln,i=e.maxSpeed??un,a=()=>{n=0,t!==void 0&&(cancelAnimationFrame(t),t=void 0)},s=()=>{let r=e.container.value;if(!r||n===0){t=void 0;return}r.scrollBy({top:n}),t=requestAnimationFrame(s)},c=e=>{n=e,t??=requestAnimationFrame(s)},l=t=>{let n=e.container.value;if(!n){a();return}let{scrollHeight:o,clientHeight:s}=n;if(o<=s){a();return}let l=n.getBoundingClientRect(),u=t.clientY,d=0,f=0;if(u<l.top)d=-1,f=r;else if(u>l.bottom)d=1,f=r;else{let e=u-l.top,t=l.bottom-u,n=e<r,i=t<r;(n||i)&&(!i||e<=t?(d=-1,f=r-Math.min(e,r)):(d=1,f=r-Math.min(t,r)))}if(d===0){a();return}let p=Math.min(f/r,1);c(d*Math.max(2,p*i))},u=()=>{window.addEventListener(`mousemove`,l)},d=()=>{window.removeEventListener(`mousemove`,l)};y([e.isActive,e.container],([e,t],n,r)=>{d(),a(),e&&t&&u(),r(()=>{d(),a()})},{immediate:!0}),o(()=>{d(),a()})}function fn(){let e=0;function t(){let t=++e;return()=>t===e}return{next:t}}function pn(e){return e.type===`folder`||e.type===`project`}function mn(e){return[`folder`,`workflow`,`project`].includes(e)}function hn(){let e=j(),t=mt(),n=l(()=>t.draggedElement!==null);function r(t){return ye.test(t)?e.baseText(`folders.invalidName.invalidCharacters.message`,{interpolate:{illegalChars:ve.join(` `)}}):Ie.test(t)?e.baseText(`folders.invalidName.only.dots.message`):t.startsWith(`.`)?e.baseText(`folders.invalidName.starts.with.dot..message`):t.trim()===``?e.baseText(`folders.invalidName.empty.message`):t.length>128?e.baseText(`folders.invalidName.tooLong.message`,{interpolate:{maxLength:128}}):!0}function i(e){let n=e.closest(`[data-target]`);if(!n)return;let r=c(n);r&&(r.type===`folder`||r.type===`workflow`)&&(t.draggedElement={type:r.type,id:r.id,name:r.name},document.body.classList.add(`dragging-resource`))}function a(){t.draggedElement=null,t.activeDropTarget=null,document.body.classList.remove(`dragging-resource`)}function o(e){let r=e.target;if(!r||!n.value)return;e.preventDefault(),e.stopPropagation();let i=c(r);!i||i.type!==`folder`||(t.activeDropTarget={type:i.type,id:i.id,name:i.name})}function s(){t.activeDropTarget=null}function c(e){let t=e.closest(`[data-target]`);if(!t)return null;let n=t.dataset.target,r=t.dataset.resourceid,i=t.dataset.resourcename;return!n||!r||!i||!mn(n)?null:{type:n,id:r,name:i}}function u(e){let r=e.target;if(!r||!n.value)return{};e.preventDefault();let i=t.draggedElement?.id,o=t.draggedElement?.type,s=t.draggedElement?.name;if(!i||!o||!s)return{};a();let l=c(r);return!l||!pn(l)?{}:{draggedResource:{type:o,id:i,name:s},dropTarget:{type:l.type,id:l.id,name:l.name}}}return{validateFolderName:r,onDragStart:i,onDragEnd:a,onDragEnter:o,resetDropTarget:s,handleDrop:u}}var gn=[6270,5271,2178],_n={"n8n-nodes-base.gmail":[5678,4722,5694],"n8n-nodes-base.googleSheets":[5694,5690,5906],"n8n-nodes-base.telegram":[5626,2114,4875],"@n8n/n8n-nodes-langchain.openAi":[2462,2722,2178],"@n8n/n8n-nodes-langchain.googleGemini":[5993,6270,5677],"n8n-nodes-base.googleCalendar":[2328,3393,2110],"n8n-nodes-base.youTube":[3188,4846,4506],"n8n-nodes-base.airtable":[3053,2700,2579]};function vn(e){return Object.keys(_n).filter(t=>e.includes(t)).reduce((e,t)=>[...e,..._n[t]],[])}function yn(e){if(e.length===0)return gn;let t=vn(e);return t.length>0?t:[]}function bn(e){return e.length<=3?e:Array.from(new Map(e.map(e=>[e.id,e])).values()).sort((e,t)=>t.totalViews-e.totalViews).slice(0,3)}var xn=et(tt.PERSONALIZED_TEMPLATES,()=>{let e=Ae(),t=Me(),n=Se(),r=U(),i=a([]),o=Ve(W),s=l(()=>o.value?K(o.value,{fallbackValue:[]}):[]),c=l(()=>i.value.filter(({id:e})=>!s.value.includes(e))),u=e=>{o.value=JSON.stringify([...s.value??[],e])},d=()=>t.getVariant(Ye.name)===Ye.variantSuggestedTemplates&&n.userIsTrialing,f=t=>{e.track(`User was recommended personalized templates`,{templateIds:t})},p=t=>{e.track(`User clicked on personalized template callout`,{templateId:t})},m=t=>{e.track(`User dismissed personalized template callout`,{templateId:t})},h=async(e,t)=>{if(d())try{if(e===1){let e=yn(t);if(e.length>0){let t=e.map(async e=>await r.fetchTemplateById(e.toString())),n=bn(await Promise.all(t));i.value=n,f(n.map(e=>e.id));return}}let n=(await r.getWorkflows({categories:[],search:``,sort:`rank:desc`,nodes:t.length>0?t:void 0,combineWith:`or`})).slice(0,3).map(e=>e.id).map(async e=>await r.fetchTemplateById(e.toString())),a=bn(await Promise.all(n));i.value=a,f(a.map(e=>e.id))}catch{}};return y(()=>n.currentUserCloudInfo,async e=>{if(!e)return;let t=n.codingSkill;await h(t,n.selectedApps??[])}),{isFeatureEnabled:d,suggestedWorkflows:c,dismissSuggestedWorkflow:u,trackUserClickedOnPersonalizedTemplate:p,trackUserDismissedCallout:m,getTemplateRoute:e=>({name:G.TEMPLATE,params:{id:e}})}}),Sn=B(s({__name:`SuggestedWorkflowCard`,props:{data:{}},setup(e){let{data:i}=e,{dismissSuggestedWorkflow:a,getTemplateRoute:o,trackUserClickedOnPersonalizedTemplate:s,trackUserDismissedCallout:c}=xn(),l=j(),d=()=>{c(i.id),a(i.id)},p=()=>{s(i.id),a(i.id)};return(e,a)=>(t(),k(f(ie),{theme:`secondary`,iconless:!0,class:g(e.$style[`suggested-workflow-callout`]),slim:!0},{trailingContent:A(()=>[r(`div`,{class:g(e.$style[`callout-trailing-content`])},[S(f(R),{"data-test-id":`suggested-workflow-button`,size:`small`,to:f(o)(f(i).id),onClick:p},{default:A(()=>[n(u(f(l).baseText(`workflows.itemSuggestion.try`)),1)]),_:1},8,[`to`]),S(f(F),{size:`small`,icon:`x`,title:f(l).baseText(`generic.dismiss`),class:`clickable`,onClick:d},null,8,[`title`])],2)]),default:A(()=>[r(`div`,{class:g(e.$style[`callout-content`])},u(f(i).name),3)]),_:1},8,[`class`]))}}),[[`__cssModules`,{$style:{"suggested-workflow-callout":`_suggested-workflow-callout_1wrxf_125`,"callout-content":`_callout-content_1wrxf_131`,"callout-trailing-content":`_callout-trailing-content_1wrxf_135`}}]]),Cn={"suggested-workflows":`_suggested-workflows_15lpu_125`},wn={},Tn={class:`suggested-workflows`,"data-test-id":`suggested-workflows`};function En(e,n){return t(),i(`div`,Tn,[x(e.$slots,`default`)])}var Dn=B(wn,[[`render`,En],[`__cssModules`,{$style:Cn}]]),On=B(s({__name:`NodeRecommendationCard`,props:{nodeName:{}},setup(e){let a=e,o=Le(),s=He(),{trackMinicardClick:c}=yt(),d=l(()=>s.getNodeType(a.nodeName)),m=()=>{c(d.value?.displayName??a.nodeName),o.openModalWithData({name:q,data:{nodeName:a.nodeName}})};return p(async()=>{await s.loadNodeTypesIfNotLoaded()}),(e,a)=>(t(),i(`div`,null,[S(f(z),{class:g(e.$style.nodeCard),hoverable:``,onClick:m},{default:A(()=>[r(`div`,{class:g(e.$style.emptyStateCardContent)},[S(pt,{"node-type":d.value,class:g(e.$style.nodeIcon),"stroke-width":1.5},null,8,[`node-type`,`class`]),S(f(L),{size:`xsmall`,class:`mt-xs pl-2xs pr-2xs`,bold:!0},{default:A(()=>[n(u(d.value?.displayName),1)]),_:1})],2)]),_:1},8,[`class`])]))}}),[[`__cssModules`,{$style:{nodeCard:`_nodeCard_tubis_125`,nodeIcon:`_nodeIcon_tubis_135`,emptyStateCardContent:`_emptyStateCardContent_tubis_139`}}]]),kn={key:0,class:`text-center mt-3xl`,"data-test-id":`list-empty-state`},An=B(s({__name:`TemplateRecommendationV2`,setup(e){let a=yt(),o=j();return(e,s)=>f(a).nodes.length?(t(),i(`div`,kn,[S(f(ne),{tag:`h2`,size:`medium`,class:`mb-2xs`,color:`text-light`},{default:A(()=>[n(u(f(o).baseText(`workflows.templateRecoV2.exploreTemplates`)),1)]),_:1}),r(`div`,{class:g(e.$style.nodeCardsContainer)},[(t(!0),i(h,null,O(f(a).nodes,e=>(t(),k(On,{key:e,"node-name":e},null,8,[`node-name`]))),128))],2)])):d(``,!0)}}),[[`__cssModules`,{$style:{nodeCardsContainer:`_nodeCardsContainer_1seru_125`}}]]),jn=B(s({__name:`NodeRecommendationCard`,props:{nodeName:{}},setup(e){let a=e,o=Le(),s=He(),{trackPersonalizationCardClick:c,markTemplateRecommendationInteraction:d}=vt(),m=l(()=>s.getNodeType(a.nodeName)),h=()=>{c(),d(),o.openModalWithData({name:Qe,data:{nodeName:a.nodeName}})};return p(async()=>{await s.loadNodeTypesIfNotLoaded()}),(e,a)=>(t(),i(`div`,null,[S(f(z),{class:g(e.$style.nodeCard),hoverable:``,onClick:h},{default:A(()=>[r(`div`,{class:g(e.$style.emptyStateCardContent)},[S(pt,{"node-type":m.value,class:g(e.$style.nodeIcon),"stroke-width":1.5},null,8,[`node-type`,`class`]),S(f(L),{size:`xsmall`,class:`mt-xs pl-2xs pr-2xs`,bold:!0},{default:A(()=>[n(u(m.value?.displayName),1)]),_:1})],2)]),_:1},8,[`class`])]))}}),[[`__cssModules`,{$style:{nodeCard:`_nodeCard_tubis_125`,nodeIcon:`_nodeIcon_tubis_135`,emptyStateCardContent:`_emptyStateCardContent_tubis_139`}}]]),Mn={key:0,class:`text-center mt-3xl`,"data-test-id":`list-empty-state`},Nn=B(s({__name:`TemplateRecommendationV3`,setup(e){let a=vt(),o=j();return(e,s)=>f(a).hasChosenHubSpot?(t(),i(`div`,Mn,[S(f(ne),{tag:`h2`,size:`medium`,class:`mb-2xs`,color:`text-light`},{default:A(()=>[n(u(f(o).baseText(`experiments.personalizedTemplatesV3.exploreTemplates`)),1)]),_:1}),r(`div`,{class:g(e.$style.nodeCardsContainer)},[S(jn,{"node-name":`n8n-nodes-base.hubspot`})],2)])):d(``,!0)}}),[[`__cssModules`,{$style:{nodeCardsContainer:`_nodeCardsContainer_1seru_125`}}]]),Pn=B(s({__name:`SkeletonTemplateCard`,setup(e){return(e,n)=>(t(),k(f(z),{class:g(e.$style.card),"aria-hidden":`true`},{default:A(()=>[r(`div`,{class:g(e.$style.cardContent)},[r(`div`,{class:g(e.$style.widthRow)},[r(`div`,{class:g(e.$style.widthBlock)},null,2),r(`div`,{class:g(e.$style.widthBlock)},null,2),r(`div`,{class:g(e.$style.widthBlock)},null,2)],2),r(`div`,{class:g(e.$style.nodes)},[r(`div`,{class:g(e.$style.nodeIcon)},[S(f(fe),{variant:`custom`})],2),r(`div`,{class:g(e.$style.nodeIcon)},[S(f(fe),{variant:`custom`})],2)],2),r(`div`,{class:g(e.$style.title)},[S(f(fe),{variant:`custom`})],2),r(`div`,{class:g(e.$style.title)},[S(f(fe),{variant:`custom`})],2),r(`div`,{class:g(e.$style.title)},[S(f(fe),{variant:`custom`})],2),r(`div`,{class:g(e.$style.stats)},[r(`div`,{class:g(e.$style.statItem)},[S(f(fe),{variant:`custom`})],2)],2)],2)]),_:1},8,[`class`]))}}),[[`__cssModules`,{$style:{card:`_card_1pphi_125`,widthRow:`_widthRow_1pphi_133`,widthBlock:`_widthBlock_1pphi_140`,cardContent:`_cardContent_1pphi_146`,nodes:`_nodes_1pphi_153`,nodeIcon:`_nodeIcon_1pphi_158`,title:`_title_1pphi_168`,stats:`_stats_1pphi_175`,statItem:`_statItem_1pphi_179`}}]]),Fn=B(s({__name:`RecommendedTemplatesSection`,setup(e){let o=j(),s=Ft(),{websiteTemplateRepositoryURL:c}=$e(U()),l=a([]),d=a(!1);return p(async()=>{d.value=!0;try{l.value=await s.loadRecommendedTemplates()}finally{d.value=!1}}),(e,a)=>(t(),i(`section`,{class:g(e.$style.container),"data-test-id":`recommended-templates-section`},[r(`div`,{class:g(e.$style.header)},[S(f(L),{tag:`h2`,size:`large`,bold:!0},{default:A(()=>[n(u(f(o).baseText(`workflows.empty.startWithTemplate`)),1)]),_:1}),S(f(R),{href:f(c),class:g(e.$style.allTemplatesLink)},{default:A(()=>[n(u(f(o).baseText(`templates.featured.seeMore`)),1)]),_:1},8,[`href`,`class`])],2),d.value?(t(),i(`div`,{key:0,class:g(e.$style.suggestions)},[(t(!0),i(h,null,O(f(6),e=>(t(),k(Pn,{key:e}))),128))],2)):(t(),i(`div`,{key:1,class:g(e.$style.suggestions)},[(t(!0),i(h,null,O(l.value,(e,n)=>(t(),k(Q,{key:e.id,template:e,"tile-number":n+1,clickable:!0},null,8,[`template`,`tile-number`]))),128))],2))],2))}}),[[`__cssModules`,{$style:{container:`_container_d40wj_125`,header:`_header_d40wj_131`,allTemplatesLink:`_allTemplatesLink_d40wj_147`,suggestions:`_suggestions_d40wj_151`}}]]),In=`N8N_APP_SELECTION_DISMISSED`,Ln=et(tt.EXPERIMENT_CREDENTIALS_APP_SELECTION,()=>{let e=Me(),t=Ne(),n=Se(),r=Ae(),i=Ve(In),a=l(()=>i.value===`true`),o=l(()=>e.getVariant(Ke.name)),s=l(()=>o.value===Ke.variant),c=l(()=>n.userIsTrialing),u=l(()=>!(a.value||!s.value||!c.value)),d=l(()=>t.allCredentials.length),f=l(()=>d.value>0);function p(){r.track(`App selection page viewed`)}function m(e,t){r.track(`App selection search performed`,{search_term:e,result_count:t})}function h(){i.value=`true`}function g(e){r.track(`App selection completed`,{connected_count:d.value,connected_apps:e}),h()}function _(){i.value=null}return{currentVariant:o,isFeatureEnabled:u,isDismissed:a,connectedCount:d,canContinue:f,trackPageViewed:p,trackSearchPerformed:m,trackCompleted:g,dismiss:h,reset:_}});function Rn(){let e=j(),t=Be(),n=Ee(),r=Fe(),i=Ft(),a=Dt(),o=Ln(),s=l(()=>t.currentUser??{}),c=l(()=>n.personalProject),u=l(()=>r.preferences.branchReadOnly),d=l(()=>We(n.currentProject?.scopes??c.value?.scopes)),f=l(()=>!u.value&&d.value.workflow.create),p=l(()=>i.isFeatureEnabled&&!u.value&&d.value.workflow.create),m=l(()=>a.isFeatureEnabled&&!u.value&&d.value.workflow.create);return{showAppSelection:l(()=>o.isFeatureEnabled&&!u.value&&d.value.workflow.create),showBuilderPrompt:m,showRecommendedTemplatesInline:p,builderHeading:l(()=>{let t=s.value.firstName;return t?e.baseText(`workflows.empty.heading.builder`,{interpolate:{name:t}}):e.baseText(`workflows.empty.heading.builder.userNotSetup`)}),emptyStateHeading:l(()=>{let t=s.value.firstName;return p.value?t?e.baseText(`workflows.empty.heading`,{interpolate:{name:t}}):e.baseText(`workflows.empty.heading.userNotSetup`):t?e.baseText(`workflows.empty.headingWithIcon`,{interpolate:{name:t}}):e.baseText(`workflows.empty.headingWithIcon.userNotSetup`)}),emptyStateDescription:l(()=>u.value?e.baseText(`workflows.empty.description.readOnlyEnv`):d.value.workflow.create?e.baseText(`workflows.empty.description`):e.baseText(`workflows.empty.description.noPermission`)),canCreateWorkflow:f,readOnlyEnv:u,projectPermissions:d}}var zn=[{id:`multi-agent-research`,summary:`a multi-agent research workflow`,prompt:'Create a multi-agent AI workflow using `gpt-4.1-mini` where several agents work together to research a topic, fact-check the findings, and write a report that\'s sent as an HTML email. One agent should gather recent, credible information about the topic. Another agent should verify the facts and only mark something as "verified" if it appears in at least two independent sources. A third agent should combine the verified information into a clear, well-written report under 1,000 words. A final agent should edit and format the report to make it look clean and professional in the body of the email. Use Gmail to send the report.'},{id:`email-summary`,summary:`an email summary workflow`,prompt:"Create an automation that runs on Monday mornings. It reads my Gmail inbox from the weekend, analyzes them with `gpt-4.1-mini` to find action items and priorities, and emails me a structured email using Gmail."},{id:`ai-news-digest`,summary:`a daily AI news digest workflow`,prompt:'Build an automation that runs every night 8pm. Use the NewsAPI "/everything" endpoint to search for AI-related news from the day. Pick the top 5 articles and use OpenAI `gpt-4.1-mini` to summarize each in two sentences. Generate an image using OpenAI based on the top article\'s summary. Send a structured Telegram message.'},{id:`daily-weather-report`,summary:`a daily weather report workflow`,prompt:"Create an automation that checks the weather for my location every morning at 5 a.m using OpenWeather. Send me a short weather report by email using Gmail. Use OpenAI `gpt-4.1-mini` to write a short, fun formatted email body by adding personality when describing the weather and how the day might feel. Include all details relevant to decide on my plans and clothes for the day."},{id:`invoice-pipeline`,summary:`an invoice processing workflow`,prompt:"Create an invoice processing workflow using an n8n Form. When a user submits an invoice file (PDF or image) with their email address, use OpenAI `gpt-4.1-mini` to extract invoice data. Then, validate the date format is correct, the currency is valid, and the total amount is greater than zero. If validation fails, email the user a clear error message that explains which check failed from my Gmail. If the data passes validation, store the structured result in a datatable plus email the user. Every Monday morning, generate a weekly spending report using `gpt-4.1-mini` based on stored invoices and send a clean email using Gmail."},{id:`rag-assistant`,summary:`a RAG knowledge agent`,prompt:"Build an automation that creates a document-to-chat RAG pipeline. The workflow starts with an n8n Form where a user uploads one or more files (PDF, CSV, or JSON). Each upload should trigger a process that reads the file, splits it into chunks, and generates embeddings using OpenAI `gpt-4.1-mini` model, saved in one Pinecone table. Add a second part of the workflow for querying: use a Chat Message Trigger to act as a chatbot interface. When a user sends a question, retrieve the top 5 most relevant chunks from Pinecone, pass them into `gpt-4.1-mini` as context, and have it answer naturally using only the retrieved information. If a question can't be answered confidently, the bot should respond with: \"I couldn't find that in the uploaded documents.\" Log each chat interaction in a Data Table with the user query, matched file(s), and timestamp. Send a daily summary email through Gmail showing total questions asked, top files referenced, and any failed lookups."},{id:`lead-qualification`,summary:`a lead qualification workflow`,prompt:`Create an n8n form with a lead generation form I can embed on my website homepage. Build an automation that processes form submissions, uses AI to qualify the lead, sends data to an n8n data table. For high-score leads, it should also email them to offer to schedule a 15-min call in a free slot in my calendar.`},{id:`youtube-auto-chapters`,summary:`a YouTube chapter generator workflow`,prompt:`Build an n8n workflow that automatically generates YouTube chapter timestamps from video captions. Use the n8n chat trigger for me to enter the URL of the YouTube video. Use the YouTube Get a video node to get the video title, description, and existing metadata. Use the YouTube Captions API to download the transcript for the given video ID. Send the transcript to AI agent using Anthropic's Claude model. Prompt the model to identify topic shifts and return structured output in timestamp - chapter format. Append the generated chapter list to the existing video description. Use the YouTube Update a video node to update the video description. Respond back with the updates using the respond to chat node.`}],Bn=e(bt(),1),Vn=40,Hn=25,Un=1500,Wn=300,Gn=`Build `;function Kn(e,t){let n=a(0),r=a(``),i=null,o=l(()=>{let t=e.value;return t.length===0?``:t[n.value%t.length]?.summary??``}),s=l(()=>Gn+r.value);function c(){i!==null&&(clearTimeout(i),i=null)}function u(){if(!t.value||e.value.length===0)return;let n=o.value;r.value.length<n.length?(r.value=n.slice(0,r.value.length+1),i=setTimeout(u,Vn)):i=setTimeout(d,Un)}function d(){f()}function f(){t.value&&e.value.length!==0&&(r.value.length>0?(r.value=r.value.slice(0,-1),i=setTimeout(f,Hn)):(n.value=(n.value+1)%e.value.length,i=setTimeout(u,Wn)))}function p(){c(),u()}function h(){c()}return y(t,e=>{e?p():h()},{immediate:!0}),m(()=>{c()}),{placeholder:s}}var qn=s({__name:`EmptyStateBuilderPrompt`,props:{projectId:{},parentFolderId:{}},emits:[`submit`,`startFromScratch`],setup(e,{emit:o}){let s=e,c=pe(),d=Ce(),p=j(),m=Ae(),h=Dt(),_=o,v=a(``),y=a(),b=a(null),{placeholder:x}=Kn(l(()=>(0,Bn.default)(zn).slice(0,6)),l(()=>v.value.length===0));function C(){v.value.trim()&&_(`submit`,v.value)}function w(){m.track(`User clicked from scratch in empty state`),_(`startFromScratch`)}function T(){xe(V.emptyStateBuilderPrompt),c.push({name:G.TEMPLATES})}function E(){b.value?.click()}function D(){let e=b.value;if(!e?.files?.length)return;let t=new FileReader;t.onload=async()=>{let n=t.result;if(typeof n!=`string`){e.value=``;return}let r;try{r=JSON.parse(n)}catch{d.showMessage({title:p.baseText(`mainSidebar.showMessage.handleFileImport.title`),message:p.baseText(`mainSidebar.showMessage.handleFileImport.message`),type:`error`}),e.value=``;return}try{await h.createWorkflowFromImport(r,s.projectId,s.parentFolderId)}catch{d.showError(Error(p.baseText(`nodeView.couldntLoadWorkflow.invalidWorkflowObject`)),p.baseText(`nodeView.couldntImportWorkflow`))}finally{e.value=``}},t.readAsText(e.files[0])}return(e,a)=>(t(),i(`div`,{class:g(e.$style.container)},[r(`input`,{ref_key:`importFileRef`,ref:b,type:`file`,accept:`.json`,style:{display:`none`},onChange:D},null,544),r(`p`,{class:g(e.$style.subtitle)},u(f(p).baseText(`emptyStateBuilderPrompt.subtitle`)),3),r(`div`,{class:g(e.$style.promptInput)},[S(f(se),{ref_key:`promptInputRef`,ref:y,modelValue:v.value,"onUpdate:modelValue":a[0]||=e=>v.value=e,placeholder:f(x),"min-lines":4,"button-label":f(p).baseText(`emptyStateBuilderPrompt.buildWorkflow`),"data-test-id":`empty-state-builder-prompt-input`,autofocus:``,onSubmit:C},null,8,[`modelValue`,`placeholder`,`button-label`])],2),r(`div`,{class:g(e.$style.footer)},[r(`div`,{class:g(e.$style.alternativeActions)},[r(`span`,{class:g(e.$style.startWithText)},u(f(p).baseText(`emptyStateBuilderPrompt.orStartWith`)),3),S(f(N),{content:f(p).baseText(`emptyStateBuilderPrompt.fromScratchTooltip`)},{default:A(()=>[S(f(ae),{variant:`subtle`,size:`small`,icon:`play`,onClick:w},{default:A(()=>[n(u(f(p).baseText(`emptyStateBuilderPrompt.fromScratch`)),1)]),_:1})]),_:1},8,[`content`]),S(f(N),{content:f(p).baseText(`emptyStateBuilderPrompt.templateTooltip`)},{default:A(()=>[S(f(ae),{variant:`subtle`,size:`small`,icon:`layout-template`,onClick:T},{default:A(()=>[n(u(f(p).baseText(`emptyStateBuilderPrompt.template`)),1)]),_:1})]),_:1},8,[`content`]),S(f(N),{content:f(p).baseText(`emptyStateBuilderPrompt.importFromFileTooltip`)},{default:A(()=>[S(f(ae),{variant:`subtle`,size:`small`,icon:`upload`,onClick:E},{default:A(()=>[n(u(f(p).baseText(`emptyStateBuilderPrompt.importFromFile`)),1)]),_:1})]),_:1},8,[`content`])],2)],2)],2))}}),Jn=`_container_1wank_125`,Yn=`_subtitle_1wank_133`,Xn=`_promptInput_1wank_139`,Zn=`_footer_1wank_148`,Qn=`_alternativeActions_1wank_155`,$n=`_startWithText_1wank_163`,er=B(qn,[[`__cssModules`,{$style:{container:Jn,subtitle:Yn,promptInput:Xn,"el-tooltip__trigger":`_el-tooltip__trigger_1wank_143`,footer:Zn,alternativeActions:Qn,startWithText:$n}}]]),tr=new Set([`oAuth2Api`,`oAuth1Api`,`httpBasicAuth`,`httpDigestAuth`,`httpHeaderAuth`,`httpQueryAuth`,`httpCustomAuth`,`noAuth`]),nr={gmail:1,googlesheets:2,googledrive:3,googlecalendar:4,googledocs:5,microsoftoutlook:6,microsoftexcel:7,microsoftonedrive:8,microsoftteams:9,slack:10,discord:11,telegram:12,notion:13,airtable:14,trello:15,asana:16,todoist:17,hubspot:18,salesforce:19,pipedrive:20,github:21,gitlab:22,jira:23,linear:24,stripe:25,shopify:26,twilio:27,sendgrid:28,mailchimp:29,dropbox:30,zoom:31,calendly:32,typeform:33,intercom:34,zendesk:35,freshdesk:36,clickup:37,mondaycom:38,baserow:39,supabase:40},rr=[`n8n-nodes-base.httpRequest`,`n8n-nodes-base.webhook`,`n8n-nodes-base.code`,`n8n-nodes-base.scheduleTrigger`,`n8n-nodes-base.emailSend`,`n8n-nodes-base.set`,`n8n-nodes-base.if`,`n8n-nodes-base.switch`,`n8n-nodes-base.merge`,`n8n-nodes-base.splitInBatches`,`n8n-nodes-base.noOp`,`n8n-nodes-base.start`,`n8n-nodes-base.stickyNote`,`n8n-nodes-base.executeWorkflow`,`n8n-nodes-base.executeWorkflowTrigger`,`n8n-nodes-base.respondToWebhook`,`n8n-nodes-base.manualTrigger`,`n8n-nodes-base.errorTrigger`,`n8n-nodes-base.function`,`n8n-nodes-base.functionItem`],ir=e=>e.startsWith(`@n8n/n8n-nodes-langchain.`),ar=e=>rr.includes(e)||ir(e),or=e=>e.group?.includes(`trigger`)??!1,sr=e=>!e.outputs||!Array.isArray(e.outputs)?!1:e.outputs.map(e=>typeof e==`string`?e:e.type).includes(J.AiTool);function cr(){let e=Ne(),t=He(),n=a(!0),r=a(null);t.fetchCommunityNodePreviews();let i=e=>e.extends?e.extends.includes(`oAuth2Api`)||e.extends.includes(`oAuth1Api`)||e.extends.includes(`googleOAuth2Api`)||e.extends.includes(`microsoftOAuth2Api`):!1,o=e=>e.extends?e.extends.includes(`googleOAuth2Api`):!1,s=e=>e.extends?e.extends.includes(`microsoftOAuth2Api`):!1,c=e=>{if(!i(e))return!1;if(o(e)||s(e))return!0;let t=e.__overwrittenProperties;return!t||!Array.isArray(t)?!1:t.includes(`clientId`)&&t.includes(`clientSecret`)},u=e=>{let t=o(e),n=s(e),r=e.extends?.includes(`oAuth2Api`),i=e.extends?.includes(`oAuth1Api`),a=c(e);return t||n?6:r&&a?5:i&&a?4:r?3:i?2:1},d=e=>{let t,n;typeof e.icon==`string`?t=e.icon:e.icon&&typeof e.icon==`object`&&`light`in e.icon&&(t=e.icon.light,n=e.icon.dark);let r,i;return typeof e.iconUrl==`string`?r=e.iconUrl:e.iconUrl&&typeof e.iconUrl==`object`&&`light`in e.iconUrl&&(r=e.iconUrl.light,i=e.iconUrl.dark),{name:e.name,displayName:e.displayName,icon:t,iconDark:n,iconUrl:r,iconUrlDark:i,iconColor:e.iconColor}},f=(e,t)=>{let n=e.credentials?.map(e=>e.name)??[];return t.filter(e=>n.includes(e.name)&&!tr.has(e.name))},p=l(()=>{let n=e.allCredentialTypes,r=t.visibleNodeTypes;if(n.length===0||r.length===0)return[];let i=new Map,a=(e,t,r,a,o,s)=>{if(ar(e.name)||or(e)||sr(e))return;let l=f(e,n),p=e.credentials&&e.credentials.length>0;if(t&&!p||t&&l.length===0)return;let m;l.length>0&&(l.sort((e,t)=>u(t)-u(e)),m=l[0]);let h=e.name.split(`.`).pop()?.replace(/V\d+$/,``).toLowerCase()??e.name,g=r?nr[h]:o,_=i.get(h);(!_||m&&(!_.credentialType||u(m)>u(_.credentialType)))&&i.set(h,{app:d(e),credentialType:m,supportsInstantOAuth:m?c(m):!1,installed:t,isBundled:r,packageName:a,popularity:g,communityNodeInfo:s})};for(let e of r){let n=t.communityNodeType(e.name)??t.communityNodeType(Ue(e.name));if(n&&!n.isOfficialNode)continue;let r=t.getIsNodeInstalled(e.name),i=!n,o=n?.numberOfDownloads,s=n?.packageName;a(e,r,i,s,o,n)}let o=Array.from(i.values());return o.sort((e,t)=>{if(e.isBundled&&!t.isBundled)return-1;if(!e.isBundled&&t.isBundled)return 1;if(e.isBundled&&t.isBundled){let n=e.popularity!==void 0,r=t.popularity!==void 0;return n&&!r?-1:!n&&r?1:n&&r?(e.popularity??0)-(t.popularity??0):e.app.displayName.localeCompare(t.app.displayName)}let n=e.popularity!==void 0,r=t.popularity!==void 0;return n&&!r?-1:!n&&r?1:n&&r?(t.popularity??0)-(e.popularity??0):e.app.displayName.localeCompare(t.app.displayName)}),o});return y(()=>({nodeTypes:t.visibleNodeTypes,credentialTypes:e.allCredentialTypes}),({nodeTypes:e,credentialTypes:t})=>{e.length>0&&t.length>0&&(n.value=!1)},{immediate:!0}),{appEntries:p,isLoading:n,error:r}}var lr=[`data-test-id`,`tabindex`,`onKeydown`],ur=s({__name:`AppSelectionCard`,props:{app:{},state:{},supportsInstantOAuth:{type:Boolean},skeleton:{type:Boolean},installed:{type:Boolean},showWarning:{type:Boolean},showBadge:{type:Boolean},isOwner:{type:Boolean}},emits:[`click`],setup(e,{emit:a}){let o=e,s=a,c=He(),p=j(),m=l(()=>o.installed),h=l(()=>o.isOwner?p.baseText(`credentialsAppSelection.installToConnect`):p.baseText(`credentialsAppSelection.askAdminToInstall`)),_=l(()=>!o.skeleton&&(o.state===`default`||o.state===`error`||o.state===`connected`||o.state===void 0)),v=()=>{_.value&&s(`click`)},y=l(()=>{let{app:e}=o;if(!e)return null;let t=c.getNodeType(e.name);if(t)return t;let n=Ue(e.name),r=c.communityNodeType(n);return r?.nodeDescription?r.nodeDescription:e.iconUrl||e.icon?{name:e.name,displayName:e.displayName,iconUrl:e.iconUrl,icon:e.icon,iconColor:e.iconColor,group:[],outputs:[],defaults:{name:e.displayName},description:``}:null});return(a,o)=>e.skeleton?(t(),i(`div`,{key:0,class:g([a.$style.card,a.$style.skeleton]),"data-test-id":`app-selection-card-skeleton`},[r(`div`,{class:g(a.$style.iconContainer)},[r(`div`,{class:g(a.$style.skeletonIcon)},null,2)],2),r(`div`,{class:g(a.$style.skeletonText)},null,2)],2)):(t(),i(`div`,{key:1,class:g([a.$style.card,{[a.$style.clickable]:_.value,[a.$style.connected]:e.state===`connected`&&!e.showWarning,[a.$style.warning]:e.state===`connected`&&e.showWarning,[a.$style.error]:e.state===`error`,[a.$style.loading]:e.state===`loading`}]),"data-test-id":`app-selection-card-${e.app?.name}`,role:`button`,tabindex:_.value?0:-1,onClick:v,onKeydown:[C(v,[`enter`]),C(b(v,[`prevent`]),[`space`])]},[S(w,{name:`fade`},{default:A(()=>[e.showBadge&&e.showWarning&&e.state===`connected`?(t(),i(`div`,{key:0,class:g(a.$style.warningBadgeWrapper)},[S(f(N),{placement:`top`,"show-after":300},{content:A(()=>[n(u(f(p).baseText(`credentialsAppSelection.credentialsNotValid`)),1)]),default:A(()=>[r(`div`,{class:g(a.$style.warningBadge)},[S(f(F),{icon:`triangle-alert`,class:g(a.$style.badgeIcon)},null,8,[`class`])],2)]),_:1})],2)):e.showBadge&&e.state===`connected`?(t(),i(`div`,{key:1,class:g(a.$style.connectedBadge)},[S(f(F),{icon:`check`,class:g(a.$style.badgeIcon)},null,8,[`class`])],2)):d(``,!0)]),_:1}),m.value?d(``,!0):(t(),i(`div`,{key:0,class:g(a.$style.installBadgeWrapper)},[S(f(N),{placement:`top`,"show-after":300},{content:A(()=>[n(u(h.value),1)]),default:A(()=>[r(`div`,{class:g(a.$style.installBadge)},[S(f(F),{icon:`download`,class:g(a.$style.installBadgeIcon)},null,8,[`class`])],2)]),_:1})],2)),r(`div`,{class:g(a.$style.iconContainer)},[S(pt,{"node-type":y.value,size:32,class:g(a.$style.icon)},null,8,[`node-type`,`class`])],2),S(f(L),{class:g(a.$style.name),size:`small`},{default:A(()=>[n(u(e.app?.displayName),1)]),_:1},8,[`class`])],42,lr))}}),dr=`_card_v7exb_125`,fr=`_clickable_v7exb_142`,pr=`_connected_v7exb_152`,mr=`_warning_v7exb_163`,hr=`_error_v7exb_174`,gr=`_loading_v7exb_182`,_r=`_skeleton_v7exb_187`,vr=`_skeletonIcon_v7exb_199`,yr=`_skeletonText_v7exb_207`,br=`_iconContainer_v7exb_215`,xr=`_icon_v7exb_215`,Sr=`_connectedBadge_v7exb_235`,Cr=`_warningBadgeWrapper_v7exb_248`,wr=`_warningBadge_v7exb_248`,Tr=`_badgeIcon_v7exb_262`,Er=`_name_v7exb_272`,Dr=`_installBadgeWrapper_v7exb_284`,Or=`_installBadge_v7exb_284`,kr=`_installBadgeIcon_v7exb_301`,Ar=B(ur,[[`__cssModules`,{$style:{card:dr,clickable:fr,connected:pr,warning:mr,error:hr,loading:gr,skeleton:_r,skeletonIcon