n8n-editor-ui 1.22.0 → 1.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/.turbo/turbo-build.log +62 -62
  2. package/dist/assets/{AuthView-_5lvIORY.js → AuthView--On8E3VP.js} +2 -2
  3. package/dist/assets/{AuthView-_5lvIORY.js.map → AuthView--On8E3VP.js.map} +1 -1
  4. package/dist/assets/{CanvasControls-_S6dAUFr.js → CanvasControls-ebFBI-_5.js} +2 -2
  5. package/dist/assets/{CanvasControls-_S6dAUFr.js.map → CanvasControls-ebFBI-_5.js.map} +1 -1
  6. package/dist/assets/{ChangePasswordView-Gto324pL.js → ChangePasswordView-gj93rkzc.js} +2 -2
  7. package/dist/assets/{ChangePasswordView-Gto324pL.js.map → ChangePasswordView-gj93rkzc.js.map} +1 -1
  8. package/dist/assets/{CollectionParameter-ThiBAc6J.js → CollectionParameter-V1n0L6ao.js} +2 -2
  9. package/dist/assets/CollectionParameter-V1n0L6ao.js.map +1 -0
  10. package/dist/assets/{CredentialsView-WF2GuXwX.js → CredentialsView-9Nq2fOpi.js} +2 -2
  11. package/dist/assets/{CredentialsView-WF2GuXwX.js.map → CredentialsView-9Nq2fOpi.js.map} +1 -1
  12. package/dist/assets/{ExecutionFilter-6e5m1hky.js → ExecutionFilter-dfrYJ_Rf.js} +2 -2
  13. package/dist/assets/{ExecutionFilter-6e5m1hky.js.map → ExecutionFilter-dfrYJ_Rf.js.map} +1 -1
  14. package/dist/assets/{ExecutionPreview-qQdwo4nO.js → ExecutionPreview-yFW7oTRf.js} +2 -2
  15. package/dist/assets/{ExecutionPreview-qQdwo4nO.js.map → ExecutionPreview-yFW7oTRf.js.map} +1 -1
  16. package/dist/assets/{ExecutionsInfoAccordion-HQZywboM.js → ExecutionsInfoAccordion-EztI4QOE.js} +2 -2
  17. package/dist/assets/{ExecutionsInfoAccordion-HQZywboM.js.map → ExecutionsInfoAccordion-EztI4QOE.js.map} +1 -1
  18. package/dist/assets/{ExecutionsLandingPage-FEiybFSK.js → ExecutionsLandingPage-ygQGHLu2.js} +2 -2
  19. package/dist/assets/{ExecutionsLandingPage-FEiybFSK.js.map → ExecutionsLandingPage-ygQGHLu2.js.map} +1 -1
  20. package/dist/assets/{ExecutionsList-9Pc2Zrql.js → ExecutionsList-H9VKc4jb.js} +2 -2
  21. package/dist/assets/{ExecutionsList-9Pc2Zrql.js.map → ExecutionsList-H9VKc4jb.js.map} +1 -1
  22. package/dist/assets/{ExecutionsView-Li55aBU0.js → ExecutionsView-NdkXn6EA.js} +2 -2
  23. package/dist/assets/{ExecutionsView-Li55aBU0.js.map → ExecutionsView-NdkXn6EA.js.map} +1 -1
  24. package/dist/assets/{FixedCollectionParameter-d68rB1aT.js → FixedCollectionParameter-tJFyljoK.js} +3 -3
  25. package/dist/assets/{FixedCollectionParameter-d68rB1aT.js.map → FixedCollectionParameter-tJFyljoK.js.map} +1 -1
  26. package/dist/assets/{ForgotMyPasswordView-3lTe1SvY.js → ForgotMyPasswordView-VxAVQQgB.js} +2 -2
  27. package/dist/assets/{ForgotMyPasswordView-3lTe1SvY.js.map → ForgotMyPasswordView-VxAVQQgB.js.map} +1 -1
  28. package/dist/assets/{MainHeader-wtrPt4Uz.js → MainHeader-luMJdQn2.js} +2 -2
  29. package/dist/assets/{MainHeader-wtrPt4Uz.js.map → MainHeader-luMJdQn2.js.map} +1 -1
  30. package/dist/assets/{MainSidebar-dKXNC9E9.js → MainSidebar-nf-k1wHF.js} +2 -2
  31. package/dist/assets/{MainSidebar-dKXNC9E9.js.map → MainSidebar-nf-k1wHF.js.map} +1 -1
  32. package/dist/assets/{NodeCreation-lpcdOti7.js → NodeCreation-RvlbocPg.js} +3 -3
  33. package/dist/assets/{NodeCreation-lpcdOti7.js.map → NodeCreation-RvlbocPg.js.map} +1 -1
  34. package/dist/assets/{NodeCreator-YAF-VpA5.js → NodeCreator-zDLKC62A.js} +2 -2
  35. package/dist/assets/{NodeCreator-YAF-VpA5.js.map → NodeCreator-zDLKC62A.js.map} +1 -1
  36. package/dist/assets/{NodeList-8URsrxUQ.js → NodeList-U4qs88M0.js} +2 -2
  37. package/dist/assets/{NodeList-8URsrxUQ.js.map → NodeList-U4qs88M0.js.map} +1 -1
  38. package/dist/assets/{NodeView-caDno-kw.js → NodeView-fUdpq96X.js} +3 -3
  39. package/dist/assets/{NodeView-caDno-kw.js.map → NodeView-fUdpq96X.js.map} +1 -1
  40. package/dist/assets/{ResourcesListLayout-N4zg03Vf.js → ResourcesListLayout-y5FSwJeu.js} +2 -2
  41. package/dist/assets/{ResourcesListLayout-N4zg03Vf.js.map → ResourcesListLayout-y5FSwJeu.js.map} +1 -1
  42. package/dist/assets/{RunDataAi-EdxjRrVc.js → RunDataAi-dgEyN_Yl.js} +2 -2
  43. package/dist/assets/{RunDataAi-EdxjRrVc.js.map → RunDataAi-dgEyN_Yl.js.map} +1 -1
  44. package/dist/assets/{RunDataJson-wqxHrAY5.js → RunDataJson-RuNn5FTw.js} +3 -3
  45. package/dist/assets/{RunDataJson-wqxHrAY5.js.map → RunDataJson-RuNn5FTw.js.map} +1 -1
  46. package/dist/assets/{RunDataJsonActions-MfJV4quL.js → RunDataJsonActions-wMN8ObC3.js} +2 -2
  47. package/dist/assets/{RunDataJsonActions-MfJV4quL.js.map → RunDataJsonActions-wMN8ObC3.js.map} +1 -1
  48. package/dist/assets/{RunDataSchema-rxgd4Q_M.js → RunDataSchema-NrdiV0Bv.js} +2 -2
  49. package/dist/assets/{RunDataSchema-rxgd4Q_M.js.map → RunDataSchema-NrdiV0Bv.js.map} +1 -1
  50. package/dist/assets/{RunDataTable-2IMpD8oi.js → RunDataTable-vThTeakV.js} +2 -2
  51. package/dist/assets/{RunDataTable-2IMpD8oi.js.map → RunDataTable-vThTeakV.js.map} +1 -1
  52. package/dist/assets/{SamlOnboarding-RIlvbmgY.js → SamlOnboarding-7ZeWtOoT.js} +2 -2
  53. package/dist/assets/{SamlOnboarding-RIlvbmgY.js.map → SamlOnboarding-7ZeWtOoT.js.map} +1 -1
  54. package/dist/assets/SettingsApiView-d7znGVgB.js +2 -0
  55. package/dist/assets/SettingsApiView-d7znGVgB.js.map +1 -0
  56. package/dist/assets/{SettingsCommunityNodesView-xqn73tJO.js → SettingsCommunityNodesView-U2OqH5_g.js} +2 -2
  57. package/dist/assets/{SettingsCommunityNodesView-xqn73tJO.js.map → SettingsCommunityNodesView-U2OqH5_g.js.map} +1 -1
  58. package/dist/assets/{SettingsExternalSecrets-yr_g8DWk.js → SettingsExternalSecrets-OK2zcF3w.js} +2 -2
  59. package/dist/assets/{SettingsExternalSecrets-yr_g8DWk.js.map → SettingsExternalSecrets-OK2zcF3w.js.map} +1 -1
  60. package/dist/assets/{SettingsFakeDoorView-ogkrrHSL.js → SettingsFakeDoorView-wbngwN3n.js} +2 -2
  61. package/dist/assets/{SettingsFakeDoorView-ogkrrHSL.js.map → SettingsFakeDoorView-wbngwN3n.js.map} +1 -1
  62. package/dist/assets/{SettingsLdapView-aWCvc1gM.js → SettingsLdapView-rYSjSdpv.js} +2 -2
  63. package/dist/assets/{SettingsLdapView-aWCvc1gM.js.map → SettingsLdapView-rYSjSdpv.js.map} +1 -1
  64. package/dist/assets/{SettingsLogStreamingView-IdWAQAEz.js → SettingsLogStreamingView-r4yJe9rt.js} +2 -2
  65. package/dist/assets/{SettingsLogStreamingView-IdWAQAEz.js.map → SettingsLogStreamingView-r4yJe9rt.js.map} +1 -1
  66. package/dist/assets/{SettingsSourceControl-s8B2f1Et.js → SettingsSourceControl-2sJrfiQZ.js} +2 -2
  67. package/dist/assets/{SettingsSourceControl-s8B2f1Et.js.map → SettingsSourceControl-2sJrfiQZ.js.map} +1 -1
  68. package/dist/assets/{SettingsSso-xhUlnU8v.js → SettingsSso-F08fTaoT.js} +2 -2
  69. package/dist/assets/{SettingsSso-xhUlnU8v.js.map → SettingsSso-F08fTaoT.js.map} +1 -1
  70. package/dist/assets/{SettingsUsageAndPlan-qguburG-.js → SettingsUsageAndPlan-P3NemeAe.js} +2 -2
  71. package/dist/assets/{SettingsUsageAndPlan-qguburG-.js.map → SettingsUsageAndPlan-P3NemeAe.js.map} +1 -1
  72. package/dist/assets/{SettingsUsersView-mRes9Qkr.js → SettingsUsersView-qkwybUvB.js} +2 -2
  73. package/dist/assets/{SettingsUsersView-mRes9Qkr.js.map → SettingsUsersView-qkwybUvB.js.map} +1 -1
  74. package/dist/assets/{SettingsView-3Vqg8kdv.js → SettingsView-9Bw0MXcT.js} +2 -2
  75. package/dist/assets/{SettingsView-3Vqg8kdv.js.map → SettingsView-9Bw0MXcT.js.map} +1 -1
  76. package/dist/assets/{SetupView-RR2VulZH.js → SetupView-s0yzV7Gm.js} +2 -2
  77. package/dist/assets/{SetupView-RR2VulZH.js.map → SetupView-s0yzV7Gm.js.map} +1 -1
  78. package/dist/assets/{SetupWorkflowFromTemplateView-BbMhs31Z.js → SetupWorkflowFromTemplateView-6De7ws36.js} +2 -2
  79. package/dist/assets/{SetupWorkflowFromTemplateView-BbMhs31Z.js.map → SetupWorkflowFromTemplateView-6De7ws36.js.map} +1 -1
  80. package/dist/assets/{SigninView-hIeIEews.js → SigninView-QvYhHXWz.js} +2 -2
  81. package/dist/assets/{SigninView-hIeIEews.js.map → SigninView-QvYhHXWz.js.map} +1 -1
  82. package/dist/assets/{SignupView-iaO_BXyp.js → SignupView-ZLqXA-fI.js} +2 -2
  83. package/dist/assets/{SignupView-iaO_BXyp.js.map → SignupView-ZLqXA-fI.js.map} +1 -1
  84. package/dist/assets/{TemplateDetails-HasVFCUO.js → TemplateDetails-qWnefMYx.js} +2 -2
  85. package/dist/assets/{TemplateDetails-HasVFCUO.js.map → TemplateDetails-qWnefMYx.js.map} +1 -1
  86. package/dist/assets/{TemplateList-uT0I7BC-.js → TemplateList-Ek8NkQLd.js} +2 -2
  87. package/dist/assets/{TemplateList-uT0I7BC-.js.map → TemplateList-Ek8NkQLd.js.map} +1 -1
  88. package/dist/assets/{TemplatesCollectionView-WwdzPK0w.js → TemplatesCollectionView-xoRz-QfG.js} +2 -2
  89. package/dist/assets/{TemplatesCollectionView-WwdzPK0w.js.map → TemplatesCollectionView-xoRz-QfG.js.map} +1 -1
  90. package/dist/assets/{TemplatesInfoCarousel-WUt6CUAt.js → TemplatesInfoCarousel-TKGxiVaR.js} +2 -2
  91. package/dist/assets/{TemplatesInfoCarousel-WUt6CUAt.js.map → TemplatesInfoCarousel-TKGxiVaR.js.map} +1 -1
  92. package/dist/assets/{TemplatesSearchView-pwVBF7_m.js → TemplatesSearchView-gwbhQE6_.js} +2 -2
  93. package/dist/assets/{TemplatesSearchView-pwVBF7_m.js.map → TemplatesSearchView-gwbhQE6_.js.map} +1 -1
  94. package/dist/assets/{TemplatesWorkflowView-OxfZO4yX.js → TemplatesWorkflowView-VbJuwYVl.js} +2 -2
  95. package/dist/assets/{TemplatesWorkflowView-OxfZO4yX.js.map → TemplatesWorkflowView-VbJuwYVl.js.map} +1 -1
  96. package/dist/assets/{VariablesView-O1dh47w6.js → VariablesView-ZNxPDs_G.js} +2 -2
  97. package/dist/assets/{VariablesView-O1dh47w6.js.map → VariablesView-ZNxPDs_G.js.map} +1 -1
  98. package/dist/assets/{WorkerView-ehe17h1Q.js → WorkerView-Rzm_p5Pv.js} +2 -2
  99. package/dist/assets/{WorkerView-ehe17h1Q.js.map → WorkerView-Rzm_p5Pv.js.map} +1 -1
  100. package/dist/assets/{WorkflowActivator-EK3d11st.js → WorkflowActivator-H10vhdIV.js} +2 -2
  101. package/dist/assets/{WorkflowActivator-EK3d11st.js.map → WorkflowActivator-H10vhdIV.js.map} +1 -1
  102. package/dist/assets/{WorkflowHistory-mqWH3nQZ.js → WorkflowHistory-diO3ekal.js} +2 -2
  103. package/dist/assets/{WorkflowHistory-mqWH3nQZ.js.map → WorkflowHistory-diO3ekal.js.map} +1 -1
  104. package/dist/assets/{WorkflowOnboardingView-LZfOfbX4.js → WorkflowOnboardingView-gUVzVQsZ.js} +2 -2
  105. package/dist/assets/{WorkflowOnboardingView-LZfOfbX4.js.map → WorkflowOnboardingView-gUVzVQsZ.js.map} +1 -1
  106. package/dist/assets/{WorkflowsView-NL0wKv4C.js → WorkflowsView-Qqq1sZTo.js} +2 -2
  107. package/dist/assets/{WorkflowsView-NL0wKv4C.js.map → WorkflowsView-Qqq1sZTo.js.map} +1 -1
  108. package/dist/assets/{cloud-JhkwKZAE.js → cloud-g7GqwUFZ.js} +2 -2
  109. package/dist/assets/{cloud-JhkwKZAE.js.map → cloud-g7GqwUFZ.js.map} +1 -1
  110. package/dist/assets/{executionsHelpers-Gkj6bYJi.js → executionsHelpers-gnbzcx5j.js} +2 -2
  111. package/dist/assets/{executionsHelpers-Gkj6bYJi.js.map → executionsHelpers-gnbzcx5j.js.map} +1 -1
  112. package/dist/assets/{index--RuZ5wHr.js → index-RXjMHIPR.js} +11 -11
  113. package/dist/assets/{index--RuZ5wHr.js.map → index-RXjMHIPR.js.map} +1 -1
  114. package/dist/assets/{pushConnection-UpdxMjHa.js → pushConnection-HdjAqr4R.js} +2 -2
  115. package/dist/assets/{pushConnection-UpdxMjHa.js.map → pushConnection-HdjAqr4R.js.map} +1 -1
  116. package/dist/assets/{templateActions-CZfTXoBx.js → templateActions-y8msVyEB.js} +2 -2
  117. package/dist/assets/{templateActions-CZfTXoBx.js.map → templateActions-y8msVyEB.js.map} +1 -1
  118. package/dist/assets/{useExecutionDebugging-FPo5qMF0.js → useExecutionDebugging-Yog1CJXv.js} +2 -2
  119. package/dist/assets/{useExecutionDebugging-FPo5qMF0.js.map → useExecutionDebugging-Yog1CJXv.js.map} +1 -1
  120. package/dist/assets/{workflowActivate-FltKJaAB.js → workflowActivate-IRvCsxq5.js} +2 -2
  121. package/dist/assets/{workflowActivate-FltKJaAB.js.map → workflowActivate-IRvCsxq5.js.map} +1 -1
  122. package/dist/index.html +1 -1
  123. package/package.json +1 -1
  124. package/dist/assets/CollectionParameter-ThiBAc6J.js.map +0 -1
  125. package/dist/assets/SettingsApiView-_7qUJ2zm.js +0 -2
  126. package/dist/assets/SettingsApiView-_7qUJ2zm.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{g as _,aS as S}from"./index--RuZ5wHr.js";import{fD as V,fC as N,_ as C}from"./n8n-ZKR6bms9.js";import{N as E}from"./NodeList-8URsrxUQ.js";import{G as $,ag as a,l as o,m as t,I as i,T as r,O as m,Q as n,M as k,a2 as L,S as w,R as f,p as U,F as h,a7 as g}from"./vendor-2CfOYFi2.js";const z=$({name:"TemplateCard",mixins:[_],props:{lastItem:{type:Boolean,default:!1},firstItem:{type:Boolean,default:!1},workflow:{type:Object},useWorkflowButton:{type:Boolean},loading:{type:Boolean},simpleView:{type:Boolean,default:!1}},components:{TimeAgo:S,NodeList:E},data(){return{nodesToBeShown:5}},methods:{filterTemplateNodes:V,abbreviateNumber:N,countNodesToBeSliced(e){return e.length>this.nodesToBeShown?this.nodesToBeShown-1:this.nodesToBeShown},onUseWorkflowClick(e){this.$emit("useWorkflow",e)},onCardClick(e){this.$emit("click",e)}}}),H="_nodes_akyr5_5",M="_icon_akyr5_12",O="_card_akyr5_16",A="_hideOnHover_akyr5_28",R="_buttonContainer_akyr5_31",D="_loaded_akyr5_42",F="_first_akyr5_46",j="_last_akyr5_52",G="_content_akyr5_57",Q="_line_akyr5_62",q="_loading_akyr5_68",J="_nodesContainer_akyr5_73",K={nodes:H,icon:M,card:O,hideOnHover:A,buttonContainer:R,loaded:D,first:F,last:j,content:G,line:Q,loading:q,nodesContainer:J},P={key:1},X={key:0};function Y(e,s,y,B,b,v){const p=a("n8n-loading"),c=a("n8n-heading"),l=a("font-awesome-icon"),d=a("n8n-text"),u=a("TimeAgo"),T=a("NodeList"),W=a("n8n-button");return o(),t("div",{class:i([e.$style.card,e.lastItem&&e.$style.last,e.firstItem&&e.$style.first,!e.loading&&e.$style.loaded]),onClick:s[0]||(s[0]=(...I)=>e.onCardClick&&e.onCardClick(...I)),"data-test-id":"template-card"},[e.loading?(o(),t("div",{key:0,class:i(e.$style.loading)},[r(p,{rows:2,shrinkLast:!1,loading:e.loading},null,8,["loading"])],2)):(o(),t("div",P,[r(c,{bold:!0,size:"small"},{default:m(()=>[w(f(e.workflow.name),1)]),_:1}),e.simpleView?n("",!0):(o(),t("div",{key:0,class:i(e.$style.content)},[e.workflow.totalViews?(o(),t("span",X,[r(d,{size:"small",color:"text-light"},{default:m(()=>[r(l,{icon:"eye"}),w(" "+f(e.abbreviateNumber(e.workflow.totalViews)),1)]),_:1})])):n("",!0),e.workflow.totalViews?(o(),t("div",{key:1,class:i(e.$style.line),textContent:"|"},null,2)):n("",!0),r(d,{size:"small",color:"text-light"},{default:m(()=>[r(u,{date:e.workflow.createdAt},null,8,["date"])]),_:1}),e.workflow.user?(o(),t("div",{key:2,class:i(e.$style.line),textContent:"|"},null,2)):n("",!0),e.workflow.user?(o(),k(d,{key:3,size:"small",color:"text-light"},{default:m(()=>[w("By "+f(e.workflow.user.username),1)]),_:1})):n("",!0)],2))])),e.loading?n("",!0):(o(),t("div",{key:2,class:i([e.$style.nodesContainer,e.useWorkflowButton&&e.$style.hideOnHover])},[e.workflow.nodes?(o(),k(T,{key:0,nodes:e.workflow.nodes,limit:e.nodesToBeShown,size:"md"},null,8,["nodes","limit"])):n("",!0)],2)),e.useWorkflowButton?(o(),t("div",{key:3,class:i(e.$style.buttonContainer)},[e.useWorkflowButton?(o(),k(W,{key:0,outline:"",label:"Use workflow",onClick:L(e.onUseWorkflowClick,["stop"]),"data-test-id":"use-workflow-button"},null,8,["onClick"])):n("",!0)],2)):n("",!0)],2)}const Z={$style:K},x=C(z,[["render",Y],["__cssModules",Z]]),ee=$({name:"TemplateList",mixins:[_],props:{infiniteScrollEnabled:{type:Boolean,default:!1},loading:{type:Boolean},useWorkflowButton:{type:Boolean,default:!1},workflows:{type:Array},totalWorkflows:{type:Number},simpleView:{type:Boolean,default:!1}},mounted(){if(this.infiniteScrollEnabled){const e=document.getElementById("content");e&&e.addEventListener("scroll",this.onScroll)}},beforeUnmount(){const e=document.getElementById("content");e&&e.removeEventListener("scroll",this.onScroll)},components:{TemplateCard:x},methods:{onScroll(){const e=this.$refs.loader;if(!e||this.loading)return;const s=e.getBoundingClientRect();s.top>=0&&s.left>=0&&s.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&s.right<=(window.innerWidth||document.documentElement.clientWidth)&&this.$emit("loadMore")},onCardClick(e,s){this.$emit("openTemplate",{event:e,id:s})},onUseWorkflow(e,s){this.$emit("useWorkflow",{event:e,id:s})}}}),oe="_header_cr9gx_5",te="_workflowButton_cr9gx_9",ne="_button_cr9gx_9",se="_nodes_cr9gx_12",le={header:oe,workflowButton:te,button:ne,nodes:se},ie=["textContent"],ae={key:0,ref:"loader"},re={key:1};function de(e,s,y,B,b,v){const p=a("n8n-heading"),c=a("TemplateCard");return e.loading||e.workflows.length?(o(),t("div",{key:0,class:i(e.$style.list)},[e.simpleView?n("",!0):(o(),t("div",{key:0,class:i(e.$style.header)},[r(p,{bold:!0,size:"medium",color:"text-light"},{default:m(()=>[w(f(e.$locale.baseText("templates.workflows"))+" ",1),!e.loading&&e.totalWorkflows?(o(),t("span",{key:0,textContent:f(`(${e.totalWorkflows})`)},null,8,ie)):n("",!0)]),_:1})],2)),U("div",{class:i(e.$style.container)},[(o(!0),t(h,null,g(e.workflows,(l,d)=>(o(),k(c,{key:l.id,workflow:l,firstItem:d===0,"simple-view":e.simpleView,lastItem:d===e.workflows.length-1&&!e.loading,useWorkflowButton:e.useWorkflowButton,onClick:u=>e.onCardClick(u,l.id),onUseWorkflow:u=>e.onUseWorkflow(u,l.id)},null,8,["workflow","firstItem","simple-view","lastItem","useWorkflowButton","onClick","onUseWorkflow"]))),128)),e.infiniteScrollEnabled?(o(),t("div",ae,null,512)):n("",!0),e.loading?(o(),t("div",re,[(o(),t(h,null,g(4,l=>r(c,{key:"index-"+l,loading:!0,firstItem:e.workflows.length===0&&l===1,lastItem:l===4},null,8,["firstItem","lastItem"])),64))])):n("",!0)],2)],2)):n("",!0)}const ue={$style:le},we=C(ee,[["render",de],["__cssModules",ue]]);export{we as T};
