n8n-editor-ui 1.41.0 → 1.41.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 (121) hide show
  1. package/.turbo/turbo-build.log +61 -61
  2. package/dist/assets/{AuthView-E0Dwqa78.js → AuthView-CMX_-yPy.js} +2 -2
  3. package/dist/assets/{AuthView-E0Dwqa78.js.map → AuthView-CMX_-yPy.js.map} +1 -1
  4. package/dist/assets/{CanvasControls-yrXCY2V6.js → CanvasControls-9oKgZX9B.js} +2 -2
  5. package/dist/assets/{CanvasControls-yrXCY2V6.js.map → CanvasControls-9oKgZX9B.js.map} +1 -1
  6. package/dist/assets/{ChangePasswordView-kHBWSwn5.js → ChangePasswordView-GG3ESv5E.js} +2 -2
  7. package/dist/assets/{ChangePasswordView-kHBWSwn5.js.map → ChangePasswordView-GG3ESv5E.js.map} +1 -1
  8. package/dist/assets/{CollectionParameter-ZuNQUd29.js → CollectionParameter-1UnufhEZ.js} +2 -2
  9. package/dist/assets/CollectionParameter-1UnufhEZ.js.map +1 -0
  10. package/dist/assets/{CredentialsView-24rpr6nX.js → CredentialsView-TrGa_IpW.js} +2 -2
  11. package/dist/assets/{CredentialsView-24rpr6nX.js.map → CredentialsView-TrGa_IpW.js.map} +1 -1
  12. package/dist/assets/{ExecutionsFilter-RyBW2SgR.js → ExecutionsFilter-W0_jymTM.js} +2 -2
  13. package/dist/assets/{ExecutionsFilter-RyBW2SgR.js.map → ExecutionsFilter-W0_jymTM.js.map} +1 -1
  14. package/dist/assets/{ExecutionsView-NIusemYP.js → ExecutionsView-P-nSEBpq.js} +2 -2
  15. package/dist/assets/{ExecutionsView-NIusemYP.js.map → ExecutionsView-P-nSEBpq.js.map} +1 -1
  16. package/dist/assets/{ForgotMyPasswordView-ebrry8c_.js → ForgotMyPasswordView-_Ft-h_Xq.js} +2 -2
  17. package/dist/assets/{ForgotMyPasswordView-ebrry8c_.js.map → ForgotMyPasswordView-_Ft-h_Xq.js.map} +1 -1
  18. package/dist/assets/{MainHeader-JJIRXuyj.js → MainHeader-UFj-n8nH.js} +2 -2
  19. package/dist/assets/{MainHeader-JJIRXuyj.js.map → MainHeader-UFj-n8nH.js.map} +1 -1
  20. package/dist/assets/{MainSidebar-KnXGjnqU.js → MainSidebar-H7A2NfnT.js} +2 -2
  21. package/dist/assets/{MainSidebar-KnXGjnqU.js.map → MainSidebar-H7A2NfnT.js.map} +1 -1
  22. package/dist/assets/{NodeCreation-01VRbmJn.js → NodeCreation-MVULkw2n.js} +3 -3
  23. package/dist/assets/{NodeCreation-01VRbmJn.js.map → NodeCreation-MVULkw2n.js.map} +1 -1
  24. package/dist/assets/{NodeCreator-D_gQXSbT.js → NodeCreator-NjQetiNP.js} +2 -2
  25. package/dist/assets/{NodeCreator-D_gQXSbT.js.map → NodeCreator-NjQetiNP.js.map} +1 -1
  26. package/dist/assets/{NodeList-Ysq3Cjbn.js → NodeList-f4t5_e24.js} +2 -2
  27. package/dist/assets/{NodeList-Ysq3Cjbn.js.map → NodeList-f4t5_e24.js.map} +1 -1
  28. package/dist/assets/{NodeView-QjQV3eFX.js → NodeView-kA0j8oya.js} +4 -4
  29. package/dist/assets/{NodeView-QjQV3eFX.js.map → NodeView-kA0j8oya.js.map} +1 -1
  30. package/dist/assets/{RunDataAi-wbEK-oHX.js → RunDataAi-9Rk5nlrG.js} +2 -2
  31. package/dist/assets/{RunDataAi-wbEK-oHX.js.map → RunDataAi-9Rk5nlrG.js.map} +1 -1
  32. package/dist/assets/{RunDataJson-YtVT_k9o.js → RunDataJson-3HvvCXQv.js} +3 -3
  33. package/dist/assets/{RunDataJson-YtVT_k9o.js.map → RunDataJson-3HvvCXQv.js.map} +1 -1
  34. package/dist/assets/{RunDataJsonActions-dl7uUHxF.js → RunDataJsonActions-QVURaY0g.js} +2 -2
  35. package/dist/assets/{RunDataJsonActions-dl7uUHxF.js.map → RunDataJsonActions-QVURaY0g.js.map} +1 -1
  36. package/dist/assets/{RunDataSchema-zsup9Psk.js → RunDataSchema-8AcA4SSx.js} +2 -2
  37. package/dist/assets/{RunDataSchema-zsup9Psk.js.map → RunDataSchema-8AcA4SSx.js.map} +1 -1
  38. package/dist/assets/{RunDataTable-4PVwCliN.js → RunDataTable-aySP3LG2.js} +2 -2
  39. package/dist/assets/{RunDataTable-4PVwCliN.js.map → RunDataTable-aySP3LG2.js.map} +1 -1
  40. package/dist/assets/{SamlOnboarding-a7AOJSPY.js → SamlOnboarding-g5DOLc7y.js} +2 -2
  41. package/dist/assets/{SamlOnboarding-a7AOJSPY.js.map → SamlOnboarding-g5DOLc7y.js.map} +1 -1
  42. package/dist/assets/{SettingsApiView-MKVmxKrc.js → SettingsApiView-368bFhYh.js} +2 -2
  43. package/dist/assets/{SettingsApiView-MKVmxKrc.js.map → SettingsApiView-368bFhYh.js.map} +1 -1
  44. package/dist/assets/{SettingsCommunityNodesView-JSEAJRmQ.js → SettingsCommunityNodesView-4ma9ZrA6.js} +2 -2
  45. package/dist/assets/{SettingsCommunityNodesView-JSEAJRmQ.js.map → SettingsCommunityNodesView-4ma9ZrA6.js.map} +1 -1
  46. package/dist/assets/{SettingsExternalSecrets-LATcSwCb.js → SettingsExternalSecrets-anO5H_X6.js} +2 -2
  47. package/dist/assets/{SettingsExternalSecrets-LATcSwCb.js.map → SettingsExternalSecrets-anO5H_X6.js.map} +1 -1
  48. package/dist/assets/{SettingsFakeDoorView-JXYglIiV.js → SettingsFakeDoorView-DP8hJH_b.js} +2 -2
  49. package/dist/assets/{SettingsFakeDoorView-JXYglIiV.js.map → SettingsFakeDoorView-DP8hJH_b.js.map} +1 -1
  50. package/dist/assets/{SettingsLdapView-2qYzfmuL.js → SettingsLdapView-TVoyUgkx.js} +2 -2
  51. package/dist/assets/{SettingsLdapView-2qYzfmuL.js.map → SettingsLdapView-TVoyUgkx.js.map} +1 -1
  52. package/dist/assets/{SettingsLogStreamingView-Xc6EScgx.js → SettingsLogStreamingView-IIFjEkjs.js} +2 -2
  53. package/dist/assets/{SettingsLogStreamingView-Xc6EScgx.js.map → SettingsLogStreamingView-IIFjEkjs.js.map} +1 -1
  54. package/dist/assets/{SettingsSourceControl-Mb0LqGSl.js → SettingsSourceControl-1zDUY0dl.js} +2 -2
  55. package/dist/assets/{SettingsSourceControl-Mb0LqGSl.js.map → SettingsSourceControl-1zDUY0dl.js.map} +1 -1
  56. package/dist/assets/{SettingsSso-2YEXaMhF.js → SettingsSso-7dAOqmaA.js} +2 -2
  57. package/dist/assets/{SettingsSso-2YEXaMhF.js.map → SettingsSso-7dAOqmaA.js.map} +1 -1
  58. package/dist/assets/{SettingsUsageAndPlan-_C19BOT1.js → SettingsUsageAndPlan-0b_7OZCC.js} +2 -2
  59. package/dist/assets/{SettingsUsageAndPlan-_C19BOT1.js.map → SettingsUsageAndPlan-0b_7OZCC.js.map} +1 -1
  60. package/dist/assets/{SettingsUsersView-salH__qs.js → SettingsUsersView-0AZ_F16e.js} +2 -2
  61. package/dist/assets/{SettingsUsersView-salH__qs.js.map → SettingsUsersView-0AZ_F16e.js.map} +1 -1
  62. package/dist/assets/{SettingsView-EBt-ouA4.js → SettingsView-pF2qlNhK.js} +2 -2
  63. package/dist/assets/SettingsView-pF2qlNhK.js.map +1 -0
  64. package/dist/assets/{SetupView-T7JQiE1O.js → SetupView-IPdjd4om.js} +2 -2
  65. package/dist/assets/{SetupView-T7JQiE1O.js.map → SetupView-IPdjd4om.js.map} +1 -1
  66. package/dist/assets/{SetupWorkflowCredentialsButton-lDl1ksax.js → SetupWorkflowCredentialsButton-fL7BC8Hp.js} +2 -2
  67. package/dist/assets/{SetupWorkflowCredentialsButton-lDl1ksax.js.map → SetupWorkflowCredentialsButton-fL7BC8Hp.js.map} +1 -1
  68. package/dist/assets/{SetupWorkflowFromTemplateView-uEG55eR-.js → SetupWorkflowFromTemplateView-mDNSG38Q.js} +2 -2
  69. package/dist/assets/{SetupWorkflowFromTemplateView-uEG55eR-.js.map → SetupWorkflowFromTemplateView-mDNSG38Q.js.map} +1 -1
  70. package/dist/assets/{SigninView-tsJLDDbt.js → SigninView-4mpqXNHu.js} +2 -2
  71. package/dist/assets/{SigninView-tsJLDDbt.js.map → SigninView-4mpqXNHu.js.map} +1 -1
  72. package/dist/assets/{SignupView-ckdGMylG.js → SignupView-v6AVy0zJ.js} +2 -2
  73. package/dist/assets/{SignupView-ckdGMylG.js.map → SignupView-v6AVy0zJ.js.map} +1 -1
  74. package/dist/assets/{TemplateDetails-YEZlo0n4.js → TemplateDetails-WQVyxQi7.js} +2 -2
  75. package/dist/assets/{TemplateDetails-YEZlo0n4.js.map → TemplateDetails-WQVyxQi7.js.map} +1 -1
  76. package/dist/assets/{TemplateList-OGWLmWk_.js → TemplateList--WJ98ZVH.js} +2 -2
  77. package/dist/assets/{TemplateList-OGWLmWk_.js.map → TemplateList--WJ98ZVH.js.map} +1 -1
  78. package/dist/assets/{TemplatesCollectionView-Fx5qyXc6.js → TemplatesCollectionView-g59Pu268.js} +2 -2
  79. package/dist/assets/{TemplatesCollectionView-Fx5qyXc6.js.map → TemplatesCollectionView-g59Pu268.js.map} +1 -1
  80. package/dist/assets/{TemplatesInfoCarousel-oLwAv_o3.js → TemplatesInfoCarousel-Nq4oRyBi.js} +2 -2
  81. package/dist/assets/{TemplatesInfoCarousel-oLwAv_o3.js.map → TemplatesInfoCarousel-Nq4oRyBi.js.map} +1 -1
  82. package/dist/assets/{TemplatesSearchView-TtSL2qyI.js → TemplatesSearchView-Lv0e5mOk.js} +2 -2
  83. package/dist/assets/{TemplatesSearchView-TtSL2qyI.js.map → TemplatesSearchView-Lv0e5mOk.js.map} +1 -1
  84. package/dist/assets/{TemplatesWorkflowView-Ipt1HHPc.js → TemplatesWorkflowView-FoPXbc_4.js} +2 -2
  85. package/dist/assets/{TemplatesWorkflowView-Ipt1HHPc.js.map → TemplatesWorkflowView-FoPXbc_4.js.map} +1 -1
  86. package/dist/assets/{VariablesView-pLmlCm20.js → VariablesView-Sg4v_4Ai.js} +2 -2
  87. package/dist/assets/{VariablesView-pLmlCm20.js.map → VariablesView-Sg4v_4Ai.js.map} +1 -1
  88. package/dist/assets/{WorkerView-Du8mpTon.js → WorkerView-y-y5Q5E5.js} +2 -2
  89. package/dist/assets/{WorkerView-Du8mpTon.js.map → WorkerView-y-y5Q5E5.js.map} +1 -1
  90. package/dist/assets/{WorkflowActivator-MuCzpXdv.js → WorkflowActivator-vtOaSPI6.js} +2 -2
  91. package/dist/assets/{WorkflowActivator-MuCzpXdv.js.map → WorkflowActivator-vtOaSPI6.js.map} +1 -1
  92. package/dist/assets/{WorkflowExecutionsInfoAccordion-9gkfchSQ.js → WorkflowExecutionsInfoAccordion-Gm7eM0Un.js} +2 -2
  93. package/dist/assets/{WorkflowExecutionsInfoAccordion-9gkfchSQ.js.map → WorkflowExecutionsInfoAccordion-Gm7eM0Un.js.map} +1 -1
  94. package/dist/assets/{WorkflowExecutionsLandingPage-g4QNNuc4.js → WorkflowExecutionsLandingPage-C_oVBqy4.js} +2 -2
  95. package/dist/assets/{WorkflowExecutionsLandingPage-g4QNNuc4.js.map → WorkflowExecutionsLandingPage-C_oVBqy4.js.map} +1 -1
  96. package/dist/assets/{WorkflowExecutionsPreview-KNJgPBbn.js → WorkflowExecutionsPreview-Yw0HRwQz.js} +2 -2
  97. package/dist/assets/{WorkflowExecutionsPreview-KNJgPBbn.js.map → WorkflowExecutionsPreview-Yw0HRwQz.js.map} +1 -1
  98. package/dist/assets/{WorkflowExecutionsView-Iwwaw9Lt.js → WorkflowExecutionsView-dwh6ZDgY.js} +2 -2
  99. package/dist/assets/{WorkflowExecutionsView-Iwwaw9Lt.js.map → WorkflowExecutionsView-dwh6ZDgY.js.map} +1 -1
  100. package/dist/assets/{WorkflowHistory-HxH8_2Dt.js → WorkflowHistory-RGKALSm6.js} +2 -2
  101. package/dist/assets/{WorkflowHistory-HxH8_2Dt.js.map → WorkflowHistory-RGKALSm6.js.map} +1 -1
  102. package/dist/assets/{WorkflowOnboardingView-KirfsyFh.js → WorkflowOnboardingView-kAh_YIAL.js} +2 -2
  103. package/dist/assets/{WorkflowOnboardingView-KirfsyFh.js.map → WorkflowOnboardingView-kAh_YIAL.js.map} +1 -1
  104. package/dist/assets/{WorkflowsView-SJ6W5Ten.js → WorkflowsView-_nHq94Wq.js} +2 -2
  105. package/dist/assets/{WorkflowsView-SJ6W5Ten.js.map → WorkflowsView-_nHq94Wq.js.map} +1 -1
  106. package/dist/assets/{cloud-WKIHJYyR.js → cloud-jEANLTrV.js} +2 -2
  107. package/dist/assets/{cloud-WKIHJYyR.js.map → cloud-jEANLTrV.js.map} +1 -1
  108. package/dist/assets/{index-Qw68KAhz.js → index-6M_Mo9yq.js} +4 -4
  109. package/dist/assets/{index-Qw68KAhz.js.map → index-6M_Mo9yq.js.map} +1 -1
  110. package/dist/assets/{templateActions-5n_gDrp9.js → templateActions-l9fJr0Cu.js} +2 -2
  111. package/dist/assets/{templateActions-5n_gDrp9.js.map → templateActions-l9fJr0Cu.js.map} +1 -1
  112. package/dist/assets/{useExecutionDebugging-bM31shhY.js → useExecutionDebugging-ndesKh44.js} +2 -2
  113. package/dist/assets/{useExecutionDebugging-bM31shhY.js.map → useExecutionDebugging-ndesKh44.js.map} +1 -1
  114. package/dist/assets/{usePushConnection-YMVPmkf5.js → usePushConnection-vhkd7pw_.js} +2 -2
  115. package/dist/assets/{usePushConnection-YMVPmkf5.js.map → usePushConnection-vhkd7pw_.js.map} +1 -1
  116. package/dist/assets/{workflowActivate-L9KnNQBb.js → workflowActivate-dwxhdtFU.js} +2 -2
  117. package/dist/assets/{workflowActivate-L9KnNQBb.js.map → workflowActivate-dwxhdtFU.js.map} +1 -1
  118. package/dist/index.html +1 -1
  119. package/package.json +1 -1
  120. package/dist/assets/CollectionParameter-ZuNQUd29.js.map +0 -1
  121. package/dist/assets/SettingsView-EBt-ouA4.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TemplatesInfoCarousel-oLwAv_o3.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 v-if=\"!loading\" #header>\n\t\t\t<span :class=\"$style.title\" v-text=\"title\" />\n\t\t</template>\n\t\t<n8n-loading :loading=\"loading\" :rows=\"3\" variant=\"p\" />\n\t\t<template v-if=\"!loading\" #footer>\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';\n\nexport default defineComponent({\n\tname: 'Card',\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: 235px;\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\" :show-more=\"false\" />\n\t\t</template>\n\t</Card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport Card from '@/components/CollectionWorkflowCard.vue';\nimport NodeList from '@/components/NodeList.vue';\n\nexport default defineComponent({\n\tname: 'TemplatesInfoCard',\n\tcomponents: {\n\t\tCard,\n\t\tNodeList,\n\t},\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});\n</script>\n\n<style lang=\"scss\" module></style>\n","<template>\n\t<div v-show=\"loading || collections.length\" :class=\"$style.container\">\n\t\t<agile\n\t\t\tref=\"slider\"\n\t\t\t:dots=\"false\"\n\t\t\t:nav-buttons=\"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\t:key=\"collection.id\"\n\t\t\t\tdata-test-id=\"templates-info-card\"\n\t\t\t\t:collection=\"collection\"\n\t\t\t\t:show-item-count=\"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\ntype SliderRef = InstanceType<typeof VueAgile>;\n\nexport default defineComponent({\n\tname: 'TemplatesInfoCarousel',\n\tcomponents: {\n\t\tCard,\n\t\tTemplatesInfoCard,\n\t\tagile: VueAgile,\n\t},\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\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\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\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\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});\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\t&__track {\n\t\twidth: 50px;\n\t}\n}\n</style>\n"],"names":["_sfc_main$2","defineComponent","_component_n8n_card","_resolveComponent","$attrs","_createBlock","_mergeProps","_ctx","_createSlots","_withCtx","loading","_createVNode","_component_n8n_loading","_createElementVNode","_normalizeClass","_toDisplayString","_hoisted_1","_renderSlot","_sfc_main$1","Card","NodeList","_openBlock","_component_Card","_normalizeStyle","_withDirectives","_component_n8n_text","_createTextVNode","_component_NodeList","_sfc_main","TemplatesInfoCard","VueAgile","sliderRef","width","scrollWidth","scrollLeft","event","id","_component_agile","_createElementBlock","_Fragment","_renderList","n","collection","_component_TemplatesInfoCard","onCardClick","_cache","args","showNavigation","carouselScrollPosition","scrollEnd"],"mappings":"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"}