2
- //# sourceMappingURL=TemplateList-uT0I7BC-.js.map
1
+ import{g as _,aS as S}from"./index-RXjMHIPR.js";import{fD as V,fC as N,_ as C}from"./n8n-ZKR6bms9.js";import{N as E}from"./NodeList-U4qs88M0.js";import{G as $,ag as a,l as o,m as t,I as i,T as r,O as m,Q as n,M as k,a2 as L,S as w,R as f,p as U,F as h,a7 as g}from"./vendor-2CfOYFi2.js";const z=$({name:"TemplateCard",mixins:[_],props:{lastItem:{type:Boolean,default:!1},firstItem:{type:Boolean,default:!1},workflow:{type:Object},useWorkflowButton:{type:Boolean},loading:{type:Boolean},simpleView:{type:Boolean,default:!1}},components:{TimeAgo:S,NodeList:E},data(){return{nodesToBeShown:5}},methods:{filterTemplateNodes:V,abbreviateNumber:N,countNodesToBeSliced(e){return e.length>this.nodesToBeShown?this.nodesToBeShown-1:this.nodesToBeShown},onUseWorkflowClick(e){this.$emit("useWorkflow",e)},onCardClick(e){this.$emit("click",e)}}}),H="_nodes_akyr5_5",M="_icon_akyr5_12",O="_card_akyr5_16",A="_hideOnHover_akyr5_28",R="_buttonContainer_akyr5_31",D="_loaded_akyr5_42",F="_first_akyr5_46",j="_last_akyr5_52",G="_content_akyr5_57",Q="_line_akyr5_62",q="_loading_akyr5_68",J="_nodesContainer_akyr5_73",K={nodes:H,icon:M,card:O,hideOnHover:A,buttonContainer:R,loaded:D,first:F,last:j,content:G,line:Q,loading:q,nodesContainer:J},P={key:1},X={key:0};function Y(e,s,y,B,b,v){const p=a("n8n-loading"),c=a("n8n-heading"),l=a("font-awesome-icon"),d=a("n8n-text"),u=a("TimeAgo"),T=a("NodeList"),W=a("n8n-button");return o(),t("div",{class:i([e.$style.card,e.lastItem&&e.$style.last,e.firstItem&&e.$style.first,!e.loading&&e.$style.loaded]),onClick:s[0]||(s[0]=(...I)=>e.onCardClick&&e.onCardClick(...I)),"data-test-id":"template-card"},[e.loading?(o(),t("div",{key:0,class:i(e.$style.loading)},[r(p,{rows:2,shrinkLast:!1,loading:e.loading},null,8,["loading"])],2)):(o(),t("div",P,[r(c,{bold:!0,size:"small"},{default:m(()=>[w(f(e.workflow.name),1)]),_:1}),e.simpleView?n("",!0):(o(),t("div",{key:0,class:i(e.$style.content)},[e.workflow.totalViews?(o(),t("span",X,[r(d,{size:"small",color:"text-light"},{default:m(()=>[r(l,{icon:"eye"}),w(" "+f(e.abbreviateNumber(e.workflow.totalViews)),1)]),_:1})])):n("",!0),e.workflow.totalViews?(o(),t("div",{key:1,class:i(e.$style.line),textContent:"|"},null,2)):n("",!0),r(d,{size:"small",color:"text-light"},{default:m(()=>[r(u,{date:e.workflow.createdAt},null,8,["date"])]),_:1}),e.workflow.user?(o(),t("div",{key:2,class:i(e.$style.line),textContent:"|"},null,2)):n("",!0),e.workflow.user?(o(),k(d,{key:3,size:"small",color:"text-light"},{default:m(()=>[w("By "+f(e.workflow.user.username),1)]),_:1})):n("",!0)],2))])),e.loading?n("",!0):(o(),t("div",{key:2,class:i([e.$style.nodesContainer,e.useWorkflowButton&&e.$style.hideOnHover])},[e.workflow.nodes?(o(),k(T,{key:0,nodes:e.workflow.nodes,limit:e.nodesToBeShown,size:"md"},null,8,["nodes","limit"])):n("",!0)],2)),e.useWorkflowButton?(o(),t("div",{key:3,class:i(e.$style.buttonContainer)},[e.useWorkflowButton?(o(),k(W,{key:0,outline:"",label:"Use workflow",onClick:L(e.onUseWorkflowClick,["stop"]),"data-test-id":"use-workflow-button"},null,8,["onClick"])):n("",!0)],2)):n("",!0)],2)}const Z={$style:K},x=C(z,[["render",Y],["__cssModules",Z]]),ee=$({name:"TemplateList",mixins:[_],props:{infiniteScrollEnabled:{type:Boolean,default:!1},loading:{type:Boolean},useWorkflowButton:{type:Boolean,default:!1},workflows:{type:Array},totalWorkflows:{type:Number},simpleView:{type:Boolean,default:!1}},mounted(){if(this.infiniteScrollEnabled){const e=document.getElementById("content");e&&e.addEventListener("scroll",this.onScroll)}},beforeUnmount(){const e=document.getElementById("content");e&&e.removeEventListener("scroll",this.onScroll)},components:{TemplateCard:x},methods:{onScroll(){const e=this.$refs.loader;if(!e||this.loading)return;const s=e.getBoundingClientRect();s.top>=0&&s.left>=0&&s.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&s.right<=(window.innerWidth||document.documentElement.clientWidth)&&this.$emit("loadMore")},onCardClick(e,s){this.$emit("openTemplate",{event:e,id:s})},onUseWorkflow(e,s){this.$emit("useWorkflow",{event:e,id:s})}}}),oe="_header_cr9gx_5",te="_workflowButton_cr9gx_9",ne="_button_cr9gx_9",se="_nodes_cr9gx_12",le={header:oe,workflowButton:te,button:ne,nodes:se},ie=["textContent"],ae={key:0,ref:"loader"},re={key:1};function de(e,s,y,B,b,v){const p=a("n8n-heading"),c=a("TemplateCard");return e.loading||e.workflows.length?(o(),t("div",{key:0,class:i(e.$style.list)},[e.simpleView?n("",!0):(o(),t("div",{key:0,class:i(e.$style.header)},[r(p,{bold:!0,size:"medium",color:"text-light"},{default:m(()=>[w(f(e.$locale.baseText("templates.workflows"))+" ",1),!e.loading&&e.totalWorkflows?(o(),t("span",{key:0,textContent:f(`(${e.totalWorkflows})`)},null,8,ie)):n("",!0)]),_:1})],2)),U("div",{class:i(e.$style.container)},[(o(!0),t(h,null,g(e.workflows,(l,d)=>(o(),k(c,{key:l.id,workflow:l,firstItem:d===0,"simple-view":e.simpleView,lastItem:d===e.workflows.length-1&&!e.loading,useWorkflowButton:e.useWorkflowButton,onClick:u=>e.onCardClick(u,l.id),onUseWorkflow:u=>e.onUseWorkflow(u,l.id)},null,8,["workflow","firstItem","simple-view","lastItem","useWorkflowButton","onClick","onUseWorkflow"]))),128)),e.infiniteScrollEnabled?(o(),t("div",ae,null,512)):n("",!0),e.loading?(o(),t("div",re,[(o(),t(h,null,g(4,l=>r(c,{key:"index-"+l,loading:!0,firstItem:e.workflows.length===0&&l===1,lastItem:l===4},null,8,["firstItem","lastItem"])),64))])):n("",!0)],2)],2)):n("",!0)}const ue={$style:le},we=C(ee,[["render",de],["__cssModules",ue]]);export{we as T};
2
+ //# sourceMappingURL=TemplateList-Ek8NkQLd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateList-uT0I7BC-.js","sources":["../../src/components/TemplateCard.vue","../../src/components/TemplateList.vue"],"sourcesContent":["<template>\n\t<div\n\t\t:class=\"[\n\t\t\t$style.card,\n\t\t\tlastItem && $style.last,\n\t\t\tfirstItem && $style.first,\n\t\t\t!loading && $style.loaded,\n\t\t]\"\n\t\t@click=\"onCardClick\"\n\t\tdata-test-id=\"template-card\"\n\t>\n\t\t<div :class=\"$style.loading\" v-if=\"loading\">\n\t\t\t<n8n-loading :rows=\"2\" :shrinkLast=\"false\" :loading=\"loading\" />\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<n8n-heading :bold=\"true\" size=\"small\">{{ workflow.name }}</n8n-heading>\n\t\t\t<div :class=\"$style.content\" v-if=\"!simpleView\">\n\t\t\t\t<span v-if=\"workflow.totalViews\">\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<font-awesome-icon icon=\"eye\" />\n\t\t\t\t\t\t{{ abbreviateNumber(workflow.totalViews) }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</span>\n\t\t\t\t<div v-if=\"workflow.totalViews\" :class=\"$style.line\" v-text=\"'|'\" />\n\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t<TimeAgo :date=\"workflow.createdAt\" />\n\t\t\t\t</n8n-text>\n\t\t\t\t<div v-if=\"workflow.user\" :class=\"$style.line\" v-text=\"'|'\" />\n\t\t\t\t<n8n-text v-if=\"workflow.user\" size=\"small\" color=\"text-light\"\n\t\t\t\t\t>By {{ workflow.user.username }}</n8n-text\n\t\t\t\t>\n\t\t\t</div>\n\t\t</div>\n\t\t<div :class=\"[$style.nodesContainer, useWorkflowButton && $style.hideOnHover]\" v-if=\"!loading\">\n\t\t\t<NodeList v-if=\"workflow.nodes\" :nodes=\"workflow.nodes\" :limit=\"nodesToBeShown\" size=\"md\" />\n\t\t</div>\n\t\t<div :class=\"$style.buttonContainer\" v-if=\"useWorkflowButton\">\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"useWorkflowButton\"\n\t\t\t\toutline\n\t\t\t\tlabel=\"Use workflow\"\n\t\t\t\t@click.stop=\"onUseWorkflowClick\"\n\t\t\t\tdata-test-id=\"use-workflow-button\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport { filterTemplateNodes } from '@/utils/nodeTypesUtils';\nimport { abbreviateNumber } from '@/utils/typesUtils';\nimport NodeList from './NodeList.vue';\nimport TimeAgo from '@/components/TimeAgo.vue';\n\nexport default defineComponent({\n\tname: 'TemplateCard',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tlastItem: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfirstItem: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflow: {\n\t\t\ttype: Object,\n\t\t},\n\t\tuseWorkflowButton: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tsimpleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomponents: {\n\t\tTimeAgo,\n\t\tNodeList,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnodesToBeShown: 5,\n\t\t};\n\t},\n\tmethods: {\n\t\tfilterTemplateNodes,\n\t\tabbreviateNumber,\n\t\tcountNodesToBeSliced(nodes: []): number {\n\t\t\tif (nodes.length > this.nodesToBeShown) {\n\t\t\t\treturn this.nodesToBeShown - 1;\n\t\t\t} else {\n\t\t\t\treturn this.nodesToBeShown;\n\t\t\t}\n\t\t},\n\t\tonUseWorkflowClick(e: MouseEvent) {\n\t\t\tthis.$emit('useWorkflow', e);\n\t\t},\n\t\tonCardClick(e: MouseEvent) {\n\t\t\tthis.$emit('click', e);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.nodes {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-content: center;\n\tflex-direction: row;\n}\n\n.icon {\n\tmargin-left: var(--spacing-xs);\n}\n\n.card {\n\tposition: relative;\n\tborder-left: var(--border-base);\n\tborder-right: var(--border-base);\n\tborder-bottom: var(--border-base);\n\tbackground-color: var(--color-background-xlight);\n\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0 var(--spacing-s) var(--spacing-s) var(--spacing-s);\n\tbackground-color: var(--color-background-xlight);\n\tcursor: pointer;\n\n\t&:hover {\n\t\t.hideOnHover {\n\t\t\tvisibility: hidden;\n\t\t}\n\n\t\t.buttonContainer {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n\n.buttonContainer {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 10px;\n\ttop: 30%;\n}\n\n.loaded {\n\tpadding-top: var(--spacing-s);\n}\n\n.first {\n\tborder-top: var(--border-base);\n\tborder-top-right-radius: var(--border-radius-large);\n\tborder-top-left-radius: var(--border-radius-large);\n}\n\n.last {\n\tborder-bottom-right-radius: var(--border-radius-large);\n\tborder-bottom-left-radius: var(--border-radius-large);\n}\n\n.content {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.line {\n\tpadding: 0 6px;\n\tcolor: var(--color-foreground-base);\n\tfont-size: var(--font-size-2xs);\n}\n\n.loading {\n\twidth: 100%;\n\tbackground-color: var(--color-background-xlight);\n}\n\n.nodesContainer {\n\tmin-width: 175px;\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tflex-grow: 1;\n}\n</style>\n","<template>\n\t<div :class=\"$style.list\" v-if=\"loading || workflows.length\">\n\t\t<div :class=\"$style.header\" v-if=\"!simpleView\">\n\t\t\t<n8n-heading :bold=\"true\" size=\"medium\" color=\"text-light\">\n\t\t\t\t{{ $locale.baseText('templates.workflows') }}\n\t\t\t\t<span v-if=\"!loading && totalWorkflows\" v-text=\"`(${totalWorkflows})`\" />\n\t\t\t</n8n-heading>\n\t\t</div>\n\t\t<div :class=\"$style.container\">\n\t\t\t<TemplateCard\n\t\t\t\tv-for=\"(workflow, index) in workflows\"\n\t\t\t\t:key=\"workflow.id\"\n\t\t\t\t:workflow=\"workflow\"\n\t\t\t\t:firstItem=\"index === 0\"\n\t\t\t\t:simple-view=\"simpleView\"\n\t\t\t\t:lastItem=\"index === workflows.length - 1 && !loading\"\n\t\t\t\t:useWorkflowButton=\"useWorkflowButton\"\n\t\t\t\t@click=\"(e) => onCardClick(e, workflow.id)\"\n\t\t\t\t@useWorkflow=\"(e) => onUseWorkflow(e, workflow.id)\"\n\t\t\t/>\n\t\t\t<div v-if=\"infiniteScrollEnabled\" ref=\"loader\" />\n\t\t\t<div v-if=\"loading\">\n\t\t\t\t<TemplateCard\n\t\t\t\t\tv-for=\"n in 4\"\n\t\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t\t:loading=\"true\"\n\t\t\t\t\t:firstItem=\"workflows.length === 0 && n === 1\"\n\t\t\t\t\t:lastItem=\"n === 4\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport TemplateCard from './TemplateCard.vue';\n\nexport default defineComponent({\n\tname: 'TemplateList',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tinfiniteScrollEnabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tuseWorkflowButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflows: {\n\t\t\ttype: Array,\n\t\t},\n\t\ttotalWorkflows: {\n\t\t\ttype: Number,\n\t\t},\n\t\tsimpleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.infiniteScrollEnabled) {\n\t\t\tconst content = document.getElementById('content');\n\t\t\tif (content) {\n\t\t\t\tcontent.addEventListener('scroll', this.onScroll);\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tconst content = document.getElementById('content');\n\t\tif (content) {\n\t\t\tcontent.removeEventListener('scroll', this.onScroll);\n\t\t}\n\t},\n\tcomponents: {\n\t\tTemplateCard,\n\t},\n\tmethods: {\n\t\tonScroll() {\n\t\t\tconst loaderRef = this.$refs.loader as HTMLElement | undefined;\n\t\t\tif (!loaderRef || this.loading) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rect = loaderRef.getBoundingClientRect();\n\t\t\tconst inView =\n\t\t\t\trect.top >= 0 &&\n\t\t\t\trect.left >= 0 &&\n\t\t\t\trect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n\t\t\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth);\n\n\t\t\tif (inView) {\n\t\t\t\tthis.$emit('loadMore');\n\t\t\t}\n\t\t},\n\t\tonCardClick(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('openTemplate', { event, id });\n\t\t},\n\t\tonUseWorkflow(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('useWorkflow', { event, id });\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.header {\n\tpadding-bottom: var(--spacing-2xs);\n}\n\n.workflowButton {\n\t&:hover {\n\t\t.button {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.nodes {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","genericHelpers","TimeAgo","NodeList","filterTemplateNodes","abbreviateNumber","nodes","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_component_n8n_loading","_hoisted_1","_createVNode","_component_n8n_heading","_createCommentVNode","_hoisted_2","_component_n8n_text","_withCtx","_component_font_awesome_icon","_component_TimeAgo","_createBlock","_component_NodeList","_component_n8n_button","_withModifiers","_sfc_main","content","TemplateCard","loaderRef","rect","event","id","_createTextVNode","_toDisplayString","_createElementVNode","_Fragment","_renderList","workflow","index","_component_TemplateCard","e","_hoisted_3","n"],"mappings":"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"}
1
+ {"version":3,"file":"TemplateList-Ek8NkQLd.js","sources":["../../src/components/TemplateCard.vue","../../src/components/TemplateList.vue"],"sourcesContent":["<template>\n\t<div\n\t\t:class=\"[\n\t\t\t$style.card,\n\t\t\tlastItem && $style.last,\n\t\t\tfirstItem && $style.first,\n\t\t\t!loading && $style.loaded,\n\t\t]\"\n\t\t@click=\"onCardClick\"\n\t\tdata-test-id=\"template-card\"\n\t>\n\t\t<div :class=\"$style.loading\" v-if=\"loading\">\n\t\t\t<n8n-loading :rows=\"2\" :shrinkLast=\"false\" :loading=\"loading\" />\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<n8n-heading :bold=\"true\" size=\"small\">{{ workflow.name }}</n8n-heading>\n\t\t\t<div :class=\"$style.content\" v-if=\"!simpleView\">\n\t\t\t\t<span v-if=\"workflow.totalViews\">\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<font-awesome-icon icon=\"eye\" />\n\t\t\t\t\t\t{{ abbreviateNumber(workflow.totalViews) }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</span>\n\t\t\t\t<div v-if=\"workflow.totalViews\" :class=\"$style.line\" v-text=\"'|'\" />\n\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t<TimeAgo :date=\"workflow.createdAt\" />\n\t\t\t\t</n8n-text>\n\t\t\t\t<div v-if=\"workflow.user\" :class=\"$style.line\" v-text=\"'|'\" />\n\t\t\t\t<n8n-text v-if=\"workflow.user\" size=\"small\" color=\"text-light\"\n\t\t\t\t\t>By {{ workflow.user.username }}</n8n-text\n\t\t\t\t>\n\t\t\t</div>\n\t\t</div>\n\t\t<div :class=\"[$style.nodesContainer, useWorkflowButton && $style.hideOnHover]\" v-if=\"!loading\">\n\t\t\t<NodeList v-if=\"workflow.nodes\" :nodes=\"workflow.nodes\" :limit=\"nodesToBeShown\" size=\"md\" />\n\t\t</div>\n\t\t<div :class=\"$style.buttonContainer\" v-if=\"useWorkflowButton\">\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"useWorkflowButton\"\n\t\t\t\toutline\n\t\t\t\tlabel=\"Use workflow\"\n\t\t\t\t@click.stop=\"onUseWorkflowClick\"\n\t\t\t\tdata-test-id=\"use-workflow-button\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport { filterTemplateNodes } from '@/utils/nodeTypesUtils';\nimport { abbreviateNumber } from '@/utils/typesUtils';\nimport NodeList from './NodeList.vue';\nimport TimeAgo from '@/components/TimeAgo.vue';\n\nexport default defineComponent({\n\tname: 'TemplateCard',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tlastItem: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfirstItem: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflow: {\n\t\t\ttype: Object,\n\t\t},\n\t\tuseWorkflowButton: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tsimpleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomponents: {\n\t\tTimeAgo,\n\t\tNodeList,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnodesToBeShown: 5,\n\t\t};\n\t},\n\tmethods: {\n\t\tfilterTemplateNodes,\n\t\tabbreviateNumber,\n\t\tcountNodesToBeSliced(nodes: []): number {\n\t\t\tif (nodes.length > this.nodesToBeShown) {\n\t\t\t\treturn this.nodesToBeShown - 1;\n\t\t\t} else {\n\t\t\t\treturn this.nodesToBeShown;\n\t\t\t}\n\t\t},\n\t\tonUseWorkflowClick(e: MouseEvent) {\n\t\t\tthis.$emit('useWorkflow', e);\n\t\t},\n\t\tonCardClick(e: MouseEvent) {\n\t\t\tthis.$emit('click', e);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.nodes {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-content: center;\n\tflex-direction: row;\n}\n\n.icon {\n\tmargin-left: var(--spacing-xs);\n}\n\n.card {\n\tposition: relative;\n\tborder-left: var(--border-base);\n\tborder-right: var(--border-base);\n\tborder-bottom: var(--border-base);\n\tbackground-color: var(--color-background-xlight);\n\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0 var(--spacing-s) var(--spacing-s) var(--spacing-s);\n\tbackground-color: var(--color-background-xlight);\n\tcursor: pointer;\n\n\t&:hover {\n\t\t.hideOnHover {\n\t\t\tvisibility: hidden;\n\t\t}\n\n\t\t.buttonContainer {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n\n.buttonContainer {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 10px;\n\ttop: 30%;\n}\n\n.loaded {\n\tpadding-top: var(--spacing-s);\n}\n\n.first {\n\tborder-top: var(--border-base);\n\tborder-top-right-radius: var(--border-radius-large);\n\tborder-top-left-radius: var(--border-radius-large);\n}\n\n.last {\n\tborder-bottom-right-radius: var(--border-radius-large);\n\tborder-bottom-left-radius: var(--border-radius-large);\n}\n\n.content {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.line {\n\tpadding: 0 6px;\n\tcolor: var(--color-foreground-base);\n\tfont-size: var(--font-size-2xs);\n}\n\n.loading {\n\twidth: 100%;\n\tbackground-color: var(--color-background-xlight);\n}\n\n.nodesContainer {\n\tmin-width: 175px;\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tflex-grow: 1;\n}\n</style>\n","<template>\n\t<div :class=\"$style.list\" v-if=\"loading || workflows.length\">\n\t\t<div :class=\"$style.header\" v-if=\"!simpleView\">\n\t\t\t<n8n-heading :bold=\"true\" size=\"medium\" color=\"text-light\">\n\t\t\t\t{{ $locale.baseText('templates.workflows') }}\n\t\t\t\t<span v-if=\"!loading && totalWorkflows\" v-text=\"`(${totalWorkflows})`\" />\n\t\t\t</n8n-heading>\n\t\t</div>\n\t\t<div :class=\"$style.container\">\n\t\t\t<TemplateCard\n\t\t\t\tv-for=\"(workflow, index) in workflows\"\n\t\t\t\t:key=\"workflow.id\"\n\t\t\t\t:workflow=\"workflow\"\n\t\t\t\t:firstItem=\"index === 0\"\n\t\t\t\t:simple-view=\"simpleView\"\n\t\t\t\t:lastItem=\"index === workflows.length - 1 && !loading\"\n\t\t\t\t:useWorkflowButton=\"useWorkflowButton\"\n\t\t\t\t@click=\"(e) => onCardClick(e, workflow.id)\"\n\t\t\t\t@useWorkflow=\"(e) => onUseWorkflow(e, workflow.id)\"\n\t\t\t/>\n\t\t\t<div v-if=\"infiniteScrollEnabled\" ref=\"loader\" />\n\t\t\t<div v-if=\"loading\">\n\t\t\t\t<TemplateCard\n\t\t\t\t\tv-for=\"n in 4\"\n\t\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t\t:loading=\"true\"\n\t\t\t\t\t:firstItem=\"workflows.length === 0 && n === 1\"\n\t\t\t\t\t:lastItem=\"n === 4\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport TemplateCard from './TemplateCard.vue';\n\nexport default defineComponent({\n\tname: 'TemplateList',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tinfiniteScrollEnabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tuseWorkflowButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflows: {\n\t\t\ttype: Array,\n\t\t},\n\t\ttotalWorkflows: {\n\t\t\ttype: Number,\n\t\t},\n\t\tsimpleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.infiniteScrollEnabled) {\n\t\t\tconst content = document.getElementById('content');\n\t\t\tif (content) {\n\t\t\t\tcontent.addEventListener('scroll', this.onScroll);\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tconst content = document.getElementById('content');\n\t\tif (content) {\n\t\t\tcontent.removeEventListener('scroll', this.onScroll);\n\t\t}\n\t},\n\tcomponents: {\n\t\tTemplateCard,\n\t},\n\tmethods: {\n\t\tonScroll() {\n\t\t\tconst loaderRef = this.$refs.loader as HTMLElement | undefined;\n\t\t\tif (!loaderRef || this.loading) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rect = loaderRef.getBoundingClientRect();\n\t\t\tconst inView =\n\t\t\t\trect.top >= 0 &&\n\t\t\t\trect.left >= 0 &&\n\t\t\t\trect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n\t\t\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth);\n\n\t\t\tif (inView) {\n\t\t\t\tthis.$emit('loadMore');\n\t\t\t}\n\t\t},\n\t\tonCardClick(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('openTemplate', { event, id });\n\t\t},\n\t\tonUseWorkflow(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('useWorkflow', { event, id });\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.header {\n\tpadding-bottom: var(--spacing-2xs);\n}\n\n.workflowButton {\n\t&:hover {\n\t\t.button {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.nodes {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","genericHelpers","TimeAgo","NodeList","filterTemplateNodes","abbreviateNumber","nodes","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_component_n8n_loading","_hoisted_1","_createVNode","_component_n8n_heading","_createCommentVNode","_hoisted_2","_component_n8n_text","_withCtx","_component_font_awesome_icon","_component_TimeAgo","_createBlock","_component_NodeList","_component_n8n_button","_withModifiers","_sfc_main","content","TemplateCard","loaderRef","rect","event","id","_createTextVNode","_toDisplayString","_createElementVNode","_Fragment","_renderList","workflow","index","_component_TemplateCard","e","_hoisted_3","n"],"mappings":"+RAwDA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,eACN,OAAQ,CAACC,CAAc,EACvB,MAAO,CACN,SAAU,CACT,KAAM,QACN,QAAS,EACV,EACA,UAAW,CACV,KAAM,QACN,QAAS,EACV,EACA,SAAU,CACT,KAAM,MACP,EACA,kBAAmB,CAClB,KAAM,OACP,EACA,QAAS,CACR,KAAM,OACP,EACA,WAAY,CACX,KAAM,QACN,QAAS,EACV,CACD,EACA,WAAY,CACX,QAAAC,EACA,SAAAC,CACD,EACA,MAAO,CACC,MAAA,CACN,eAAgB,CAAA,CAElB,EACA,QAAS,CACR,oBAAAC,EACA,iBAAAC,EACA,qBAAqBC,EAAmB,CACnC,OAAAA,EAAM,OAAS,KAAK,eAChB,KAAK,eAAiB,EAEtB,KAAK,cAEd,EACA,mBAAmB,EAAe,CAC5B,KAAA,MAAM,cAAe,CAAC,CAC5B,EACA,YAAY,EAAe,CACrB,KAAA,MAAM,QAAS,CAAC,CACtB,CACD,CACD,CAAC,2iBA3GAC,EA4CM,YAAA,SA3CQC,EAAW,EAAAC,EAAA,MAAA,CAAK,MAAYC,EAAA,CAAgBC,EAAA,OAAA,KAAAA,EAA+B,UAAWA,EAAO,OAAA,KAAAA,EAAA,WAAAA,EAAA,OAAA,OAMzGA,EAAK,SAAAA,EAAA,OAAA,MAAA,CAAA,kEAGoC,eAAA,eAAA,EAAA,CAA/BA,EAAA,SAAAH,IAAAC,EAAE,MAAO,CAAA,IAAA,EACnB,MAAgEC,EAAAC,EAAA,OAAA,OAAA,CAAA,EAAA,GAA9BC,EAAO,CAAG,KAAA,EAAA,WAAA,oBAE7C,EAAA,KAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EACC,SAAwBH,EAAA,MAAAI,EAAA,CAAAC,EAAOC,EAAO,CAAA,KAAA,2DACF,EAAA,CAAA,CAAA,EAAzBJ,EAAA,WAiB0EK,EAAO,GAAA,EAAA,GAjBjFR,EAAA,EAAAC,EAAE,MAAO,CAAA,IAAA,EACP,MAAAC,EAASC,EAAU,OAAA,OAAA,CAAA,EAAA,CAC9BA,EAAA,SAAA,YAAAH,EAAsB,EAAAC,EAAA,OAAAQ,EAAA,CAAAH,EAAOI,EAAY,CAAA,KAAA,6BAExC,QAAAC,EAAA,IAAA,CAAAL,EAAAM,EAAA,CAAA,KAAA,KAAA,CAAA,gEAGF,GAAAJ,EAAA,GAAA,EAAA,EAAAL,EAAA,SAAA,YAAAH,EAAA,IAAwC,MAAW,CAAA,IAAA,wCACnD,EAAA,KAEW,IAFDQ,EAAY,GAAA,EAAA,EAAAF,EAAOI,EAAY,CAAA,KAAA,6BAC1B,QAAAC,EAAE,IAAS,CAAAL,EAAAO,EAAA,+CAEf,EAAA,CAAA,CAAA,EAAqBV,EAAA,SAAA,MAAAH,EAAA,EAAAC,EAAE,MAAW,CAAA,IAAA,wCAC7B,EAAA,KAAA,CAAQ,KAAxB,GAEC,EAAA,EAAAE,EAAA,SAAA,MAAAH,EAAA,EAF0Cc,EAAAJ,EAAA,CAAC,IAAK,EAAA,KAAA,yGAK0C,CAAA,GAAlFP,EAAA,QAGXK,EAAA,GAAA,EAAA,GAHWR,EAAA,EAAAC,EAAG,MAAO,CAAA,IAAA,QACJC,EAAc,CAAAC,EAAA,OAAA,eAAAA,EAAA,mBAAAA,EAAA,OAAA,WAAA,CAAA,CAAA,EAAA,uBAAwBW,EAAAC,EAAA,CAAG,IAAK,EAAkB,MAAKZ,EAAI,SAAA,MAAA,MAAAA,EAAA,6DAE1F,EAAA,CAAA,GAAAA,EAAA,mBAAAH,MAAa,MAAO,CAAA,IAAA,QAEZE,EAAiBC,EAAA,OAAA,eAAA,CAAA,EAAA,0BAChBW,EAAAE,EAAA,CACP,IAAK,EACJ,QAAK,GACN,MAAA,eAAA,QAAAC,EAAAd,EAAA,mBAAA,CAAA,MAAA,CAAA,oJCHJe,GAAe1B,EAAgB,CAC9B,KAAM,eACN,OAAQ,CAACC,CAAc,EACvB,MAAO,CACN,sBAAuB,CACtB,KAAM,QACN,QAAS,EACV,EACA,QAAS,CACR,KAAM,OACP,EACA,kBAAmB,CAClB,KAAM,QACN,QAAS,EACV,EACA,UAAW,CACV,KAAM,KACP,EACA,eAAgB,CACf,KAAM,MACP,EACA,WAAY,CACX,KAAM,QACN,QAAS,EACV,CACD,EACA,SAAU,CACT,GAAI,KAAK,sBAAuB,CACzB,MAAA0B,EAAU,SAAS,eAAe,SAAS,EAC7CA,GACKA,EAAA,iBAAiB,SAAU,KAAK,QAAQ,CAElD,CACD,EACA,eAAgB,CACT,MAAAA,EAAU,SAAS,eAAe,SAAS,EAC7CA,GACKA,EAAA,oBAAoB,SAAU,KAAK,QAAQ,CAErD,EACA,WAAY,CACX,aAAAC,CACD,EACA,QAAS,CACR,UAAW,CACJ,MAAAC,EAAY,KAAK,MAAM,OACzB,GAAA,CAACA,GAAa,KAAK,QACtB,OAGK,MAAAC,EAAOD,EAAU,wBAEtBC,EAAK,KAAO,GACZA,EAAK,MAAQ,GACbA,EAAK,SAAW,OAAO,aAAe,SAAS,gBAAgB,eAC/DA,EAAK,QAAU,OAAO,YAAc,SAAS,gBAAgB,cAG7D,KAAK,MAAM,UAAU,CAEvB,EACA,YAAYC,EAAmBC,EAAY,CAC1C,KAAK,MAAM,eAAgB,CAAE,MAAAD,EAAO,GAAAC,CAAI,CAAA,CACzC,EACA,cAAcD,EAAmBC,EAAY,CAC5C,KAAK,MAAM,cAAe,CAAE,MAAAD,EAAO,GAAAC,CAAI,CAAA,CACxC,CACD,CACD,CAAC,qKAvFuCf,GAAS,CAAA,IAAA,+EAnBLV,EAAgB,cAAA,EAAhD,OAAAI,EAAA,SAAAA,EAAA,UAAA,QAAAH,EAAA,EAAAC,EAAE,MAAW,CAAA,IAAA,QACYC,EAAUC,EAAA,OAAA,IAAA,CAAA,EAAA,CAAlCA,EAAA,WAMLK,EAAK,GAAE,EAAA,GANFR,EAAA,EAAAC,EAAE,MAAO,CAAA,IAAA,EACnB,MAGcC,EAAAC,EAAA,OAAA,MAAA,CAAA,EAAA,GAHiBI,EAAQ,CAAC,KAAK,GAAA,KAAA,8BAE/B,QAAAI,EAAO,IAAI,CAAAc,EAAAC,EAAxBvB,EAAyE,QAAA,SAAA,qBAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAAA,EAAA,SAAAA,EAAA,gBAAAH,EAAA,EAAjCC,EAA8B,OAAlB,CAAA,IAAA,sEAGtD,EAAA,CAAA,GAAa0B,EAAA,MAAA,SACZxB,EAUE,OAAA,SAAA,CAAA,EAAA,EARKH,EAAA,EAAA,EAASC,EAAE2B,EAAA,KAAAC,EAAA1B,EAAA,UAAA,CAAA2B,EAAAC,KAChB/B,EAAA,EAAkBc,EAAAkB,EAAA,CAClB,IAAWF,EAAA,GACX,SAAAA,EACA,UAAUC,IAAU,EACpB,cAAmB5B,EAAA,WACnB,SAAQ4B,IAAM5B,EAAa,UAAA,OAAU,GAAG,CAAAA,EAAA,QACxC,kBAAeA,EAAK,kBAAA,QAAA8B,GAAA9B,EAAA,YAAA8B,EAAAH,EAAA,EAAA,0CAEU,EAAA,KAAA,EAAA,CAAA,WAAA,YAAA,cAAA,WAAA,oBAAA,UAAA,eAAA,CAAA,EAAA,EAAA,GAAA,GACrB3B,EAAA,uBAAAH,EAAX,EAAAC,EAAA,MAAAQ,GAAA,KAAA,GAAA,GAAAD,EAAA,GAAA,EAAA,EAAAL,EAAA,SAAAH,EAAA,EAOGC,EAAA,MAAAiC,GAAA,EAAAlC,EAAA,EAJiBC,EAAA2B,EAAA,KAAAC,EAAA,EAAAM,GACjB7B,EAAa0B,EAAA,CACb,IAAW,SAAAG,EACX,QAAQ,GAAA,UAAAhC,EAAA,UAAA,SAAA,GAAAgC,IAAA"}
@@ -1,2 +1,2 @@
1
- import{m as E}from"./pinia-jX93eZRS.js";import{T as b}from"./TemplateDetails-HasVFCUO.js";import{T as C}from"./TemplateList-uT0I7BC-.js";import{T as S}from"./TemplatesView-sX4NrNXT.js";import{w as v,a7 as I}from"./index--RuZ5wHr.js";import{ax as V,V as B,fA as F,fB as T,ab as N,_ as P}from"./n8n-ZKR6bms9.js";import{o as W}from"./templateActions-CZfTXoBx.js";import{G as A,ag as t,l as s,M as m,a9 as H,O as a,p as r,I as n,m as p,T as i,Q as c,S as d,R as u}from"./vendor-2CfOYFi2.js";import"./NodeList-8URsrxUQ.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";const U=A({name:"TemplatesCollectionView",mixins:[v],components:{TemplateDetails:b,TemplateList:C,TemplatesView:S},setup(){return{externalHooks:N()}},computed:{...E(I,V),collection(){return this.templatesStore.getCollectionById(this.collectionId)},collectionId(){return Array.isArray(this.$route.params.id)?this.$route.params.id[0]:this.$route.params.id},collectionWorkflows(){return this.collection?this.collection.workflows.map(({id:e})=>this.templatesStore.getTemplateById(e.toString())):null}},data(){return{loading:!0,notFoundError:!1}},methods:{scrollToTop(){setTimeout(()=>{const e=document.getElementById("content");e&&e.scrollTo({top:0,behavior:"smooth"})},50)},onOpenTemplate({event:e,id:o}){this.navigateTo(e,B.TEMPLATE,o)},async onUseWorkflow({event:e,id:o}){if(this.posthogStore.isFeatureEnabled(F)){const l={template_id:o,wf_template_repo_session_id:this.templatesStore.currentSessionId,source:"collection"};await this.externalHooks.run("templatesCollectionView.onUseWorkflow",l),this.$telemetry.track("User inserted workflow template",l,{withPostHog:!0})}await W({posthogStore:this.posthogStore,router:this.$router,templateId:o,inNewBrowserTab:e.metaKey||e.ctrlKey})},navigateTo(e,o,l){if(e.metaKey||e.ctrlKey){const w=this.$router.resolve({name:o,params:{id:l}});window.open(w.href,"_blank");return}else this.$router.push({name:o,params:{id:l}})}},watch:{collection(e){e?T(`n8n - Template collection: ${e.name}`):T("n8n - Templates")}},async mounted(){if(this.scrollToTop(),this.collection&&this.collection.full){this.loading=!1;return}try{await this.templatesStore.fetchCollectionById(this.collectionId)}catch{this.notFoundError=!0}this.loading=!1}}),L="_wrapper_19isr_5",M="_notFound_19isr_15",D="_title_19isr_19",O="_button_19isr_23",K="_mainContent_19isr_27",z="_markdown_19isr_38",R="_details_19isr_42",G={wrapper:L,notFound:M,title:D,button:O,mainContent:K,markdown:z,details:R};function Q(e,o,l,w,j,q){const h=t("n8n-heading"),f=t("n8n-text"),g=t("n8n-loading"),k=t("n8n-markdown"),y=t("TemplateList"),_=t("TemplateDetails"),$=t("TemplatesView");return s(),m($,{goBackEnabled:!0},H({header:a(()=>[e.notFoundError?(s(),p("div",{key:1,class:n(e.$style.notFound)},[i(f,{color:"text-base"},{default:a(()=>[d(u(e.$locale.baseText("templates.collectionsNotFound")),1)]),_:1})],2)):(s(),p("div",{key:0,class:n(e.$style.wrapper)},[r("div",{class:n(e.$style.title)},[e.collection&&e.collection.name?(s(),m(h,{key:0,tag:"h1",size:"2xlarge"},{default:a(()=>[d(u(e.collection.name),1)]),_:1})):c("",!0),e.collection&&e.collection.name?(s(),m(f,{key:1,color:"text-base",size:"small"},{default:a(()=>[d(u(e.$locale.baseText("templates.collection")),1)]),_:1})):c("",!0),i(g,{loading:!e.collection||!e.collection.name,rows:2,variant:"h1"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:a(()=>[r("div",{class:n(e.$style.wrapper)},[r("div",{class:n(e.$style.mainContent)},[e.loading||e.collection&&e.collection.description?(s(),p("div",{key:0,class:n(e.$style.markdown)},[i(k,{content:e.collection&&e.collection.description,images:e.collection&&e.collection.image,loading:e.loading},null,8,["content","images","loading"])],2)):c("",!0),i(y,{"infinite-scroll-enabled":!1,loading:e.loading,"use-workflow-button":!0,workflows:e.loading?[]:e.collectionWorkflows,onUseWorkflow:e.onUseWorkflow,onOpenTemplate:e.onOpenTemplate},null,8,["loading","workflows","onUseWorkflow","onOpenTemplate"])],2),r("div",{class:n(e.$style.details)},[i(_,{"block-title":e.$locale.baseText("template.details.appsInTheCollection"),loading:e.loading,template:e.collection},null,8,["block-title","loading","template"])],2)],2)]),key:"0"}]),1024)}const X={$style:G},Ve=P(U,[["render",Q],["__cssModules",X]]);export{Ve as default};
2
- //# sourceMappingURL=TemplatesCollectionView-WwdzPK0w.js.map
1
+ import{m as E}from"./pinia-jX93eZRS.js";import{T as b}from"./TemplateDetails-qWnefMYx.js";import{T as C}from"./TemplateList-Ek8NkQLd.js";import{T as S}from"./TemplatesView-sX4NrNXT.js";import{w as v,a7 as I}from"./index-RXjMHIPR.js";import{ax as V,V as B,fA as F,fB as T,ab as N,_ as P}from"./n8n-ZKR6bms9.js";import{o as W}from"./templateActions-y8msVyEB.js";import{G as A,ag as t,l as s,M as m,a9 as H,O as a,p as r,I as n,m as p,T as i,Q as c,S as d,R as u}from"./vendor-2CfOYFi2.js";import"./NodeList-U4qs88M0.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";const U=A({name:"TemplatesCollectionView",mixins:[v],components:{TemplateDetails:b,TemplateList:C,TemplatesView:S},setup(){return{externalHooks:N()}},computed:{...E(I,V),collection(){return this.templatesStore.getCollectionById(this.collectionId)},collectionId(){return Array.isArray(this.$route.params.id)?this.$route.params.id[0]:this.$route.params.id},collectionWorkflows(){return this.collection?this.collection.workflows.map(({id:e})=>this.templatesStore.getTemplateById(e.toString())):null}},data(){return{loading:!0,notFoundError:!1}},methods:{scrollToTop(){setTimeout(()=>{const e=document.getElementById("content");e&&e.scrollTo({top:0,behavior:"smooth"})},50)},onOpenTemplate({event:e,id:o}){this.navigateTo(e,B.TEMPLATE,o)},async onUseWorkflow({event:e,id:o}){if(this.posthogStore.isFeatureEnabled(F)){const l={template_id:o,wf_template_repo_session_id:this.templatesStore.currentSessionId,source:"collection"};await this.externalHooks.run("templatesCollectionView.onUseWorkflow",l),this.$telemetry.track("User inserted workflow template",l,{withPostHog:!0})}await W({posthogStore:this.posthogStore,router:this.$router,templateId:o,inNewBrowserTab:e.metaKey||e.ctrlKey})},navigateTo(e,o,l){if(e.metaKey||e.ctrlKey){const w=this.$router.resolve({name:o,params:{id:l}});window.open(w.href,"_blank");return}else this.$router.push({name:o,params:{id:l}})}},watch:{collection(e){e?T(`n8n - Template collection: ${e.name}`):T("n8n - Templates")}},async mounted(){if(this.scrollToTop(),this.collection&&this.collection.full){this.loading=!1;return}try{await this.templatesStore.fetchCollectionById(this.collectionId)}catch{this.notFoundError=!0}this.loading=!1}}),L="_wrapper_19isr_5",M="_notFound_19isr_15",D="_title_19isr_19",O="_button_19isr_23",K="_mainContent_19isr_27",z="_markdown_19isr_38",R="_details_19isr_42",G={wrapper:L,notFound:M,title:D,button:O,mainContent:K,markdown:z,details:R};function Q(e,o,l,w,j,q){const h=t("n8n-heading"),f=t("n8n-text"),g=t("n8n-loading"),k=t("n8n-markdown"),y=t("TemplateList"),_=t("TemplateDetails"),$=t("TemplatesView");return s(),m($,{goBackEnabled:!0},H({header:a(()=>[e.notFoundError?(s(),p("div",{key:1,class:n(e.$style.notFound)},[i(f,{color:"text-base"},{default:a(()=>[d(u(e.$locale.baseText("templates.collectionsNotFound")),1)]),_:1})],2)):(s(),p("div",{key:0,class:n(e.$style.wrapper)},[r("div",{class:n(e.$style.title)},[e.collection&&e.collection.name?(s(),m(h,{key:0,tag:"h1",size:"2xlarge"},{default:a(()=>[d(u(e.collection.name),1)]),_:1})):c("",!0),e.collection&&e.collection.name?(s(),m(f,{key:1,color:"text-base",size:"small"},{default:a(()=>[d(u(e.$locale.baseText("templates.collection")),1)]),_:1})):c("",!0),i(g,{loading:!e.collection||!e.collection.name,rows:2,variant:"h1"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:a(()=>[r("div",{class:n(e.$style.wrapper)},[r("div",{class:n(e.$style.mainContent)},[e.loading||e.collection&&e.collection.description?(s(),p("div",{key:0,class:n(e.$style.markdown)},[i(k,{content:e.collection&&e.collection.description,images:e.collection&&e.collection.image,loading:e.loading},null,8,["content","images","loading"])],2)):c("",!0),i(y,{"infinite-scroll-enabled":!1,loading:e.loading,"use-workflow-button":!0,workflows:e.loading?[]:e.collectionWorkflows,onUseWorkflow:e.onUseWorkflow,onOpenTemplate:e.onOpenTemplate},null,8,["loading","workflows","onUseWorkflow","onOpenTemplate"])],2),r("div",{class:n(e.$style.details)},[i(_,{"block-title":e.$locale.baseText("template.details.appsInTheCollection"),loading:e.loading,template:e.collection},null,8,["block-title","loading","template"])],2)],2)]),key:"0"}]),1024)}const X={$style:G},Ve=P(U,[["render",Q],["__cssModules",X]]);export{Ve as default};
2
+ //# sourceMappingURL=TemplatesCollectionView-xoRz-QfG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplatesCollectionView-WwdzPK0w.js","sources":["../../src/views/TemplatesCollectionView.vue"],"sourcesContent":["<template>\n\t<TemplatesView :goBackEnabled=\"true\">\n\t\t<template #header>\n\t\t\t<div v-if=\"!notFoundError\" :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.title\">\n\t\t\t\t\t<n8n-heading v-if=\"collection && collection.name\" tag=\"h1\" size=\"2xlarge\">\n\t\t\t\t\t\t{{ collection.name }}\n\t\t\t\t\t</n8n-heading>\n\t\t\t\t\t<n8n-text v-if=\"collection && collection.name\" color=\"text-base\" size=\"small\">\n\t\t\t\t\t\t{{ $locale.baseText('templates.collection') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-loading :loading=\"!collection || !collection.name\" :rows=\"2\" variant=\"h1\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.notFound\" v-else>\n\t\t\t\t<n8n-text color=\"text-base\">{{\n\t\t\t\t\t$locale.baseText('templates.collectionsNotFound')\n\t\t\t\t}}</n8n-text>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-if=\"!notFoundError\" #content>\n\t\t\t<div :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.mainContent\">\n\t\t\t\t\t<div :class=\"$style.markdown\" v-if=\"loading || (collection && collection.description)\">\n\t\t\t\t\t\t<n8n-markdown\n\t\t\t\t\t\t\t:content=\"collection && collection.description\"\n\t\t\t\t\t\t\t:images=\"collection && collection.image\"\n\t\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<TemplateList\n\t\t\t\t\t\t:infinite-scroll-enabled=\"false\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:use-workflow-button=\"true\"\n\t\t\t\t\t\t:workflows=\"loading ? [] : collectionWorkflows\"\n\t\t\t\t\t\t@useWorkflow=\"onUseWorkflow\"\n\t\t\t\t\t\t@openTemplate=\"onOpenTemplate\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.details\">\n\t\t\t\t\t<TemplateDetails\n\t\t\t\t\t\t:block-title=\"$locale.baseText('template.details.appsInTheCollection')\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:template=\"collection\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</TemplatesView>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\n\nimport TemplateDetails from '@/components/TemplateDetails.vue';\nimport TemplateList from '@/components/TemplateList.vue';\nimport TemplatesView from './TemplatesView.vue';\n\nimport { workflowHelpers } from '@/mixins/workflowHelpers';\nimport type {\n\tITemplatesCollection,\n\tITemplatesCollectionFull,\n\tITemplatesWorkflow,\n\tITemplatesWorkflowFull,\n} from '@/Interface';\n\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT, VIEWS } from '@/constants';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { usePostHog } from '@/stores/posthog.store';\nimport { openTemplateCredentialSetup } from '@/utils/templates/templateActions';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\n\nexport default defineComponent({\n\tname: 'TemplatesCollectionView',\n\tmixins: [workflowHelpers],\n\tcomponents: {\n\t\tTemplateDetails,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tsetup() {\n\t\tconst externalHooks = useExternalHooks();\n\n\t\treturn {\n\t\t\texternalHooks,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useTemplatesStore, usePostHog),\n\t\tcollection(): ITemplatesCollectionFull | null {\n\t\t\treturn this.templatesStore.getCollectionById(this.collectionId);\n\t\t},\n\t\tcollectionId(): string {\n\t\t\treturn Array.isArray(this.$route.params.id)\n\t\t\t\t? this.$route.params.id[0]\n\t\t\t\t: this.$route.params.id;\n\t\t},\n\t\tcollectionWorkflows(): Array<ITemplatesWorkflow | ITemplatesWorkflowFull | null> | null {\n\t\t\tif (!this.collection) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn this.collection.workflows.map(({ id }) => {\n\t\t\t\treturn this.templatesStore.getTemplateById(id.toString());\n\t\t\t});\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tnotFoundError: false,\n\t\t};\n\t},\n\tmethods: {\n\t\tscrollToTop() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst contentArea = document.getElementById('content');\n\t\t\t\tif (contentArea) {\n\t\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 50);\n\t\t},\n\t\tonOpenTemplate({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE, id);\n\t\t},\n\t\tasync onUseWorkflow({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tif (this.posthogStore.isFeatureEnabled(TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT)) {\n\t\t\t\tconst telemetryPayload = {\n\t\t\t\t\ttemplate_id: id,\n\t\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t\t\tsource: 'collection',\n\t\t\t\t};\n\t\t\t\tawait this.externalHooks.run('templatesCollectionView.onUseWorkflow', telemetryPayload);\n\t\t\t\tthis.$telemetry.track('User inserted workflow template', telemetryPayload, {\n\t\t\t\t\twithPostHog: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tawait openTemplateCredentialSetup({\n\t\t\t\tposthogStore: this.posthogStore,\n\t\t\t\trouter: this.$router,\n\t\t\t\ttemplateId: id,\n\t\t\t\tinNewBrowserTab: event.metaKey || event.ctrlKey,\n\t\t\t});\n\t\t},\n\t\tnavigateTo(e: MouseEvent, page: string, id: string) {\n\t\t\tif (e.metaKey || e.ctrlKey) {\n\t\t\t\tconst route = this.$router.resolve({ name: page, params: { id } });\n\t\t\t\twindow.open(route.href, '_blank');\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tvoid this.$router.push({ name: page, params: { id } });\n\t\t\t}\n\t\t},\n\t},\n\twatch: {\n\t\tcollection(collection: ITemplatesCollection) {\n\t\t\tif (collection) {\n\t\t\t\tsetPageTitle(`n8n - Template collection: ${collection.name}`);\n\t\t\t} else {\n\t\t\t\tsetPageTitle('n8n - Templates');\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tthis.scrollToTop();\n\n\t\tif (this.collection && this.collection.full) {\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.templatesStore.fetchCollectionById(this.collectionId);\n\t\t} catch (e) {\n\t\t\tthis.notFoundError = true;\n\t\t}\n\t\tthis.loading = false;\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.wrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tdisplay: block;\n\t}\n}\n\n.notFound {\n\tpadding-top: var(--spacing-xl);\n}\n\n.title {\n\twidth: 100%;\n}\n\n.button {\n\tdisplay: block;\n}\n\n.mainContent {\n\tpadding-right: var(--spacing-2xl);\n\tmargin-bottom: var(--spacing-l);\n\twidth: 100%;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tpadding-right: 0;\n\t}\n}\n\n.markdown {\n\tmargin-bottom: var(--spacing-l);\n}\n\n.details {\n\twidth: 180px;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","workflowHelpers","TemplateDetails","TemplateList","TemplatesView","useExternalHooks","mapStores","useTemplatesStore","usePostHog","id","contentArea","event","VIEWS","TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT","telemetryPayload","openTemplateCredentialSetup","page","route","collection","setPageTitle","_component_TemplatesView","_resolveComponent","_openBlock","_createBlock","_createSlots","_withCtx","_ctx","_createElementBlock","_normalizeClass","_component_n8n_heading","_createCommentVNode","_component_n8n_text","_createVNode","_component_n8n_loading","_createElementVNode","_component_n8n_markdown","_component_TemplateList","_component_TemplateDetails"],"mappings":"23CA0EA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,0BACN,OAAQ,CAACC,CAAe,EACxB,WAAY,CACX,gBAAAC,EACA,aAAAC,EACA,cAAAC,CACD,EACA,OAAQ,CAGA,MAAA,CACN,cAHqBC,GAGrB,CAEF,EACA,SAAU,CACT,GAAGC,EAAUC,EAAmBC,CAAU,EAC1C,YAA8C,CAC7C,OAAO,KAAK,eAAe,kBAAkB,KAAK,YAAY,CAC/D,EACA,cAAuB,CACtB,OAAO,MAAM,QAAQ,KAAK,OAAO,OAAO,EAAE,EACvC,KAAK,OAAO,OAAO,GAAG,CAAC,EACvB,KAAK,OAAO,OAAO,EACvB,EACA,qBAAwF,CACnF,OAAC,KAAK,WAGH,KAAK,WAAW,UAAU,IAAI,CAAC,CAAE,GAAAC,KAChC,KAAK,eAAe,gBAAgBA,EAAG,SAAU,CAAA,CACxD,EAJO,IAKT,CACD,EACA,MAAO,CACC,MAAA,CACN,QAAS,GACT,cAAe,EAAA,CAEjB,EACA,QAAS,CACR,aAAc,CACb,WAAW,IAAM,CACV,MAAAC,EAAc,SAAS,eAAe,SAAS,EACjDA,GACHA,EAAY,SAAS,CACpB,IAAK,EACL,SAAU,QAAA,CACV,GAEA,EAAE,CACN,EACA,eAAe,CAAE,MAAAC,EAAO,GAAAF,GAAyC,CAChE,KAAK,WAAWE,EAAOC,EAAM,SAAUH,CAAE,CAC1C,EACA,MAAM,cAAc,CAAE,MAAAE,EAAO,GAAAF,GAAyC,CACrE,GAAI,KAAK,aAAa,iBAAiBI,CAAoC,EAAG,CAC7E,MAAMC,EAAmB,CACxB,YAAaL,EACb,4BAA6B,KAAK,eAAe,iBACjD,OAAQ,YAAA,EAET,MAAM,KAAK,cAAc,IAAI,wCAAyCK,CAAgB,EACjF,KAAA,WAAW,MAAM,kCAAmCA,EAAkB,CAC1E,YAAa,EAAA,CACb,CACF,CAEA,MAAMC,EAA4B,CACjC,aAAc,KAAK,aACnB,OAAQ,KAAK,QACb,WAAYN,EACZ,gBAAiBE,EAAM,SAAWA,EAAM,OAAA,CACxC,CACF,EACA,WAAW,EAAeK,EAAcP,EAAY,CAC/C,GAAA,EAAE,SAAW,EAAE,QAAS,CACrB,MAAAQ,EAAQ,KAAK,QAAQ,QAAQ,CAAE,KAAMD,EAAM,OAAQ,CAAE,GAAAP,CAAG,CAAG,CAAA,EAC1D,OAAA,KAAKQ,EAAM,KAAM,QAAQ,EAChC,MAAA,MAEK,KAAK,QAAQ,KAAK,CAAE,KAAMD,EAAM,OAAQ,CAAE,GAAAP,CAAG,CAAA,CAAG,CAEvD,CACD,EACA,MAAO,CACN,WAAWS,EAAkC,CACxCA,EACUC,EAAA,8BAA8BD,EAAW,IAAI,EAAE,EAE5DC,EAAa,iBAAiB,CAEhC,CACD,EACA,MAAM,SAAU,CAGf,GAFA,KAAK,YAAY,EAEb,KAAK,YAAc,KAAK,WAAW,KAAM,CAC5C,KAAK,QAAU,GACf,MACD,CAEI,GAAA,CACH,MAAM,KAAK,eAAe,oBAAoB,KAAK,YAAY,OACpD,CACX,KAAK,cAAgB,EACtB,CACA,KAAK,QAAU,EAChB,CACD,CAAC,8XAtLAC,EAAAC,EA+CgB,eA/CA,SAEFC,EAAa,EAAAC,EAAAH,EAAA,CAAA,cAAA,EAAA,EAAAI,EAAA,CAAzB,OAAAC,EAAA,IAAA,CAAAC,EAAA,eAWWJ,IAAAK,EAAE,MAAO,CAAA,IAAA,EACnB,MAAAC,EAEaF,EAFG,OAAA,QAAA,CAAA,EAAA,YACf,WAAQ,EAAA,CAAA,QAAAD,EAAA,IAAA,2EAbVH,EAAA,IAAmC,MAAO,CAAA,IAAA,EACzC,MAQMM,EAAAF,EAAA,OAAA,OAAA,CAAA,EAAA,UAPc,MAAAE,EAAcF,SAAU,KAAK,CAAA,EAAA,CAAUA,EAAA,YAAAA,EAAA,WAAA,MAAAJ,EAAA,EAAAC,EAAAM,EAAA,CAAC,IAAI,EAAA,IAAA,oEAG/C,CAAA,GAAAC,EAAhB,GAEW,EAAA,EAAAJ,EAAA,YAAAA,EAAA,WAAA,MAAAJ,EAFqD,EAAAC,EAAAQ,EAAA,CAAC,IAAI,EAAA,MAAA,mGAGvD,GAAAD,EAAU,GAAU,EAAK,EAAyBE,EAAAC,EAAA,CAAE,QAAQ,CAAIP,EAAA,YAAA,CAAAA,EAAA,WAAA,KAAA,KAAA,uCAGrE,EAAA,CAAA,KAMK,EAAA,CAAA,EAAA,yBAChB,KAAA,UAAA,GAAMD,EAAK,IAAA,CAAAS,EAAA,MAAA,CACV,MAgBMN,EAAAF,EAAA,OAAA,OAAA,CAAA,EAAA,UAf+B,MAAAE,EAAYF,SAAU,WAAI,CAAA,EAAA,CAAnDA,EAAA,SAAAA,EAAA,YAAAA,EAAA,WAAA,aAAAJ,EAAA,EAAAK,EAAE,MAAO,CAAA,IAAA,EACnB,MAIEC,EAAAF,EAAA,OAAA,QAAA,CAAA,EAAA,GAFQS,EAAc,CACtB,QAAST,EAAO,YAAAA,EAAA,WAAA,YAAA,OAAAA,EAAA,YAAAA,EAAA,WAAA,+DAGnB,EAAA,CAAA,GACEI,KAAuB,EAAE,EAAAE,EAChBI,EAAO,CAChB,0BAAyB,GACzB,QAASV,EAAE,QACX,sBAAa,GACb,YAAc,QAAc,CAAA,EAAAA,EAAA,oBAAA,cAAAA,EAAA,+CASzB,KAAA,EAAA,CAAA,UAAA,YAAA,gBAAA,gBAAA,CAAA,CANA,EAAA,CAAA,EAAAQ,EAAA,MAAA,CACL,MAIEN,EAAAF,EAAA,OAAA,OAAA,CAAA,EAAA,GAFSW,EAAO,CAChB,cAAUX,EAAU,QAAA,SAAA,sCAAA,EAAA,QAAAA,EAAA"}
1
+ {"version":3,"file":"TemplatesCollectionView-xoRz-QfG.js","sources":["../../src/views/TemplatesCollectionView.vue"],"sourcesContent":["<template>\n\t<TemplatesView :goBackEnabled=\"true\">\n\t\t<template #header>\n\t\t\t<div v-if=\"!notFoundError\" :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.title\">\n\t\t\t\t\t<n8n-heading v-if=\"collection && collection.name\" tag=\"h1\" size=\"2xlarge\">\n\t\t\t\t\t\t{{ collection.name }}\n\t\t\t\t\t</n8n-heading>\n\t\t\t\t\t<n8n-text v-if=\"collection && collection.name\" color=\"text-base\" size=\"small\">\n\t\t\t\t\t\t{{ $locale.baseText('templates.collection') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-loading :loading=\"!collection || !collection.name\" :rows=\"2\" variant=\"h1\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.notFound\" v-else>\n\t\t\t\t<n8n-text color=\"text-base\">{{\n\t\t\t\t\t$locale.baseText('templates.collectionsNotFound')\n\t\t\t\t}}</n8n-text>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-if=\"!notFoundError\" #content>\n\t\t\t<div :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.mainContent\">\n\t\t\t\t\t<div :class=\"$style.markdown\" v-if=\"loading || (collection && collection.description)\">\n\t\t\t\t\t\t<n8n-markdown\n\t\t\t\t\t\t\t:content=\"collection && collection.description\"\n\t\t\t\t\t\t\t:images=\"collection && collection.image\"\n\t\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<TemplateList\n\t\t\t\t\t\t:infinite-scroll-enabled=\"false\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:use-workflow-button=\"true\"\n\t\t\t\t\t\t:workflows=\"loading ? [] : collectionWorkflows\"\n\t\t\t\t\t\t@useWorkflow=\"onUseWorkflow\"\n\t\t\t\t\t\t@openTemplate=\"onOpenTemplate\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.details\">\n\t\t\t\t\t<TemplateDetails\n\t\t\t\t\t\t:block-title=\"$locale.baseText('template.details.appsInTheCollection')\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:template=\"collection\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</TemplatesView>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\n\nimport TemplateDetails from '@/components/TemplateDetails.vue';\nimport TemplateList from '@/components/TemplateList.vue';\nimport TemplatesView from './TemplatesView.vue';\n\nimport { workflowHelpers } from '@/mixins/workflowHelpers';\nimport type {\n\tITemplatesCollection,\n\tITemplatesCollectionFull,\n\tITemplatesWorkflow,\n\tITemplatesWorkflowFull,\n} from '@/Interface';\n\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT, VIEWS } from '@/constants';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { usePostHog } from '@/stores/posthog.store';\nimport { openTemplateCredentialSetup } from '@/utils/templates/templateActions';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\n\nexport default defineComponent({\n\tname: 'TemplatesCollectionView',\n\tmixins: [workflowHelpers],\n\tcomponents: {\n\t\tTemplateDetails,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tsetup() {\n\t\tconst externalHooks = useExternalHooks();\n\n\t\treturn {\n\t\t\texternalHooks,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useTemplatesStore, usePostHog),\n\t\tcollection(): ITemplatesCollectionFull | null {\n\t\t\treturn this.templatesStore.getCollectionById(this.collectionId);\n\t\t},\n\t\tcollectionId(): string {\n\t\t\treturn Array.isArray(this.$route.params.id)\n\t\t\t\t? this.$route.params.id[0]\n\t\t\t\t: this.$route.params.id;\n\t\t},\n\t\tcollectionWorkflows(): Array<ITemplatesWorkflow | ITemplatesWorkflowFull | null> | null {\n\t\t\tif (!this.collection) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn this.collection.workflows.map(({ id }) => {\n\t\t\t\treturn this.templatesStore.getTemplateById(id.toString());\n\t\t\t});\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tnotFoundError: false,\n\t\t};\n\t},\n\tmethods: {\n\t\tscrollToTop() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst contentArea = document.getElementById('content');\n\t\t\t\tif (contentArea) {\n\t\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 50);\n\t\t},\n\t\tonOpenTemplate({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE, id);\n\t\t},\n\t\tasync onUseWorkflow({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tif (this.posthogStore.isFeatureEnabled(TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT)) {\n\t\t\t\tconst telemetryPayload = {\n\t\t\t\t\ttemplate_id: id,\n\t\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t\t\tsource: 'collection',\n\t\t\t\t};\n\t\t\t\tawait this.externalHooks.run('templatesCollectionView.onUseWorkflow', telemetryPayload);\n\t\t\t\tthis.$telemetry.track('User inserted workflow template', telemetryPayload, {\n\t\t\t\t\twithPostHog: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tawait openTemplateCredentialSetup({\n\t\t\t\tposthogStore: this.posthogStore,\n\t\t\t\trouter: this.$router,\n\t\t\t\ttemplateId: id,\n\t\t\t\tinNewBrowserTab: event.metaKey || event.ctrlKey,\n\t\t\t});\n\t\t},\n\t\tnavigateTo(e: MouseEvent, page: string, id: string) {\n\t\t\tif (e.metaKey || e.ctrlKey) {\n\t\t\t\tconst route = this.$router.resolve({ name: page, params: { id } });\n\t\t\t\twindow.open(route.href, '_blank');\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tvoid this.$router.push({ name: page, params: { id } });\n\t\t\t}\n\t\t},\n\t},\n\twatch: {\n\t\tcollection(collection: ITemplatesCollection) {\n\t\t\tif (collection) {\n\t\t\t\tsetPageTitle(`n8n - Template collection: ${collection.name}`);\n\t\t\t} else {\n\t\t\t\tsetPageTitle('n8n - Templates');\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tthis.scrollToTop();\n\n\t\tif (this.collection && this.collection.full) {\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.templatesStore.fetchCollectionById(this.collectionId);\n\t\t} catch (e) {\n\t\t\tthis.notFoundError = true;\n\t\t}\n\t\tthis.loading = false;\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.wrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tdisplay: block;\n\t}\n}\n\n.notFound {\n\tpadding-top: var(--spacing-xl);\n}\n\n.title {\n\twidth: 100%;\n}\n\n.button {\n\tdisplay: block;\n}\n\n.mainContent {\n\tpadding-right: var(--spacing-2xl);\n\tmargin-bottom: var(--spacing-l);\n\twidth: 100%;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tpadding-right: 0;\n\t}\n}\n\n.markdown {\n\tmargin-bottom: var(--spacing-l);\n}\n\n.details {\n\twidth: 180px;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","workflowHelpers","TemplateDetails","TemplateList","TemplatesView","useExternalHooks","mapStores","useTemplatesStore","usePostHog","id","contentArea","event","VIEWS","TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT","telemetryPayload","openTemplateCredentialSetup","page","route","collection","setPageTitle","_component_TemplatesView","_resolveComponent","_openBlock","_createBlock","_createSlots","_withCtx","_ctx","_createElementBlock","_normalizeClass","_component_n8n_heading","_createCommentVNode","_component_n8n_text","_createVNode","_component_n8n_loading","_createElementVNode","_component_n8n_markdown","_component_TemplateList","_component_TemplateDetails"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{g as _}from"./index--RuZ5wHr.js";import{G as y,ag as n,l as s,M as p,a9 as T,O as l,K as L,p as h,R as C,I as c,H as N,T as i,J as W,V as u,U as m,S as M,m as g,F as v,a7 as E}from"./vendor-2CfOYFi2.js";import{_ as $}from"./n8n-ZKR6bms9.js";import{N as R}from"./NodeList-8URsrxUQ.js";import{V}from"./vue-agile-TyH1pReu.js";const P=y({name:"Card",mixins:[_],props:{loading:{type:Boolean},title:{type:String}}}),A="_card_n896x_5",z="_title_n896x_21",F={card:A,title:z},q=["textContent"];function D(t,e,d,w,B,S){const a=n("n8n-loading"),r=n("n8n-card");return s(),p(r,L({class:t.$style.card},t.$attrs),T({default:l(()=>[i(a,{loading:t.loading,rows:3,variant:"p"},null,8,["loading"])]),_:2},[t.loading?void 0:{name:"header",fn:l(()=>[h("span",{textContent:C(t.title),class:c(t.$style.title)},null,10,q)]),key:"0"},t.loading?void 0:{name:"footer",fn:l(()=>[N(t.$slots,"footer")]),key:"1"}]),1040,["class"])}const H={$style:F},k=$(P,[["render",D],["__cssModules",H]]),O=y({name:"TemplatesInfoCard",mixins:[_],props:{loading:{type:Boolean},collection:{type:Object},showItemCount:{type:Boolean,default:!0},width:{type:String,required:!0}},components:{Card:k,NodeList:R}});function U(t,e,d,w,B,S){const a=n("n8n-text"),r=n("NodeList"),f=n("Card");return s(),p(f,{loading:t.loading,title:t.collection.name,style:W({width:t.width})},{footer:l(()=>[h("span",null,[u(i(a,{size:"small",color:"text-light"},{default:l(()=>[M(C(t.collection.workflows.length)+" "+C(t.$locale.baseText("templates.workflows")),1)]),_:1},512),[[m,t.showItemCount]])]),i(r,{nodes:t.collection.nodes,showMore:!1},null,8,["nodes"])]),_:1},8,["loading","title","style"])}const j=$(O,[["render",U]]),G=y({name:"TemplatesInfoCarousel",mixins:[_],props:{collections:{type:Array},loading:{type:Boolean},showItemCount:{type:Boolean,default:!0},showNavigation:{type:Boolean,default:!0},cardsWidth:{type:String,default:"240px"}},watch:{collections(){setTimeout(()=>{this.updateCarouselScroll()},0)},loading(){setTimeout(()=>{this.updateCarouselScroll()},0)}},components:{Card:k,TemplatesInfoCard:j,agile:V},data(){return{carouselScrollPosition:0,cardWidth:parseInt(this.cardsWidth,10),sliderWidth:0,scrollEnd:!1,listElement:null}},methods:{updateCarouselScroll(){if(this.listElement){this.carouselScrollPosition=Number(this.listElement.scrollLeft.toFixed());const t=this.listElement.clientWidth,e=this.listElement.scrollWidth,d=this.carouselScrollPosition;this.scrollEnd=e-t<=d+7}},onCardClick(t,e){this.$emit("openCollection",{event:t,id:e})},scrollLeft(){this.listElement&&this.listElement.scrollBy({left:-(this.cardWidth*2),top:0,behavior:"smooth"})},scrollRight(){this.listElement&&this.listElement.scrollBy({left:this.cardWidth*2,top:0,behavior:"smooth"})}},async mounted(){await this.$nextTick();const t=this.$refs.slider;t&&(this.listElement=t.$el.querySelector(".agile__list"),this.listElement&&this.listElement.addEventListener("scroll",this.updateCarouselScroll))},beforeUnmount(){const t=this.$refs.slider;t&&t.destroy(),window.removeEventListener("scroll",this.updateCarouselScroll)}}),J="_container_gpmxb_5",K="_button_gpmxb_9",Q="_leftButton_gpmxb_30 _button_gpmxb_9",X="_rightButton_gpmxb_39 _button_gpmxb_9",Y={container:J,button:K,leftButton:Q,rightButton:X};function Z(t,e,d,w,B,S){const a=n("Card"),r=n("TemplatesInfoCard"),f=n("agile"),b=n("font-awesome-icon");return u((s(),g("div",{class:c(t.$style.container)},[i(f,{ref:"slider",dots:!1,navButtons:!1,infinite:!1,"slides-to-show":4,onAfterChange:t.updateCarouselScroll},{default:l(()=>[(s(!0),g(v,null,E(t.loading?4:0,o=>(s(),p(a,{key:`loading-${o}`,loading:t.loading},null,8,["loading"]))),128)),(s(!0),g(v,null,E(t.loading?[]:t.collections,o=>(s(),p(r,{"data-test-id":"templates-info-card",key:o.id,collection:o,showItemCount:t.showItemCount,width:t.cardsWidth,onClick:I=>t.onCardClick(I,o.id)},null,8,["collection","showItemCount","width","onClick"]))),128))]),_:1},8,["onAfterChange"]),u(h("button",{class:c({[t.$style.leftButton]:!0}),onClick:e[0]||(e[0]=(...o)=>t.scrollLeft&&t.scrollLeft(...o))},[i(b,{icon:"chevron-left"})],2),[[m,t.showNavigation&&t.carouselScrollPosition>0]]),u(h("button",{class:c({[t.$style.rightButton]:!0}),onClick:e[1]||(e[1]=(...o)=>t.scrollRight&&t.scrollRight(...o))},[i(b,{icon:"chevron-right"})],2),[[m,t.showNavigation&&!t.scrollEnd]])],2)),[[m,t.loading||t.collections.length]])}const x={$style:Y},lt=$(G,[["render",Z],["__cssModules",x]]);export{lt as T};
2
- //# sourceMappingURL=TemplatesInfoCarousel-WUt6CUAt.js.map
1
+ import{g as _}from"./index-RXjMHIPR.js";import{G as y,ag as n,l as s,M as p,a9 as T,O as l,K as L,p as h,R as C,I as c,H as N,T as i,J as W,V as u,U as m,S as M,m as g,F as v,a7 as E}from"./vendor-2CfOYFi2.js";import{_ as $}from"./n8n-ZKR6bms9.js";import{N as R}from"./NodeList-U4qs88M0.js";import{V}from"./vue-agile-TyH1pReu.js";const P=y({name:"Card",mixins:[_],props:{loading:{type:Boolean},title:{type:String}}}),A="_card_n896x_5",z="_title_n896x_21",F={card:A,title:z},q=["textContent"];function D(t,e,d,w,B,S){const a=n("n8n-loading"),r=n("n8n-card");return s(),p(r,L({class:t.$style.card},t.$attrs),T({default:l(()=>[i(a,{loading:t.loading,rows:3,variant:"p"},null,8,["loading"])]),_:2},[t.loading?void 0:{name:"header",fn:l(()=>[h("span",{textContent:C(t.title),class:c(t.$style.title)},null,10,q)]),key:"0"},t.loading?void 0:{name:"footer",fn:l(()=>[N(t.$slots,"footer")]),key:"1"}]),1040,["class"])}const H={$style:F},k=$(P,[["render",D],["__cssModules",H]]),O=y({name:"TemplatesInfoCard",mixins:[_],props:{loading:{type:Boolean},collection:{type:Object},showItemCount:{type:Boolean,default:!0},width:{type:String,required:!0}},components:{Card:k,NodeList:R}});function U(t,e,d,w,B,S){const a=n("n8n-text"),r=n("NodeList"),f=n("Card");return s(),p(f,{loading:t.loading,title:t.collection.name,style:W({width:t.width})},{footer:l(()=>[h("span",null,[u(i(a,{size:"small",color:"text-light"},{default:l(()=>[M(C(t.collection.workflows.length)+" "+C(t.$locale.baseText("templates.workflows")),1)]),_:1},512),[[m,t.showItemCount]])]),i(r,{nodes:t.collection.nodes,showMore:!1},null,8,["nodes"])]),_:1},8,["loading","title","style"])}const j=$(O,[["render",U]]),G=y({name:"TemplatesInfoCarousel",mixins:[_],props:{collections:{type:Array},loading:{type:Boolean},showItemCount:{type:Boolean,default:!0},showNavigation:{type:Boolean,default:!0},cardsWidth:{type:String,default:"240px"}},watch:{collections(){setTimeout(()=>{this.updateCarouselScroll()},0)},loading(){setTimeout(()=>{this.updateCarouselScroll()},0)}},components:{Card:k,TemplatesInfoCard:j,agile:V},data(){return{carouselScrollPosition:0,cardWidth:parseInt(this.cardsWidth,10),sliderWidth:0,scrollEnd:!1,listElement:null}},methods:{updateCarouselScroll(){if(this.listElement){this.carouselScrollPosition=Number(this.listElement.scrollLeft.toFixed());const t=this.listElement.clientWidth,e=this.listElement.scrollWidth,d=this.carouselScrollPosition;this.scrollEnd=e-t<=d+7}},onCardClick(t,e){this.$emit("openCollection",{event:t,id:e})},scrollLeft(){this.listElement&&this.listElement.scrollBy({left:-(this.cardWidth*2),top:0,behavior:"smooth"})},scrollRight(){this.listElement&&this.listElement.scrollBy({left:this.cardWidth*2,top:0,behavior:"smooth"})}},async mounted(){await this.$nextTick();const t=this.$refs.slider;t&&(this.listElement=t.$el.querySelector(".agile__list"),this.listElement&&this.listElement.addEventListener("scroll",this.updateCarouselScroll))},beforeUnmount(){const t=this.$refs.slider;t&&t.destroy(),window.removeEventListener("scroll",this.updateCarouselScroll)}}),J="_container_gpmxb_5",K="_button_gpmxb_9",Q="_leftButton_gpmxb_30 _button_gpmxb_9",X="_rightButton_gpmxb_39 _button_gpmxb_9",Y={container:J,button:K,leftButton:Q,rightButton:X};function Z(t,e,d,w,B,S){const a=n("Card"),r=n("TemplatesInfoCard"),f=n("agile"),b=n("font-awesome-icon");return u((s(),g("div",{class:c(t.$style.container)},[i(f,{ref:"slider",dots:!1,navButtons:!1,infinite:!1,"slides-to-show":4,onAfterChange:t.updateCarouselScroll},{default:l(()=>[(s(!0),g(v,null,E(t.loading?4:0,o=>(s(),p(a,{key:`loading-${o}`,loading:t.loading},null,8,["loading"]))),128)),(s(!0),g(v,null,E(t.loading?[]:t.collections,o=>(s(),p(r,{"data-test-id":"templates-info-card",key:o.id,collection:o,showItemCount:t.showItemCount,width:t.cardsWidth,onClick:I=>t.onCardClick(I,o.id)},null,8,["collection","showItemCount","width","onClick"]))),128))]),_:1},8,["onAfterChange"]),u(h("button",{class:c({[t.$style.leftButton]:!0}),onClick:e[0]||(e[0]=(...o)=>t.scrollLeft&&t.scrollLeft(...o))},[i(b,{icon:"chevron-left"})],2),[[m,t.showNavigation&&t.carouselScrollPosition>0]]),u(h("button",{class:c({[t.$style.rightButton]:!0}),onClick:e[1]||(e[1]=(...o)=>t.scrollRight&&t.scrollRight(...o))},[i(b,{icon:"chevron-right"})],2),[[m,t.showNavigation&&!t.scrollEnd]])],2)),[[m,t.loading||t.collections.length]])}const x={$style:Y},lt=$(G,[["render",Z],["__cssModules",x]]);export{lt as T};
2
+ //# sourceMappingURL=TemplatesInfoCarousel-TKGxiVaR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplatesInfoCarousel-WUt6CUAt.js","sources":["../../src/components/CollectionWorkflowCard.vue","../../src/components/TemplatesInfoCard.vue","../../src/components/TemplatesInfoCarousel.vue"],"sourcesContent":["<template>\n\t<n8n-card :class=\"$style.card\" v-bind=\"$attrs\">\n\t\t<template #header v-if=\"!loading\">\n\t\t\t<span v-text=\"title\" :class=\"$style.title\" />\n\t\t</template>\n\t\t<n8n-loading :loading=\"loading\" :rows=\"3\" variant=\"p\" />\n\t\t<template #footer v-if=\"!loading\">\n\t\t\t<slot name=\"footer\" />\n\t\t</template>\n\t</n8n-card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\n\nexport default defineComponent({\n\tname: 'Card',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.card {\n\tmin-width: 180px;\n\theight: 140px;\n\tmargin-right: var(--spacing-2xs);\n\tcursor: pointer;\n\n\t&:last-child {\n\t\tmargin-right: var(--spacing-5xs);\n\t}\n\n\t&:hover {\n\t\tbox-shadow: 0 2px 4px rgba(68, 28, 23, 0.07);\n\t}\n\n\t> div {\n\t\theight: 100%;\n\t}\n}\n\n.title {\n\tdisplay: -webkit-box;\n\t-webkit-line-clamp: 4;\n\t-webkit-box-orient: vertical;\n\tfont-size: var(--font-size-s);\n\tline-height: var(--font-line-height-regular);\n\tfont-weight: var(--font-weight-bold);\n\toverflow: hidden;\n\twhite-space: normal;\n}\n</style>\n","<template>\n\t<Card :loading=\"loading\" :title=\"collection.name\" :style=\"{ width }\">\n\t\t<template #footer>\n\t\t\t<span>\n\t\t\t\t<n8n-text v-show=\"showItemCount\" size=\"small\" color=\"text-light\">\n\t\t\t\t\t{{ collection.workflows.length }}\n\t\t\t\t\t{{ $locale.baseText('templates.workflows') }}\n\t\t\t\t</n8n-text>\n\t\t\t</span>\n\t\t\t<NodeList :nodes=\"collection.nodes\" :showMore=\"false\" />\n\t\t</template>\n\t</Card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport Card from '@/components/CollectionWorkflowCard.vue';\nimport NodeList from '@/components/NodeList.vue';\n\nexport default defineComponent({\n\tname: 'TemplatesInfoCard',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tcollection: {\n\t\t\ttype: Object,\n\t\t},\n\t\tshowItemCount: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\twidth: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomponents: {\n\t\tCard,\n\t\tNodeList,\n\t},\n});\n</script>\n\n<style lang=\"scss\" module></style>\n","<template>\n\t<div :class=\"$style.container\" v-show=\"loading || collections.length\">\n\t\t<agile\n\t\t\tref=\"slider\"\n\t\t\t:dots=\"false\"\n\t\t\t:navButtons=\"false\"\n\t\t\t:infinite=\"false\"\n\t\t\t:slides-to-show=\"4\"\n\t\t\t@after-change=\"updateCarouselScroll\"\n\t\t>\n\t\t\t<Card v-for=\"n in loading ? 4 : 0\" :key=\"`loading-${n}`\" :loading=\"loading\" />\n\t\t\t<TemplatesInfoCard\n\t\t\t\tv-for=\"collection in loading ? [] : collections\"\n\t\t\t\tdata-test-id=\"templates-info-card\"\n\t\t\t\t:key=\"collection.id\"\n\t\t\t\t:collection=\"collection\"\n\t\t\t\t:showItemCount=\"showItemCount\"\n\t\t\t\t:width=\"cardsWidth\"\n\t\t\t\t@click=\"(e) => onCardClick(e, collection.id)\"\n\t\t\t/>\n\t\t</agile>\n\t\t<button\n\t\t\tv-show=\"showNavigation && carouselScrollPosition > 0\"\n\t\t\t:class=\"{ [$style.leftButton]: true }\"\n\t\t\t@click=\"scrollLeft\"\n\t\t>\n\t\t\t<font-awesome-icon icon=\"chevron-left\" />\n\t\t</button>\n\t\t<button\n\t\t\tv-show=\"showNavigation && !scrollEnd\"\n\t\t\t:class=\"{ [$style.rightButton]: true }\"\n\t\t\t@click=\"scrollRight\"\n\t\t>\n\t\t\t<font-awesome-icon icon=\"chevron-right\" />\n\t\t</button>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport type { ITemplatesCollection } from '@/Interface';\nimport Card from '@/components/CollectionWorkflowCard.vue';\nimport TemplatesInfoCard from '@/components/TemplatesInfoCard.vue';\nimport { VueAgile } from 'vue-agile';\n\nimport { genericHelpers } from '@/mixins/genericHelpers';\n\ntype SliderRef = InstanceType<typeof VueAgile>;\n\nexport default defineComponent({\n\tname: 'TemplatesInfoCarousel',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tcollections: {\n\t\t\ttype: Array as PropType<ITemplatesCollection[]>,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tshowItemCount: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tshowNavigation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tcardsWidth: {\n\t\t\ttype: String,\n\t\t\tdefault: '240px',\n\t\t},\n\t},\n\twatch: {\n\t\tcollections() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateCarouselScroll();\n\t\t\t}, 0);\n\t\t},\n\t\tloading() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateCarouselScroll();\n\t\t\t}, 0);\n\t\t},\n\t},\n\tcomponents: {\n\t\tCard,\n\t\tTemplatesInfoCard,\n\t\tagile: VueAgile,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcarouselScrollPosition: 0,\n\t\t\tcardWidth: parseInt(this.cardsWidth, 10),\n\t\t\tsliderWidth: 0,\n\t\t\tscrollEnd: false,\n\t\t\tlistElement: null as null | Element,\n\t\t};\n\t},\n\tmethods: {\n\t\tupdateCarouselScroll() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.carouselScrollPosition = Number(this.listElement.scrollLeft.toFixed());\n\n\t\t\t\tconst width = this.listElement.clientWidth;\n\t\t\t\tconst scrollWidth = this.listElement.scrollWidth;\n\t\t\t\tconst scrollLeft = this.carouselScrollPosition;\n\t\t\t\tthis.scrollEnd = scrollWidth - width <= scrollLeft + 7;\n\t\t\t}\n\t\t},\n\t\tonCardClick(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('openCollection', { event, id });\n\t\t},\n\t\tscrollLeft() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.listElement.scrollBy({ left: -(this.cardWidth * 2), top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t},\n\t\tscrollRight() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.listElement.scrollBy({ left: this.cardWidth * 2, top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tawait this.$nextTick();\n\t\tconst sliderRef = this.$refs.slider as SliderRef | undefined;\n\t\tif (!sliderRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.listElement = sliderRef.$el.querySelector('.agile__list');\n\t\tif (this.listElement) {\n\t\t\tthis.listElement.addEventListener('scroll', this.updateCarouselScroll);\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tconst sliderRef = this.$refs.slider as SliderRef | undefined;\n\t\tif (sliderRef) {\n\t\t\tsliderRef.destroy();\n\t\t}\n\n\t\twindow.removeEventListener('scroll', this.updateCarouselScroll);\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\tposition: relative;\n}\n\n.button {\n\twidth: 28px;\n\theight: 37px;\n\tposition: absolute;\n\ttop: 35%;\n\tborder-radius: var(--border-radius-large);\n\tborder: var(--border-base);\n\tbackground-color: #fbfcfe;\n\tcursor: pointer;\n\n\t&:after {\n\t\tcontent: '';\n\t\twidth: 40px;\n\t\theight: 140px;\n\t\ttop: -55px;\n\t\tposition: absolute;\n\t}\n\tsvg {\n\t\tcolor: var(--color-foreground-xdark);\n\t}\n}\n\n.leftButton {\n\tcomposes: button;\n\tleft: -30px;\n\n\t&:after {\n\t\tleft: 27px;\n\t\tbackground: linear-gradient(\n\t\t\t270deg,\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t50%\n\t\t\t),\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t100%\n\t\t\t)\n\t\t);\n\t}\n}\n\n.rightButton {\n\tcomposes: button;\n\tright: -30px;\n\n\t&:after {\n\t\tright: 27px;\n\t\tbackground: linear-gradient(\n\t\t\t90deg,\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t50%\n\t\t\t),\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t100%\n\t\t\t)\n\t\t);\n\t}\n}\n</style>\n\n<style lang=\"scss\">\n.agile {\n\t&__list {\n\t\twidth: 100%;\n\t\tpadding-bottom: var(--spacing-2xs);\n\t\toverflow-x: auto;\n\t\ttransition: all 1s ease-in-out;\n\t}\n}\n</style>\n"],"names":["_sfc_main$2","defineComponent","genericHelpers","_component_n8n_card","_resolveComponent","_openBlock","_createBlock","_mergeProps","_ctx","_createSlots","_withCtx","_createVNode","_component_n8n_loading","_createElementVNode","_toDisplayString","_sfc_main$1","Card","NodeList","_component_Card","_normalizeStyle","_withDirectives","_component_n8n_text","_component_NodeList","_sfc_main","TemplatesInfoCard","VueAgile","width","scrollWidth","scrollLeft","event","id","sliderRef","_normalizeClass","_component_agile","_createElementBlock","_Fragment","_renderList","n","collection","_component_TemplatesInfoCard","_cache","args","_component_font_awesome_icon"],"mappings":"0UAgBA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,OACN,OAAQ,CAACC,CAAc,EACvB,MAAO,CACN,QAAS,CACR,KAAM,OACP,EACA,MAAO,CACN,KAAM,MACP,CACD,CACD,CAAC,8HA1BAC,EAAAC,EAQW,UARX,SAAuCC,EAAM,EAAAC,EAAAH,EAAAI,EAAA,CAIY,MAAAC,EAAA,OAAA,IAAA,EAAAA,EAAxD,MAAwD,EAAAC,EAAA,CAAA,QAA1CC,EAAS,IAAA,CAAiBC,EAAAC,EAAA,CAAE,QAAQJ,EAAG,QAAA,KAAA,qCAH5B,EAAA,CAAA,EAAA,WAIA,QAHxB,KAAA,SAAM,GAAAE,EAAA,IAAA,CAAAG,EAAqB,OAAE,CAAA,YAAAC,EAAAN,EAAA,KAAA,+CAGL,oBACxB,KAAA,SAAA,GAAAE,EAAA,IAAA,+GCaHK,EAAed,EAAgB,CAC9B,KAAM,oBACN,OAAQ,CAACC,CAAc,EACvB,MAAO,CACN,QAAS,CACR,KAAM,OACP,EACA,WAAY,CACX,KAAM,MACP,EACA,cAAe,CACd,KAAM,QACN,QAAS,EACV,EACA,MAAO,CACN,KAAM,OACN,SAAU,EACX,CACD,EACA,WAAY,CACX,KAAAc,EACA,SAAAC,CACD,CACD,CAAC,kEA1CAb,EAUO,MAAA,EAVwB,OAAAC,EAAA,EAAiBC,EAAAY,EAAA,CAAG,QAAKV,EAAA,QAAA,MAAAA,EAAA,WAAA,KAC5C,MAAMW,EAMT,CAAA,MAAAX,EAAA,KAAA,CAAA,CAAA,EAAA,CAJN,OAAAE,EAAA,IAAA,CAA6CG,EAAA,OAAA,KAAA,CAAAO,EAAOT,EAAYU,EAAA,CAAA,KAAA,mKAKjE,CAAA,CAAA,CAAA,IAA+CC,EAAK,CAAA,MAAAd,EAAA,WAAA,uGCyCvDe,EAAetB,EAAgB,CAC9B,KAAM,wBACN,OAAQ,CAACC,CAAc,EACvB,MAAO,CACN,YAAa,CACZ,KAAM,KACP,EACA,QAAS,CACR,KAAM,OACP,EACA,cAAe,CACd,KAAM,QACN,QAAS,EACV,EACA,eAAgB,CACf,KAAM,QACN,QAAS,EACV,EACA,WAAY,CACX,KAAM,OACN,QAAS,OACV,CACD,EACA,MAAO,CACN,aAAc,CACb,WAAW,IAAM,CAChB,KAAK,qBAAqB,GACxB,CAAC,CACL,EACA,SAAU,CACT,WAAW,IAAM,CAChB,KAAK,qBAAqB,GACxB,CAAC,CACL,CACD,EACA,WAAY,CACX,KAAAc,EACA,kBAAAQ,EACA,MAAOC,CACR,EACA,MAAO,CACC,MAAA,CACN,uBAAwB,EACxB,UAAW,SAAS,KAAK,WAAY,EAAE,EACvC,YAAa,EACb,UAAW,GACX,YAAa,IAAA,CAEf,EACA,QAAS,CACR,sBAAuB,CACtB,GAAI,KAAK,YAAa,CACrB,KAAK,uBAAyB,OAAO,KAAK,YAAY,WAAW,SAAS,EAEpE,MAAAC,EAAQ,KAAK,YAAY,YACzBC,EAAc,KAAK,YAAY,YAC/BC,EAAa,KAAK,uBACnB,KAAA,UAAYD,EAAcD,GAASE,EAAa,CACtD,CACD,EACA,YAAYC,EAAmBC,EAAY,CAC1C,KAAK,MAAM,iBAAkB,CAAE,MAAAD,EAAO,GAAAC,CAAI,CAAA,CAC3C,EACA,YAAa,CACR,KAAK,aACR,KAAK,YAAY,SAAS,CAAE,KAAM,EAAE,KAAK,UAAY,GAAI,IAAK,EAAG,SAAU,QAAU,CAAA,CAEvF,EACA,aAAc,CACT,KAAK,aACH,KAAA,YAAY,SAAS,CAAE,KAAM,KAAK,UAAY,EAAG,IAAK,EAAG,SAAU,QAAU,CAAA,CAEpF,CACD,EACA,MAAM,SAAU,CACf,MAAM,KAAK,YACL,MAAAC,EAAY,KAAK,MAAM,OACxBA,IAIL,KAAK,YAAcA,EAAU,IAAI,cAAc,cAAc,EACzD,KAAK,aACR,KAAK,YAAY,iBAAiB,SAAU,KAAK,oBAAoB,EAEvE,EACA,eAAgB,CACT,MAAAA,EAAY,KAAK,MAAM,OACzBA,GACHA,EAAU,QAAQ,EAGZ,OAAA,oBAAoB,SAAU,KAAK,oBAAoB,CAC/D,CACD,CAAC,wQA/IA,mBAkCM,yBAjCL,MAkBQC,EAAAxB,EAAA,OAAA,SAAA,CAAA,EAAA,CAhBKG,EAAAsB,EAAA,CACX,IAAA,SACA,KAAA,GACA,WAAA,GACA,SAAA,GAAA,iBAAA,EAEiC,cAAAzB,EAAA,oBAAA,EAAA,mBAAK,EAAc,EAAA0B,EAAAC,EAAA,KAAAC,EAAA5B,EAAA,QAAA,EAAA,EAAA6B,IAAKhC,EAAA,EAAgBC,EAAAY,EAAA,CAAA,IAAA,WAAAmB,CAAA,oBAC1E,EAAA,KAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,GAAA,IAEChC,EAAA,EAAA,EAAY6B,EAACC,EAAqB,KAAAC,EAAA5B,EAAA,QAAA,CAAA,EAAAA,EAAA,YAAA8B,IAC5BjC,EAAA,EAAaC,EAAAiC,EAAA,CAClB,eAAY,sBACZ,IAAeD,EAAA,GACf,WAAAA,EACA,cAAS9B,EAAK,cAAA,MAAAA,EAAA,qHAKf,EAAK,CAAA,eAAA,CAAA,EACAY,EAAAP,EAAA,SAAA,CAAA,MAAAmB,EAAA,CAAA,CAAAxB,EAAA,OAAA,UAAA,EAAA,GAAA,EAEN,QAAyCgC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,IAAAC,IAAlBjC,EAAC,YAAcA,EAAA,WAAA,GAAAiC,CAAA,EAAA,EAAA,CAJ9B9B,EAAA+B,EAAkB,CAAsB,KAAA,cAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAMjD,gBAMSlC,EAAA,uBAAA,CAAA,CAAA,CAAA,EAHFY,EAAAP,EAAA,SAAA,CAAA,MAAAmB,EAAA,CAAA,CAAAxB,EAAA,OAAA,WAAA,EAAA,GAAA,EAEN,QAA0CgC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,IAAAC,IAAnBjC,EAAC,aAAeA,EAAA,YAAA,GAAAiC,CAAA,EAAA,EAAA,CAJ/B9B,EAAA+B,EAAmB,CAAS,KAAA,eAAA,CAAA,CAAA,EAAA,CAAA,EAAA"}
1
+ {"version":3,"file":"TemplatesInfoCarousel-TKGxiVaR.js","sources":["../../src/components/CollectionWorkflowCard.vue","../../src/components/TemplatesInfoCard.vue","../../src/components/TemplatesInfoCarousel.vue"],"sourcesContent":["<template>\n\t<n8n-card :class=\"$style.card\" v-bind=\"$attrs\">\n\t\t<template #header v-if=\"!loading\">\n\t\t\t<span v-text=\"title\" :class=\"$style.title\" />\n\t\t</template>\n\t\t<n8n-loading :loading=\"loading\" :rows=\"3\" variant=\"p\" />\n\t\t<template #footer v-if=\"!loading\">\n\t\t\t<slot name=\"footer\" />\n\t\t</template>\n\t</n8n-card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\n\nexport default defineComponent({\n\tname: 'Card',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.card {\n\tmin-width: 180px;\n\theight: 140px;\n\tmargin-right: var(--spacing-2xs);\n\tcursor: pointer;\n\n\t&:last-child {\n\t\tmargin-right: var(--spacing-5xs);\n\t}\n\n\t&:hover {\n\t\tbox-shadow: 0 2px 4px rgba(68, 28, 23, 0.07);\n\t}\n\n\t> div {\n\t\theight: 100%;\n\t}\n}\n\n.title {\n\tdisplay: -webkit-box;\n\t-webkit-line-clamp: 4;\n\t-webkit-box-orient: vertical;\n\tfont-size: var(--font-size-s);\n\tline-height: var(--font-line-height-regular);\n\tfont-weight: var(--font-weight-bold);\n\toverflow: hidden;\n\twhite-space: normal;\n}\n</style>\n","<template>\n\t<Card :loading=\"loading\" :title=\"collection.name\" :style=\"{ width }\">\n\t\t<template #footer>\n\t\t\t<span>\n\t\t\t\t<n8n-text v-show=\"showItemCount\" size=\"small\" color=\"text-light\">\n\t\t\t\t\t{{ collection.workflows.length }}\n\t\t\t\t\t{{ $locale.baseText('templates.workflows') }}\n\t\t\t\t</n8n-text>\n\t\t\t</span>\n\t\t\t<NodeList :nodes=\"collection.nodes\" :showMore=\"false\" />\n\t\t</template>\n\t</Card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport Card from '@/components/CollectionWorkflowCard.vue';\nimport NodeList from '@/components/NodeList.vue';\n\nexport default defineComponent({\n\tname: 'TemplatesInfoCard',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tcollection: {\n\t\t\ttype: Object,\n\t\t},\n\t\tshowItemCount: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\twidth: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomponents: {\n\t\tCard,\n\t\tNodeList,\n\t},\n});\n</script>\n\n<style lang=\"scss\" module></style>\n","<template>\n\t<div :class=\"$style.container\" v-show=\"loading || collections.length\">\n\t\t<agile\n\t\t\tref=\"slider\"\n\t\t\t:dots=\"false\"\n\t\t\t:navButtons=\"false\"\n\t\t\t:infinite=\"false\"\n\t\t\t:slides-to-show=\"4\"\n\t\t\t@after-change=\"updateCarouselScroll\"\n\t\t>\n\t\t\t<Card v-for=\"n in loading ? 4 : 0\" :key=\"`loading-${n}`\" :loading=\"loading\" />\n\t\t\t<TemplatesInfoCard\n\t\t\t\tv-for=\"collection in loading ? [] : collections\"\n\t\t\t\tdata-test-id=\"templates-info-card\"\n\t\t\t\t:key=\"collection.id\"\n\t\t\t\t:collection=\"collection\"\n\t\t\t\t:showItemCount=\"showItemCount\"\n\t\t\t\t:width=\"cardsWidth\"\n\t\t\t\t@click=\"(e) => onCardClick(e, collection.id)\"\n\t\t\t/>\n\t\t</agile>\n\t\t<button\n\t\t\tv-show=\"showNavigation && carouselScrollPosition > 0\"\n\t\t\t:class=\"{ [$style.leftButton]: true }\"\n\t\t\t@click=\"scrollLeft\"\n\t\t>\n\t\t\t<font-awesome-icon icon=\"chevron-left\" />\n\t\t</button>\n\t\t<button\n\t\t\tv-show=\"showNavigation && !scrollEnd\"\n\t\t\t:class=\"{ [$style.rightButton]: true }\"\n\t\t\t@click=\"scrollRight\"\n\t\t>\n\t\t\t<font-awesome-icon icon=\"chevron-right\" />\n\t\t</button>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport type { ITemplatesCollection } from '@/Interface';\nimport Card from '@/components/CollectionWorkflowCard.vue';\nimport TemplatesInfoCard from '@/components/TemplatesInfoCard.vue';\nimport { VueAgile } from 'vue-agile';\n\nimport { genericHelpers } from '@/mixins/genericHelpers';\n\ntype SliderRef = InstanceType<typeof VueAgile>;\n\nexport default defineComponent({\n\tname: 'TemplatesInfoCarousel',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tcollections: {\n\t\t\ttype: Array as PropType<ITemplatesCollection[]>,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tshowItemCount: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tshowNavigation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tcardsWidth: {\n\t\t\ttype: String,\n\t\t\tdefault: '240px',\n\t\t},\n\t},\n\twatch: {\n\t\tcollections() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateCarouselScroll();\n\t\t\t}, 0);\n\t\t},\n\t\tloading() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateCarouselScroll();\n\t\t\t}, 0);\n\t\t},\n\t},\n\tcomponents: {\n\t\tCard,\n\t\tTemplatesInfoCard,\n\t\tagile: VueAgile,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcarouselScrollPosition: 0,\n\t\t\tcardWidth: parseInt(this.cardsWidth, 10),\n\t\t\tsliderWidth: 0,\n\t\t\tscrollEnd: false,\n\t\t\tlistElement: null as null | Element,\n\t\t};\n\t},\n\tmethods: {\n\t\tupdateCarouselScroll() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.carouselScrollPosition = Number(this.listElement.scrollLeft.toFixed());\n\n\t\t\t\tconst width = this.listElement.clientWidth;\n\t\t\t\tconst scrollWidth = this.listElement.scrollWidth;\n\t\t\t\tconst scrollLeft = this.carouselScrollPosition;\n\t\t\t\tthis.scrollEnd = scrollWidth - width <= scrollLeft + 7;\n\t\t\t}\n\t\t},\n\t\tonCardClick(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('openCollection', { event, id });\n\t\t},\n\t\tscrollLeft() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.listElement.scrollBy({ left: -(this.cardWidth * 2), top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t},\n\t\tscrollRight() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.listElement.scrollBy({ left: this.cardWidth * 2, top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tawait this.$nextTick();\n\t\tconst sliderRef = this.$refs.slider as SliderRef | undefined;\n\t\tif (!sliderRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.listElement = sliderRef.$el.querySelector('.agile__list');\n\t\tif (this.listElement) {\n\t\t\tthis.listElement.addEventListener('scroll', this.updateCarouselScroll);\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tconst sliderRef = this.$refs.slider as SliderRef | undefined;\n\t\tif (sliderRef) {\n\t\t\tsliderRef.destroy();\n\t\t}\n\n\t\twindow.removeEventListener('scroll', this.updateCarouselScroll);\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\tposition: relative;\n}\n\n.button {\n\twidth: 28px;\n\theight: 37px;\n\tposition: absolute;\n\ttop: 35%;\n\tborder-radius: var(--border-radius-large);\n\tborder: var(--border-base);\n\tbackground-color: #fbfcfe;\n\tcursor: pointer;\n\n\t&:after {\n\t\tcontent: '';\n\t\twidth: 40px;\n\t\theight: 140px;\n\t\ttop: -55px;\n\t\tposition: absolute;\n\t}\n\tsvg {\n\t\tcolor: var(--color-foreground-xdark);\n\t}\n}\n\n.leftButton {\n\tcomposes: button;\n\tleft: -30px;\n\n\t&:after {\n\t\tleft: 27px;\n\t\tbackground: linear-gradient(\n\t\t\t270deg,\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t50%\n\t\t\t),\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t100%\n\t\t\t)\n\t\t);\n\t}\n}\n\n.rightButton {\n\tcomposes: button;\n\tright: -30px;\n\n\t&:after {\n\t\tright: 27px;\n\t\tbackground: linear-gradient(\n\t\t\t90deg,\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t50%\n\t\t\t),\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t100%\n\t\t\t)\n\t\t);\n\t}\n}\n</style>\n\n<style lang=\"scss\">\n.agile {\n\t&__list {\n\t\twidth: 100%;\n\t\tpadding-bottom: var(--spacing-2xs);\n\t\toverflow-x: auto;\n\t\ttransition: all 1s ease-in-out;\n\t}\n}\n</style>\n"],"names":["_sfc_main$2","defineComponent","genericHelpers","_component_n8n_card","_resolveComponent","_openBlock","_createBlock","_mergeProps","_ctx","_createSlots","_withCtx","_createVNode","_component_n8n_loading","_createElementVNode","_toDisplayString","_sfc_main$1","Card","NodeList","_component_Card","_normalizeStyle","_withDirectives","_component_n8n_text","_component_NodeList","_sfc_main","TemplatesInfoCard","VueAgile","width","scrollWidth","scrollLeft","event","id","sliderRef","_normalizeClass","_component_agile","_createElementBlock","_Fragment","_renderList","n","collection","_component_TemplatesInfoCard","_cache","args","_component_font_awesome_icon"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{m as V}from"./pinia-jX93eZRS.js";import{T as O}from"./TemplatesInfoCarousel-WUt6CUAt.js";import{g as T,d as P,a7 as q}from"./index--RuZ5wHr.js";import{G as S,ag as a,l as n,m as d,p as r,I as s,R as u,T as l,Q as m,F as E,a7 as M,O as p,S as y,M as I,V as U,U as A}from"./vendor-2CfOYFi2.js";import{_ as $,o as B,fJ as H,ax as z,p as F,u as R,t as N,V as k,fB as D}from"./n8n-ZKR6bms9.js";import{T as Q}from"./TemplateList-uT0I7BC-.js";import{T as j}from"./TemplatesView-sX4NrNXT.js";import"./NodeList-8URsrxUQ.js";import"./vue-agile-TyH1pReu.js";import"./lodash-es-s_m9YyW7.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";const K=S({name:"TemplateFilters",mixins:[T],props:{sortOnPopulate:{type:Boolean,default:!1},categories:{type:Array},expandLimit:{type:Number,default:12},loading:{type:Boolean},selected:{type:Array}},watch:{categories:{handler(e){if(!this.sortOnPopulate)this.sortedCategories=e;else{const t=this.selected||[],o=e.filter(({id:h})=>t.includes(h)),c=e.filter(({id:h})=>!t.includes(h));this.sortedCategories=o.concat(c)}},immediate:!0}},data(){return{collapsed:!0,sortedCategories:[]}},computed:{allSelected(){return this.selected.length===0}},methods:{collapseAction(){this.collapsed=!1},handleCheckboxChanged(e,t){this.$emit(e?"select":"clear",t.id)},isSelected(e){return this.selected.includes(e)},resetCategories(){this.$emit("clearAll")}}}),G="_title_7aevl_5",J="_categories_7aevl_10",X="_item_7aevl_15",Y="_button_7aevl_22",Z={title:G,categories:J,item:X,button:Y},x=["textContent"];function ee(e,t,o,c,h,_){const g=a("n8n-loading"),f=a("el-checkbox"),w=a("n8n-text");return n(),d("div",{class:s([e.$style.filters,"template-filters"])},[r("div",{class:s(e.$style.title),textContent:u(e.$locale.baseText("templates.categoriesHeading"))},null,10,x),e.loading?(n(),d("div",{key:0,class:s(e.$style.list)},[l(g,{loading:e.loading,rows:e.expandLimit},null,8,["loading","rows"])],2)):m("",!0),e.loading?m("",!0):(n(),d("ul",{key:1,class:s(e.$style.categories)},[r("li",{class:s(e.$style.item)},[l(f,{label:e.$locale.baseText("templates.allCategories"),modelValue:e.allSelected,"onUpdate:modelValue":t[0]||(t[0]=i=>e.resetCategories(i))},null,8,["label","modelValue"])],2),(n(!0),d(E,null,M(e.collapsed?e.sortedCategories.slice(0,e.expandLimit):e.sortedCategories,i=>(n(),d("li",{key:i.id,class:s(e.$style.item)},[l(f,{label:i.name,modelValue:e.isSelected(i.id),"onUpdate:modelValue":C=>e.handleCheckboxChanged(C,i)},null,8,["label","modelValue","onUpdate:modelValue"])],2))),128))],2)),e.sortedCategories.length>e.expandLimit&&e.collapsed&&!e.loading?(n(),d("div",{key:2,class:s(e.$style.button),onClick:t[1]||(t[1]=(...i)=>e.collapseAction&&e.collapseAction(...i))},[l(w,{size:"small",color:"primary"},{default:p(()=>[y(" + "+u(`${e.sortedCategories.length-e.expandLimit} more`),1)]),_:1})],2)):m("",!0)],2)}const te={$style:Z},oe=$(K,[["render",ee],["__cssModules",te]]),se=S({name:"TemplatesSearchView",mixins:[T,P],components:{TemplatesInfoCarousel:O,TemplateFilters:oe,TemplateList:Q,TemplatesView:j},setup(){return{...B()}},data(){return{areCategoriesPrepopulated:!1,categories:[],loading:!0,loadingCategories:!0,loadingCollections:!0,loadingWorkflows:!0,search:"",searchEventToTrack:null,errorLoadingWorkflows:!1,creatorHubUrl:H}},computed:{...V(N,q,R,F,z),totalWorkflows(){return this.templatesStore.getSearchedWorkflowsTotal(this.query)},workflows(){return this.templatesStore.getSearchedWorkflows(this.query)||[]},collections(){return this.templatesStore.getSearchedCollections(this.query)||[]},endOfSearchMessage(){return this.loadingWorkflows?null:!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0?!this.settingsStore.isTemplatesEndpointReachable&&this.errorLoadingWorkflows?this.$locale.baseText("templates.connectionWarning"):this.$locale.baseText("templates.noSearchResults"):null},query(){return{categories:this.categories,search:this.search}},nothingFound(){return!this.loadingWorkflows&&!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0}},methods:{onOpenCollection({event:e,id:t}){this.navigateTo(e,k.COLLECTION,t)},onOpenTemplate({event:e,id:t}){this.navigateTo(e,k.TEMPLATE,t)},navigateTo(e,t,o){if(e.metaKey||e.ctrlKey){const c=this.$router.resolve({name:t,params:{id:o}});window.open(c.href,"_blank");return}else this.$router.push({name:t,params:{id:o}})},updateSearch(){this.updateQueryParam(this.search,this.categories.join(",")),this.loadWorkflowsAndCollections(!1)},updateSearchTracking(e,t){e&&(this.searchEventToTrack&&this.searchEventToTrack.search_string.length>e.length||(this.searchEventToTrack={search_string:e,workflow_results_count:this.workflows.length,collection_results_count:this.collections.length,categories_applied:t.map(o=>this.templatesStore.getCategoryById(o.toString())),wf_template_repo_session_id:this.templatesStore.currentSessionId}))},trackSearch(){this.searchEventToTrack&&(this.$telemetry.track("User searched workflow templates",this.searchEventToTrack),this.searchEventToTrack=null)},onSearchInput(e){this.loadingWorkflows=!0,this.loadingCollections=!0,this.search=e,this.callDebounced("updateSearch",{debounceTime:500,trailing:!0}),e.length===0&&this.trackSearch()},onCategorySelected(e){this.categories=this.categories.concat(e),this.updateSearch(),this.trackCategories()},onCategoryUnselected(e){this.categories=this.categories.filter(t=>t!==e),this.updateSearch(),this.trackCategories()},onCategoriesCleared(){this.categories=[],this.updateSearch()},trackCategories(){this.categories.length&&this.$telemetry.track("User changed template filters",{search_string:this.search,categories_applied:this.categories.map(e=>this.templatesStore.getCollectionById(e.toString())),wf_template_repo_session_id:this.templatesStore.currentSessionId})},updateQueryParam(e,t){const o=Object.assign({},this.$route.query);t.length?o.categories=t:delete o.categories,e.length?o.search=e:delete o.search,this.$router.replace({query:o})},async onLoadMore(){if(!(this.workflows.length>=this.totalWorkflows))try{this.loadingWorkflows=!0,await this.templatesStore.getMoreWorkflows({categories:this.categories,search:this.search})}catch{this.showMessage({title:"Error",message:"Could not load more workflows",type:"error"})}finally{this.loadingWorkflows=!1}},async loadCategories(){try{await this.templatesStore.getCategories()}catch{}this.loadingCategories=!1},async loadCollections(){try{this.loadingCollections=!0,await this.templatesStore.getCollections({categories:this.categories,search:this.search})}catch{}this.loadingCollections=!1},async loadWorkflows(){try{this.loadingWorkflows=!0,await this.templatesStore.getWorkflows({search:this.search,categories:this.categories}),this.errorLoadingWorkflows=!1}catch{this.errorLoadingWorkflows=!0}this.loadingWorkflows=!1},async loadWorkflowsAndCollections(e){const t=this.search,o=[...this.categories];await Promise.all([this.loadWorkflows(),this.loadCollections()]),e||this.updateSearchTracking(t,o)},scrollTo(e,t="smooth"){setTimeout(()=>{const o=document.getElementById("content");o&&o.scrollTo({top:e,behavior:t})},0)}},watch:{workflows(e){e.length===0&&this.scrollTo(0)}},beforeRouteLeave(e,t,o){var h;const c=document.getElementById("content");c&&(h=this.$route.meta)!=null&&h.setScrollPosition&&typeof this.$route.meta.setScrollPosition=="function"&&this.$route.meta.setScrollPosition(c.scrollTop),this.trackSearch(),o()},async mounted(){D("n8n - Templates"),this.loadCategories(),this.loadWorkflowsAndCollections(!0),this.usersStore.showPersonalizationSurvey(),setTimeout(()=>{this.$route.meta&&this.$route.meta.scrollOffset>0&&this.scrollTo(this.$route.meta.scrollOffset,"auto")},100)},async created(){this.$route.query.search&&typeof this.$route.query.search=="string"&&(this.search=this.$route.query.search),typeof this.$route.query.categories=="string"&&this.$route.query.categories.length&&(this.categories=this.$route.query.categories.split(",").map(e=>parseInt(e,10)),this.areCategoriesPrepopulated=!0)}}),le="_wrapper_p3frq_5",ae="_contentWrapper_p3frq_10",re="_filters_p3frq_20",ie="_search_p3frq_26",ne="_header_p3frq_38",ce={wrapper:le,contentWrapper:ae,filters:re,search:ie,header:ne},he=["textContent"],de=["innerHTML"];function pe(e,t,o,c,h,_){const g=a("n8n-heading"),f=a("n8n-button"),w=a("TemplateFilters"),i=a("font-awesome-icon"),C=a("n8n-input"),b=a("TemplatesInfoCarousel"),v=a("TemplateList"),W=a("n8n-text"),L=a("TemplatesView");return n(),I(L,null,{header:p(()=>[r("div",{class:s(e.$style.wrapper)},[r("div",{class:s(e.$style.title)},[l(g,{tag:"h1",size:"2xlarge"},{default:p(()=>[y(u(e.$locale.baseText("templates.heading")),1)]),_:1})],2),r("div",{class:s(e.$style.button)},[l(f,{size:"large",type:"secondary",element:"a",href:e.creatorHubUrl,label:e.$locale.baseText("templates.shareWorkflow"),target:"_blank"},null,8,["href","label"])],2)],2)]),content:p(()=>[r("div",{class:s(e.$style.contentWrapper)},[r("div",{class:s(e.$style.filters)},[l(w,{categories:e.templatesStore.allCategories,sortOnPopulate:e.areCategoriesPrepopulated,loading:e.loadingCategories,selected:e.categories,onClear:e.onCategoryUnselected,onClearAll:e.onCategoriesCleared,onSelect:e.onCategorySelected},null,8,["categories","sortOnPopulate","loading","selected","onClear","onClearAll","onSelect"])],2),r("div",{class:s(e.$style.search)},[l(C,{modelValue:e.search,placeholder:e.$locale.baseText("templates.searchPlaceholder"),"onUpdate:modelValue":e.onSearchInput,onBlur:e.trackSearch,clearable:""},{prefix:p(()=>[l(i,{icon:"search"})]),_:1},8,["modelValue","placeholder","onUpdate:modelValue","onBlur"]),U(r("div",{class:s(e.$style.carouselContainer)},[r("div",{class:s(e.$style.header)},[l(g,{bold:!0,size:"medium",color:"text-light"},{default:p(()=>[y(u(e.$locale.baseText("templates.collections"))+" ",1),e.loadingCollections?m("",!0):(n(),d("span",{key:0,textContent:u(`(${e.collections.length})`)},null,8,he))]),_:1})],2),l(b,{collections:e.collections,loading:e.loadingCollections,onOpenCollection:e.onOpenCollection},null,8,["collections","loading","onOpenCollection"])],2),[[A,e.collections.length||e.loadingCollections]]),l(v,{"infinite-scroll-enabled":!0,loading:e.loadingWorkflows,"total-workflows":e.totalWorkflows,workflows:e.workflows,onLoadMore:e.onLoadMore,onOpenTemplate:e.onOpenTemplate},null,8,["loading","total-workflows","workflows","onLoadMore","onOpenTemplate"]),e.endOfSearchMessage?(n(),d("div",{key:0,class:s(e.$style.endText)},[l(W,{size:"medium",color:"text-base"},{default:p(()=>[r("span",{innerHTML:e.endOfSearchMessage},null,8,de)]),_:1})],2)):m("",!0)],2)],2)]),_:1})}const ue={$style:ce},Ke=$(se,[["render",pe],["__cssModules",ue]]);export{Ke as default};
2
- //# sourceMappingURL=TemplatesSearchView-pwVBF7_m.js.map
1
+ import{m as V}from"./pinia-jX93eZRS.js";import{T as O}from"./TemplatesInfoCarousel-TKGxiVaR.js";import{g as T,d as P,a7 as q}from"./index-RXjMHIPR.js";import{G as S,ag as a,l as n,m as d,p as r,I as s,R as u,T as l,Q as m,F as E,a7 as M,O as p,S as y,M as I,V as U,U as A}from"./vendor-2CfOYFi2.js";import{_ as $,o as B,fJ as H,ax as z,p as F,u as R,t as N,V as k,fB as D}from"./n8n-ZKR6bms9.js";import{T as Q}from"./TemplateList-Ek8NkQLd.js";import{T as j}from"./TemplatesView-sX4NrNXT.js";import"./NodeList-U4qs88M0.js";import"./vue-agile-TyH1pReu.js";import"./lodash-es-s_m9YyW7.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";const K=S({name:"TemplateFilters",mixins:[T],props:{sortOnPopulate:{type:Boolean,default:!1},categories:{type:Array},expandLimit:{type:Number,default:12},loading:{type:Boolean},selected:{type:Array}},watch:{categories:{handler(e){if(!this.sortOnPopulate)this.sortedCategories=e;else{const t=this.selected||[],o=e.filter(({id:h})=>t.includes(h)),c=e.filter(({id:h})=>!t.includes(h));this.sortedCategories=o.concat(c)}},immediate:!0}},data(){return{collapsed:!0,sortedCategories:[]}},computed:{allSelected(){return this.selected.length===0}},methods:{collapseAction(){this.collapsed=!1},handleCheckboxChanged(e,t){this.$emit(e?"select":"clear",t.id)},isSelected(e){return this.selected.includes(e)},resetCategories(){this.$emit("clearAll")}}}),G="_title_7aevl_5",J="_categories_7aevl_10",X="_item_7aevl_15",Y="_button_7aevl_22",Z={title:G,categories:J,item:X,button:Y},x=["textContent"];function ee(e,t,o,c,h,_){const g=a("n8n-loading"),f=a("el-checkbox"),w=a("n8n-text");return n(),d("div",{class:s([e.$style.filters,"template-filters"])},[r("div",{class:s(e.$style.title),textContent:u(e.$locale.baseText("templates.categoriesHeading"))},null,10,x),e.loading?(n(),d("div",{key:0,class:s(e.$style.list)},[l(g,{loading:e.loading,rows:e.expandLimit},null,8,["loading","rows"])],2)):m("",!0),e.loading?m("",!0):(n(),d("ul",{key:1,class:s(e.$style.categories)},[r("li",{class:s(e.$style.item)},[l(f,{label:e.$locale.baseText("templates.allCategories"),modelValue:e.allSelected,"onUpdate:modelValue":t[0]||(t[0]=i=>e.resetCategories(i))},null,8,["label","modelValue"])],2),(n(!0),d(E,null,M(e.collapsed?e.sortedCategories.slice(0,e.expandLimit):e.sortedCategories,i=>(n(),d("li",{key:i.id,class:s(e.$style.item)},[l(f,{label:i.name,modelValue:e.isSelected(i.id),"onUpdate:modelValue":C=>e.handleCheckboxChanged(C,i)},null,8,["label","modelValue","onUpdate:modelValue"])],2))),128))],2)),e.sortedCategories.length>e.expandLimit&&e.collapsed&&!e.loading?(n(),d("div",{key:2,class:s(e.$style.button),onClick:t[1]||(t[1]=(...i)=>e.collapseAction&&e.collapseAction(...i))},[l(w,{size:"small",color:"primary"},{default:p(()=>[y(" + "+u(`${e.sortedCategories.length-e.expandLimit} more`),1)]),_:1})],2)):m("",!0)],2)}const te={$style:Z},oe=$(K,[["render",ee],["__cssModules",te]]),se=S({name:"TemplatesSearchView",mixins:[T,P],components:{TemplatesInfoCarousel:O,TemplateFilters:oe,TemplateList:Q,TemplatesView:j},setup(){return{...B()}},data(){return{areCategoriesPrepopulated:!1,categories:[],loading:!0,loadingCategories:!0,loadingCollections:!0,loadingWorkflows:!0,search:"",searchEventToTrack:null,errorLoadingWorkflows:!1,creatorHubUrl:H}},computed:{...V(N,q,R,F,z),totalWorkflows(){return this.templatesStore.getSearchedWorkflowsTotal(this.query)},workflows(){return this.templatesStore.getSearchedWorkflows(this.query)||[]},collections(){return this.templatesStore.getSearchedCollections(this.query)||[]},endOfSearchMessage(){return this.loadingWorkflows?null:!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0?!this.settingsStore.isTemplatesEndpointReachable&&this.errorLoadingWorkflows?this.$locale.baseText("templates.connectionWarning"):this.$locale.baseText("templates.noSearchResults"):null},query(){return{categories:this.categories,search:this.search}},nothingFound(){return!this.loadingWorkflows&&!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0}},methods:{onOpenCollection({event:e,id:t}){this.navigateTo(e,k.COLLECTION,t)},onOpenTemplate({event:e,id:t}){this.navigateTo(e,k.TEMPLATE,t)},navigateTo(e,t,o){if(e.metaKey||e.ctrlKey){const c=this.$router.resolve({name:t,params:{id:o}});window.open(c.href,"_blank");return}else this.$router.push({name:t,params:{id:o}})},updateSearch(){this.updateQueryParam(this.search,this.categories.join(",")),this.loadWorkflowsAndCollections(!1)},updateSearchTracking(e,t){e&&(this.searchEventToTrack&&this.searchEventToTrack.search_string.length>e.length||(this.searchEventToTrack={search_string:e,workflow_results_count:this.workflows.length,collection_results_count:this.collections.length,categories_applied:t.map(o=>this.templatesStore.getCategoryById(o.toString())),wf_template_repo_session_id:this.templatesStore.currentSessionId}))},trackSearch(){this.searchEventToTrack&&(this.$telemetry.track("User searched workflow templates",this.searchEventToTrack),this.searchEventToTrack=null)},onSearchInput(e){this.loadingWorkflows=!0,this.loadingCollections=!0,this.search=e,this.callDebounced("updateSearch",{debounceTime:500,trailing:!0}),e.length===0&&this.trackSearch()},onCategorySelected(e){this.categories=this.categories.concat(e),this.updateSearch(),this.trackCategories()},onCategoryUnselected(e){this.categories=this.categories.filter(t=>t!==e),this.updateSearch(),this.trackCategories()},onCategoriesCleared(){this.categories=[],this.updateSearch()},trackCategories(){this.categories.length&&this.$telemetry.track("User changed template filters",{search_string:this.search,categories_applied:this.categories.map(e=>this.templatesStore.getCollectionById(e.toString())),wf_template_repo_session_id:this.templatesStore.currentSessionId})},updateQueryParam(e,t){const o=Object.assign({},this.$route.query);t.length?o.categories=t:delete o.categories,e.length?o.search=e:delete o.search,this.$router.replace({query:o})},async onLoadMore(){if(!(this.workflows.length>=this.totalWorkflows))try{this.loadingWorkflows=!0,await this.templatesStore.getMoreWorkflows({categories:this.categories,search:this.search})}catch{this.showMessage({title:"Error",message:"Could not load more workflows",type:"error"})}finally{this.loadingWorkflows=!1}},async loadCategories(){try{await this.templatesStore.getCategories()}catch{}this.loadingCategories=!1},async loadCollections(){try{this.loadingCollections=!0,await this.templatesStore.getCollections({categories:this.categories,search:this.search})}catch{}this.loadingCollections=!1},async loadWorkflows(){try{this.loadingWorkflows=!0,await this.templatesStore.getWorkflows({search:this.search,categories:this.categories}),this.errorLoadingWorkflows=!1}catch{this.errorLoadingWorkflows=!0}this.loadingWorkflows=!1},async loadWorkflowsAndCollections(e){const t=this.search,o=[...this.categories];await Promise.all([this.loadWorkflows(),this.loadCollections()]),e||this.updateSearchTracking(t,o)},scrollTo(e,t="smooth"){setTimeout(()=>{const o=document.getElementById("content");o&&o.scrollTo({top:e,behavior:t})},0)}},watch:{workflows(e){e.length===0&&this.scrollTo(0)}},beforeRouteLeave(e,t,o){var h;const c=document.getElementById("content");c&&(h=this.$route.meta)!=null&&h.setScrollPosition&&typeof this.$route.meta.setScrollPosition=="function"&&this.$route.meta.setScrollPosition(c.scrollTop),this.trackSearch(),o()},async mounted(){D("n8n - Templates"),this.loadCategories(),this.loadWorkflowsAndCollections(!0),this.usersStore.showPersonalizationSurvey(),setTimeout(()=>{this.$route.meta&&this.$route.meta.scrollOffset>0&&this.scrollTo(this.$route.meta.scrollOffset,"auto")},100)},async created(){this.$route.query.search&&typeof this.$route.query.search=="string"&&(this.search=this.$route.query.search),typeof this.$route.query.categories=="string"&&this.$route.query.categories.length&&(this.categories=this.$route.query.categories.split(",").map(e=>parseInt(e,10)),this.areCategoriesPrepopulated=!0)}}),le="_wrapper_p3frq_5",ae="_contentWrapper_p3frq_10",re="_filters_p3frq_20",ie="_search_p3frq_26",ne="_header_p3frq_38",ce={wrapper:le,contentWrapper:ae,filters:re,search:ie,header:ne},he=["textContent"],de=["innerHTML"];function pe(e,t,o,c,h,_){const g=a("n8n-heading"),f=a("n8n-button"),w=a("TemplateFilters"),i=a("font-awesome-icon"),C=a("n8n-input"),b=a("TemplatesInfoCarousel"),v=a("TemplateList"),W=a("n8n-text"),L=a("TemplatesView");return n(),I(L,null,{header:p(()=>[r("div",{class:s(e.$style.wrapper)},[r("div",{class:s(e.$style.title)},[l(g,{tag:"h1",size:"2xlarge"},{default:p(()=>[y(u(e.$locale.baseText("templates.heading")),1)]),_:1})],2),r("div",{class:s(e.$style.button)},[l(f,{size:"large",type:"secondary",element:"a",href:e.creatorHubUrl,label:e.$locale.baseText("templates.shareWorkflow"),target:"_blank"},null,8,["href","label"])],2)],2)]),content:p(()=>[r("div",{class:s(e.$style.contentWrapper)},[r("div",{class:s(e.$style.filters)},[l(w,{categories:e.templatesStore.allCategories,sortOnPopulate:e.areCategoriesPrepopulated,loading:e.loadingCategories,selected:e.categories,onClear:e.onCategoryUnselected,onClearAll:e.onCategoriesCleared,onSelect:e.onCategorySelected},null,8,["categories","sortOnPopulate","loading","selected","onClear","onClearAll","onSelect"])],2),r("div",{class:s(e.$style.search)},[l(C,{modelValue:e.search,placeholder:e.$locale.baseText("templates.searchPlaceholder"),"onUpdate:modelValue":e.onSearchInput,onBlur:e.trackSearch,clearable:""},{prefix:p(()=>[l(i,{icon:"search"})]),_:1},8,["modelValue","placeholder","onUpdate:modelValue","onBlur"]),U(r("div",{class:s(e.$style.carouselContainer)},[r("div",{class:s(e.$style.header)},[l(g,{bold:!0,size:"medium",color:"text-light"},{default:p(()=>[y(u(e.$locale.baseText("templates.collections"))+" ",1),e.loadingCollections?m("",!0):(n(),d("span",{key:0,textContent:u(`(${e.collections.length})`)},null,8,he))]),_:1})],2),l(b,{collections:e.collections,loading:e.loadingCollections,onOpenCollection:e.onOpenCollection},null,8,["collections","loading","onOpenCollection"])],2),[[A,e.collections.length||e.loadingCollections]]),l(v,{"infinite-scroll-enabled":!0,loading:e.loadingWorkflows,"total-workflows":e.totalWorkflows,workflows:e.workflows,onLoadMore:e.onLoadMore,onOpenTemplate:e.onOpenTemplate},null,8,["loading","total-workflows","workflows","onLoadMore","onOpenTemplate"]),e.endOfSearchMessage?(n(),d("div",{key:0,class:s(e.$style.endText)},[l(W,{size:"medium",color:"text-base"},{default:p(()=>[r("span",{innerHTML:e.endOfSearchMessage},null,8,de)]),_:1})],2)):m("",!0)],2)],2)]),_:1})}const ue={$style:ce},Ke=$(se,[["render",pe],["__cssModules",ue]]);export{Ke as default};
2
+ //# sourceMappingURL=TemplatesSearchView-gwbhQE6_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplatesSearchView-pwVBF7_m.js","sources":["../../src/components/TemplateFilters.vue","../../src/views/TemplatesSearchView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.filters\" class=\"template-filters\">\n\t\t<div :class=\"$style.title\" v-text=\"$locale.baseText('templates.categoriesHeading')\" />\n\t\t<div v-if=\"loading\" :class=\"$style.list\">\n\t\t\t<n8n-loading :loading=\"loading\" :rows=\"expandLimit\" />\n\t\t</div>\n\t\t<ul v-if=\"!loading\" :class=\"$style.categories\">\n\t\t\t<li :class=\"$style.item\">\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:label=\"$locale.baseText('templates.allCategories')\"\n\t\t\t\t\t:modelValue=\"allSelected\"\n\t\t\t\t\t@update:modelValue=\"(value) => resetCategories(value)\"\n\t\t\t\t/>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tv-for=\"category in collapsed ? sortedCategories.slice(0, expandLimit) : sortedCategories\"\n\t\t\t\t:key=\"category.id\"\n\t\t\t\t:class=\"$style.item\"\n\t\t\t>\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:label=\"category.name\"\n\t\t\t\t\t:modelValue=\"isSelected(category.id)\"\n\t\t\t\t\t@update:modelValue=\"(value) => handleCheckboxChanged(value, category)\"\n\t\t\t\t/>\n\t\t\t</li>\n\t\t</ul>\n\t\t<div\n\t\t\t:class=\"$style.button\"\n\t\t\tv-if=\"sortedCategories.length > expandLimit && collapsed && !loading\"\n\t\t\t@click=\"collapseAction\"\n\t\t>\n\t\t\t<n8n-text size=\"small\" color=\"primary\">\n\t\t\t\t+ {{ `${sortedCategories.length - expandLimit} more` }}\n\t\t\t</n8n-text>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type { ITemplatesCategory } from '@/Interface';\n\nexport default defineComponent({\n\tname: 'TemplateFilters',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tsortOnPopulate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcategories: {\n\t\t\ttype: Array,\n\t\t},\n\t\texpandLimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 12,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Array,\n\t\t},\n\t},\n\twatch: {\n\t\tcategories: {\n\t\t\thandler(categories: ITemplatesCategory[]) {\n\t\t\t\tif (!this.sortOnPopulate) {\n\t\t\t\t\tthis.sortedCategories = categories;\n\t\t\t\t} else {\n\t\t\t\t\tconst selected = this.selected || [];\n\t\t\t\t\tconst selectedCategories = categories.filter(({ id }) => selected.includes(id));\n\t\t\t\t\tconst notSelectedCategories = categories.filter(({ id }) => !selected.includes(id));\n\t\t\t\t\tthis.sortedCategories = selectedCategories.concat(notSelectedCategories);\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcollapsed: true,\n\t\t\tsortedCategories: [] as ITemplatesCategory[],\n\t\t};\n\t},\n\tcomputed: {\n\t\tallSelected(): boolean {\n\t\t\treturn this.selected.length === 0;\n\t\t},\n\t},\n\tmethods: {\n\t\tcollapseAction() {\n\t\t\tthis.collapsed = false;\n\t\t},\n\t\thandleCheckboxChanged(value: boolean, selectedCategory: ITemplatesCategory) {\n\t\t\tthis.$emit(value ? 'select' : 'clear', selectedCategory.id);\n\t\t},\n\t\tisSelected(categoryId: string) {\n\t\t\treturn this.selected.includes(categoryId);\n\t\t},\n\t\tresetCategories() {\n\t\t\tthis.$emit('clearAll');\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.title {\n\tfont-size: var(--font-size-2xs);\n\tcolor: var(--color-text-base);\n}\n\n.categories {\n\tpadding-top: var(--spacing-xs);\n\tlist-style-type: none;\n}\n\n.item {\n\tmargin-top: var(--spacing-xs);\n\n\t&:nth-child(1) {\n\t\tmargin-top: 0;\n\t}\n}\n\n.button {\n\tpadding-top: var(--spacing-2xs);\n\tcursor: pointer;\n}\n</style>\n\n<style lang=\"scss\">\n.template-filters {\n\t.el-checkbox {\n\t\tdisplay: flex;\n\t\twhite-space: unset;\n\t}\n\n\t.el-checkbox__label {\n\t\ttop: -2px;\n\t\tposition: relative;\n\t\tfont-size: var(--font-size-xs);\n\t\tline-height: var(--font-line-height-loose);\n\t\tcolor: var(--color-text-dark);\n\t\tpadding-left: var(--spacing-2xs);\n\t}\n}\n</style>\n","<template>\n\t<TemplatesView>\n\t\t<template #header>\n\t\t\t<div :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.title\">\n\t\t\t\t\t<n8n-heading tag=\"h1\" size=\"2xlarge\">\n\t\t\t\t\t\t{{ $locale.baseText('templates.heading') }}\n\t\t\t\t\t</n8n-heading>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.button\">\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\telement=\"a\"\n\t\t\t\t\t\t:href=\"creatorHubUrl\"\n\t\t\t\t\t\t:label=\"$locale.baseText('templates.shareWorkflow')\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div :class=\"$style.contentWrapper\">\n\t\t\t\t<div :class=\"$style.filters\">\n\t\t\t\t\t<TemplateFilters\n\t\t\t\t\t\t:categories=\"templatesStore.allCategories\"\n\t\t\t\t\t\t:sortOnPopulate=\"areCategoriesPrepopulated\"\n\t\t\t\t\t\t:loading=\"loadingCategories\"\n\t\t\t\t\t\t:selected=\"categories\"\n\t\t\t\t\t\t@clear=\"onCategoryUnselected\"\n\t\t\t\t\t\t@clearAll=\"onCategoriesCleared\"\n\t\t\t\t\t\t@select=\"onCategorySelected\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.search\">\n\t\t\t\t\t<n8n-input\n\t\t\t\t\t\t:modelValue=\"search\"\n\t\t\t\t\t\t:placeholder=\"$locale.baseText('templates.searchPlaceholder')\"\n\t\t\t\t\t\t@update:modelValue=\"onSearchInput\"\n\t\t\t\t\t\t@blur=\"trackSearch\"\n\t\t\t\t\t\tclearable\n\t\t\t\t\t>\n\t\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t\t<font-awesome-icon icon=\"search\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</n8n-input>\n\t\t\t\t\t<div :class=\"$style.carouselContainer\" v-show=\"collections.length || loadingCollections\">\n\t\t\t\t\t\t<div :class=\"$style.header\">\n\t\t\t\t\t\t\t<n8n-heading :bold=\"true\" size=\"medium\" color=\"text-light\">\n\t\t\t\t\t\t\t\t{{ $locale.baseText('templates.collections') }}\n\t\t\t\t\t\t\t\t<span v-if=\"!loadingCollections\" v-text=\"`(${collections.length})`\" />\n\t\t\t\t\t\t\t</n8n-heading>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<TemplatesInfoCarousel\n\t\t\t\t\t\t\t:collections=\"collections\"\n\t\t\t\t\t\t\t:loading=\"loadingCollections\"\n\t\t\t\t\t\t\t@openCollection=\"onOpenCollection\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<TemplateList\n\t\t\t\t\t\t:infinite-scroll-enabled=\"true\"\n\t\t\t\t\t\t:loading=\"loadingWorkflows\"\n\t\t\t\t\t\t:total-workflows=\"totalWorkflows\"\n\t\t\t\t\t\t:workflows=\"workflows\"\n\t\t\t\t\t\t@loadMore=\"onLoadMore\"\n\t\t\t\t\t\t@openTemplate=\"onOpenTemplate\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div v-if=\"endOfSearchMessage\" :class=\"$style.endText\">\n\t\t\t\t\t\t<n8n-text size=\"medium\" color=\"text-base\">\n\t\t\t\t\t\t\t<span v-html=\"endOfSearchMessage\" />\n\t\t\t\t\t\t</n8n-text>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</TemplatesView>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport TemplatesInfoCarousel from '@/components/TemplatesInfoCarousel.vue';\nimport TemplateFilters from '@/components/TemplateFilters.vue';\nimport TemplateList from '@/components/TemplateList.vue';\nimport TemplatesView from '@/views/TemplatesView.vue';\n\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type {\n\tITemplatesCollection,\n\tITemplatesWorkflow,\n\tITemplatesQuery,\n\tITemplatesCategory,\n} from '@/Interface';\nimport type { IDataObject } from 'n8n-workflow';\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { CREATOR_HUB_URL, VIEWS } from '@/constants';\nimport { debounceHelper } from '@/mixins/debounce';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { usePostHog } from '@/stores/posthog.store';\n\ninterface ISearchEvent {\n\tsearch_string: string;\n\tworkflow_results_count: number;\n\tcollection_results_count: number;\n\tcategories_applied: ITemplatesCategory[];\n\twf_template_repo_session_id: string;\n}\n\nexport default defineComponent({\n\tname: 'TemplatesSearchView',\n\tmixins: [genericHelpers, debounceHelper],\n\tcomponents: {\n\t\tTemplatesInfoCarousel,\n\t\tTemplateFilters,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tareCategoriesPrepopulated: false,\n\t\t\tcategories: [] as number[],\n\t\t\tloading: true,\n\t\t\tloadingCategories: true,\n\t\t\tloadingCollections: true,\n\t\t\tloadingWorkflows: true,\n\t\t\tsearch: '',\n\t\t\tsearchEventToTrack: null as null | ISearchEvent,\n\t\t\terrorLoadingWorkflows: false,\n\t\t\tcreatorHubUrl: CREATOR_HUB_URL as string,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useSettingsStore, useTemplatesStore, useUIStore, useUsersStore, usePostHog),\n\t\ttotalWorkflows(): number {\n\t\t\treturn this.templatesStore.getSearchedWorkflowsTotal(this.query);\n\t\t},\n\t\tworkflows(): ITemplatesWorkflow[] {\n\t\t\treturn this.templatesStore.getSearchedWorkflows(this.query) || [];\n\t\t},\n\t\tcollections(): ITemplatesCollection[] {\n\t\t\treturn this.templatesStore.getSearchedCollections(this.query) || [];\n\t\t},\n\t\tendOfSearchMessage(): string | null {\n\t\t\tif (this.loadingWorkflows) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.loadingCollections &&\n\t\t\t\tthis.workflows.length === 0 &&\n\t\t\t\tthis.collections.length === 0\n\t\t\t) {\n\t\t\t\tif (!this.settingsStore.isTemplatesEndpointReachable && this.errorLoadingWorkflows) {\n\t\t\t\t\treturn this.$locale.baseText('templates.connectionWarning');\n\t\t\t\t}\n\t\t\t\treturn this.$locale.baseText('templates.noSearchResults');\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t\tquery(): ITemplatesQuery {\n\t\t\treturn {\n\t\t\t\tcategories: this.categories,\n\t\t\t\tsearch: this.search,\n\t\t\t};\n\t\t},\n\t\tnothingFound(): boolean {\n\t\t\treturn (\n\t\t\t\t!this.loadingWorkflows &&\n\t\t\t\t!this.loadingCollections &&\n\t\t\t\tthis.workflows.length === 0 &&\n\t\t\t\tthis.collections.length === 0\n\t\t\t);\n\t\t},\n\t},\n\tmethods: {\n\t\tonOpenCollection({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.COLLECTION, id);\n\t\t},\n\t\tonOpenTemplate({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE, id);\n\t\t},\n\t\tnavigateTo(e: MouseEvent, page: string, id: string) {\n\t\t\tif (e.metaKey || e.ctrlKey) {\n\t\t\t\tconst route = this.$router.resolve({ name: page, params: { id } });\n\t\t\t\twindow.open(route.href, '_blank');\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tvoid this.$router.push({ name: page, params: { id } });\n\t\t\t}\n\t\t},\n\t\tupdateSearch() {\n\t\t\tthis.updateQueryParam(this.search, this.categories.join(','));\n\t\t\tvoid this.loadWorkflowsAndCollections(false);\n\t\t},\n\t\tupdateSearchTracking(search: string, categories: number[]) {\n\t\t\tif (!search) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.searchEventToTrack && this.searchEventToTrack.search_string.length > search.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.searchEventToTrack = {\n\t\t\t\tsearch_string: search,\n\t\t\t\tworkflow_results_count: this.workflows.length,\n\t\t\t\tcollection_results_count: this.collections.length,\n\t\t\t\tcategories_applied: categories.map((categoryId) =>\n\t\t\t\t\tthis.templatesStore.getCategoryById(categoryId.toString()),\n\t\t\t\t) as ITemplatesCategory[],\n\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t};\n\t\t},\n\t\ttrackSearch() {\n\t\t\tif (this.searchEventToTrack) {\n\t\t\t\tthis.$telemetry.track(\n\t\t\t\t\t'User searched workflow templates',\n\t\t\t\t\tthis.searchEventToTrack as unknown as IDataObject,\n\t\t\t\t);\n\t\t\t\tthis.searchEventToTrack = null;\n\t\t\t}\n\t\t},\n\t\tonSearchInput(search: string) {\n\t\t\tthis.loadingWorkflows = true;\n\t\t\tthis.loadingCollections = true;\n\t\t\tthis.search = search;\n\t\t\tvoid this.callDebounced('updateSearch', { debounceTime: 500, trailing: true });\n\n\t\t\tif (search.length === 0) {\n\t\t\t\tthis.trackSearch();\n\t\t\t}\n\t\t},\n\t\tonCategorySelected(selected: number) {\n\t\t\tthis.categories = this.categories.concat(selected);\n\t\t\tthis.updateSearch();\n\t\t\tthis.trackCategories();\n\t\t},\n\t\tonCategoryUnselected(selected: number) {\n\t\t\tthis.categories = this.categories.filter((id) => id !== selected);\n\t\t\tthis.updateSearch();\n\t\t\tthis.trackCategories();\n\t\t},\n\t\tonCategoriesCleared() {\n\t\t\tthis.categories = [];\n\t\t\tthis.updateSearch();\n\t\t},\n\t\ttrackCategories() {\n\t\t\tif (this.categories.length) {\n\t\t\t\tthis.$telemetry.track('User changed template filters', {\n\t\t\t\t\tsearch_string: this.search,\n\t\t\t\t\tcategories_applied: this.categories.map((categoryId: number) =>\n\t\t\t\t\t\tthis.templatesStore.getCollectionById(categoryId.toString()),\n\t\t\t\t\t),\n\t\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tupdateQueryParam(search: string, category: string) {\n\t\t\tconst query = Object.assign({}, this.$route.query);\n\n\t\t\tif (category.length) {\n\t\t\t\tquery.categories = category;\n\t\t\t} else {\n\t\t\t\tdelete query.categories;\n\t\t\t}\n\n\t\t\tif (search.length) {\n\t\t\t\tquery.search = search;\n\t\t\t} else {\n\t\t\t\tdelete query.search;\n\t\t\t}\n\n\t\t\tvoid this.$router.replace({ query });\n\t\t},\n\t\tasync onLoadMore() {\n\t\t\tif (this.workflows.length >= this.totalWorkflows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tthis.loadingWorkflows = true;\n\t\t\t\tawait this.templatesStore.getMoreWorkflows({\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tthis.showMessage({\n\t\t\t\t\ttitle: 'Error',\n\t\t\t\t\tmessage: 'Could not load more workflows',\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tthis.loadingWorkflows = false;\n\t\t\t}\n\t\t},\n\t\tasync loadCategories() {\n\t\t\ttry {\n\t\t\t\tawait this.templatesStore.getCategories();\n\t\t\t} catch (e) {}\n\t\t\tthis.loadingCategories = false;\n\t\t},\n\t\tasync loadCollections() {\n\t\t\ttry {\n\t\t\t\tthis.loadingCollections = true;\n\t\t\t\tawait this.templatesStore.getCollections({\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t});\n\t\t\t} catch (e) {}\n\n\t\t\tthis.loadingCollections = false;\n\t\t},\n\t\tasync loadWorkflows() {\n\t\t\ttry {\n\t\t\t\tthis.loadingWorkflows = true;\n\t\t\t\tawait this.templatesStore.getWorkflows({\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t});\n\t\t\t\tthis.errorLoadingWorkflows = false;\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorLoadingWorkflows = true;\n\t\t\t}\n\n\t\t\tthis.loadingWorkflows = false;\n\t\t},\n\t\tasync loadWorkflowsAndCollections(initialLoad: boolean) {\n\t\t\tconst search = this.search;\n\t\t\tconst categories = [...this.categories];\n\t\t\tawait Promise.all([this.loadWorkflows(), this.loadCollections()]);\n\t\t\tif (!initialLoad) {\n\t\t\t\tthis.updateSearchTracking(search, categories);\n\t\t\t}\n\t\t},\n\t\tscrollTo(position: number, behavior: ScrollBehavior = 'smooth') {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst contentArea = document.getElementById('content');\n\t\t\t\tif (contentArea) {\n\t\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\t\ttop: position,\n\t\t\t\t\t\tbehavior,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t},\n\t},\n\twatch: {\n\t\tworkflows(newWorkflows) {\n\t\t\tif (newWorkflows.length === 0) {\n\t\t\t\tthis.scrollTo(0);\n\t\t\t}\n\t\t},\n\t},\n\tbeforeRouteLeave(to, from, next) {\n\t\tconst contentArea = document.getElementById('content');\n\t\tif (contentArea) {\n\t\t\t// When leaving this page, store current scroll position in route data\n\t\t\tif (\n\t\t\t\tthis.$route.meta?.setScrollPosition &&\n\t\t\t\ttypeof this.$route.meta.setScrollPosition === 'function'\n\t\t\t) {\n\t\t\t\tthis.$route.meta.setScrollPosition(contentArea.scrollTop);\n\t\t\t}\n\t\t}\n\n\t\tthis.trackSearch();\n\t\tnext();\n\t},\n\tasync mounted() {\n\t\tsetPageTitle('n8n - Templates');\n\t\tvoid this.loadCategories();\n\t\tvoid this.loadWorkflowsAndCollections(true);\n\t\tvoid this.usersStore.showPersonalizationSurvey();\n\n\t\tsetTimeout(() => {\n\t\t\t// Check if there is scroll position saved in route and scroll to it\n\t\t\tif (this.$route.meta && this.$route.meta.scrollOffset > 0) {\n\t\t\t\tthis.scrollTo(this.$route.meta.scrollOffset, 'auto');\n\t\t\t}\n\t\t}, 100);\n\t},\n\tasync created() {\n\t\tif (this.$route.query.search && typeof this.$route.query.search === 'string') {\n\t\t\tthis.search = this.$route.query.search;\n\t\t}\n\n\t\tif (typeof this.$route.query.categories === 'string' && this.$route.query.categories.length) {\n\t\t\tthis.categories = this.$route.query.categories\n\t\t\t\t.split(',')\n\t\t\t\t.map((categoryId) => parseInt(categoryId, 10));\n\t\t\tthis.areCategoriesPrepopulated = true;\n\t\t}\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.wrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.contentWrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tflex-direction: column;\n\t}\n}\n\n.filters {\n\twidth: 200px;\n\tmargin-bottom: var(--spacing-xl);\n\tmargin-right: var(--spacing-2xl);\n}\n\n.search {\n\twidth: 100%;\n\n\t> * {\n\t\tmargin-bottom: var(--spacing-l);\n\t}\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tpadding-left: 0;\n\t}\n}\n\n.header {\n\tmargin-bottom: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","genericHelpers","categories","selected","selectedCategories","id","notSelectedCategories","value","selectedCategory","categoryId","_resolveComponent","_normalizeClass","_ctx","_createElementVNode","_toDisplayString","_hoisted_1","_openBlock","_component_n8n_loading","_createCommentVNode","_component_el_checkbox","_createElementBlock","_Fragment","_renderList","category","_cache","args","_component_n8n_text","_sfc_main","debounceHelper","TemplatesInfoCarousel","TemplateFilters","TemplateList","TemplatesView","useToast","CREATOR_HUB_URL","mapStores","useSettingsStore","useTemplatesStore","useUIStore","useUsersStore","usePostHog","event","VIEWS","page","route","search","query","initialLoad","position","behavior","contentArea","newWorkflows","to","from","next","_a","setPageTitle","_createBlock","_component_TemplatesView","_withCtx","_component_n8n_heading","_component_n8n_button","_component_TemplateFilters","_component_n8n_input","_withDirectives","_createTextVNode","_createVNode","_component_TemplatesInfoCarousel","_vShow","_component_TemplateList"],"mappings":"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"}
1
+ {"version":3,"file":"TemplatesSearchView-gwbhQE6_.js","sources":["../../src/components/TemplateFilters.vue","../../src/views/TemplatesSearchView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.filters\" class=\"template-filters\">\n\t\t<div :class=\"$style.title\" v-text=\"$locale.baseText('templates.categoriesHeading')\" />\n\t\t<div v-if=\"loading\" :class=\"$style.list\">\n\t\t\t<n8n-loading :loading=\"loading\" :rows=\"expandLimit\" />\n\t\t</div>\n\t\t<ul v-if=\"!loading\" :class=\"$style.categories\">\n\t\t\t<li :class=\"$style.item\">\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:label=\"$locale.baseText('templates.allCategories')\"\n\t\t\t\t\t:modelValue=\"allSelected\"\n\t\t\t\t\t@update:modelValue=\"(value) => resetCategories(value)\"\n\t\t\t\t/>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tv-for=\"category in collapsed ? sortedCategories.slice(0, expandLimit) : sortedCategories\"\n\t\t\t\t:key=\"category.id\"\n\t\t\t\t:class=\"$style.item\"\n\t\t\t>\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:label=\"category.name\"\n\t\t\t\t\t:modelValue=\"isSelected(category.id)\"\n\t\t\t\t\t@update:modelValue=\"(value) => handleCheckboxChanged(value, category)\"\n\t\t\t\t/>\n\t\t\t</li>\n\t\t</ul>\n\t\t<div\n\t\t\t:class=\"$style.button\"\n\t\t\tv-if=\"sortedCategories.length > expandLimit && collapsed && !loading\"\n\t\t\t@click=\"collapseAction\"\n\t\t>\n\t\t\t<n8n-text size=\"small\" color=\"primary\">\n\t\t\t\t+ {{ `${sortedCategories.length - expandLimit} more` }}\n\t\t\t</n8n-text>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type { ITemplatesCategory } from '@/Interface';\n\nexport default defineComponent({\n\tname: 'TemplateFilters',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tsortOnPopulate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcategories: {\n\t\t\ttype: Array,\n\t\t},\n\t\texpandLimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 12,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Array,\n\t\t},\n\t},\n\twatch: {\n\t\tcategories: {\n\t\t\thandler(categories: ITemplatesCategory[]) {\n\t\t\t\tif (!this.sortOnPopulate) {\n\t\t\t\t\tthis.sortedCategories = categories;\n\t\t\t\t} else {\n\t\t\t\t\tconst selected = this.selected || [];\n\t\t\t\t\tconst selectedCategories = categories.filter(({ id }) => selected.includes(id));\n\t\t\t\t\tconst notSelectedCategories = categories.filter(({ id }) => !selected.includes(id));\n\t\t\t\t\tthis.sortedCategories = selectedCategories.concat(notSelectedCategories);\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcollapsed: true,\n\t\t\tsortedCategories: [] as ITemplatesCategory[],\n\t\t};\n\t},\n\tcomputed: {\n\t\tallSelected(): boolean {\n\t\t\treturn this.selected.length === 0;\n\t\t},\n\t},\n\tmethods: {\n\t\tcollapseAction() {\n\t\t\tthis.collapsed = false;\n\t\t},\n\t\thandleCheckboxChanged(value: boolean, selectedCategory: ITemplatesCategory) {\n\t\t\tthis.$emit(value ? 'select' : 'clear', selectedCategory.id);\n\t\t},\n\t\tisSelected(categoryId: string) {\n\t\t\treturn this.selected.includes(categoryId);\n\t\t},\n\t\tresetCategories() {\n\t\t\tthis.$emit('clearAll');\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.title {\n\tfont-size: var(--font-size-2xs);\n\tcolor: var(--color-text-base);\n}\n\n.categories {\n\tpadding-top: var(--spacing-xs);\n\tlist-style-type: none;\n}\n\n.item {\n\tmargin-top: var(--spacing-xs);\n\n\t&:nth-child(1) {\n\t\tmargin-top: 0;\n\t}\n}\n\n.button {\n\tpadding-top: var(--spacing-2xs);\n\tcursor: pointer;\n}\n</style>\n\n<style lang=\"scss\">\n.template-filters {\n\t.el-checkbox {\n\t\tdisplay: flex;\n\t\twhite-space: unset;\n\t}\n\n\t.el-checkbox__label {\n\t\ttop: -2px;\n\t\tposition: relative;\n\t\tfont-size: var(--font-size-xs);\n\t\tline-height: var(--font-line-height-loose);\n\t\tcolor: var(--color-text-dark);\n\t\tpadding-left: var(--spacing-2xs);\n\t}\n}\n</style>\n","<template>\n\t<TemplatesView>\n\t\t<template #header>\n\t\t\t<div :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.title\">\n\t\t\t\t\t<n8n-heading tag=\"h1\" size=\"2xlarge\">\n\t\t\t\t\t\t{{ $locale.baseText('templates.heading') }}\n\t\t\t\t\t</n8n-heading>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.button\">\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\telement=\"a\"\n\t\t\t\t\t\t:href=\"creatorHubUrl\"\n\t\t\t\t\t\t:label=\"$locale.baseText('templates.shareWorkflow')\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div :class=\"$style.contentWrapper\">\n\t\t\t\t<div :class=\"$style.filters\">\n\t\t\t\t\t<TemplateFilters\n\t\t\t\t\t\t:categories=\"templatesStore.allCategories\"\n\t\t\t\t\t\t:sortOnPopulate=\"areCategoriesPrepopulated\"\n\t\t\t\t\t\t:loading=\"loadingCategories\"\n\t\t\t\t\t\t:selected=\"categories\"\n\t\t\t\t\t\t@clear=\"onCategoryUnselected\"\n\t\t\t\t\t\t@clearAll=\"onCategoriesCleared\"\n\t\t\t\t\t\t@select=\"onCategorySelected\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.search\">\n\t\t\t\t\t<n8n-input\n\t\t\t\t\t\t:modelValue=\"search\"\n\t\t\t\t\t\t:placeholder=\"$locale.baseText('templates.searchPlaceholder')\"\n\t\t\t\t\t\t@update:modelValue=\"onSearchInput\"\n\t\t\t\t\t\t@blur=\"trackSearch\"\n\t\t\t\t\t\tclearable\n\t\t\t\t\t>\n\t\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t\t<font-awesome-icon icon=\"search\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</n8n-input>\n\t\t\t\t\t<div :class=\"$style.carouselContainer\" v-show=\"collections.length || loadingCollections\">\n\t\t\t\t\t\t<div :class=\"$style.header\">\n\t\t\t\t\t\t\t<n8n-heading :bold=\"true\" size=\"medium\" color=\"text-light\">\n\t\t\t\t\t\t\t\t{{ $locale.baseText('templates.collections') }}\n\t\t\t\t\t\t\t\t<span v-if=\"!loadingCollections\" v-text=\"`(${collections.length})`\" />\n\t\t\t\t\t\t\t</n8n-heading>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<TemplatesInfoCarousel\n\t\t\t\t\t\t\t:collections=\"collections\"\n\t\t\t\t\t\t\t:loading=\"loadingCollections\"\n\t\t\t\t\t\t\t@openCollection=\"onOpenCollection\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<TemplateList\n\t\t\t\t\t\t:infinite-scroll-enabled=\"true\"\n\t\t\t\t\t\t:loading=\"loadingWorkflows\"\n\t\t\t\t\t\t:total-workflows=\"totalWorkflows\"\n\t\t\t\t\t\t:workflows=\"workflows\"\n\t\t\t\t\t\t@loadMore=\"onLoadMore\"\n\t\t\t\t\t\t@openTemplate=\"onOpenTemplate\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div v-if=\"endOfSearchMessage\" :class=\"$style.endText\">\n\t\t\t\t\t\t<n8n-text size=\"medium\" color=\"text-base\">\n\t\t\t\t\t\t\t<span v-html=\"endOfSearchMessage\" />\n\t\t\t\t\t\t</n8n-text>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</TemplatesView>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport TemplatesInfoCarousel from '@/components/TemplatesInfoCarousel.vue';\nimport TemplateFilters from '@/components/TemplateFilters.vue';\nimport TemplateList from '@/components/TemplateList.vue';\nimport TemplatesView from '@/views/TemplatesView.vue';\n\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type {\n\tITemplatesCollection,\n\tITemplatesWorkflow,\n\tITemplatesQuery,\n\tITemplatesCategory,\n} from '@/Interface';\nimport type { IDataObject } from 'n8n-workflow';\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { CREATOR_HUB_URL, VIEWS } from '@/constants';\nimport { debounceHelper } from '@/mixins/debounce';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { usePostHog } from '@/stores/posthog.store';\n\ninterface ISearchEvent {\n\tsearch_string: string;\n\tworkflow_results_count: number;\n\tcollection_results_count: number;\n\tcategories_applied: ITemplatesCategory[];\n\twf_template_repo_session_id: string;\n}\n\nexport default defineComponent({\n\tname: 'TemplatesSearchView',\n\tmixins: [genericHelpers, debounceHelper],\n\tcomponents: {\n\t\tTemplatesInfoCarousel,\n\t\tTemplateFilters,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tareCategoriesPrepopulated: false,\n\t\t\tcategories: [] as number[],\n\t\t\tloading: true,\n\t\t\tloadingCategories: true,\n\t\t\tloadingCollections: true,\n\t\t\tloadingWorkflows: true,\n\t\t\tsearch: '',\n\t\t\tsearchEventToTrack: null as null | ISearchEvent,\n\t\t\terrorLoadingWorkflows: false,\n\t\t\tcreatorHubUrl: CREATOR_HUB_URL as string,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useSettingsStore, useTemplatesStore, useUIStore, useUsersStore, usePostHog),\n\t\ttotalWorkflows(): number {\n\t\t\treturn this.templatesStore.getSearchedWorkflowsTotal(this.query);\n\t\t},\n\t\tworkflows(): ITemplatesWorkflow[] {\n\t\t\treturn this.templatesStore.getSearchedWorkflows(this.query) || [];\n\t\t},\n\t\tcollections(): ITemplatesCollection[] {\n\t\t\treturn this.templatesStore.getSearchedCollections(this.query) || [];\n\t\t},\n\t\tendOfSearchMessage(): string | null {\n\t\t\tif (this.loadingWorkflows) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.loadingCollections &&\n\t\t\t\tthis.workflows.length === 0 &&\n\t\t\t\tthis.collections.length === 0\n\t\t\t) {\n\t\t\t\tif (!this.settingsStore.isTemplatesEndpointReachable && this.errorLoadingWorkflows) {\n\t\t\t\t\treturn this.$locale.baseText('templates.connectionWarning');\n\t\t\t\t}\n\t\t\t\treturn this.$locale.baseText('templates.noSearchResults');\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t\tquery(): ITemplatesQuery {\n\t\t\treturn {\n\t\t\t\tcategories: this.categories,\n\t\t\t\tsearch: this.search,\n\t\t\t};\n\t\t},\n\t\tnothingFound(): boolean {\n\t\t\treturn (\n\t\t\t\t!this.loadingWorkflows &&\n\t\t\t\t!this.loadingCollections &&\n\t\t\t\tthis.workflows.length === 0 &&\n\t\t\t\tthis.collections.length === 0\n\t\t\t);\n\t\t},\n\t},\n\tmethods: {\n\t\tonOpenCollection({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.COLLECTION, id);\n\t\t},\n\t\tonOpenTemplate({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE, id);\n\t\t},\n\t\tnavigateTo(e: MouseEvent, page: string, id: string) {\n\t\t\tif (e.metaKey || e.ctrlKey) {\n\t\t\t\tconst route = this.$router.resolve({ name: page, params: { id } });\n\t\t\t\twindow.open(route.href, '_blank');\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tvoid this.$router.push({ name: page, params: { id } });\n\t\t\t}\n\t\t},\n\t\tupdateSearch() {\n\t\t\tthis.updateQueryParam(this.search, this.categories.join(','));\n\t\t\tvoid this.loadWorkflowsAndCollections(false);\n\t\t},\n\t\tupdateSearchTracking(search: string, categories: number[]) {\n\t\t\tif (!search) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.searchEventToTrack && this.searchEventToTrack.search_string.length > search.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.searchEventToTrack = {\n\t\t\t\tsearch_string: search,\n\t\t\t\tworkflow_results_count: this.workflows.length,\n\t\t\t\tcollection_results_count: this.collections.length,\n\t\t\t\tcategories_applied: categories.map((categoryId) =>\n\t\t\t\t\tthis.templatesStore.getCategoryById(categoryId.toString()),\n\t\t\t\t) as ITemplatesCategory[],\n\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t};\n\t\t},\n\t\ttrackSearch() {\n\t\t\tif (this.searchEventToTrack) {\n\t\t\t\tthis.$telemetry.track(\n\t\t\t\t\t'User searched workflow templates',\n\t\t\t\t\tthis.searchEventToTrack as unknown as IDataObject,\n\t\t\t\t);\n\t\t\t\tthis.searchEventToTrack = null;\n\t\t\t}\n\t\t},\n\t\tonSearchInput(search: string) {\n\t\t\tthis.loadingWorkflows = true;\n\t\t\tthis.loadingCollections = true;\n\t\t\tthis.search = search;\n\t\t\tvoid this.callDebounced('updateSearch', { debounceTime: 500, trailing: true });\n\n\t\t\tif (search.length === 0) {\n\t\t\t\tthis.trackSearch();\n\t\t\t}\n\t\t},\n\t\tonCategorySelected(selected: number) {\n\t\t\tthis.categories = this.categories.concat(selected);\n\t\t\tthis.updateSearch();\n\t\t\tthis.trackCategories();\n\t\t},\n\t\tonCategoryUnselected(selected: number) {\n\t\t\tthis.categories = this.categories.filter((id) => id !== selected);\n\t\t\tthis.updateSearch();\n\t\t\tthis.trackCategories();\n\t\t},\n\t\tonCategoriesCleared() {\n\t\t\tthis.categories = [];\n\t\t\tthis.updateSearch();\n\t\t},\n\t\ttrackCategories() {\n\t\t\tif (this.categories.length) {\n\t\t\t\tthis.$telemetry.track('User changed template filters', {\n\t\t\t\t\tsearch_string: this.search,\n\t\t\t\t\tcategories_applied: this.categories.map((categoryId: number) =>\n\t\t\t\t\t\tthis.templatesStore.getCollectionById(categoryId.toString()),\n\t\t\t\t\t),\n\t\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tupdateQueryParam(search: string, category: string) {\n\t\t\tconst query = Object.assign({}, this.$route.query);\n\n\t\t\tif (category.length) {\n\t\t\t\tquery.categories = category;\n\t\t\t} else {\n\t\t\t\tdelete query.categories;\n\t\t\t}\n\n\t\t\tif (search.length) {\n\t\t\t\tquery.search = search;\n\t\t\t} else {\n\t\t\t\tdelete query.search;\n\t\t\t}\n\n\t\t\tvoid this.$router.replace({ query });\n\t\t},\n\t\tasync onLoadMore() {\n\t\t\tif (this.workflows.length >= this.totalWorkflows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tthis.loadingWorkflows = true;\n\t\t\t\tawait this.templatesStore.getMoreWorkflows({\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tthis.showMessage({\n\t\t\t\t\ttitle: 'Error',\n\t\t\t\t\tmessage: 'Could not load more workflows',\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tthis.loadingWorkflows = false;\n\t\t\t}\n\t\t},\n\t\tasync loadCategories() {\n\t\t\ttry {\n\t\t\t\tawait this.templatesStore.getCategories();\n\t\t\t} catch (e) {}\n\t\t\tthis.loadingCategories = false;\n\t\t},\n\t\tasync loadCollections() {\n\t\t\ttry {\n\t\t\t\tthis.loadingCollections = true;\n\t\t\t\tawait this.templatesStore.getCollections({\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t});\n\t\t\t} catch (e) {}\n\n\t\t\tthis.loadingCollections = false;\n\t\t},\n\t\tasync loadWorkflows() {\n\t\t\ttry {\n\t\t\t\tthis.loadingWorkflows = true;\n\t\t\t\tawait this.templatesStore.getWorkflows({\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t});\n\t\t\t\tthis.errorLoadingWorkflows = false;\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorLoadingWorkflows = true;\n\t\t\t}\n\n\t\t\tthis.loadingWorkflows = false;\n\t\t},\n\t\tasync loadWorkflowsAndCollections(initialLoad: boolean) {\n\t\t\tconst search = this.search;\n\t\t\tconst categories = [...this.categories];\n\t\t\tawait Promise.all([this.loadWorkflows(), this.loadCollections()]);\n\t\t\tif (!initialLoad) {\n\t\t\t\tthis.updateSearchTracking(search, categories);\n\t\t\t}\n\t\t},\n\t\tscrollTo(position: number, behavior: ScrollBehavior = 'smooth') {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst contentArea = document.getElementById('content');\n\t\t\t\tif (contentArea) {\n\t\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\t\ttop: position,\n\t\t\t\t\t\tbehavior,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t},\n\t},\n\twatch: {\n\t\tworkflows(newWorkflows) {\n\t\t\tif (newWorkflows.length === 0) {\n\t\t\t\tthis.scrollTo(0);\n\t\t\t}\n\t\t},\n\t},\n\tbeforeRouteLeave(to, from, next) {\n\t\tconst contentArea = document.getElementById('content');\n\t\tif (contentArea) {\n\t\t\t// When leaving this page, store current scroll position in route data\n\t\t\tif (\n\t\t\t\tthis.$route.meta?.setScrollPosition &&\n\t\t\t\ttypeof this.$route.meta.setScrollPosition === 'function'\n\t\t\t) {\n\t\t\t\tthis.$route.meta.setScrollPosition(contentArea.scrollTop);\n\t\t\t}\n\t\t}\n\n\t\tthis.trackSearch();\n\t\tnext();\n\t},\n\tasync mounted() {\n\t\tsetPageTitle('n8n - Templates');\n\t\tvoid this.loadCategories();\n\t\tvoid this.loadWorkflowsAndCollections(true);\n\t\tvoid this.usersStore.showPersonalizationSurvey();\n\n\t\tsetTimeout(() => {\n\t\t\t// Check if there is scroll position saved in route and scroll to it\n\t\t\tif (this.$route.meta && this.$route.meta.scrollOffset > 0) {\n\t\t\t\tthis.scrollTo(this.$route.meta.scrollOffset, 'auto');\n\t\t\t}\n\t\t}, 100);\n\t},\n\tasync created() {\n\t\tif (this.$route.query.search && typeof this.$route.query.search === 'string') {\n\t\t\tthis.search = this.$route.query.search;\n\t\t}\n\n\t\tif (typeof this.$route.query.categories === 'string' && this.$route.query.categories.length) {\n\t\t\tthis.categories = this.$route.query.categories\n\t\t\t\t.split(',')\n\t\t\t\t.map((categoryId) => parseInt(categoryId, 10));\n\t\t\tthis.areCategoriesPrepopulated = true;\n\t\t}\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.wrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.contentWrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tflex-direction: column;\n\t}\n}\n\n.filters {\n\twidth: 200px;\n\tmargin-bottom: var(--spacing-xl);\n\tmargin-right: var(--spacing-2xl);\n}\n\n.search {\n\twidth: 100%;\n\n\t> * {\n\t\tmargin-bottom: var(--spacing-l);\n\t}\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tpadding-left: 0;\n\t}\n}\n\n.header {\n\tmargin-bottom: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","genericHelpers","categories","selected","selectedCategories","id","notSelectedCategories","value","selectedCategory","categoryId","_resolveComponent","_normalizeClass","_ctx","_createElementVNode","_toDisplayString","_hoisted_1","_openBlock","_component_n8n_loading","_createCommentVNode","_component_el_checkbox","_createElementBlock","_Fragment","_renderList","category","_cache","args","_component_n8n_text","_sfc_main","debounceHelper","TemplatesInfoCarousel","TemplateFilters","TemplateList","TemplatesView","useToast","CREATOR_HUB_URL","mapStores","useSettingsStore","useTemplatesStore","useUIStore","useUsersStore","usePostHog","event","VIEWS","page","route","search","query","initialLoad","position","behavior","contentArea","newWorkflows","to","from","next","_a","setPageTitle","_createBlock","_component_TemplatesView","_withCtx","_component_n8n_heading","_component_n8n_button","_component_TemplateFilters","_component_n8n_input","_withDirectives","_createTextVNode","_createVNode","_component_TemplatesInfoCarousel","_vShow","_component_TemplateList"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{m as v}from"./pinia-jX93eZRS.js";import{T as E}from"./TemplateDetails-HasVFCUO.js";import{T as S}from"./TemplatesView-sX4NrNXT.js";import{w as P,aN as I,a7 as B}from"./index--RuZ5wHr.js";import{ax as F,fA as C,fB as f,ab as V,_ as H}from"./n8n-ZKR6bms9.js";import{o as N}from"./templateActions-CZfTXoBx.js";import{G as W,ag as t,l as a,M as s,a9 as A,O as r,p as l,Q as m,I as o,T as i,m as g,S as d,R as u}from"./vendor-2CfOYFi2.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";const D=W({name:"TemplatesWorkflowView",mixins:[P],components:{TemplateDetails:E,TemplatesView:S,WorkflowPreview:I},setup(){return{externalHooks:V()}},computed:{...v(B,F),template(){return this.templatesStore.getFullTemplateById(this.templateId)},templateId(){return Array.isArray(this.$route.params.id)?this.$route.params.id[0]:this.$route.params.id}},data(){return{loading:!0,showPreview:!0,notFoundError:!1}},methods:{async openTemplateSetup(e,n){if(!this.posthogStore.isFeatureEnabled(C)){const p={source:"workflow",template_id:e,wf_template_repo_session_id:this.templatesStore.currentSessionId};this.$telemetry.track("User inserted workflow template",p,{withPostHog:!0}),await this.externalHooks.run("templatesWorkflowView.openWorkflow",p)}await N({posthogStore:this.posthogStore,router:this.$router,templateId:e,inNewBrowserTab:n.metaKey||n.ctrlKey})},onHidePreview(){this.showPreview=!1},scrollToTop(){const e=document.getElementById("content");e&&e.scrollTo({top:0})}},watch:{template(e){e?f(`n8n - Template template: ${e.name}`):f("n8n - Templates")}},async mounted(){if(this.scrollToTop(),this.template&&this.template.full){this.loading=!1;return}try{await this.templatesStore.fetchTemplateById(this.templateId)}catch{this.notFoundError=!0}this.loading=!1}}),M="_wrapper_1c2lm_5",z="_notFound_1c2lm_10",R="_title_1c2lm_14",K="_button_1c2lm_18",L="_image_1c2lm_22",U="_content_1c2lm_33",G="_markdown_1c2lm_44",O="_details_1c2lm_55",Q={wrapper:M,notFound:z,title:R,button:K,image:L,content:U,markdown:G,details:O};function X(e,n,p,q,J,Y){const k=t("n8n-heading"),w=t("n8n-text"),c=t("n8n-loading"),h=t("n8n-button"),T=t("WorkflowPreview"),y=t("n8n-markdown"),_=t("TemplateDetails"),b=t("TemplatesView");return a(),s(b,{goBackEnabled:!0},A({header:r(()=>[e.notFoundError?(a(),g("div",{key:1,class:o(e.$style.notFound)},[i(w,{color:"text-base"},{default:r(()=>[d(u(e.$locale.baseText("templates.workflowsNotFound")),1)]),_:1})],2)):(a(),g("div",{key:0,class:o(e.$style.wrapper)},[l("div",{class:o(e.$style.title)},[e.template&&e.template.name?(a(),s(k,{key:0,tag:"h1",size:"2xlarge"},{default:r(()=>[d(u(e.template.name),1)]),_:1})):m("",!0),e.template&&e.template.name?(a(),s(w,{key:1,color:"text-base",size:"small"},{default:r(()=>[d(u(e.$locale.baseText("generic.workflow")),1)]),_:1})):m("",!0),i(c,{loading:!e.template||!e.template.name,rows:2,variant:"h1"},null,8,["loading"])],2),l("div",{class:o(e.$style.button)},[e.template?(a(),s(h,{key:0,"data-test-id":"use-template-button",label:e.$locale.baseText("template.buttons.useThisWorkflowButton"),size:"large",onClick:n[0]||(n[0]=$=>e.openTemplateSetup(e.templateId,$))},null,8,["label"])):m("",!0),i(c,{loading:!e.template,rows:1,variant:"button"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:r(()=>[l("div",{class:o(e.$style.image)},[e.showPreview?(a(),s(T,{key:0,loading:e.loading,workflow:e.template&&e.template.workflow,onClose:e.onHidePreview},null,8,["loading","workflow","onClose"])):m("",!0)],2),l("div",{class:o(e.$style.content)},[l("div",{class:o(e.$style.markdown),"data-test-id":"template-description"},[i(y,{content:e.template&&e.template.description,images:e.template&&e.template.image,loading:e.loading},null,8,["content","images","loading"])],2),l("div",{class:o(e.$style.details)},[i(_,{"block-title":e.$locale.baseText("template.details.appsInTheWorkflow"),loading:e.loading,template:e.template},null,8,["block-title","loading","template"])],2)],2)]),key:"0"}]),1024)}const j={$style:Q},Be=H(D,[["render",X],["__cssModules",j]]);export{Be as default};
2
- //# sourceMappingURL=TemplatesWorkflowView-OxfZO4yX.js.map
1
+ import{m as v}from"./pinia-jX93eZRS.js";import{T as E}from"./TemplateDetails-qWnefMYx.js";import{T as S}from"./TemplatesView-sX4NrNXT.js";import{w as P,aN as I,a7 as B}from"./index-RXjMHIPR.js";import{ax as F,fA as C,fB as f,ab as V,_ as H}from"./n8n-ZKR6bms9.js";import{o as N}from"./templateActions-y8msVyEB.js";import{G as W,ag as t,l as a,M as s,a9 as A,O as r,p as l,Q as m,I as o,T as i,m as g,S as d,R as u}from"./vendor-2CfOYFi2.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";const D=W({name:"TemplatesWorkflowView",mixins:[P],components:{TemplateDetails:E,TemplatesView:S,WorkflowPreview:I},setup(){return{externalHooks:V()}},computed:{...v(B,F),template(){return this.templatesStore.getFullTemplateById(this.templateId)},templateId(){return Array.isArray(this.$route.params.id)?this.$route.params.id[0]:this.$route.params.id}},data(){return{loading:!0,showPreview:!0,notFoundError:!1}},methods:{async openTemplateSetup(e,n){if(!this.posthogStore.isFeatureEnabled(C)){const p={source:"workflow",template_id:e,wf_template_repo_session_id:this.templatesStore.currentSessionId};this.$telemetry.track("User inserted workflow template",p,{withPostHog:!0}),await this.externalHooks.run("templatesWorkflowView.openWorkflow",p)}await N({posthogStore:this.posthogStore,router:this.$router,templateId:e,inNewBrowserTab:n.metaKey||n.ctrlKey})},onHidePreview(){this.showPreview=!1},scrollToTop(){const e=document.getElementById("content");e&&e.scrollTo({top:0})}},watch:{template(e){e?f(`n8n - Template template: ${e.name}`):f("n8n - Templates")}},async mounted(){if(this.scrollToTop(),this.template&&this.template.full){this.loading=!1;return}try{await this.templatesStore.fetchTemplateById(this.templateId)}catch{this.notFoundError=!0}this.loading=!1}}),M="_wrapper_1c2lm_5",z="_notFound_1c2lm_10",R="_title_1c2lm_14",K="_button_1c2lm_18",L="_image_1c2lm_22",U="_content_1c2lm_33",G="_markdown_1c2lm_44",O="_details_1c2lm_55",Q={wrapper:M,notFound:z,title:R,button:K,image:L,content:U,markdown:G,details:O};function X(e,n,p,q,J,Y){const k=t("n8n-heading"),w=t("n8n-text"),c=t("n8n-loading"),h=t("n8n-button"),T=t("WorkflowPreview"),y=t("n8n-markdown"),_=t("TemplateDetails"),b=t("TemplatesView");return a(),s(b,{goBackEnabled:!0},A({header:r(()=>[e.notFoundError?(a(),g("div",{key:1,class:o(e.$style.notFound)},[i(w,{color:"text-base"},{default:r(()=>[d(u(e.$locale.baseText("templates.workflowsNotFound")),1)]),_:1})],2)):(a(),g("div",{key:0,class:o(e.$style.wrapper)},[l("div",{class:o(e.$style.title)},[e.template&&e.template.name?(a(),s(k,{key:0,tag:"h1",size:"2xlarge"},{default:r(()=>[d(u(e.template.name),1)]),_:1})):m("",!0),e.template&&e.template.name?(a(),s(w,{key:1,color:"text-base",size:"small"},{default:r(()=>[d(u(e.$locale.baseText("generic.workflow")),1)]),_:1})):m("",!0),i(c,{loading:!e.template||!e.template.name,rows:2,variant:"h1"},null,8,["loading"])],2),l("div",{class:o(e.$style.button)},[e.template?(a(),s(h,{key:0,"data-test-id":"use-template-button",label:e.$locale.baseText("template.buttons.useThisWorkflowButton"),size:"large",onClick:n[0]||(n[0]=$=>e.openTemplateSetup(e.templateId,$))},null,8,["label"])):m("",!0),i(c,{loading:!e.template,rows:1,variant:"button"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:r(()=>[l("div",{class:o(e.$style.image)},[e.showPreview?(a(),s(T,{key:0,loading:e.loading,workflow:e.template&&e.template.workflow,onClose:e.onHidePreview},null,8,["loading","workflow","onClose"])):m("",!0)],2),l("div",{class:o(e.$style.content)},[l("div",{class:o(e.$style.markdown),"data-test-id":"template-description"},[i(y,{content:e.template&&e.template.description,images:e.template&&e.template.image,loading:e.loading},null,8,["content","images","loading"])],2),l("div",{class:o(e.$style.details)},[i(_,{"block-title":e.$locale.baseText("template.details.appsInTheWorkflow"),loading:e.loading,template:e.template},null,8,["block-title","loading","template"])],2)],2)]),key:"0"}]),1024)}const j={$style:Q},Be=H(D,[["render",X],["__cssModules",j]]);export{Be as default};
2
+ //# sourceMappingURL=TemplatesWorkflowView-VbJuwYVl.js.map