1
+ {"version":3,"file":"TemplatesInfoCarousel-Nq4oRyBi.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 v-if=\"!loading\" #header>\n\t\t\t<span :class=\"$style.title\" v-text=\"title\" />\n\t\t</template>\n\t\t<n8n-loading :loading=\"loading\" :rows=\"3\" variant=\"p\" />\n\t\t<template v-if=\"!loading\" #footer>\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';\n\nexport default defineComponent({\n\tname: 'Card',\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: 235px;\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\" :show-more=\"false\" />\n\t\t</template>\n\t</Card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport Card from '@/components/CollectionWorkflowCard.vue';\nimport NodeList from '@/components/NodeList.vue';\n\nexport default defineComponent({\n\tname: 'TemplatesInfoCard',\n\tcomponents: {\n\t\tCard,\n\t\tNodeList,\n\t},\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});\n</script>\n\n<style lang=\"scss\" module></style>\n","<template>\n\t<div v-show=\"loading || collections.length\" :class=\"$style.container\">\n\t\t<agile\n\t\t\tref=\"slider\"\n\t\t\t:dots=\"false\"\n\t\t\t:nav-buttons=\"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\t:key=\"collection.id\"\n\t\t\t\tdata-test-id=\"templates-info-card\"\n\t\t\t\t:collection=\"collection\"\n\t\t\t\t:show-item-count=\"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\ntype SliderRef = InstanceType<typeof VueAgile>;\n\nexport default defineComponent({\n\tname: 'TemplatesInfoCarousel',\n\tcomponents: {\n\t\tCard,\n\t\tTemplatesInfoCard,\n\t\tagile: VueAgile,\n\t},\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\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\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\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\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});\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\t&__track {\n\t\twidth: 50px;\n\t}\n}\n</style>\n"],"names":["_sfc_main$2","defineComponent","_component_n8n_card","_resolveComponent","$attrs","_createBlock","_mergeProps","_ctx","_createSlots","_withCtx","loading","_createVNode","_component_n8n_loading","_createElementVNode","_normalizeClass","_toDisplayString","_hoisted_1","_renderSlot","_sfc_main$1","Card","NodeList","_openBlock","_component_Card","_normalizeStyle","_withDirectives","_component_n8n_text","_createTextVNode","_component_NodeList","_sfc_main","TemplatesInfoCard","VueAgile","sliderRef","width","scrollWidth","scrollLeft","event","id","_component_agile","_createElementBlock","_Fragment","_renderList","n","collection","_component_TemplatesInfoCard","onCardClick","_cache","args","showNavigation","carouselScrollPosition","scrollEnd"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{m as S}from"./pinia-28uZ5ZtB.js";import{T as A}from"./TemplatesInfoCarousel-oLwAv_o3.js";import{h as $}from"./index-Qw68KAhz.js";import{G as b,l as n,m as h,p as i,I as s,R as p,T as a,Q as u,O as c,S as m,F as E,a7 as M,ag as l,M as P,V as U,U as V}from"./vendor-KLOX9vbo.js";import{_,aB as I,e as B,g9 as F,aL as R,f as q,u as z,l as H,g3 as Q,V as T}from"./n8n-0pza0mdA.js";import{T as j}from"./TemplateList-OGWLmWk_.js";import{T as N}from"./TemplatesView-KPnGjjin.js";import"./NodeList-Ysq3Cjbn.js";import"./vue-agile-eBX40Hen.js";import"./lodash-es-wI9avrph.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.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-AlqFM-P6.js";import"./uuid-McvpxQtQ.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./luxon-ZRIU05qF.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./@vueuse/core-JpwZAlxf.js";import"./esprima-next-ulPLCZ1Z.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";const D=b({name:"TemplateFilters",props:{categories:{type:Array,default:()=>[]},sortOnPopulate:{type:Boolean,default:!1},expandLimit:{type:Number,default:12},loading:{type:Boolean},selected:{type:Array,default:()=>[]}},emits:["clearAll","select","clear"],data(){return{collapsed:!0,sortedCategories:[]}},computed:{...S($),allSelected(){return this.selected.length===0}},watch:{sortOnPopulate:{handler(e){e&&this.sortCategories()},immediate:!0},categories:{handler(e){e.length>0&&this.sortCategories()},immediate:!0}},methods:{sortCategories(){if(!this.sortOnPopulate)this.sortedCategories=this.categories;else{const e=this.selected||[],t=this.categories.filter(r=>e.includes(r)),o=this.categories.filter(r=>!e.includes(r));this.sortedCategories=t.concat(o)}},collapseAction(){this.collapsed=!1},handleCheckboxChanged(e,t){this.$emit(e?"select":"clear",t)},isSelected(e){return this.selected.includes(e)},resetCategories(){this.$emit("clearAll")}}}),K="_title_1sb10_1",G="_categories_1sb10_6",J="_item_1sb10_11",X="_button_1sb10_18",Y={title:K,categories:G,item:J,button:X},Z=["textContent"],x=["data-test-id"];function ee(e,t,o,r,g,v){const f=l("n8n-loading"),C=l("el-checkbox"),w=l("n8n-text");return n(),h("div",{class:s([e.$style.filters,"template-filters"]),"data-test-id":"templates-filter-container"},[i("div",{class:s(e.$style.title),textContent:p(e.$locale.baseText("templates.categoriesHeading"))},null,10,Z),e.loading?(n(),h("div",{key:0,class:s(e.$style.list)},[a(f,{loading:e.loading,rows:e.expandLimit},null,8,["loading","rows"])],2)):u("",!0),e.loading?u("",!0):(n(),h("ul",{key:1,class:s(e.$style.categories)},[i("li",{class:s(e.$style.item),"data-test-id":"template-filter-all-categories"},[a(C,{"model-value":e.allSelected,"onUpdate:modelValue":t[0]||(t[0]=()=>e.resetCategories())},{default:c(()=>[m(p(e.$locale.baseText("templates.allCategories")),1)]),_:1},8,["model-value"])],2),(n(!0),h(E,null,M(e.collapsed?e.sortedCategories.slice(0,e.expandLimit):e.sortedCategories,(d,y)=>(n(),h("li",{key:y,class:s(e.$style.item),"data-test-id":`template-filter-${d.name.toLowerCase().replaceAll(" ","-")}`},[a(C,{"model-value":e.isSelected(d),"onUpdate:modelValue":k=>e.handleCheckboxChanged(k,d)},{default:c(()=>[m(p(d.name),1)]),_:2},1032,["model-value","onUpdate:modelValue"])],10,x))),128))],2)),e.sortedCategories.length>e.expandLimit&&e.collapsed&&!e.loading?(n(),h("div",{key:2,class:s(e.$style.button),"data-test-id":"expand-categories-button",onClick:t[1]||(t[1]=(...d)=>e.collapseAction&&e.collapseAction(...d))},[a(w,{size:"small",color:"primary"},{default:c(()=>[m(" + "+p(`${e.sortedCategories.length-e.expandLimit} more`),1)]),_:1})],2)):u("",!0)],2)}const te={$style:Y},oe=_(D,[["render",ee],["__cssModules",te]]),se=b({name:"TemplatesSearchView",components:{TemplatesInfoCarousel:A,TemplateFilters:oe,TemplateList:j,TemplatesView:N},setup(){const{callDebounced:e}=I();return{callDebounced:e,...B()}},data(){return{areCategoriesPrepopulated:!1,categories:[],loading:!0,loadingCategories:!0,loadingCollections:!0,loadingWorkflows:!0,search:"",searchEventToTrack:null,errorLoadingWorkflows:!1,creatorHubUrl:F}},computed:{...S(H,$,z,q,R),totalWorkflows(){return this.templatesStore.getSearchedWorkflowsTotal(this.createQueryObject("name"))},workflows(){return this.templatesStore.getSearchedWorkflows(this.createQueryObject("name"))??[]},collections(){return this.templatesStore.getSearchedCollections(this.createQueryObject("id"))??[]},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},nothingFound(){return!this.loadingWorkflows&&!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0}},watch:{workflows(e){e.length===0&&this.scrollTo(0)}},async mounted(){Q("n8n - Templates"),await this.loadCategories(),this.loadWorkflowsAndCollections(!0),this.usersStore.showPersonalizationSurvey(),this.restoreSearchFromRoute(),setTimeout(()=>{this.$route.meta&&this.$route.meta.scrollOffset>0&&this.scrollTo(this.$route.meta.scrollOffset,"auto")},100)},methods:{createQueryObject(e){return{categories:this.categories.map(t=>e==="name"?t.name:String(t.id)),search:this.search}},restoreSearchFromRoute(){let e=!1;if(this.$route.query.search&&typeof this.$route.query.search=="string"&&(this.search=this.$route.query.search,e=!0),typeof this.$route.query.categories=="string"&&this.$route.query.categories.length){const t=this.$route.query.categories.split(",");this.categories=this.templatesStore.allCategories.filter(o=>t.includes(o.id.toString())),e=!0}e&&(this.updateSearch(),this.trackCategories(),this.areCategoriesPrepopulated=!0)},onOpenCollection({event:e,id:t}){this.navigateTo(e,T.COLLECTION,t)},onOpenTemplate({event:e,id:t}){this.navigateTo(e,T.TEMPLATE,t)},navigateTo(e,t,o){if(e.metaKey||e.ctrlKey){const r=this.$router.resolve({name:t,params:{id:o}});window.open(r.href,"_blank");return}else this.$router.push({name:t,params:{id:o}})},updateSearch(){this.updateQueryParam(this.search,this.categories.map(e=>e.id).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(this.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.id!==e.id),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,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.map(e=>e.name),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.map(e=>String(e.id)),search:this.search})}catch{}this.loadingCollections=!1},async loadWorkflows(){try{this.loadingWorkflows=!0,await this.templatesStore.getWorkflows({search:this.search,categories:this.categories.map(e=>e.name)}),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.map(r=>r.id))},scrollTo(e,t="smooth"){setTimeout(()=>{const o=document.getElementById("content");o&&o.scrollTo({top:e,behavior:t})},0)}},beforeRouteLeave(e,t,o){var g;const r=document.getElementById("content");r&&(g=this.$route.meta)!=null&&g.setScrollPosition&&typeof this.$route.meta.setScrollPosition=="function"&&this.$route.meta.setScrollPosition(r.scrollTop),this.trackSearch(),o()}}),ae="_wrapper_1el39_1",re="_contentWrapper_1el39_6",le="_filters_1el39_16",ie="_search_1el39_22",ne="_header_1el39_34",ce={wrapper:ae,contentWrapper:re,filters:le,search:ie,header:ne},de=["textContent"],he=["innerHTML"];function pe(e,t,o,r,g,v){const f=l("n8n-heading"),C=l("n8n-button"),w=l("TemplateFilters"),d=l("font-awesome-icon"),y=l("n8n-input"),k=l("TemplatesInfoCarousel"),W=l("TemplateList"),L=l("n8n-text"),O=l("TemplatesView");return n(),P(O,null,{header:c(()=>[i("div",{class:s(e.$style.wrapper)},[i("div",{class:s(e.$style.title)},[a(f,{tag:"h1",size:"2xlarge"},{default:c(()=>[m(p(e.$locale.baseText("templates.heading")),1)]),_:1})],2),i("div",{class:s(e.$style.button)},[a(C,{size:"large",type:"secondary",element:"a",href:e.creatorHubUrl,label:e.$locale.baseText("templates.shareWorkflow"),target:"_blank"},null,8,["href","label"])],2)],2)]),content:c(()=>[i("div",{class:s(e.$style.contentWrapper)},[i("div",{class:s(e.$style.filters)},[a(w,{categories:e.templatesStore.allCategories,"sort-on-populate":e.areCategoriesPrepopulated,selected:e.categories,loading:e.loadingCategories,onClear:e.onCategoryUnselected,onClearAll:e.onCategoriesCleared,onSelect:e.onCategorySelected},null,8,["categories","sort-on-populate","selected","loading","onClear","onClearAll","onSelect"])],2),i("div",{class:s(e.$style.search)},[a(y,{"model-value":e.search,placeholder:e.$locale.baseText("templates.searchPlaceholder"),clearable:"","data-test-id":"template-search-input","onUpdate:modelValue":e.onSearchInput,onBlur:e.trackSearch},{prefix:c(()=>[a(d,{icon:"search"})]),_:1},8,["model-value","placeholder","onUpdate:modelValue","onBlur"]),U(i("div",{class:s(e.$style.carouselContainer)},[i("div",{class:s(e.$style.header)},[a(f,{bold:!0,size:"medium",color:"text-light"},{default:c(()=>[m(p(e.$locale.baseText("templates.collections"))+" ",1),e.loadingCollections?u("",!0):(n(),h("span",{key:0,"data-test-id":"collection-count-label",textContent:p(`(${e.collections.length})`)},null,8,de))]),_:1})],2),a(k,{collections:e.collections,loading:e.loadingCollections,onOpenCollection:e.onOpenCollection},null,8,["collections","loading","onOpenCollection"])],2),[[V,e.collections.length||e.loadingCollections]]),a(W,{"infinite-scroll-enabled":!0,loading:e.loadingWorkflows,workflows:e.workflows,"total-count":e.totalWorkflows,onLoadMore:e.onLoadMore,onOpenTemplate:e.onOpenTemplate},null,8,["loading","workflows","total-count","onLoadMore","onOpenTemplate"]),e.endOfSearchMessage?(n(),h("div",{key:0,class:s(e.$style.endText)},[a(L,{size:"medium",color:"text-base"},{default:c(()=>[i("span",{innerHTML:e.endOfSearchMessage},null,8,he)]),_:1})],2)):u("",!0)],2)],2)]),_:1})}const ue={$style:ce},Ke=_(se,[["render",pe],["__cssModules",ue]]);export{Ke as default};
2
- //# sourceMappingURL=TemplatesSearchView-TtSL2qyI.js.map
1
+ import{m as S}from"./pinia-28uZ5ZtB.js";import{T as A}from"./TemplatesInfoCarousel-Nq4oRyBi.js";import{h as $}from"./index-6M_Mo9yq.js";import{G as b,l as n,m as h,p as i,I as s,R as p,T as a,Q as u,O as c,S as m,F as E,a7 as M,ag as l,M as P,V as U,U as V}from"./vendor-KLOX9vbo.js";import{_,aB as I,e as B,g9 as F,aL as R,f as q,u as z,l as H,g3 as Q,V as T}from"./n8n-0pza0mdA.js";import{T as j}from"./TemplateList--WJ98ZVH.js";import{T as N}from"./TemplatesView-KPnGjjin.js";import"./NodeList-f4t5_e24.js";import"./vue-agile-eBX40Hen.js";import"./lodash-es-wI9avrph.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.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-AlqFM-P6.js";import"./uuid-McvpxQtQ.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./luxon-ZRIU05qF.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./@vueuse/core-JpwZAlxf.js";import"./esprima-next-ulPLCZ1Z.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";const D=b({name:"TemplateFilters",props:{categories:{type:Array,default:()=>[]},sortOnPopulate:{type:Boolean,default:!1},expandLimit:{type:Number,default:12},loading:{type:Boolean},selected:{type:Array,default:()=>[]}},emits:["clearAll","select","clear"],data(){return{collapsed:!0,sortedCategories:[]}},computed:{...S($),allSelected(){return this.selected.length===0}},watch:{sortOnPopulate:{handler(e){e&&this.sortCategories()},immediate:!0},categories:{handler(e){e.length>0&&this.sortCategories()},immediate:!0}},methods:{sortCategories(){if(!this.sortOnPopulate)this.sortedCategories=this.categories;else{const e=this.selected||[],t=this.categories.filter(r=>e.includes(r)),o=this.categories.filter(r=>!e.includes(r));this.sortedCategories=t.concat(o)}},collapseAction(){this.collapsed=!1},handleCheckboxChanged(e,t){this.$emit(e?"select":"clear",t)},isSelected(e){return this.selected.includes(e)},resetCategories(){this.$emit("clearAll")}}}),K="_title_1sb10_1",G="_categories_1sb10_6",J="_item_1sb10_11",X="_button_1sb10_18",Y={title:K,categories:G,item:J,button:X},Z=["textContent"],x=["data-test-id"];function ee(e,t,o,r,g,v){const f=l("n8n-loading"),C=l("el-checkbox"),w=l("n8n-text");return n(),h("div",{class:s([e.$style.filters,"template-filters"]),"data-test-id":"templates-filter-container"},[i("div",{class:s(e.$style.title),textContent:p(e.$locale.baseText("templates.categoriesHeading"))},null,10,Z),e.loading?(n(),h("div",{key:0,class:s(e.$style.list)},[a(f,{loading:e.loading,rows:e.expandLimit},null,8,["loading","rows"])],2)):u("",!0),e.loading?u("",!0):(n(),h("ul",{key:1,class:s(e.$style.categories)},[i("li",{class:s(e.$style.item),"data-test-id":"template-filter-all-categories"},[a(C,{"model-value":e.allSelected,"onUpdate:modelValue":t[0]||(t[0]=()=>e.resetCategories())},{default:c(()=>[m(p(e.$locale.baseText("templates.allCategories")),1)]),_:1},8,["model-value"])],2),(n(!0),h(E,null,M(e.collapsed?e.sortedCategories.slice(0,e.expandLimit):e.sortedCategories,(d,y)=>(n(),h("li",{key:y,class:s(e.$style.item),"data-test-id":`template-filter-${d.name.toLowerCase().replaceAll(" ","-")}`},[a(C,{"model-value":e.isSelected(d),"onUpdate:modelValue":k=>e.handleCheckboxChanged(k,d)},{default:c(()=>[m(p(d.name),1)]),_:2},1032,["model-value","onUpdate:modelValue"])],10,x))),128))],2)),e.sortedCategories.length>e.expandLimit&&e.collapsed&&!e.loading?(n(),h("div",{key:2,class:s(e.$style.button),"data-test-id":"expand-categories-button",onClick:t[1]||(t[1]=(...d)=>e.collapseAction&&e.collapseAction(...d))},[a(w,{size:"small",color:"primary"},{default:c(()=>[m(" + "+p(`${e.sortedCategories.length-e.expandLimit} more`),1)]),_:1})],2)):u("",!0)],2)}const te={$style:Y},oe=_(D,[["render",ee],["__cssModules",te]]),se=b({name:"TemplatesSearchView",components:{TemplatesInfoCarousel:A,TemplateFilters:oe,TemplateList:j,TemplatesView:N},setup(){const{callDebounced:e}=I();return{callDebounced:e,...B()}},data(){return{areCategoriesPrepopulated:!1,categories:[],loading:!0,loadingCategories:!0,loadingCollections:!0,loadingWorkflows:!0,search:"",searchEventToTrack:null,errorLoadingWorkflows:!1,creatorHubUrl:F}},computed:{...S(H,$,z,q,R),totalWorkflows(){return this.templatesStore.getSearchedWorkflowsTotal(this.createQueryObject("name"))},workflows(){return this.templatesStore.getSearchedWorkflows(this.createQueryObject("name"))??[]},collections(){return this.templatesStore.getSearchedCollections(this.createQueryObject("id"))??[]},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},nothingFound(){return!this.loadingWorkflows&&!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0}},watch:{workflows(e){e.length===0&&this.scrollTo(0)}},async mounted(){Q("n8n - Templates"),await this.loadCategories(),this.loadWorkflowsAndCollections(!0),this.usersStore.showPersonalizationSurvey(),this.restoreSearchFromRoute(),setTimeout(()=>{this.$route.meta&&this.$route.meta.scrollOffset>0&&this.scrollTo(this.$route.meta.scrollOffset,"auto")},100)},methods:{createQueryObject(e){return{categories:this.categories.map(t=>e==="name"?t.name:String(t.id)),search:this.search}},restoreSearchFromRoute(){let e=!1;if(this.$route.query.search&&typeof this.$route.query.search=="string"&&(this.search=this.$route.query.search,e=!0),typeof this.$route.query.categories=="string"&&this.$route.query.categories.length){const t=this.$route.query.categories.split(",");this.categories=this.templatesStore.allCategories.filter(o=>t.includes(o.id.toString())),e=!0}e&&(this.updateSearch(),this.trackCategories(),this.areCategoriesPrepopulated=!0)},onOpenCollection({event:e,id:t}){this.navigateTo(e,T.COLLECTION,t)},onOpenTemplate({event:e,id:t}){this.navigateTo(e,T.TEMPLATE,t)},navigateTo(e,t,o){if(e.metaKey||e.ctrlKey){const r=this.$router.resolve({name:t,params:{id:o}});window.open(r.href,"_blank");return}else this.$router.push({name:t,params:{id:o}})},updateSearch(){this.updateQueryParam(this.search,this.categories.map(e=>e.id).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(this.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.id!==e.id),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,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.map(e=>e.name),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.map(e=>String(e.id)),search:this.search})}catch{}this.loadingCollections=!1},async loadWorkflows(){try{this.loadingWorkflows=!0,await this.templatesStore.getWorkflows({search:this.search,categories:this.categories.map(e=>e.name)}),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.map(r=>r.id))},scrollTo(e,t="smooth"){setTimeout(()=>{const o=document.getElementById("content");o&&o.scrollTo({top:e,behavior:t})},0)}},beforeRouteLeave(e,t,o){var g;const r=document.getElementById("content");r&&(g=this.$route.meta)!=null&&g.setScrollPosition&&typeof this.$route.meta.setScrollPosition=="function"&&this.$route.meta.setScrollPosition(r.scrollTop),this.trackSearch(),o()}}),ae="_wrapper_1el39_1",re="_contentWrapper_1el39_6",le="_filters_1el39_16",ie="_search_1el39_22",ne="_header_1el39_34",ce={wrapper:ae,contentWrapper:re,filters:le,search:ie,header:ne},de=["textContent"],he=["innerHTML"];function pe(e,t,o,r,g,v){const f=l("n8n-heading"),C=l("n8n-button"),w=l("TemplateFilters"),d=l("font-awesome-icon"),y=l("n8n-input"),k=l("TemplatesInfoCarousel"),W=l("TemplateList"),L=l("n8n-text"),O=l("TemplatesView");return n(),P(O,null,{header:c(()=>[i("div",{class:s(e.$style.wrapper)},[i("div",{class:s(e.$style.title)},[a(f,{tag:"h1",size:"2xlarge"},{default:c(()=>[m(p(e.$locale.baseText("templates.heading")),1)]),_:1})],2),i("div",{class:s(e.$style.button)},[a(C,{size:"large",type:"secondary",element:"a",href:e.creatorHubUrl,label:e.$locale.baseText("templates.shareWorkflow"),target:"_blank"},null,8,["href","label"])],2)],2)]),content:c(()=>[i("div",{class:s(e.$style.contentWrapper)},[i("div",{class:s(e.$style.filters)},[a(w,{categories:e.templatesStore.allCategories,"sort-on-populate":e.areCategoriesPrepopulated,selected:e.categories,loading:e.loadingCategories,onClear:e.onCategoryUnselected,onClearAll:e.onCategoriesCleared,onSelect:e.onCategorySelected},null,8,["categories","sort-on-populate","selected","loading","onClear","onClearAll","onSelect"])],2),i("div",{class:s(e.$style.search)},[a(y,{"model-value":e.search,placeholder:e.$locale.baseText("templates.searchPlaceholder"),clearable:"","data-test-id":"template-search-input","onUpdate:modelValue":e.onSearchInput,onBlur:e.trackSearch},{prefix:c(()=>[a(d,{icon:"search"})]),_:1},8,["model-value","placeholder","onUpdate:modelValue","onBlur"]),U(i("div",{class:s(e.$style.carouselContainer)},[i("div",{class:s(e.$style.header)},[a(f,{bold:!0,size:"medium",color:"text-light"},{default:c(()=>[m(p(e.$locale.baseText("templates.collections"))+" ",1),e.loadingCollections?u("",!0):(n(),h("span",{key:0,"data-test-id":"collection-count-label",textContent:p(`(${e.collections.length})`)},null,8,de))]),_:1})],2),a(k,{collections:e.collections,loading:e.loadingCollections,onOpenCollection:e.onOpenCollection},null,8,["collections","loading","onOpenCollection"])],2),[[V,e.collections.length||e.loadingCollections]]),a(W,{"infinite-scroll-enabled":!0,loading:e.loadingWorkflows,workflows:e.workflows,"total-count":e.totalWorkflows,onLoadMore:e.onLoadMore,onOpenTemplate:e.onOpenTemplate},null,8,["loading","workflows","total-count","onLoadMore","onOpenTemplate"]),e.endOfSearchMessage?(n(),h("div",{key:0,class:s(e.$style.endText)},[a(L,{size:"medium",color:"text-base"},{default:c(()=>[i("span",{innerHTML:e.endOfSearchMessage},null,8,he)]),_:1})],2)):u("",!0)],2)],2)]),_:1})}const ue={$style:ce},Ke=_(se,[["render",pe],["__cssModules",ue]]);export{Ke as default};
2
+ //# sourceMappingURL=TemplatesSearchView-Lv0e5mOk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplatesSearchView-TtSL2qyI.js","sources":["../../src/components/TemplateFilters.vue","../../src/views/TemplatesSearchView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.filters\" class=\"template-filters\" data-test-id=\"templates-filter-container\">\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\" data-test-id=\"template-filter-all-categories\">\n\t\t\t\t<el-checkbox :model-value=\"allSelected\" @update:model-value=\"() => resetCategories()\">\n\t\t\t\t\t{{ $locale.baseText('templates.allCategories') }}\n\t\t\t\t</el-checkbox>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tv-for=\"(category, index) in collapsed\n\t\t\t\t\t? sortedCategories.slice(0, expandLimit)\n\t\t\t\t\t: sortedCategories\"\n\t\t\t\t:key=\"index\"\n\t\t\t\t:class=\"$style.item\"\n\t\t\t\t:data-test-id=\"`template-filter-${category.name.toLowerCase().replaceAll(' ', '-')}`\"\n\t\t\t>\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:model-value=\"isSelected(category)\"\n\t\t\t\t\t@update:model-value=\"(value: boolean) => handleCheckboxChanged(value, category)\"\n\t\t\t\t>\n\t\t\t\t\t{{ category.name }}\n\t\t\t\t</el-checkbox>\n\t\t\t</li>\n\t\t</ul>\n\t\t<div\n\t\t\tv-if=\"sortedCategories.length > expandLimit && collapsed && !loading\"\n\t\t\t:class=\"$style.button\"\n\t\t\tdata-test-id=\"expand-categories-button\"\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 type { ITemplatesCategory } from '@/Interface';\nimport type { PropType } from 'vue';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { mapStores } from 'pinia';\n\nexport default defineComponent({\n\tname: 'TemplateFilters',\n\tprops: {\n\t\tcategories: {\n\t\t\ttype: Array as PropType<ITemplatesCategory[]>,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsortOnPopulate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\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 as PropType<ITemplatesCategory[]>,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\temits: ['clearAll', 'select', 'clear'],\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\t...mapStores(useTemplatesStore),\n\t\tallSelected(): boolean {\n\t\t\treturn this.selected.length === 0;\n\t\t},\n\t},\n\twatch: {\n\t\tsortOnPopulate: {\n\t\t\thandler(value: boolean) {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis.sortCategories();\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t\tcategories: {\n\t\t\thandler(categories: ITemplatesCategory[]) {\n\t\t\t\tif (categories.length > 0) {\n\t\t\t\t\tthis.sortCategories();\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t},\n\tmethods: {\n\t\tsortCategories() {\n\t\t\tif (!this.sortOnPopulate) {\n\t\t\t\tthis.sortedCategories = this.categories;\n\t\t\t} else {\n\t\t\t\tconst selected = this.selected || [];\n\t\t\t\tconst selectedCategories = this.categories.filter((cat) => selected.includes(cat));\n\t\t\t\tconst notSelectedCategories = this.categories.filter((cat) => !selected.includes(cat));\n\t\t\t\tthis.sortedCategories = selectedCategories.concat(notSelectedCategories);\n\t\t\t}\n\t\t},\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);\n\t\t},\n\t\tisSelected(category: ITemplatesCategory) {\n\t\t\treturn this.selected.includes(category);\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:sort-on-populate=\"areCategoriesPrepopulated\"\n\t\t\t\t\t\t:selected=\"categories\"\n\t\t\t\t\t\t:loading=\"loadingCategories\"\n\t\t\t\t\t\t@clear=\"onCategoryUnselected\"\n\t\t\t\t\t\t@clear-all=\"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:model-value=\"search\"\n\t\t\t\t\t\t:placeholder=\"$locale.baseText('templates.searchPlaceholder')\"\n\t\t\t\t\t\tclearable\n\t\t\t\t\t\tdata-test-id=\"template-search-input\"\n\t\t\t\t\t\t@update:model-value=\"onSearchInput\"\n\t\t\t\t\t\t@blur=\"trackSearch\"\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 v-show=\"collections.length || loadingCollections\" :class=\"$style.carouselContainer\">\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\n\t\t\t\t\t\t\t\t\tv-if=\"!loadingCollections\"\n\t\t\t\t\t\t\t\t\tdata-test-id=\"collection-count-label\"\n\t\t\t\t\t\t\t\t\tv-text=\"`(${collections.length})`\"\n\t\t\t\t\t\t\t\t/>\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@open-collection=\"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:workflows=\"workflows\"\n\t\t\t\t\t\t:total-count=\"totalWorkflows\"\n\t\t\t\t\t\t@load-more=\"onLoadMore\"\n\t\t\t\t\t\t@open-template=\"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 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 { 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';\nimport { useDebounce } from '@/composables/useDebounce';\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\tcomponents: {\n\t\tTemplatesInfoCarousel,\n\t\tTemplateFilters,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tsetup() {\n\t\tconst { callDebounced } = useDebounce();\n\n\t\treturn {\n\t\t\tcallDebounced,\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 ITemplatesCategory[],\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.createQueryObject('name'));\n\t\t},\n\t\tworkflows(): ITemplatesWorkflow[] {\n\t\t\treturn this.templatesStore.getSearchedWorkflows(this.createQueryObject('name')) ?? [];\n\t\t},\n\t\tcollections(): ITemplatesCollection[] {\n\t\t\treturn this.templatesStore.getSearchedCollections(this.createQueryObject('id')) ?? [];\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\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\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\tasync mounted() {\n\t\tsetPageTitle('n8n - Templates');\n\t\tawait this.loadCategories();\n\t\tvoid this.loadWorkflowsAndCollections(true);\n\t\tvoid this.usersStore.showPersonalizationSurvey();\n\n\t\tthis.restoreSearchFromRoute();\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\tmethods: {\n\t\tcreateQueryObject(categoryId: 'name' | 'id'): ITemplatesQuery {\n\t\t\t// We are using category names for template search and ids for collection search\n\t\t\treturn {\n\t\t\t\tcategories: this.categories.map((category) =>\n\t\t\t\t\tcategoryId === 'name' ? category.name : String(category.id),\n\t\t\t\t),\n\t\t\t\tsearch: this.search,\n\t\t\t};\n\t\t},\n\t\trestoreSearchFromRoute() {\n\t\t\tlet updateSearch = false;\n\t\t\tif (this.$route.query.search && typeof this.$route.query.search === 'string') {\n\t\t\t\tthis.search = this.$route.query.search;\n\t\t\t\tupdateSearch = true;\n\t\t\t}\n\t\t\tif (typeof this.$route.query.categories === 'string' && this.$route.query.categories.length) {\n\t\t\t\tconst categoriesFromURL = this.$route.query.categories.split(',');\n\t\t\t\tthis.categories = this.templatesStore.allCategories.filter((category) =>\n\t\t\t\t\tcategoriesFromURL.includes(category.id.toString()),\n\t\t\t\t);\n\t\t\t\tupdateSearch = true;\n\t\t\t}\n\t\t\tif (updateSearch) {\n\t\t\t\tthis.updateSearch();\n\t\t\t\tthis.trackCategories();\n\t\t\t\tthis.areCategoriesPrepopulated = true;\n\t\t\t}\n\t\t},\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.map((category) => category.id).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(this.updateSearch, {\n\t\t\t\tdebounceTime: 500,\n\t\t\t\ttrailing: true,\n\t\t\t});\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: ITemplatesCategory) {\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: ITemplatesCategory) {\n\t\t\tthis.categories = this.categories.filter((category) => category.id !== selected.id);\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,\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.map((category) => category.name),\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.map((category) => String(category.id)),\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.map((category) => category.name),\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(\n\t\t\t\t\tsearch,\n\t\t\t\t\tcategories.map((category) => category.id),\n\t\t\t\t);\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\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});\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","mapStores","useTemplatesStore","value","categories","selected","selectedCategories","cat","notSelectedCategories","selectedCategory","category","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_createElementVNode","loading","_toDisplayString","_hoisted_1","$style","expandLimit","_createCommentVNode","_component_el_checkbox","_cache","_createTextVNode","sortedCategories","_Fragment","_renderList","index","handleCheckboxChanged","args","_component_n8n_text","_sfc_main","TemplatesInfoCarousel","TemplateFilters","TemplateList","TemplatesView","callDebounced","useDebounce","useToast","CREATOR_HUB_URL","useSettingsStore","useUIStore","useUsersStore","usePostHog","newWorkflows","setPageTitle","categoryId","updateSearch","categoriesFromURL","event","id","VIEWS","page","route","search","query","initialLoad","position","behavior","contentArea","to","from","next","_a","_createBlock","_component_TemplatesView","_withCtx","_component_n8n_heading","_component_n8n_button","creatorHubUrl","$locale","_component_TemplateFilters","areCategoriesPrepopulated","loadingCategories","onCategoryUnselected","onCategoriesCleared","onCategorySelected","_component_n8n_input","trackSearch","_createVNode","_component_font_awesome_icon","_withDirectives","loadingCollections","onOpenCollection","collections","_vShow","loadingWorkflows","onLoadMore","onOpenTemplate","endOfSearchMessage","_hoisted_2"],"mappings":"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"}
1
+ {"version":3,"file":"TemplatesSearchView-Lv0e5mOk.js","sources":["../../src/components/TemplateFilters.vue","../../src/views/TemplatesSearchView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.filters\" class=\"template-filters\" data-test-id=\"templates-filter-container\">\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\" data-test-id=\"template-filter-all-categories\">\n\t\t\t\t<el-checkbox :model-value=\"allSelected\" @update:model-value=\"() => resetCategories()\">\n\t\t\t\t\t{{ $locale.baseText('templates.allCategories') }}\n\t\t\t\t</el-checkbox>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tv-for=\"(category, index) in collapsed\n\t\t\t\t\t? sortedCategories.slice(0, expandLimit)\n\t\t\t\t\t: sortedCategories\"\n\t\t\t\t:key=\"index\"\n\t\t\t\t:class=\"$style.item\"\n\t\t\t\t:data-test-id=\"`template-filter-${category.name.toLowerCase().replaceAll(' ', '-')}`\"\n\t\t\t>\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:model-value=\"isSelected(category)\"\n\t\t\t\t\t@update:model-value=\"(value: boolean) => handleCheckboxChanged(value, category)\"\n\t\t\t\t>\n\t\t\t\t\t{{ category.name }}\n\t\t\t\t</el-checkbox>\n\t\t\t</li>\n\t\t</ul>\n\t\t<div\n\t\t\tv-if=\"sortedCategories.length > expandLimit && collapsed && !loading\"\n\t\t\t:class=\"$style.button\"\n\t\t\tdata-test-id=\"expand-categories-button\"\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 type { ITemplatesCategory } from '@/Interface';\nimport type { PropType } from 'vue';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { mapStores } from 'pinia';\n\nexport default defineComponent({\n\tname: 'TemplateFilters',\n\tprops: {\n\t\tcategories: {\n\t\t\ttype: Array as PropType<ITemplatesCategory[]>,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsortOnPopulate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\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 as PropType<ITemplatesCategory[]>,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\temits: ['clearAll', 'select', 'clear'],\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\t...mapStores(useTemplatesStore),\n\t\tallSelected(): boolean {\n\t\t\treturn this.selected.length === 0;\n\t\t},\n\t},\n\twatch: {\n\t\tsortOnPopulate: {\n\t\t\thandler(value: boolean) {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis.sortCategories();\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t\tcategories: {\n\t\t\thandler(categories: ITemplatesCategory[]) {\n\t\t\t\tif (categories.length > 0) {\n\t\t\t\t\tthis.sortCategories();\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t},\n\tmethods: {\n\t\tsortCategories() {\n\t\t\tif (!this.sortOnPopulate) {\n\t\t\t\tthis.sortedCategories = this.categories;\n\t\t\t} else {\n\t\t\t\tconst selected = this.selected || [];\n\t\t\t\tconst selectedCategories = this.categories.filter((cat) => selected.includes(cat));\n\t\t\t\tconst notSelectedCategories = this.categories.filter((cat) => !selected.includes(cat));\n\t\t\t\tthis.sortedCategories = selectedCategories.concat(notSelectedCategories);\n\t\t\t}\n\t\t},\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);\n\t\t},\n\t\tisSelected(category: ITemplatesCategory) {\n\t\t\treturn this.selected.includes(category);\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:sort-on-populate=\"areCategoriesPrepopulated\"\n\t\t\t\t\t\t:selected=\"categories\"\n\t\t\t\t\t\t:loading=\"loadingCategories\"\n\t\t\t\t\t\t@clear=\"onCategoryUnselected\"\n\t\t\t\t\t\t@clear-all=\"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:model-value=\"search\"\n\t\t\t\t\t\t:placeholder=\"$locale.baseText('templates.searchPlaceholder')\"\n\t\t\t\t\t\tclearable\n\t\t\t\t\t\tdata-test-id=\"template-search-input\"\n\t\t\t\t\t\t@update:model-value=\"onSearchInput\"\n\t\t\t\t\t\t@blur=\"trackSearch\"\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 v-show=\"collections.length || loadingCollections\" :class=\"$style.carouselContainer\">\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\n\t\t\t\t\t\t\t\t\tv-if=\"!loadingCollections\"\n\t\t\t\t\t\t\t\t\tdata-test-id=\"collection-count-label\"\n\t\t\t\t\t\t\t\t\tv-text=\"`(${collections.length})`\"\n\t\t\t\t\t\t\t\t/>\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@open-collection=\"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:workflows=\"workflows\"\n\t\t\t\t\t\t:total-count=\"totalWorkflows\"\n\t\t\t\t\t\t@load-more=\"onLoadMore\"\n\t\t\t\t\t\t@open-template=\"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 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 { 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';\nimport { useDebounce } from '@/composables/useDebounce';\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\tcomponents: {\n\t\tTemplatesInfoCarousel,\n\t\tTemplateFilters,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tsetup() {\n\t\tconst { callDebounced } = useDebounce();\n\n\t\treturn {\n\t\t\tcallDebounced,\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 ITemplatesCategory[],\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.createQueryObject('name'));\n\t\t},\n\t\tworkflows(): ITemplatesWorkflow[] {\n\t\t\treturn this.templatesStore.getSearchedWorkflows(this.createQueryObject('name')) ?? [];\n\t\t},\n\t\tcollections(): ITemplatesCollection[] {\n\t\t\treturn this.templatesStore.getSearchedCollections(this.createQueryObject('id')) ?? [];\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\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\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\tasync mounted() {\n\t\tsetPageTitle('n8n - Templates');\n\t\tawait this.loadCategories();\n\t\tvoid this.loadWorkflowsAndCollections(true);\n\t\tvoid this.usersStore.showPersonalizationSurvey();\n\n\t\tthis.restoreSearchFromRoute();\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\tmethods: {\n\t\tcreateQueryObject(categoryId: 'name' | 'id'): ITemplatesQuery {\n\t\t\t// We are using category names for template search and ids for collection search\n\t\t\treturn {\n\t\t\t\tcategories: this.categories.map((category) =>\n\t\t\t\t\tcategoryId === 'name' ? category.name : String(category.id),\n\t\t\t\t),\n\t\t\t\tsearch: this.search,\n\t\t\t};\n\t\t},\n\t\trestoreSearchFromRoute() {\n\t\t\tlet updateSearch = false;\n\t\t\tif (this.$route.query.search && typeof this.$route.query.search === 'string') {\n\t\t\t\tthis.search = this.$route.query.search;\n\t\t\t\tupdateSearch = true;\n\t\t\t}\n\t\t\tif (typeof this.$route.query.categories === 'string' && this.$route.query.categories.length) {\n\t\t\t\tconst categoriesFromURL = this.$route.query.categories.split(',');\n\t\t\t\tthis.categories = this.templatesStore.allCategories.filter((category) =>\n\t\t\t\t\tcategoriesFromURL.includes(category.id.toString()),\n\t\t\t\t);\n\t\t\t\tupdateSearch = true;\n\t\t\t}\n\t\t\tif (updateSearch) {\n\t\t\t\tthis.updateSearch();\n\t\t\t\tthis.trackCategories();\n\t\t\t\tthis.areCategoriesPrepopulated = true;\n\t\t\t}\n\t\t},\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.map((category) => category.id).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(this.updateSearch, {\n\t\t\t\tdebounceTime: 500,\n\t\t\t\ttrailing: true,\n\t\t\t});\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: ITemplatesCategory) {\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: ITemplatesCategory) {\n\t\t\tthis.categories = this.categories.filter((category) => category.id !== selected.id);\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,\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.map((category) => category.name),\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.map((category) => String(category.id)),\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.map((category) => category.name),\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(\n\t\t\t\t\tsearch,\n\t\t\t\t\tcategories.map((category) => category.id),\n\t\t\t\t);\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\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});\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","mapStores","useTemplatesStore","value","categories","selected","selectedCategories","cat","notSelectedCategories","selectedCategory","category","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_createElementVNode","loading","_toDisplayString","_hoisted_1","$style","expandLimit","_createCommentVNode","_component_el_checkbox","_cache","_createTextVNode","sortedCategories","_Fragment","_renderList","index","handleCheckboxChanged","args","_component_n8n_text","_sfc_main","TemplatesInfoCarousel","TemplateFilters","TemplateList","TemplatesView","callDebounced","useDebounce","useToast","CREATOR_HUB_URL","useSettingsStore","useUIStore","useUsersStore","usePostHog","newWorkflows","setPageTitle","categoryId","updateSearch","categoriesFromURL","event","id","VIEWS","page","route","search","query","initialLoad","position","behavior","contentArea","to","from","next","_a","_createBlock","_component_TemplatesView","_withCtx","_component_n8n_heading","_component_n8n_button","creatorHubUrl","$locale","_component_TemplateFilters","areCategoriesPrepopulated","loadingCategories","onCategoryUnselected","onCategoriesCleared","onCategorySelected","_component_n8n_input","trackSearch","_createVNode","_component_font_awesome_icon","_withDirectives","loadingCollections","onOpenCollection","collections","_vShow","loadingWorkflows","onLoadMore","onOpenTemplate","endOfSearchMessage","_hoisted_2"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{m as v}from"./pinia-28uZ5ZtB.js";import{T as S}from"./TemplateDetails-YEZlo0n4.js";import{T as F}from"./TemplatesView-KPnGjjin.js";import{az as I,h as c}from"./index-Qw68KAhz.js";import{aL as P,g3 as g,y as B,a9 as V,_ as C}from"./n8n-0pza0mdA.js";import{u as H}from"./templateActions-5n_gDrp9.js";import{G as W,l as a,M as l,a9 as E,O as r,p as n,Q as m,I as t,T as i,m as f,S as p,R as d,ag as o}from"./vendor-KLOX9vbo.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.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"./lodash-es-wI9avrph.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./uuid-McvpxQtQ.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./luxon-ZRIU05qF.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./@vueuse/core-JpwZAlxf.js";import"./esprima-next-ulPLCZ1Z.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";const N=W({name:"TemplatesWorkflowView",components:{TemplateDetails:S,TemplatesView:F,WorkflowPreview:I},setup(){return{externalHooks:V()}},computed:{...v(c,P),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}},watch:{template(e){e?g(`n8n - Template template: ${e.name}`):g("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},methods:{async openTemplateSetup(e,s){await H({posthogStore:this.posthogStore,router:this.$router,templateId:e,inNewBrowserTab:s.metaKey||s.ctrlKey,externalHooks:this.externalHooks,nodeTypesStore:B(),telemetry:this.$telemetry,templatesStore:c(),source:"template_preview"})},onHidePreview(){this.showPreview=!1},scrollToTop(){const e=document.getElementById("content");e&&e.scrollTo({top:0})}}}),z="_wrapper_trbdo_1",D="_notFound_trbdo_6",A="_title_trbdo_10",M="_button_trbdo_14",K="_image_trbdo_18",G="_content_trbdo_29",L="_markdown_trbdo_40",O="_details_trbdo_51",Q={wrapper:z,notFound:D,title:A,button:M,image:K,content:G,markdown:L,details:O};function R(e,s,q,J,U,X){const k=o("n8n-heading"),u=o("n8n-text"),w=o("n8n-loading"),h=o("n8n-button"),T=o("WorkflowPreview"),y=o("n8n-markdown"),b=o("TemplateDetails"),$=o("TemplatesView");return a(),l($,{"go-back-enabled":!0},E({header:r(()=>[e.notFoundError?(a(),f("div",{key:1,class:t(e.$style.notFound)},[i(u,{color:"text-base"},{default:r(()=>[p(d(e.$locale.baseText("templates.workflowsNotFound")),1)]),_:1})],2)):(a(),f("div",{key:0,class:t(e.$style.wrapper)},[n("div",{class:t(e.$style.title)},[e.template&&e.template.name?(a(),l(k,{key:0,tag:"h1",size:"2xlarge"},{default:r(()=>[p(d(e.template.name),1)]),_:1})):m("",!0),e.template&&e.template.name?(a(),l(u,{key:1,color:"text-base",size:"small"},{default:r(()=>[p(d(e.$locale.baseText("generic.workflow")),1)]),_:1})):m("",!0),i(w,{loading:!e.template||!e.template.name,rows:2,variant:"h1"},null,8,["loading"])],2),n("div",{class:t(e.$style.button)},[e.template?(a(),l(h,{key:0,"data-test-id":"use-template-button",label:e.$locale.baseText("template.buttons.useThisWorkflowButton"),size:"large",onClick:s[0]||(s[0]=_=>e.openTemplateSetup(e.templateId,_))},null,8,["label"])):m("",!0),i(w,{loading:!e.template,rows:1,variant:"button"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:r(()=>[n("div",{class:t(e.$style.image)},[e.showPreview?(a(),l(T,{key:0,loading:e.loading,workflow:e.template&&e.template.workflow,onClose:e.onHidePreview},null,8,["loading","workflow","onClose"])):m("",!0)],2),n("div",{class:t(e.$style.content)},[n("div",{class:t(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),n("div",{class:t(e.$style.details)},[i(b,{"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},Pe=C(N,[["render",R],["__cssModules",j]]);export{Pe as default};
2
- //# sourceMappingURL=TemplatesWorkflowView-Ipt1HHPc.js.map
1
+ import{m as v}from"./pinia-28uZ5ZtB.js";import{T as S}from"./TemplateDetails-WQVyxQi7.js";import{T as F}from"./TemplatesView-KPnGjjin.js";import{az as I,h as c}from"./index-6M_Mo9yq.js";import{aL as P,g3 as g,y as B,a9 as V,_ as C}from"./n8n-0pza0mdA.js";import{u as H}from"./templateActions-l9fJr0Cu.js";import{G as W,l as a,M as l,a9 as E,O as r,p as n,Q as m,I as t,T as i,m as f,S as p,R as d,ag as o}from"./vendor-KLOX9vbo.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.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"./lodash-es-wI9avrph.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./uuid-McvpxQtQ.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./luxon-ZRIU05qF.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./@vueuse/core-JpwZAlxf.js";import"./esprima-next-ulPLCZ1Z.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";const N=W({name:"TemplatesWorkflowView",components:{TemplateDetails:S,TemplatesView:F,WorkflowPreview:I},setup(){return{externalHooks:V()}},computed:{...v(c,P),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}},watch:{template(e){e?g(`n8n - Template template: ${e.name}`):g("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},methods:{async openTemplateSetup(e,s){await H({posthogStore:this.posthogStore,router:this.$router,templateId:e,inNewBrowserTab:s.metaKey||s.ctrlKey,externalHooks:this.externalHooks,nodeTypesStore:B(),telemetry:this.$telemetry,templatesStore:c(),source:"template_preview"})},onHidePreview(){this.showPreview=!1},scrollToTop(){const e=document.getElementById("content");e&&e.scrollTo({top:0})}}}),z="_wrapper_trbdo_1",D="_notFound_trbdo_6",A="_title_trbdo_10",M="_button_trbdo_14",K="_image_trbdo_18",G="_content_trbdo_29",L="_markdown_trbdo_40",O="_details_trbdo_51",Q={wrapper:z,notFound:D,title:A,button:M,image:K,content:G,markdown:L,details:O};function R(e,s,q,J,U,X){const k=o("n8n-heading"),u=o("n8n-text"),w=o("n8n-loading"),h=o("n8n-button"),T=o("WorkflowPreview"),y=o("n8n-markdown"),b=o("TemplateDetails"),$=o("TemplatesView");return a(),l($,{"go-back-enabled":!0},E({header:r(()=>[e.notFoundError?(a(),f("div",{key:1,class:t(e.$style.notFound)},[i(u,{color:"text-base"},{default:r(()=>[p(d(e.$locale.baseText("templates.workflowsNotFound")),1)]),_:1})],2)):(a(),f("div",{key:0,class:t(e.$style.wrapper)},[n("div",{class:t(e.$style.title)},[e.template&&e.template.name?(a(),l(k,{key:0,tag:"h1",size:"2xlarge"},{default:r(()=>[p(d(e.template.name),1)]),_:1})):m("",!0),e.template&&e.template.name?(a(),l(u,{key:1,color:"text-base",size:"small"},{default:r(()=>[p(d(e.$locale.baseText("generic.workflow")),1)]),_:1})):m("",!0),i(w,{loading:!e.template||!e.template.name,rows:2,variant:"h1"},null,8,["loading"])],2),n("div",{class:t(e.$style.button)},[e.template?(a(),l(h,{key:0,"data-test-id":"use-template-button",label:e.$locale.baseText("template.buttons.useThisWorkflowButton"),size:"large",onClick:s[0]||(s[0]=_=>e.openTemplateSetup(e.templateId,_))},null,8,["label"])):m("",!0),i(w,{loading:!e.template,rows:1,variant:"button"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:r(()=>[n("div",{class:t(e.$style.image)},[e.showPreview?(a(),l(T,{key:0,loading:e.loading,workflow:e.template&&e.template.workflow,onClose:e.onHidePreview},null,8,["loading","workflow","onClose"])):m("",!0)],2),n("div",{class:t(e.$style.content)},[n("div",{class:t(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),n("div",{class:t(e.$style.details)},[i(b,{"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},Pe=C(N,[["render",R],["__cssModules",j]]);export{Pe as default};
2
+ //# sourceMappingURL=TemplatesWorkflowView-FoPXbc_4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplatesWorkflowView-Ipt1HHPc.js","sources":["../../src/views/TemplatesWorkflowView.vue"],"sourcesContent":["<template>\n\t<TemplatesView :go-back-enabled=\"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=\"template && template.name\" tag=\"h1\" size=\"2xlarge\">{{\n\t\t\t\t\t\ttemplate.name\n\t\t\t\t\t}}</n8n-heading>\n\t\t\t\t\t<n8n-text v-if=\"template && template.name\" color=\"text-base\" size=\"small\">\n\t\t\t\t\t\t{{ $locale.baseText('generic.workflow') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-loading :loading=\"!template || !template.name\" :rows=\"2\" variant=\"h1\" />\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\tv-if=\"template\"\n\t\t\t\t\t\tdata-test-id=\"use-template-button\"\n\t\t\t\t\t\t:label=\"$locale.baseText('template.buttons.useThisWorkflowButton')\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t@click=\"openTemplateSetup(templateId, $event)\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-loading :loading=\"!template\" :rows=\"1\" variant=\"button\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else :class=\"$style.notFound\">\n\t\t\t\t<n8n-text color=\"text-base\">{{ $locale.baseText('templates.workflowsNotFound') }}</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.image\">\n\t\t\t\t<WorkflowPreview\n\t\t\t\t\tv-if=\"showPreview\"\n\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t:workflow=\"template && template.workflow\"\n\t\t\t\t\t@close=\"onHidePreview\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.content\">\n\t\t\t\t<div :class=\"$style.markdown\" data-test-id=\"template-description\">\n\t\t\t\t\t<n8n-markdown\n\t\t\t\t\t\t:content=\"template && template.description\"\n\t\t\t\t\t\t:images=\"template && template.image\"\n\t\t\t\t\t\t:loading=\"loading\"\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.appsInTheWorkflow')\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:template=\"template\"\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 TemplatesView from './TemplatesView.vue';\nimport WorkflowPreview from '@/components/WorkflowPreview.vue';\n\nimport type { ITemplatesWorkflowFull } from '@/Interface';\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { usePostHog } from '@/stores/posthog.store';\nimport { useTemplateWorkflow } from '@/utils/templates/templateActions';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\n\nexport default defineComponent({\n\tname: 'TemplatesWorkflowView',\n\tcomponents: {\n\t\tTemplateDetails,\n\t\tTemplatesView,\n\t\tWorkflowPreview,\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\ttemplate(): ITemplatesWorkflowFull | null {\n\t\t\treturn this.templatesStore.getFullTemplateById(this.templateId);\n\t\t},\n\t\ttemplateId() {\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},\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tshowPreview: true,\n\t\t\tnotFoundError: false,\n\t\t};\n\t},\n\twatch: {\n\t\ttemplate(template: ITemplatesWorkflowFull) {\n\t\t\tif (template) {\n\t\t\t\tsetPageTitle(`n8n - Template template: ${template.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.template && this.template.full) {\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.templatesStore.fetchTemplateById(this.templateId);\n\t\t} catch (e) {\n\t\t\tthis.notFoundError = true;\n\t\t}\n\n\t\tthis.loading = false;\n\t},\n\tmethods: {\n\t\tasync openTemplateSetup(id: string, e: PointerEvent) {\n\t\t\tawait useTemplateWorkflow({\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: e.metaKey || e.ctrlKey,\n\t\t\t\texternalHooks: this.externalHooks,\n\t\t\t\tnodeTypesStore: useNodeTypesStore(),\n\t\t\t\ttelemetry: this.$telemetry,\n\t\t\t\ttemplatesStore: useTemplatesStore(),\n\t\t\t\tsource: 'template_preview',\n\t\t\t});\n\t\t},\n\t\tonHidePreview() {\n\t\t\tthis.showPreview = false;\n\t\t},\n\t\tscrollToTop() {\n\t\t\tconst contentArea = document.getElementById('content');\n\n\t\t\tif (contentArea) {\n\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\ttop: 0,\n\t\t\t\t});\n\t\t\t}\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.notFound {\n\tpadding-top: var(--spacing-xl);\n}\n\n.title {\n\twidth: 75%;\n}\n\n.button {\n\tdisplay: block;\n}\n\n.image {\n\twidth: 100%;\n\theight: 500px;\n\tborder: var(--border-base);\n\tborder-radius: var(--border-radius-large);\n\toverflow: hidden;\n\n\timg {\n\t\twidth: 100%;\n\t}\n}\n\n.content {\n\tpadding: var(--spacing-2xl) 0;\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.markdown {\n\twidth: calc(100% - 180px);\n\tpadding-right: var(--spacing-2xl);\n\tmargin-bottom: var(--spacing-l);\n\n\t@media (max-width: $breakpoint-xs) {\n\t\twidth: 100%;\n\t}\n}\n\n.details {\n\twidth: 180px;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","TemplateDetails","TemplatesView","WorkflowPreview","useExternalHooks","mapStores","useTemplatesStore","usePostHog","template","setPageTitle","id","e","useTemplateWorkflow","useNodeTypesStore","contentArea","_component_TemplatesView","_resolveComponent","notFoundError","_createBlock","_createSlots","_withCtx","_ctx","_openBlock","_createElementBlock","$style","_normalizeClass","_createVNode","_component_n8n_text","$locale","_createTextVNode","_toDisplayString","_component_n8n_heading","_createCommentVNode","_component_n8n_loading","_createElementVNode","_component_n8n_button","templateId","_cache","$event","showPreview","_component_WorkflowPreview","onHidePreview","loading"],"mappings":"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"}
1
+ {"version":3,"file":"TemplatesWorkflowView-FoPXbc_4.js","sources":["../../src/views/TemplatesWorkflowView.vue"],"sourcesContent":["<template>\n\t<TemplatesView :go-back-enabled=\"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=\"template && template.name\" tag=\"h1\" size=\"2xlarge\">{{\n\t\t\t\t\t\ttemplate.name\n\t\t\t\t\t}}</n8n-heading>\n\t\t\t\t\t<n8n-text v-if=\"template && template.name\" color=\"text-base\" size=\"small\">\n\t\t\t\t\t\t{{ $locale.baseText('generic.workflow') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-loading :loading=\"!template || !template.name\" :rows=\"2\" variant=\"h1\" />\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\tv-if=\"template\"\n\t\t\t\t\t\tdata-test-id=\"use-template-button\"\n\t\t\t\t\t\t:label=\"$locale.baseText('template.buttons.useThisWorkflowButton')\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t@click=\"openTemplateSetup(templateId, $event)\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-loading :loading=\"!template\" :rows=\"1\" variant=\"button\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else :class=\"$style.notFound\">\n\t\t\t\t<n8n-text color=\"text-base\">{{ $locale.baseText('templates.workflowsNotFound') }}</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.image\">\n\t\t\t\t<WorkflowPreview\n\t\t\t\t\tv-if=\"showPreview\"\n\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t:workflow=\"template && template.workflow\"\n\t\t\t\t\t@close=\"onHidePreview\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.content\">\n\t\t\t\t<div :class=\"$style.markdown\" data-test-id=\"template-description\">\n\t\t\t\t\t<n8n-markdown\n\t\t\t\t\t\t:content=\"template && template.description\"\n\t\t\t\t\t\t:images=\"template && template.image\"\n\t\t\t\t\t\t:loading=\"loading\"\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.appsInTheWorkflow')\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:template=\"template\"\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 TemplatesView from './TemplatesView.vue';\nimport WorkflowPreview from '@/components/WorkflowPreview.vue';\n\nimport type { ITemplatesWorkflowFull } from '@/Interface';\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { usePostHog } from '@/stores/posthog.store';\nimport { useTemplateWorkflow } from '@/utils/templates/templateActions';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\n\nexport default defineComponent({\n\tname: 'TemplatesWorkflowView',\n\tcomponents: {\n\t\tTemplateDetails,\n\t\tTemplatesView,\n\t\tWorkflowPreview,\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\ttemplate(): ITemplatesWorkflowFull | null {\n\t\t\treturn this.templatesStore.getFullTemplateById(this.templateId);\n\t\t},\n\t\ttemplateId() {\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},\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tshowPreview: true,\n\t\t\tnotFoundError: false,\n\t\t};\n\t},\n\twatch: {\n\t\ttemplate(template: ITemplatesWorkflowFull) {\n\t\t\tif (template) {\n\t\t\t\tsetPageTitle(`n8n - Template template: ${template.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.template && this.template.full) {\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.templatesStore.fetchTemplateById(this.templateId);\n\t\t} catch (e) {\n\t\t\tthis.notFoundError = true;\n\t\t}\n\n\t\tthis.loading = false;\n\t},\n\tmethods: {\n\t\tasync openTemplateSetup(id: string, e: PointerEvent) {\n\t\t\tawait useTemplateWorkflow({\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: e.metaKey || e.ctrlKey,\n\t\t\t\texternalHooks: this.externalHooks,\n\t\t\t\tnodeTypesStore: useNodeTypesStore(),\n\t\t\t\ttelemetry: this.$telemetry,\n\t\t\t\ttemplatesStore: useTemplatesStore(),\n\t\t\t\tsource: 'template_preview',\n\t\t\t});\n\t\t},\n\t\tonHidePreview() {\n\t\t\tthis.showPreview = false;\n\t\t},\n\t\tscrollToTop() {\n\t\t\tconst contentArea = document.getElementById('content');\n\n\t\t\tif (contentArea) {\n\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\ttop: 0,\n\t\t\t\t});\n\t\t\t}\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.notFound {\n\tpadding-top: var(--spacing-xl);\n}\n\n.title {\n\twidth: 75%;\n}\n\n.button {\n\tdisplay: block;\n}\n\n.image {\n\twidth: 100%;\n\theight: 500px;\n\tborder: var(--border-base);\n\tborder-radius: var(--border-radius-large);\n\toverflow: hidden;\n\n\timg {\n\t\twidth: 100%;\n\t}\n}\n\n.content {\n\tpadding: var(--spacing-2xl) 0;\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.markdown {\n\twidth: calc(100% - 180px);\n\tpadding-right: var(--spacing-2xl);\n\tmargin-bottom: var(--spacing-l);\n\n\t@media (max-width: $breakpoint-xs) {\n\t\twidth: 100%;\n\t}\n}\n\n.details {\n\twidth: 180px;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","TemplateDetails","TemplatesView","WorkflowPreview","useExternalHooks","mapStores","useTemplatesStore","usePostHog","template","setPageTitle","id","e","useTemplateWorkflow","useNodeTypesStore","contentArea","_component_TemplatesView","_resolveComponent","notFoundError","_createBlock","_createSlots","_withCtx","_ctx","_openBlock","_createElementBlock","$style","_normalizeClass","_createVNode","_component_n8n_text","$locale","_createTextVNode","_toDisplayString","_component_n8n_heading","_createCommentVNode","_component_n8n_loading","_createElementVNode","_component_n8n_button","templateId","_cache","$event","showPreview","_component_WorkflowPreview","onHidePreview","loading"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{l as ie,M as re,b as ue,d as de}from"./index-Qw68KAhz.js";import{e as J,l as ee,f as ae,gb as te,t as se,x as le,_ as ne,u as ce,gc as ve,aa as be,O as pe}from"./n8n-0pza0mdA.js";import{R as me}from"./ResourcesListLayout-oPQAgi31.js";import{G as oe,r as T,e as S,b as fe,d as ye,l as r,m as k,p as g,R as c,M as B,u as i,T as m,O as n,S as C,I as W,Q as q,n as Y,ag as M,D as _e,y as ge,a9 as ke}from"./vendor-KLOX9vbo.js";import"./pinia-28uZ5ZtB.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.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"./lodash-es-wI9avrph.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./uuid-McvpxQtQ.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./luxon-ZRIU05qF.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./@vueuse/core-JpwZAlxf.js";import"./esprima-next-ulPLCZ1Z.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";const Te={class:"variables-key-column"},xe={key:0},we={class:"variables-value-column"},Ce={key:0},he={class:"variables-usage-column"},Ve={key:0},$e=oe({__name:"VariablesRow",props:{data:{type:Object,default:()=>({})},editing:{type:Boolean,default:!1}},emits:["save","cancel","edit","delete"],setup(h,{emit:z}){const s=le(),D=ie(),{showMessage:N}=J(),j=ee(),d=ae(),R=z,E=h,f=te(d.currentUser),t=T({...E.data}),V=T({key:!1,value:!1}),o=S(()=>V.value.key&&V.value.value),x=T(),G=T(),u=T(`$vars.${E.data.key}`),$=S(()=>j.isEnterpriseFeatureEnabled(se.Variables));S(()=>$.value&&(f.edit||f.delete)),fe(()=>{A()});const H=[{name:"REQUIRED"},{name:"MAX_LENGTH",config:{maximum:50}},{name:"MATCH_REGEX",config:{regex:/^[a-zA-Z]/,message:s.baseText("variables.editing.key.error.startsWithLetter")}},{name:"MATCH_REGEX",config:{regex:/^[a-zA-Z][a-zA-Z0-9_]*$/,message:s.baseText("variables.editing.key.error.jsonKey")}}],w=[{name:"MAX_LENGTH",config:{maximum:220}}];ye(()=>t.value.key,async()=>{await Y(),V.value.key&&b()});function b(){u.value=`$vars.${t.value.key||E.data.key}`}async function F(){t.value={...E.data},R("cancel",t.value)}async function P(){R("save",t.value)}async function X(){R("edit",t.value),await Y(),A()}async function L(){R("delete",t.value)}function U(v,l){V.value[v]=l}function K(){D.copy(u.value),N({title:s.baseText("variables.row.usage.copiedToClipboard"),type:"success"})}function A(){var v,l,y;(y=(l=(v=x.value)==null?void 0:v.inputRef)==null?void 0:l.focus)==null||y.call(l)}return(v,l)=>{const y=M("n8n-form-input"),_=M("n8n-tooltip"),e=M("n8n-button");return r(),k("tr",{class:W(v.$style.variablesRow),"data-test-id":"variables-row"},[g("td",Te,[g("div",null,[h.editing?(r(),B(y,{key:1,ref_key:"keyInputRef",ref:x,modelValue:t.value.key,"onUpdate:modelValue":l[0]||(l[0]=a=>t.value.key=a),label:"",name:"key","data-test-id":"variable-row-key-input",placeholder:i(s).baseText("variables.editing.key.placeholder"),required:"","validate-on-blur":"","validation-rules":H,onValidate:l[1]||(l[1]=a=>U("key",a))},null,8,["modelValue","placeholder"])):(r(),k("span",xe,c(h.data.key),1))])]),g("td",we,[g("div",null,[h.editing?(r(),B(y,{key:1,ref_key:"valueInputRef",ref:G,modelValue:t.value.value,"onUpdate:modelValue":l[2]||(l[2]=a=>t.value.value=a),label:"",name:"value","data-test-id":"variable-row-value-input",placeholder:i(s).baseText("variables.editing.value.placeholder"),"validate-on-blur":"","validation-rules":w,onValidate:l[3]||(l[3]=a=>U("value",a))},null,8,["modelValue","placeholder"])):(r(),k("span",Ce,c(h.data.value),1))])]),g("td",he,[g("div",null,[m(_,{placement:"top"},{content:n(()=>[C(c(i(s).baseText("variables.row.usage.copyToClipboard")),1)]),default:n(()=>[t.value.key&&u.value?(r(),k("span",{key:0,class:W(v.$style.usageSyntax),onClick:K},c(u.value),3)):q("",!0)]),_:1})])]),$.value?(r(),k("td",Ve,[h.editing?(r(),k("div",{key:0,class:W(v.$style.buttons)},[m(e,{"data-test-id":"variable-row-cancel-button",type:"tertiary",class:"mr-xs",onClick:F},{default:n(()=>[C(c(i(s).baseText("variables.row.button.cancel")),1)]),_:1}),m(e,{"data-test-id":"variable-row-save-button",disabled:!o.value,type:"primary",onClick:P},{default:n(()=>[C(c(i(s).baseText("variables.row.button.save")),1)]),_:1},8,["disabled"])],2)):(r(),k("div",{key:1,class:W([v.$style.buttons,v.$style.hoverButtons])},[m(_,{disabled:i(f).edit,placement:"top"},{content:n(()=>[C(c(i(s).baseText("variables.row.button.edit.onlyOwnerCanSave")),1)]),default:n(()=>[g("div",null,[m(e,{"data-test-id":"variable-row-edit-button",type:"tertiary",class:"mr-xs",disabled:!i(f).edit,onClick:X},{default:n(()=>[C(c(i(s).baseText("variables.row.button.edit")),1)]),_:1},8,["disabled"])])]),_:1},8,["disabled"]),m(_,{disabled:i(f).delete,placement:"top"},{content:n(()=>[C(c(i(s).baseText("variables.row.button.delete.onlyOwnerCanDelete")),1)]),default:n(()=>[g("div",null,[m(e,{"data-test-id":"variable-row-delete-button",type:"tertiary",disabled:!i(f).delete,onClick:L},{default:n(()=>[C(c(i(s).baseText("variables.row.button.delete")),1)]),_:1},8,["disabled"])])]),_:1},8,["disabled"])],2))])):q("",!0)],2)}}}),Se="_variablesRow_14ir1_1",Re="_hoverButtons_14ir1_1",Ee="_buttons_14ir1_10",Ae="_usageSyntax_14ir1_21",Be={variablesRow:Se,hoverButtons:Re,buttons:Ee,usageSyntax:Ae},Me={$style:Be},Ue=ne($e,[["__cssModules",Me]]),Ie={key:0},Oe={key:1},O="@tmpvar",De=oe({__name:"VariablesView",setup(h){const z=ee(),s=re(),D=ae(),N=ce(),j=pe(),d=le(),R=de(),E=ue();let f=()=>{};const t=T(null),{showError:V}=J(),o=T([]),x=T({}),G=te(D.currentUser),u=S(()=>z.isEnterpriseFeatureEnabled(se.Variables)),$=S(()=>u.value&&G.create),H=S(()=>[{id:0,path:"name",label:d.baseText("variables.table.key"),classes:["variables-key-column"]},{id:1,path:"value",label:d.baseText("variables.table.value"),classes:["variables-value-column"]},{id:2,path:"usage",label:d.baseText("variables.table.usage"),classes:["variables-usage-column"]},...u.value?[{id:3,path:"actions",label:""}]:[]]),w=S(()=>N.contextBasedTranslationKeys),b=T([]),F=(e,a,p)=>`${e.id}`.startsWith(O)?-1:`${a.id}`.startsWith(O)?1:b.value.includes(e.id)&&b.value.includes(a.id)?b.value.indexOf(e.id)-b.value.indexOf(a.id):b.value.includes(e.id)?-1:b.value.includes(a.id)?1:p==="asc"?_(e).trim().localeCompare(_(a).trim()):_(a).trim().localeCompare(_(e).trim()),P={nameAsc:(e,a)=>F(e,a,"asc"),nameDesc:(e,a)=>F(e,a,"desc")};function X(){b.value=[]}async function L(){u.value&&(await s.fetchAllVariables(),o.value=[...s.variables])}function U(){const e={id:ve(O),key:"",value:""};t.value&&(t.value.$refs.listWrapperRef&&(t.value.$refs.listWrapperRef.scrollTop=0),t.value.currentPage!==1&&t.value.setCurrentPage(1)),o.value.unshift(e),x.value[e.id]=!0,j.track("User clicked add variable button")}async function K(e){let a;try{if(typeof e.id=="string"&&e.id.startsWith(O)){const{id:p,...Z}=e;a=await s.createVariable(Z),o.value.unshift(a),o.value=o.value.filter(I=>I.id!==e.id),b.value.unshift(a.id)}else a=await s.updateVariable(e),o.value=o.value.filter(p=>p.id!==e.id),o.value.push(a),A(a)}catch(p){V(p,d.baseText("variables.errors.save"))}}function A(e){x.value={...x.value,[e.id]:!x.value[e.id]}}function v(e){typeof e.id=="string"&&e.id.startsWith(O)?o.value=o.value.filter(a=>a.id!==e.id):A(e)}async function l(e){try{if(await R.confirm(d.baseText("variables.modals.deleteConfirm.message",{interpolate:{name:e.key}}),d.baseText("variables.modals.deleteConfirm.title"),{confirmButtonText:d.baseText("variables.modals.deleteConfirm.confirmButton"),cancelButtonText:d.baseText("variables.modals.deleteConfirm.cancelButton")})!==be)return;await s.deleteVariable(e),o.value=o.value.filter(p=>p.id!==e.id)}catch(a){V(a,d.baseText("variables.errors.delete"))}}function y(){N.goToUpgrade("variables","upgrade-variables")}function _(e){return e.key}return _e(()=>{f=E.$onAction(({name:e,after:a})=>{e==="pullWorkfolder"&&a&&a(()=>{L()})})}),ge(()=>{f()}),(e,a)=>{const p=M("n8n-button"),Z=M("n8n-tooltip"),I=M("n8n-action-box");return r(),B(me,{ref_key:"layoutRef",ref:t,class:"variables-view","resource-key":"variables",disabled:!u.value,resources:o.value,initialize:L,shareable:!1,"display-name":_,"sort-fns":P,"sort-options":["nameAsc","nameDesc"],"show-filters-dropdown":!1,type:"datatable","type-props":{columns:H.value},onSort:X,"onClick:add":U},ke({"add-button":n(()=>[m(Z,{placement:"top",disabled:$.value},{content:n(()=>[u.value?(r(),k("span",Oe,c(i(d).baseText("variables.add.onlyOwnerCanCreate")),1)):(r(),k("span",Ie,c(i(d).baseText(`variables.add.unavailable${o.value.length===0?".empty":""}`)),1))]),default:n(()=>[g("div",null,[m(p,{size:"large",block:"",disabled:!$.value,"data-test-id":"resources-list-add",onClick:U},{default:n(()=>[C(c(e.$locale.baseText("variables.add")),1)]),_:1},8,["disabled"])])]),_:1},8,["disabled"])]),default:n(({data:Q})=>[(r(),B(Ue,{key:Q.id,editing:x.value[Q.id],data:Q,onSave:K,onEdit:A,onCancel:v,onDelete:l},null,8,["editing","data"]))]),_:2},[u.value?void 0:{name:"preamble",fn:n(()=>[m(I,{class:"mb-m","data-test-id":"unavailable-resources-list",emoji:"👋",heading:e.$locale.baseText(w.value.variables.unavailable.title),description:e.$locale.baseText(w.value.variables.unavailable.description),"button-text":e.$locale.baseText(w.value.variables.unavailable.button),"button-type":"secondary","onClick:button":y},null,8,["heading","description","button-text"])]),key:"0"},!u.value||u.value&&!$.value?{name:"empty",fn:n(()=>[u.value?$.value?q("",!0):(r(),B(I,{key:1,"data-test-id":"cannot-create-variables",emoji:"👋",heading:e.$locale.baseText("variables.empty.notAllowedToCreate.heading",{interpolate:{name:i(D).currentUser.firstName}}),description:e.$locale.baseText("variables.empty.notAllowedToCreate.description"),onClick:y},null,8,["heading","description"])):(r(),B(I,{key:0,"data-test-id":"unavailable-resources-list",emoji:"👋",heading:e.$locale.baseText(w.value.variables.unavailable.title),description:e.$locale.baseText(w.value.variables.unavailable.description),"button-text":e.$locale.baseText(w.value.variables.unavailable.button),"button-type":"secondary","onClick:button":y},null,8,["heading","description","button-text"]))]),key:"1"}:void 0]),1032,["disabled","resources","type-props"])}}}),Ne="_sidebarContainer_pm4w0_5",Fe={"type-input":"_type-input_pm4w0_1",sidebarContainer:Ne},Le={$style:Fe},fa=ne(De,[["__cssModules",Le],["__scopeId","data-v-40e5c6a4"]]);export{fa as default};
2
- //# sourceMappingURL=VariablesView-pLmlCm20.js.map
1
+ import{l as ie,M as re,b as ue,d as de}from"./index-6M_Mo9yq.js";import{e as J,l as ee,f as ae,gb as te,t as se,x as le,_ as ne,u as ce,gc as ve,aa as be,O as pe}from"./n8n-0pza0mdA.js";import{R as me}from"./ResourcesListLayout-oPQAgi31.js";import{G as oe,r as T,e as S,b as fe,d as ye,l as r,m as k,p as g,R as c,M as B,u as i,T as m,O as n,S as C,I as W,Q as q,n as Y,ag as M,D as _e,y as ge,a9 as ke}from"./vendor-KLOX9vbo.js";import"./pinia-28uZ5ZtB.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.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"./lodash-es-wI9avrph.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./uuid-McvpxQtQ.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./luxon-ZRIU05qF.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./@vueuse/core-JpwZAlxf.js";import"./esprima-next-ulPLCZ1Z.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";const Te={class:"variables-key-column"},xe={key:0},we={class:"variables-value-column"},Ce={key:0},he={class:"variables-usage-column"},Ve={key:0},$e=oe({__name:"VariablesRow",props:{data:{type:Object,default:()=>({})},editing:{type:Boolean,default:!1}},emits:["save","cancel","edit","delete"],setup(h,{emit:z}){const s=le(),D=ie(),{showMessage:N}=J(),j=ee(),d=ae(),R=z,E=h,f=te(d.currentUser),t=T({...E.data}),V=T({key:!1,value:!1}),o=S(()=>V.value.key&&V.value.value),x=T(),G=T(),u=T(`$vars.${E.data.key}`),$=S(()=>j.isEnterpriseFeatureEnabled(se.Variables));S(()=>$.value&&(f.edit||f.delete)),fe(()=>{A()});const H=[{name:"REQUIRED"},{name:"MAX_LENGTH",config:{maximum:50}},{name:"MATCH_REGEX",config:{regex:/^[a-zA-Z]/,message:s.baseText("variables.editing.key.error.startsWithLetter")}},{name:"MATCH_REGEX",config:{regex:/^[a-zA-Z][a-zA-Z0-9_]*$/,message:s.baseText("variables.editing.key.error.jsonKey")}}],w=[{name:"MAX_LENGTH",config:{maximum:220}}];ye(()=>t.value.key,async()=>{await Y(),V.value.key&&b()});function b(){u.value=`$vars.${t.value.key||E.data.key}`}async function F(){t.value={...E.data},R("cancel",t.value)}async function P(){R("save",t.value)}async function X(){R("edit",t.value),await Y(),A()}async function L(){R("delete",t.value)}function U(v,l){V.value[v]=l}function K(){D.copy(u.value),N({title:s.baseText("variables.row.usage.copiedToClipboard"),type:"success"})}function A(){var v,l,y;(y=(l=(v=x.value)==null?void 0:v.inputRef)==null?void 0:l.focus)==null||y.call(l)}return(v,l)=>{const y=M("n8n-form-input"),_=M("n8n-tooltip"),e=M("n8n-button");return r(),k("tr",{class:W(v.$style.variablesRow),"data-test-id":"variables-row"},[g("td",Te,[g("div",null,[h.editing?(r(),B(y,{key:1,ref_key:"keyInputRef",ref:x,modelValue:t.value.key,"onUpdate:modelValue":l[0]||(l[0]=a=>t.value.key=a),label:"",name:"key","data-test-id":"variable-row-key-input",placeholder:i(s).baseText("variables.editing.key.placeholder"),required:"","validate-on-blur":"","validation-rules":H,onValidate:l[1]||(l[1]=a=>U("key",a))},null,8,["modelValue","placeholder"])):(r(),k("span",xe,c(h.data.key),1))])]),g("td",we,[g("div",null,[h.editing?(r(),B(y,{key:1,ref_key:"valueInputRef",ref:G,modelValue:t.value.value,"onUpdate:modelValue":l[2]||(l[2]=a=>t.value.value=a),label:"",name:"value","data-test-id":"variable-row-value-input",placeholder:i(s).baseText("variables.editing.value.placeholder"),"validate-on-blur":"","validation-rules":w,onValidate:l[3]||(l[3]=a=>U("value",a))},null,8,["modelValue","placeholder"])):(r(),k("span",Ce,c(h.data.value),1))])]),g("td",he,[g("div",null,[m(_,{placement:"top"},{content:n(()=>[C(c(i(s).baseText("variables.row.usage.copyToClipboard")),1)]),default:n(()=>[t.value.key&&u.value?(r(),k("span",{key:0,class:W(v.$style.usageSyntax),onClick:K},c(u.value),3)):q("",!0)]),_:1})])]),$.value?(r(),k("td",Ve,[h.editing?(r(),k("div",{key:0,class:W(v.$style.buttons)},[m(e,{"data-test-id":"variable-row-cancel-button",type:"tertiary",class:"mr-xs",onClick:F},{default:n(()=>[C(c(i(s).baseText("variables.row.button.cancel")),1)]),_:1}),m(e,{"data-test-id":"variable-row-save-button",disabled:!o.value,type:"primary",onClick:P},{default:n(()=>[C(c(i(s).baseText("variables.row.button.save")),1)]),_:1},8,["disabled"])],2)):(r(),k("div",{key:1,class:W([v.$style.buttons,v.$style.hoverButtons])},[m(_,{disabled:i(f).edit,placement:"top"},{content:n(()=>[C(c(i(s).baseText("variables.row.button.edit.onlyOwnerCanSave")),1)]),default:n(()=>[g("div",null,[m(e,{"data-test-id":"variable-row-edit-button",type:"tertiary",class:"mr-xs",disabled:!i(f).edit,onClick:X},{default:n(()=>[C(c(i(s).baseText("variables.row.button.edit")),1)]),_:1},8,["disabled"])])]),_:1},8,["disabled"]),m(_,{disabled:i(f).delete,placement:"top"},{content:n(()=>[C(c(i(s).baseText("variables.row.button.delete.onlyOwnerCanDelete")),1)]),default:n(()=>[g("div",null,[m(e,{"data-test-id":"variable-row-delete-button",type:"tertiary",disabled:!i(f).delete,onClick:L},{default:n(()=>[C(c(i(s).baseText("variables.row.button.delete")),1)]),_:1},8,["disabled"])])]),_:1},8,["disabled"])],2))])):q("",!0)],2)}}}),Se="_variablesRow_14ir1_1",Re="_hoverButtons_14ir1_1",Ee="_buttons_14ir1_10",Ae="_usageSyntax_14ir1_21",Be={variablesRow:Se,hoverButtons:Re,buttons:Ee,usageSyntax:Ae},Me={$style:Be},Ue=ne($e,[["__cssModules",Me]]),Ie={key:0},Oe={key:1},O="@tmpvar",De=oe({__name:"VariablesView",setup(h){const z=ee(),s=re(),D=ae(),N=ce(),j=pe(),d=le(),R=de(),E=ue();let f=()=>{};const t=T(null),{showError:V}=J(),o=T([]),x=T({}),G=te(D.currentUser),u=S(()=>z.isEnterpriseFeatureEnabled(se.Variables)),$=S(()=>u.value&&G.create),H=S(()=>[{id:0,path:"name",label:d.baseText("variables.table.key"),classes:["variables-key-column"]},{id:1,path:"value",label:d.baseText("variables.table.value"),classes:["variables-value-column"]},{id:2,path:"usage",label:d.baseText("variables.table.usage"),classes:["variables-usage-column"]},...u.value?[{id:3,path:"actions",label:""}]:[]]),w=S(()=>N.contextBasedTranslationKeys),b=T([]),F=(e,a,p)=>`${e.id}`.startsWith(O)?-1:`${a.id}`.startsWith(O)?1:b.value.includes(e.id)&&b.value.includes(a.id)?b.value.indexOf(e.id)-b.value.indexOf(a.id):b.value.includes(e.id)?-1:b.value.includes(a.id)?1:p==="asc"?_(e).trim().localeCompare(_(a).trim()):_(a).trim().localeCompare(_(e).trim()),P={nameAsc:(e,a)=>F(e,a,"asc"),nameDesc:(e,a)=>F(e,a,"desc")};function X(){b.value=[]}async function L(){u.value&&(await s.fetchAllVariables(),o.value=[...s.variables])}function U(){const e={id:ve(O),key:"",value:""};t.value&&(t.value.$refs.listWrapperRef&&(t.value.$refs.listWrapperRef.scrollTop=0),t.value.currentPage!==1&&t.value.setCurrentPage(1)),o.value.unshift(e),x.value[e.id]=!0,j.track("User clicked add variable button")}async function K(e){let a;try{if(typeof e.id=="string"&&e.id.startsWith(O)){const{id:p,...Z}=e;a=await s.createVariable(Z),o.value.unshift(a),o.value=o.value.filter(I=>I.id!==e.id),b.value.unshift(a.id)}else a=await s.updateVariable(e),o.value=o.value.filter(p=>p.id!==e.id),o.value.push(a),A(a)}catch(p){V(p,d.baseText("variables.errors.save"))}}function A(e){x.value={...x.value,[e.id]:!x.value[e.id]}}function v(e){typeof e.id=="string"&&e.id.startsWith(O)?o.value=o.value.filter(a=>a.id!==e.id):A(e)}async function l(e){try{if(await R.confirm(d.baseText("variables.modals.deleteConfirm.message",{interpolate:{name:e.key}}),d.baseText("variables.modals.deleteConfirm.title"),{confirmButtonText:d.baseText("variables.modals.deleteConfirm.confirmButton"),cancelButtonText:d.baseText("variables.modals.deleteConfirm.cancelButton")})!==be)return;await s.deleteVariable(e),o.value=o.value.filter(p=>p.id!==e.id)}catch(a){V(a,d.baseText("variables.errors.delete"))}}function y(){N.goToUpgrade("variables","upgrade-variables")}function _(e){return e.key}return _e(()=>{f=E.$onAction(({name:e,after:a})=>{e==="pullWorkfolder"&&a&&a(()=>{L()})})}),ge(()=>{f()}),(e,a)=>{const p=M("n8n-button"),Z=M("n8n-tooltip"),I=M("n8n-action-box");return r(),B(me,{ref_key:"layoutRef",ref:t,class:"variables-view","resource-key":"variables",disabled:!u.value,resources:o.value,initialize:L,shareable:!1,"display-name":_,"sort-fns":P,"sort-options":["nameAsc","nameDesc"],"show-filters-dropdown":!1,type:"datatable","type-props":{columns:H.value},onSort:X,"onClick:add":U},ke({"add-button":n(()=>[m(Z,{placement:"top",disabled:$.value},{content:n(()=>[u.value?(r(),k("span",Oe,c(i(d).baseText("variables.add.onlyOwnerCanCreate")),1)):(r(),k("span",Ie,c(i(d).baseText(`variables.add.unavailable${o.value.length===0?".empty":""}`)),1))]),default:n(()=>[g("div",null,[m(p,{size:"large",block:"",disabled:!$.value,"data-test-id":"resources-list-add",onClick:U},{default:n(()=>[C(c(e.$locale.baseText("variables.add")),1)]),_:1},8,["disabled"])])]),_:1},8,["disabled"])]),default:n(({data:Q})=>[(r(),B(Ue,{key:Q.id,editing:x.value[Q.id],data:Q,onSave:K,onEdit:A,onCancel:v,onDelete:l},null,8,["editing","data"]))]),_:2},[u.value?void 0:{name:"preamble",fn:n(()=>[m(I,{class:"mb-m","data-test-id":"unavailable-resources-list",emoji:"👋",heading:e.$locale.baseText(w.value.variables.unavailable.title),description:e.$locale.baseText(w.value.variables.unavailable.description),"button-text":e.$locale.baseText(w.value.variables.unavailable.button),"button-type":"secondary","onClick:button":y},null,8,["heading","description","button-text"])]),key:"0"},!u.value||u.value&&!$.value?{name:"empty",fn:n(()=>[u.value?$.value?q("",!0):(r(),B(I,{key:1,"data-test-id":"cannot-create-variables",emoji:"👋",heading:e.$locale.baseText("variables.empty.notAllowedToCreate.heading",{interpolate:{name:i(D).currentUser.firstName}}),description:e.$locale.baseText("variables.empty.notAllowedToCreate.description"),onClick:y},null,8,["heading","description"])):(r(),B(I,{key:0,"data-test-id":"unavailable-resources-list",emoji:"👋",heading:e.$locale.baseText(w.value.variables.unavailable.title),description:e.$locale.baseText(w.value.variables.unavailable.description),"button-text":e.$locale.baseText(w.value.variables.unavailable.button),"button-type":"secondary","onClick:button":y},null,8,["heading","description","button-text"]))]),key:"1"}:void 0]),1032,["disabled","resources","type-props"])}}}),Ne="_sidebarContainer_pm4w0_5",Fe={"type-input":"_type-input_pm4w0_1",sidebarContainer:Ne},Le={$style:Fe},fa=ne(De,[["__cssModules",Le],["__scopeId","data-v-40e5c6a4"]]);export{fa as default};
2
+ //# sourceMappingURL=VariablesView-Sg4v_4Ai.js.map