n8n-editor-ui 1.19.1 → 1.19.3

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 (114) hide show
  1. package/.turbo/turbo-build.log +60 -60
  2. package/dist/assets/{AuthView-pnWQAK0S.js → AuthView-KzKyZSHz.js} +2 -2
  3. package/dist/assets/{AuthView-pnWQAK0S.js.map → AuthView-KzKyZSHz.js.map} +1 -1
  4. package/dist/assets/{CanvasControls-kb3__O2G.js → CanvasControls-6jR1_mnm.js} +2 -2
  5. package/dist/assets/{CanvasControls-kb3__O2G.js.map → CanvasControls-6jR1_mnm.js.map} +1 -1
  6. package/dist/assets/{ChangePasswordView-w8ZDdsHs.js → ChangePasswordView-TW8EQPS0.js} +2 -2
  7. package/dist/assets/{ChangePasswordView-w8ZDdsHs.js.map → ChangePasswordView-TW8EQPS0.js.map} +1 -1
  8. package/dist/assets/{CredentialsView-9EPVLguD.js → CredentialsView-AVQZL_tm.js} +2 -2
  9. package/dist/assets/{CredentialsView-9EPVLguD.js.map → CredentialsView-AVQZL_tm.js.map} +1 -1
  10. package/dist/assets/{ExecutionFilter-xWjqUjz0.js → ExecutionFilter-tcX3bN8y.js} +2 -2
  11. package/dist/assets/{ExecutionFilter-xWjqUjz0.js.map → ExecutionFilter-tcX3bN8y.js.map} +1 -1
  12. package/dist/assets/{ExecutionPreview-IQ7v5u01.js → ExecutionPreview-OuL-2qRR.js} +2 -2
  13. package/dist/assets/{ExecutionPreview-IQ7v5u01.js.map → ExecutionPreview-OuL-2qRR.js.map} +1 -1
  14. package/dist/assets/{ExecutionsInfoAccordion-GNoSEKPt.js → ExecutionsInfoAccordion-J0VUGzOg.js} +2 -2
  15. package/dist/assets/{ExecutionsInfoAccordion-GNoSEKPt.js.map → ExecutionsInfoAccordion-J0VUGzOg.js.map} +1 -1
  16. package/dist/assets/{ExecutionsLandingPage-bMbJUz4X.js → ExecutionsLandingPage-LNx1ct-F.js} +2 -2
  17. package/dist/assets/{ExecutionsLandingPage-bMbJUz4X.js.map → ExecutionsLandingPage-LNx1ct-F.js.map} +1 -1
  18. package/dist/assets/{ExecutionsList-VqMNpnno.js → ExecutionsList-1jr8ziaw.js} +2 -2
  19. package/dist/assets/ExecutionsList-1jr8ziaw.js.map +1 -0
  20. package/dist/assets/{ExecutionsView-cib3hepc.js → ExecutionsView-vfalxf-N.js} +2 -2
  21. package/dist/assets/{ExecutionsView-cib3hepc.js.map → ExecutionsView-vfalxf-N.js.map} +1 -1
  22. package/dist/assets/{FixedCollectionParameter-2NZhE0YP.js → FixedCollectionParameter-i4v0_RBC.js} +3 -3
  23. package/dist/assets/{FixedCollectionParameter-2NZhE0YP.js.map → FixedCollectionParameter-i4v0_RBC.js.map} +1 -1
  24. package/dist/assets/{ForgotMyPasswordView-JpQD0IzR.js → ForgotMyPasswordView-n-WXfUXB.js} +2 -2
  25. package/dist/assets/{ForgotMyPasswordView-JpQD0IzR.js.map → ForgotMyPasswordView-n-WXfUXB.js.map} +1 -1
  26. package/dist/assets/{MainHeader-_EB1A67D.js → MainHeader-it41_mme.js} +2 -2
  27. package/dist/assets/{MainHeader-_EB1A67D.js.map → MainHeader-it41_mme.js.map} +1 -1
  28. package/dist/assets/{MainSidebar-QaJ5uvnW.js → MainSidebar-K22ttpb5.js} +2 -2
  29. package/dist/assets/{MainSidebar-QaJ5uvnW.js.map → MainSidebar-K22ttpb5.js.map} +1 -1
  30. package/dist/assets/{NodeCreation-OxTpBRfP.js → NodeCreation-3pcb_BwC.js} +3 -3
  31. package/dist/assets/{NodeCreation-OxTpBRfP.js.map → NodeCreation-3pcb_BwC.js.map} +1 -1
  32. package/dist/assets/{NodeCreator-_GxUysbY.js → NodeCreator-r6gxY14d.js} +2 -2
  33. package/dist/assets/{NodeCreator-_GxUysbY.js.map → NodeCreator-r6gxY14d.js.map} +1 -1
  34. package/dist/assets/{NodeView-CdR2fi_x.js → NodeView-LzPrYfwG.js} +3 -3
  35. package/dist/assets/{NodeView-CdR2fi_x.js.map → NodeView-LzPrYfwG.js.map} +1 -1
  36. package/dist/assets/{ResourcesListLayout-XUIQQpyB.js → ResourcesListLayout-XbNZXU-j.js} +2 -2
  37. package/dist/assets/{ResourcesListLayout-XUIQQpyB.js.map → ResourcesListLayout-XbNZXU-j.js.map} +1 -1
  38. package/dist/assets/{RunDataAi-4m1wWDUf.js → RunDataAi-ueFTZBht.js} +2 -2
  39. package/dist/assets/{RunDataAi-4m1wWDUf.js.map → RunDataAi-ueFTZBht.js.map} +1 -1
  40. package/dist/assets/{RunDataJson-FZZoF8ao.js → RunDataJson-VFzb6R4m.js} +3 -3
  41. package/dist/assets/{RunDataJson-FZZoF8ao.js.map → RunDataJson-VFzb6R4m.js.map} +1 -1
  42. package/dist/assets/{RunDataJsonActions-LZGsgNyW.js → RunDataJsonActions-LDR8SlAW.js} +2 -2
  43. package/dist/assets/{RunDataJsonActions-LZGsgNyW.js.map → RunDataJsonActions-LDR8SlAW.js.map} +1 -1
  44. package/dist/assets/{RunDataSchema-wjyR7MiY.js → RunDataSchema-BB0j0bVA.js} +2 -2
  45. package/dist/assets/{RunDataSchema-wjyR7MiY.js.map → RunDataSchema-BB0j0bVA.js.map} +1 -1
  46. package/dist/assets/{RunDataTable-690SZ7_1.js → RunDataTable-Qas85Wnj.js} +2 -2
  47. package/dist/assets/{RunDataTable-690SZ7_1.js.map → RunDataTable-Qas85Wnj.js.map} +1 -1
  48. package/dist/assets/{SamlOnboarding-9tSVzIi2.js → SamlOnboarding-4D4QjACf.js} +2 -2
  49. package/dist/assets/{SamlOnboarding-9tSVzIi2.js.map → SamlOnboarding-4D4QjACf.js.map} +1 -1
  50. package/dist/assets/{SettingsApiView-95Wb-oA5.js → SettingsApiView-0Ne2kemN.js} +2 -2
  51. package/dist/assets/{SettingsApiView-95Wb-oA5.js.map → SettingsApiView-0Ne2kemN.js.map} +1 -1
  52. package/dist/assets/{SettingsCommunityNodesView-WW65T1Gl.js → SettingsCommunityNodesView-zzzz0aj6.js} +2 -2
  53. package/dist/assets/{SettingsCommunityNodesView-WW65T1Gl.js.map → SettingsCommunityNodesView-zzzz0aj6.js.map} +1 -1
  54. package/dist/assets/{SettingsExternalSecrets-6YJbQ8LH.js → SettingsExternalSecrets-bsdr9nMJ.js} +2 -2
  55. package/dist/assets/{SettingsExternalSecrets-6YJbQ8LH.js.map → SettingsExternalSecrets-bsdr9nMJ.js.map} +1 -1
  56. package/dist/assets/{SettingsFakeDoorView-6ZiGYnHw.js → SettingsFakeDoorView-0ioWE56l.js} +2 -2
  57. package/dist/assets/{SettingsFakeDoorView-6ZiGYnHw.js.map → SettingsFakeDoorView-0ioWE56l.js.map} +1 -1
  58. package/dist/assets/{SettingsLdapView-G9lNDLq4.js → SettingsLdapView-nV_D5CDp.js} +2 -2
  59. package/dist/assets/{SettingsLdapView-G9lNDLq4.js.map → SettingsLdapView-nV_D5CDp.js.map} +1 -1
  60. package/dist/assets/{SettingsLogStreamingView-hOxp5upg.js → SettingsLogStreamingView-GPC6oqoB.js} +2 -2
  61. package/dist/assets/{SettingsLogStreamingView-hOxp5upg.js.map → SettingsLogStreamingView-GPC6oqoB.js.map} +1 -1
  62. package/dist/assets/{SettingsSourceControl-A4p6uSTm.js → SettingsSourceControl-YlWPbedb.js} +2 -2
  63. package/dist/assets/{SettingsSourceControl-A4p6uSTm.js.map → SettingsSourceControl-YlWPbedb.js.map} +1 -1
  64. package/dist/assets/{SettingsSso-kXl38iOM.js → SettingsSso-o3FTQjpW.js} +2 -2
  65. package/dist/assets/{SettingsSso-kXl38iOM.js.map → SettingsSso-o3FTQjpW.js.map} +1 -1
  66. package/dist/assets/{SettingsUsageAndPlan-E00t5N2Z.js → SettingsUsageAndPlan-lypv7X6a.js} +2 -2
  67. package/dist/assets/{SettingsUsageAndPlan-E00t5N2Z.js.map → SettingsUsageAndPlan-lypv7X6a.js.map} +1 -1
  68. package/dist/assets/{SettingsUsersView-4PoSbZc_.js → SettingsUsersView-BP40GKuA.js} +2 -2
  69. package/dist/assets/{SettingsUsersView-4PoSbZc_.js.map → SettingsUsersView-BP40GKuA.js.map} +1 -1
  70. package/dist/assets/{SettingsView-ITSZzUOy.js → SettingsView-UI5wnO8B.js} +2 -2
  71. package/dist/assets/{SettingsView-ITSZzUOy.js.map → SettingsView-UI5wnO8B.js.map} +1 -1
  72. package/dist/assets/{SetupView-iFHyYLKM.js → SetupView-jUHcBldc.js} +2 -2
  73. package/dist/assets/{SetupView-iFHyYLKM.js.map → SetupView-jUHcBldc.js.map} +1 -1
  74. package/dist/assets/{SetupWorkflowFromTemplateView-1mq-ZIl2.js → SetupWorkflowFromTemplateView-xZok8Ro-.js} +2 -2
  75. package/dist/assets/{SetupWorkflowFromTemplateView-1mq-ZIl2.js.map → SetupWorkflowFromTemplateView-xZok8Ro-.js.map} +1 -1
  76. package/dist/assets/{SigninView-eqdMLCtk.js → SigninView-jH2VFMFu.js} +2 -2
  77. package/dist/assets/{SigninView-eqdMLCtk.js.map → SigninView-jH2VFMFu.js.map} +1 -1
  78. package/dist/assets/{SignupView-a26ywVgy.js → SignupView-cQJowW7M.js} +2 -2
  79. package/dist/assets/{SignupView-a26ywVgy.js.map → SignupView-cQJowW7M.js.map} +1 -1
  80. package/dist/assets/{TemplateDetails-neZvQLcE.js → TemplateDetails-FXwRGgg3.js} +2 -2
  81. package/dist/assets/{TemplateDetails-neZvQLcE.js.map → TemplateDetails-FXwRGgg3.js.map} +1 -1
  82. package/dist/assets/{TemplateList-apw79EVp.js → TemplateList-ygiFPwW5.js} +2 -2
  83. package/dist/assets/{TemplateList-apw79EVp.js.map → TemplateList-ygiFPwW5.js.map} +1 -1
  84. package/dist/assets/{TemplatesCollectionView-2NGTxXTg.js → TemplatesCollectionView-iJK5C7dQ.js} +2 -2
  85. package/dist/assets/{TemplatesCollectionView-2NGTxXTg.js.map → TemplatesCollectionView-iJK5C7dQ.js.map} +1 -1
  86. package/dist/assets/{TemplatesSearchView-0FL2pP83.js → TemplatesSearchView-HA2xad9U.js} +2 -2
  87. package/dist/assets/{TemplatesSearchView-0FL2pP83.js.map → TemplatesSearchView-HA2xad9U.js.map} +1 -1
  88. package/dist/assets/{TemplatesWorkflowView-D4Lnmnhg.js → TemplatesWorkflowView-KdHMuTUs.js} +2 -2
  89. package/dist/assets/{TemplatesWorkflowView-D4Lnmnhg.js.map → TemplatesWorkflowView-KdHMuTUs.js.map} +1 -1
  90. package/dist/assets/{VariablesView-tzHYYMLV.js → VariablesView-BGFOVdr1.js} +2 -2
  91. package/dist/assets/{VariablesView-tzHYYMLV.js.map → VariablesView-BGFOVdr1.js.map} +1 -1
  92. package/dist/assets/{WorkerView-AmUPKGBk.js → WorkerView-FnskutaO.js} +2 -2
  93. package/dist/assets/{WorkerView-AmUPKGBk.js.map → WorkerView-FnskutaO.js.map} +1 -1
  94. package/dist/assets/{WorkflowActivator-haTVfR4g.js → WorkflowActivator-B2Cg8gE_.js} +2 -2
  95. package/dist/assets/{WorkflowActivator-haTVfR4g.js.map → WorkflowActivator-B2Cg8gE_.js.map} +1 -1
  96. package/dist/assets/{WorkflowOnboardingView-azyuxv8R.js → WorkflowOnboardingView-ZBFcAyXB.js} +2 -2
  97. package/dist/assets/{WorkflowOnboardingView-azyuxv8R.js.map → WorkflowOnboardingView-ZBFcAyXB.js.map} +1 -1
  98. package/dist/assets/{WorkflowsView-oE-PnjgI.js → WorkflowsView-ZCzM_7eW.js} +2 -2
  99. package/dist/assets/{WorkflowsView-oE-PnjgI.js.map → WorkflowsView-ZCzM_7eW.js.map} +1 -1
  100. package/dist/assets/{cloud-TMu3mk45.js → cloud-B6sgy7jV.js} +2 -2
  101. package/dist/assets/{cloud-TMu3mk45.js.map → cloud-B6sgy7jV.js.map} +1 -1
  102. package/dist/assets/{executionsHelpers-jpam7Sff.js → executionsHelpers-8_uqSfWi.js} +2 -2
  103. package/dist/assets/{executionsHelpers-jpam7Sff.js.map → executionsHelpers-8_uqSfWi.js.map} +1 -1
  104. package/dist/assets/{index-hMVAffQ3.js → index-sMRiWGJS.js} +4 -4
  105. package/dist/assets/{index-hMVAffQ3.js.map → index-sMRiWGJS.js.map} +1 -1
  106. package/dist/assets/{pushConnection-NKwmlD0l.js → pushConnection-SP3wVlD4.js} +2 -2
  107. package/dist/assets/{pushConnection-NKwmlD0l.js.map → pushConnection-SP3wVlD4.js.map} +1 -1
  108. package/dist/assets/{useExecutionDebugging-WpRAbEhr.js → useExecutionDebugging-vYjc-e7j.js} +2 -2
  109. package/dist/assets/{useExecutionDebugging-WpRAbEhr.js.map → useExecutionDebugging-vYjc-e7j.js.map} +1 -1
  110. package/dist/assets/{workflowActivate-UB1_xc5U.js → workflowActivate-FonyQsS3.js} +2 -2
  111. package/dist/assets/{workflowActivate-UB1_xc5U.js.map → workflowActivate-FonyQsS3.js.map} +1 -1
  112. package/dist/index.html +1 -1
  113. package/package.json +1 -1
  114. package/dist/assets/ExecutionsList-VqMNpnno.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateDetails-neZvQLcE.js","sources":["../../src/components/TemplateDetailsBlock.vue","../../src/components/TemplateDetails.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.block\">\n\t\t<div :class=\"$style.header\">\n\t\t\t<n8n-heading tag=\"h3\" size=\"small\" color=\"text-base\">{{ title }}</n8n-heading>\n\t\t</div>\n\t\t<div :class=\"$style.content\">\n\t\t\t<slot></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n\tname: 'TemplateDetailsBlock',\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.block {\n\tpadding-bottom: var(--spacing-xl);\n}\n\n.header {\n\tpadding: 0 0 var(--spacing-4xs);\n\tborder-bottom: var(--border-base);\n}\n\n.content {\n\tpadding: var(--spacing-xs) 0 0;\n}\n</style>\n","<template>\n\t<div>\n\t\t<n8n-loading :loading=\"loading\" :rows=\"5\" variant=\"p\" />\n\n\t\t<template-details-block v-if=\"!loading && template.nodes.length > 0\" :title=\"blockTitle\">\n\t\t\t<div :class=\"$style.icons\">\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"node in filterTemplateNodes(template.nodes)\"\n\t\t\t\t\t:key=\"node.name\"\n\t\t\t\t\t:class=\"$style.icon\"\n\t\t\t\t>\n\t\t\t\t\t<NodeIcon\n\t\t\t\t\t\t:nodeType=\"node\"\n\t\t\t\t\t\t:size=\"24\"\n\t\t\t\t\t\t:showTooltip=\"true\"\n\t\t\t\t\t\t@click=\"redirectToSearchPage(node)\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template-details-block>\n\n\t\t<template-details-block\n\t\t\tv-if=\"!loading && template?.categories.length > 0\"\n\t\t\t:title=\"$locale.baseText('template.details.categories')\"\n\t\t>\n\t\t\t<n8n-tags :tags=\"template.categories\" @click:tag=\"redirectToCategory\" />\n\t\t</template-details-block>\n\n\t\t<template-details-block v-if=\"!loading\" :title=\"$locale.baseText('template.details.details')\">\n\t\t\t<div :class=\"$style.text\">\n\t\t\t\t<n8n-text size=\"small\" color=\"text-base\">\n\t\t\t\t\t{{ $locale.baseText('template.details.created') }}\n\t\t\t\t\t<TimeAgo :date=\"template.createdAt\" />\n\t\t\t\t\t{{ $locale.baseText('template.details.by') }}\n\t\t\t\t\t{{ template.user ? template.user.username : 'n8n team' }}\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.text\">\n\t\t\t\t<n8n-text v-if=\"template.totalViews !== 0\" size=\"small\" color=\"text-base\">\n\t\t\t\t\t{{ $locale.baseText('template.details.viewed') }}\n\t\t\t\t\t{{ abbreviateNumber(template.totalViews) }}\n\t\t\t\t\t{{ $locale.baseText('template.details.times') }}\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t</template-details-block>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport TemplateDetailsBlock from '@/components/TemplateDetailsBlock.vue';\nimport NodeIcon from '@/components/NodeIcon.vue';\nimport { filterTemplateNodes } from '@/utils/nodeTypesUtils';\nimport { abbreviateNumber } from '@/utils/typesUtils';\nimport type { ITemplatesNode, ITemplatesWorkflow, ITemplatesWorkflowFull } from '@/Interface';\nimport { mapStores } from 'pinia';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport TimeAgo from '@/components/TimeAgo.vue';\n\nexport default defineComponent({\n\tname: 'TemplateDetails',\n\tprops: {\n\t\tblockTitle: {\n\t\t\ttype: String,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\ttemplate: {\n\t\t\ttype: Object as PropType<ITemplatesWorkflow | ITemplatesWorkflowFull>,\n\t\t},\n\t},\n\tcomponents: {\n\t\tNodeIcon,\n\t\tTemplateDetailsBlock,\n\t\tTimeAgo,\n\t},\n\tcomputed: {\n\t\t...mapStores(useTemplatesStore),\n\t},\n\tmethods: {\n\t\tabbreviateNumber,\n\t\tfilterTemplateNodes,\n\t\tredirectToCategory(id: string) {\n\t\t\tthis.templatesStore.resetSessionId();\n\t\t\tvoid this.$router.push(`/templates?categories=${id}`);\n\t\t},\n\t\tredirectToSearchPage(node: ITemplatesNode) {\n\t\t\tthis.templatesStore.resetSessionId();\n\t\t\tvoid this.$router.push(`/templates?search=${node.displayName}`);\n\t\t},\n\t},\n});\n</script>\n<style lang=\"scss\" module>\n.icons {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n.icon {\n\tmargin-right: var(--spacing-xs);\n\tmargin-bottom: var(--spacing-xs);\n\tcursor: pointer;\n}\n.text {\n\tpadding-bottom: var(--spacing-xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","_resolveComponent","_normalizeClass","_ctx","_component_n8n_heading","_createElementVNode","_sfc_main","NodeIcon","TemplateDetailsBlock","TimeAgo","mapStores","useTemplatesStore","abbreviateNumber","filterTemplateNodes","id","node","_openBlock","_createElementBlock","_createVNode","_component_n8n_loading","_createBlock","_component_template_details_block","_withCtx","_Fragment","_renderList","_component_NodeIcon","_a","_component_n8n_tags","_component_n8n_text","_createTextVNode","_toDisplayString","_component_TimeAgo"],"mappings":"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"}
1
+ {"version":3,"file":"TemplateDetails-FXwRGgg3.js","sources":["../../src/components/TemplateDetailsBlock.vue","../../src/components/TemplateDetails.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.block\">\n\t\t<div :class=\"$style.header\">\n\t\t\t<n8n-heading tag=\"h3\" size=\"small\" color=\"text-base\">{{ title }}</n8n-heading>\n\t\t</div>\n\t\t<div :class=\"$style.content\">\n\t\t\t<slot></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n\tname: 'TemplateDetailsBlock',\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.block {\n\tpadding-bottom: var(--spacing-xl);\n}\n\n.header {\n\tpadding: 0 0 var(--spacing-4xs);\n\tborder-bottom: var(--border-base);\n}\n\n.content {\n\tpadding: var(--spacing-xs) 0 0;\n}\n</style>\n","<template>\n\t<div>\n\t\t<n8n-loading :loading=\"loading\" :rows=\"5\" variant=\"p\" />\n\n\t\t<template-details-block v-if=\"!loading && template.nodes.length > 0\" :title=\"blockTitle\">\n\t\t\t<div :class=\"$style.icons\">\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"node in filterTemplateNodes(template.nodes)\"\n\t\t\t\t\t:key=\"node.name\"\n\t\t\t\t\t:class=\"$style.icon\"\n\t\t\t\t>\n\t\t\t\t\t<NodeIcon\n\t\t\t\t\t\t:nodeType=\"node\"\n\t\t\t\t\t\t:size=\"24\"\n\t\t\t\t\t\t:showTooltip=\"true\"\n\t\t\t\t\t\t@click=\"redirectToSearchPage(node)\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template-details-block>\n\n\t\t<template-details-block\n\t\t\tv-if=\"!loading && template?.categories.length > 0\"\n\t\t\t:title=\"$locale.baseText('template.details.categories')\"\n\t\t>\n\t\t\t<n8n-tags :tags=\"template.categories\" @click:tag=\"redirectToCategory\" />\n\t\t</template-details-block>\n\n\t\t<template-details-block v-if=\"!loading\" :title=\"$locale.baseText('template.details.details')\">\n\t\t\t<div :class=\"$style.text\">\n\t\t\t\t<n8n-text size=\"small\" color=\"text-base\">\n\t\t\t\t\t{{ $locale.baseText('template.details.created') }}\n\t\t\t\t\t<TimeAgo :date=\"template.createdAt\" />\n\t\t\t\t\t{{ $locale.baseText('template.details.by') }}\n\t\t\t\t\t{{ template.user ? template.user.username : 'n8n team' }}\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.text\">\n\t\t\t\t<n8n-text v-if=\"template.totalViews !== 0\" size=\"small\" color=\"text-base\">\n\t\t\t\t\t{{ $locale.baseText('template.details.viewed') }}\n\t\t\t\t\t{{ abbreviateNumber(template.totalViews) }}\n\t\t\t\t\t{{ $locale.baseText('template.details.times') }}\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t</template-details-block>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport TemplateDetailsBlock from '@/components/TemplateDetailsBlock.vue';\nimport NodeIcon from '@/components/NodeIcon.vue';\nimport { filterTemplateNodes } from '@/utils/nodeTypesUtils';\nimport { abbreviateNumber } from '@/utils/typesUtils';\nimport type { ITemplatesNode, ITemplatesWorkflow, ITemplatesWorkflowFull } from '@/Interface';\nimport { mapStores } from 'pinia';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport TimeAgo from '@/components/TimeAgo.vue';\n\nexport default defineComponent({\n\tname: 'TemplateDetails',\n\tprops: {\n\t\tblockTitle: {\n\t\t\ttype: String,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\ttemplate: {\n\t\t\ttype: Object as PropType<ITemplatesWorkflow | ITemplatesWorkflowFull>,\n\t\t},\n\t},\n\tcomponents: {\n\t\tNodeIcon,\n\t\tTemplateDetailsBlock,\n\t\tTimeAgo,\n\t},\n\tcomputed: {\n\t\t...mapStores(useTemplatesStore),\n\t},\n\tmethods: {\n\t\tabbreviateNumber,\n\t\tfilterTemplateNodes,\n\t\tredirectToCategory(id: string) {\n\t\t\tthis.templatesStore.resetSessionId();\n\t\t\tvoid this.$router.push(`/templates?categories=${id}`);\n\t\t},\n\t\tredirectToSearchPage(node: ITemplatesNode) {\n\t\t\tthis.templatesStore.resetSessionId();\n\t\t\tvoid this.$router.push(`/templates?search=${node.displayName}`);\n\t\t},\n\t},\n});\n</script>\n<style lang=\"scss\" module>\n.icons {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n.icon {\n\tmargin-right: var(--spacing-xs);\n\tmargin-bottom: var(--spacing-xs);\n\tcursor: pointer;\n}\n.text {\n\tpadding-bottom: var(--spacing-xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","_resolveComponent","_normalizeClass","_ctx","_component_n8n_heading","_createElementVNode","_sfc_main","NodeIcon","TemplateDetailsBlock","TimeAgo","mapStores","useTemplatesStore","abbreviateNumber","filterTemplateNodes","id","node","_openBlock","_createElementBlock","_createVNode","_component_n8n_loading","_createBlock","_component_template_details_block","_withCtx","_Fragment","_renderList","_component_NodeIcon","_a","_component_n8n_tags","_component_n8n_text","_createTextVNode","_toDisplayString","_component_TimeAgo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{g,N as I,aR as V}from"./index-hMVAffQ3.js";import{f9 as v,_ as $,f8 as z}from"./n8n-NE7NqrvB.js";import{G as C,ag as r,l as o,m as t,F as h,a7 as _,I as l,R as c,Q as n,T as a,O as k,M as w,a2 as M,S as p,p as E}from"./vendor-2CfOYFi2.js";const L=C({name:"NodeList",mixins:[g],props:{nodes:{type:Array},limit:{type:Number,default:4},size:{type:String,default:"sm"}},components:{NodeIcon:I},computed:{filteredCoreNodes(){return v(this.nodes)},hiddenNodes(){return this.filteredCoreNodes.length-this.countNodesToBeSliced(this.filteredCoreNodes)},slicedNodes(){return this.filteredCoreNodes.slice(0,this.countNodesToBeSliced(this.filteredCoreNodes))}},methods:{countNodesToBeSliced(e){return e.length>this.limit?this.limit-1:this.limit}}}),U="_list_8cn7s_5",H="_container_8cn7s_13",A="_sm_8cn7s_18",O="_md_8cn7s_22",R="_button_8cn7s_26",F="_buttonSm_8cn7s_40",j="_buttonMd_8cn7s_47",D={list:U,container:H,sm:A,md:O,button:R,buttonSm:F,buttonMd:j};function G(e,s,y,b,B,N){const m=r("NodeIcon");return o(),t("div",{class:l(e.$style.list)},[(o(!0),t(h,null,_(e.slicedNodes,d=>(o(),t("div",{class:l([e.$style.container,e.$style[e.size]]),key:d.name},[a(m,{nodeType:d,size:e.size==="md"?24:18,showTooltip:!0},null,8,["nodeType","size"])],2))),128)),e.filteredCoreNodes.length>e.limit+1?(o(),t("div",{key:0,class:l([e.$style.button,e.size==="md"?e.$style.buttonMd:e.$style.buttonSm])}," +"+c(e.hiddenNodes),3)):n("",!0)],2)}const Q={$style:D},q=$(L,[["render",G],["__cssModules",Q]]),J=C({name:"TemplateCard",mixins:[g],props:{lastItem:{type:Boolean,default:!1},firstItem:{type:Boolean,default:!1},workflow:{type:Object},useWorkflowButton:{type:Boolean},loading:{type:Boolean},simpleView:{type:Boolean,default:!1}},components:{TimeAgo:V,NodeList:q},data(){return{nodesToBeShown:5}},methods:{filterTemplateNodes:v,abbreviateNumber:z,countNodesToBeSliced(e){return e.length>this.nodesToBeShown?this.nodesToBeShown-1:this.nodesToBeShown},onUseWorkflowClick(e){this.$emit("useWorkflow",e)},onCardClick(e){this.$emit("click",e)}}}),K="_nodes_akyr5_5",P="_icon_akyr5_12",X="_card_akyr5_16",Y="_hideOnHover_akyr5_28",Z="_buttonContainer_akyr5_31",x="_loaded_akyr5_42",ee="_first_akyr5_46",oe="_last_akyr5_52",te="_content_akyr5_57",ne="_line_akyr5_62",se="_loading_akyr5_68",le="_nodesContainer_akyr5_73",ie={nodes:K,icon:P,card:X,hideOnHover:Y,buttonContainer:Z,loaded:x,first:ee,last:oe,content:te,line:ne,loading:se,nodesContainer:le},re={key:1},ae={key:0};function de(e,s,y,b,B,N){const m=r("n8n-loading"),d=r("n8n-heading"),i=r("font-awesome-icon"),u=r("n8n-text"),f=r("TimeAgo"),T=r("NodeList"),S=r("n8n-button");return o(),t("div",{class:l([e.$style.card,e.lastItem&&e.$style.last,e.firstItem&&e.$style.first,!e.loading&&e.$style.loaded]),onClick:s[0]||(s[0]=(...W)=>e.onCardClick&&e.onCardClick(...W))},[e.loading?(o(),t("div",{key:0,class:l(e.$style.loading)},[a(m,{rows:2,shrinkLast:!1,loading:e.loading},null,8,["loading"])],2)):(o(),t("div",re,[a(d,{bold:!0,size:"small"},{default:k(()=>[p(c(e.workflow.name),1)]),_:1}),e.simpleView?n("",!0):(o(),t("div",{key:0,class:l(e.$style.content)},[e.workflow.totalViews?(o(),t("span",ae,[a(u,{size:"small",color:"text-light"},{default:k(()=>[a(i,{icon:"eye"}),p(" "+c(e.abbreviateNumber(e.workflow.totalViews)),1)]),_:1})])):n("",!0),e.workflow.totalViews?(o(),t("div",{key:1,class:l(e.$style.line),textContent:"|"},null,2)):n("",!0),a(u,{size:"small",color:"text-light"},{default:k(()=>[a(f,{date:e.workflow.createdAt},null,8,["date"])]),_:1}),e.workflow.user?(o(),t("div",{key:2,class:l(e.$style.line),textContent:"|"},null,2)):n("",!0),e.workflow.user?(o(),w(u,{key:3,size:"small",color:"text-light"},{default:k(()=>[p("By "+c(e.workflow.user.username),1)]),_:1})):n("",!0)],2))])),e.loading?n("",!0):(o(),t("div",{key:2,class:l([e.$style.nodesContainer,e.useWorkflowButton&&e.$style.hideOnHover])},[e.workflow.nodes?(o(),w(T,{key:0,nodes:e.workflow.nodes,limit:e.nodesToBeShown,size:"md"},null,8,["nodes","limit"])):n("",!0)],2)),e.useWorkflowButton?(o(),t("div",{key:3,class:l(e.$style.buttonContainer)},[e.useWorkflowButton?(o(),w(S,{key:0,outline:"",label:"Use workflow",onClick:M(e.onUseWorkflowClick,["stop"])},null,8,["onClick"])):n("",!0)],2)):n("",!0)],2)}const ue={$style:ie},ce=$(J,[["render",de],["__cssModules",ue]]),me=C({name:"TemplateList",mixins:[g],props:{infiniteScrollEnabled:{type:Boolean,default:!1},loading:{type:Boolean},useWorkflowButton:{type:Boolean,default:!1},workflows:{type:Array},totalWorkflows:{type:Number},simpleView:{type:Boolean,default:!1}},mounted(){if(this.infiniteScrollEnabled){const e=document.getElementById("content");e&&e.addEventListener("scroll",this.onScroll)}},beforeUnmount(){const e=document.getElementById("content");e&&e.removeEventListener("scroll",this.onScroll)},components:{TemplateCard:ce},methods:{onScroll(){const e=this.$refs.loader;if(!e||this.loading)return;const s=e.getBoundingClientRect();s.top>=0&&s.left>=0&&s.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&s.right<=(window.innerWidth||document.documentElement.clientWidth)&&this.$emit("loadMore")},onCardClick(e,s){this.$emit("openTemplate",{event:e,id:s})},onUseWorkflow(e,s){this.$emit("useWorkflow",{event:e,id:s})}}}),fe="_header_cr9gx_5",ke="_workflowButton_cr9gx_9",we="_button_cr9gx_9",pe="_nodes_cr9gx_12",ye={header:fe,workflowButton:ke,button:we,nodes:pe},he=["textContent"],_e={key:0,ref:"loader"},ge={key:1};function $e(e,s,y,b,B,N){const m=r("n8n-heading"),d=r("TemplateCard");return e.loading||e.workflows.length?(o(),t("div",{key:0,class:l(e.$style.list)},[e.simpleView?n("",!0):(o(),t("div",{key:0,class:l(e.$style.header)},[a(m,{bold:!0,size:"medium",color:"text-light"},{default:k(()=>[p(c(e.$locale.baseText("templates.workflows"))+" ",1),!e.loading&&e.totalWorkflows?(o(),t("span",{key:0,textContent:c(`(${e.totalWorkflows})`)},null,8,he)):n("",!0)]),_:1})],2)),E("div",{class:l(e.$style.container)},[(o(!0),t(h,null,_(e.workflows,(i,u)=>(o(),w(d,{key:i.id,workflow:i,firstItem:u===0,"simple-view":e.simpleView,lastItem:u===e.workflows.length-1&&!e.loading,useWorkflowButton:e.useWorkflowButton,onClick:f=>e.onCardClick(f,i.id),onUseWorkflow:f=>e.onUseWorkflow(f,i.id)},null,8,["workflow","firstItem","simple-view","lastItem","useWorkflowButton","onClick","onUseWorkflow"]))),128)),e.infiniteScrollEnabled?(o(),t("div",_e,null,512)):n("",!0),e.loading?(o(),t("div",ge,[(o(),t(h,null,_(4,i=>a(d,{key:"index-"+i,loading:!0,firstItem:e.workflows.length===0&&i===1,lastItem:i===4},null,8,["firstItem","lastItem"])),64))])):n("",!0)],2)],2)):n("",!0)}const Ce={$style:ye},ve=$(me,[["render",$e],["__cssModules",Ce]]);export{q as N,ve as T};
2
- //# sourceMappingURL=TemplateList-apw79EVp.js.map
1
+ import{g,N as I,aR as V}from"./index-sMRiWGJS.js";import{f9 as v,_ as $,f8 as z}from"./n8n-NE7NqrvB.js";import{G as C,ag as r,l as o,m as t,F as h,a7 as _,I as l,R as c,Q as n,T as a,O as k,M as w,a2 as M,S as p,p as E}from"./vendor-2CfOYFi2.js";const L=C({name:"NodeList",mixins:[g],props:{nodes:{type:Array},limit:{type:Number,default:4},size:{type:String,default:"sm"}},components:{NodeIcon:I},computed:{filteredCoreNodes(){return v(this.nodes)},hiddenNodes(){return this.filteredCoreNodes.length-this.countNodesToBeSliced(this.filteredCoreNodes)},slicedNodes(){return this.filteredCoreNodes.slice(0,this.countNodesToBeSliced(this.filteredCoreNodes))}},methods:{countNodesToBeSliced(e){return e.length>this.limit?this.limit-1:this.limit}}}),U="_list_8cn7s_5",H="_container_8cn7s_13",A="_sm_8cn7s_18",O="_md_8cn7s_22",R="_button_8cn7s_26",F="_buttonSm_8cn7s_40",j="_buttonMd_8cn7s_47",D={list:U,container:H,sm:A,md:O,button:R,buttonSm:F,buttonMd:j};function G(e,s,y,b,B,N){const m=r("NodeIcon");return o(),t("div",{class:l(e.$style.list)},[(o(!0),t(h,null,_(e.slicedNodes,d=>(o(),t("div",{class:l([e.$style.container,e.$style[e.size]]),key:d.name},[a(m,{nodeType:d,size:e.size==="md"?24:18,showTooltip:!0},null,8,["nodeType","size"])],2))),128)),e.filteredCoreNodes.length>e.limit+1?(o(),t("div",{key:0,class:l([e.$style.button,e.size==="md"?e.$style.buttonMd:e.$style.buttonSm])}," +"+c(e.hiddenNodes),3)):n("",!0)],2)}const Q={$style:D},q=$(L,[["render",G],["__cssModules",Q]]),J=C({name:"TemplateCard",mixins:[g],props:{lastItem:{type:Boolean,default:!1},firstItem:{type:Boolean,default:!1},workflow:{type:Object},useWorkflowButton:{type:Boolean},loading:{type:Boolean},simpleView:{type:Boolean,default:!1}},components:{TimeAgo:V,NodeList:q},data(){return{nodesToBeShown:5}},methods:{filterTemplateNodes:v,abbreviateNumber:z,countNodesToBeSliced(e){return e.length>this.nodesToBeShown?this.nodesToBeShown-1:this.nodesToBeShown},onUseWorkflowClick(e){this.$emit("useWorkflow",e)},onCardClick(e){this.$emit("click",e)}}}),K="_nodes_akyr5_5",P="_icon_akyr5_12",X="_card_akyr5_16",Y="_hideOnHover_akyr5_28",Z="_buttonContainer_akyr5_31",x="_loaded_akyr5_42",ee="_first_akyr5_46",oe="_last_akyr5_52",te="_content_akyr5_57",ne="_line_akyr5_62",se="_loading_akyr5_68",le="_nodesContainer_akyr5_73",ie={nodes:K,icon:P,card:X,hideOnHover:Y,buttonContainer:Z,loaded:x,first:ee,last:oe,content:te,line:ne,loading:se,nodesContainer:le},re={key:1},ae={key:0};function de(e,s,y,b,B,N){const m=r("n8n-loading"),d=r("n8n-heading"),i=r("font-awesome-icon"),u=r("n8n-text"),f=r("TimeAgo"),T=r("NodeList"),S=r("n8n-button");return o(),t("div",{class:l([e.$style.card,e.lastItem&&e.$style.last,e.firstItem&&e.$style.first,!e.loading&&e.$style.loaded]),onClick:s[0]||(s[0]=(...W)=>e.onCardClick&&e.onCardClick(...W))},[e.loading?(o(),t("div",{key:0,class:l(e.$style.loading)},[a(m,{rows:2,shrinkLast:!1,loading:e.loading},null,8,["loading"])],2)):(o(),t("div",re,[a(d,{bold:!0,size:"small"},{default:k(()=>[p(c(e.workflow.name),1)]),_:1}),e.simpleView?n("",!0):(o(),t("div",{key:0,class:l(e.$style.content)},[e.workflow.totalViews?(o(),t("span",ae,[a(u,{size:"small",color:"text-light"},{default:k(()=>[a(i,{icon:"eye"}),p(" "+c(e.abbreviateNumber(e.workflow.totalViews)),1)]),_:1})])):n("",!0),e.workflow.totalViews?(o(),t("div",{key:1,class:l(e.$style.line),textContent:"|"},null,2)):n("",!0),a(u,{size:"small",color:"text-light"},{default:k(()=>[a(f,{date:e.workflow.createdAt},null,8,["date"])]),_:1}),e.workflow.user?(o(),t("div",{key:2,class:l(e.$style.line),textContent:"|"},null,2)):n("",!0),e.workflow.user?(o(),w(u,{key:3,size:"small",color:"text-light"},{default:k(()=>[p("By "+c(e.workflow.user.username),1)]),_:1})):n("",!0)],2))])),e.loading?n("",!0):(o(),t("div",{key:2,class:l([e.$style.nodesContainer,e.useWorkflowButton&&e.$style.hideOnHover])},[e.workflow.nodes?(o(),w(T,{key:0,nodes:e.workflow.nodes,limit:e.nodesToBeShown,size:"md"},null,8,["nodes","limit"])):n("",!0)],2)),e.useWorkflowButton?(o(),t("div",{key:3,class:l(e.$style.buttonContainer)},[e.useWorkflowButton?(o(),w(S,{key:0,outline:"",label:"Use workflow",onClick:M(e.onUseWorkflowClick,["stop"])},null,8,["onClick"])):n("",!0)],2)):n("",!0)],2)}const ue={$style:ie},ce=$(J,[["render",de],["__cssModules",ue]]),me=C({name:"TemplateList",mixins:[g],props:{infiniteScrollEnabled:{type:Boolean,default:!1},loading:{type:Boolean},useWorkflowButton:{type:Boolean,default:!1},workflows:{type:Array},totalWorkflows:{type:Number},simpleView:{type:Boolean,default:!1}},mounted(){if(this.infiniteScrollEnabled){const e=document.getElementById("content");e&&e.addEventListener("scroll",this.onScroll)}},beforeUnmount(){const e=document.getElementById("content");e&&e.removeEventListener("scroll",this.onScroll)},components:{TemplateCard:ce},methods:{onScroll(){const e=this.$refs.loader;if(!e||this.loading)return;const s=e.getBoundingClientRect();s.top>=0&&s.left>=0&&s.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&s.right<=(window.innerWidth||document.documentElement.clientWidth)&&this.$emit("loadMore")},onCardClick(e,s){this.$emit("openTemplate",{event:e,id:s})},onUseWorkflow(e,s){this.$emit("useWorkflow",{event:e,id:s})}}}),fe="_header_cr9gx_5",ke="_workflowButton_cr9gx_9",we="_button_cr9gx_9",pe="_nodes_cr9gx_12",ye={header:fe,workflowButton:ke,button:we,nodes:pe},he=["textContent"],_e={key:0,ref:"loader"},ge={key:1};function $e(e,s,y,b,B,N){const m=r("n8n-heading"),d=r("TemplateCard");return e.loading||e.workflows.length?(o(),t("div",{key:0,class:l(e.$style.list)},[e.simpleView?n("",!0):(o(),t("div",{key:0,class:l(e.$style.header)},[a(m,{bold:!0,size:"medium",color:"text-light"},{default:k(()=>[p(c(e.$locale.baseText("templates.workflows"))+" ",1),!e.loading&&e.totalWorkflows?(o(),t("span",{key:0,textContent:c(`(${e.totalWorkflows})`)},null,8,he)):n("",!0)]),_:1})],2)),E("div",{class:l(e.$style.container)},[(o(!0),t(h,null,_(e.workflows,(i,u)=>(o(),w(d,{key:i.id,workflow:i,firstItem:u===0,"simple-view":e.simpleView,lastItem:u===e.workflows.length-1&&!e.loading,useWorkflowButton:e.useWorkflowButton,onClick:f=>e.onCardClick(f,i.id),onUseWorkflow:f=>e.onUseWorkflow(f,i.id)},null,8,["workflow","firstItem","simple-view","lastItem","useWorkflowButton","onClick","onUseWorkflow"]))),128)),e.infiniteScrollEnabled?(o(),t("div",_e,null,512)):n("",!0),e.loading?(o(),t("div",ge,[(o(),t(h,null,_(4,i=>a(d,{key:"index-"+i,loading:!0,firstItem:e.workflows.length===0&&i===1,lastItem:i===4},null,8,["firstItem","lastItem"])),64))])):n("",!0)],2)],2)):n("",!0)}const Ce={$style:ye},ve=$(me,[["render",$e],["__cssModules",Ce]]);export{q as N,ve as T};
2
+ //# sourceMappingURL=TemplateList-ygiFPwW5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateList-apw79EVp.js","sources":["../../src/components/NodeList.vue","../../src/components/TemplateCard.vue","../../src/components/TemplateList.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.list\">\n\t\t<div v-for=\"node in slicedNodes\" :class=\"[$style.container, $style[size]]\" :key=\"node.name\">\n\t\t\t<NodeIcon :nodeType=\"node\" :size=\"size === 'md' ? 24 : 18\" :showTooltip=\"true\" />\n\t\t</div>\n\t\t<div\n\t\t\t:class=\"[$style.button, size === 'md' ? $style.buttonMd : $style.buttonSm]\"\n\t\t\tv-if=\"filteredCoreNodes.length > limit + 1\"\n\t\t>\n\t\t\t+{{ hiddenNodes }}\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport NodeIcon from '@/components/NodeIcon.vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type { ITemplatesNode } from '@/Interface';\nimport { filterTemplateNodes } from '@/utils/nodeTypesUtils';\n\nexport default defineComponent({\n\tname: 'NodeList',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tnodes: {\n\t\t\ttype: Array,\n\t\t},\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 4,\n\t\t},\n\t\tsize: {\n\t\t\ttype: String,\n\t\t\tdefault: 'sm',\n\t\t},\n\t},\n\tcomponents: {\n\t\tNodeIcon,\n\t},\n\tcomputed: {\n\t\tfilteredCoreNodes() {\n\t\t\treturn filterTemplateNodes(this.nodes as ITemplatesNode[]);\n\t\t},\n\t\thiddenNodes(): number {\n\t\t\treturn this.filteredCoreNodes.length - this.countNodesToBeSliced(this.filteredCoreNodes);\n\t\t},\n\t\tslicedNodes(): ITemplatesNode[] {\n\t\t\treturn this.filteredCoreNodes.slice(0, this.countNodesToBeSliced(this.filteredCoreNodes));\n\t\t},\n\t},\n\tmethods: {\n\t\tcountNodesToBeSliced(nodes: ITemplatesNode[]): number {\n\t\t\tif (nodes.length > this.limit) {\n\t\t\t\treturn this.limit - 1;\n\t\t\t} else {\n\t\t\t\treturn this.limit;\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.list {\n\tmax-width: 100px;\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: flex-end;\n\talign-items: center;\n}\n.container {\n\tposition: relative;\n\tdisplay: block;\n}\n.sm {\n\tmargin-left: var(--spacing-2xs);\n}\n.md {\n\tmargin-left: var(--spacing-xs);\n}\n.button {\n\ttop: 0px;\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground: var(--color-background-light);\n\tborder: 1px var(--color-foreground-base) solid;\n\tborder-radius: var(--border-radius-base);\n\tfont-size: 10px;\n\tfont-weight: var(--font-weight-bold);\n\tcolor: var(--color-text-base);\n}\n.buttonSm {\n\tmargin-left: var(--spacing-2xs);\n\twidth: 20px;\n\tmin-width: 20px;\n\theight: 20px;\n}\n.buttonMd {\n\tmargin-left: var(--spacing-xs);\n\twidth: 24px;\n\tmin-width: 24px;\n\theight: 24px;\n}\n</style>\n","<template>\n\t<div\n\t\t:class=\"[\n\t\t\t$style.card,\n\t\t\tlastItem && $style.last,\n\t\t\tfirstItem && $style.first,\n\t\t\t!loading && $style.loaded,\n\t\t]\"\n\t\t@click=\"onCardClick\"\n\t>\n\t\t<div :class=\"$style.loading\" v-if=\"loading\">\n\t\t\t<n8n-loading :rows=\"2\" :shrinkLast=\"false\" :loading=\"loading\" />\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<n8n-heading :bold=\"true\" size=\"small\">{{ workflow.name }}</n8n-heading>\n\t\t\t<div :class=\"$style.content\" v-if=\"!simpleView\">\n\t\t\t\t<span v-if=\"workflow.totalViews\">\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<font-awesome-icon icon=\"eye\" />\n\t\t\t\t\t\t{{ abbreviateNumber(workflow.totalViews) }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</span>\n\t\t\t\t<div v-if=\"workflow.totalViews\" :class=\"$style.line\" v-text=\"'|'\" />\n\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t<TimeAgo :date=\"workflow.createdAt\" />\n\t\t\t\t</n8n-text>\n\t\t\t\t<div v-if=\"workflow.user\" :class=\"$style.line\" v-text=\"'|'\" />\n\t\t\t\t<n8n-text v-if=\"workflow.user\" size=\"small\" color=\"text-light\"\n\t\t\t\t\t>By {{ workflow.user.username }}</n8n-text\n\t\t\t\t>\n\t\t\t</div>\n\t\t</div>\n\t\t<div :class=\"[$style.nodesContainer, useWorkflowButton && $style.hideOnHover]\" v-if=\"!loading\">\n\t\t\t<NodeList v-if=\"workflow.nodes\" :nodes=\"workflow.nodes\" :limit=\"nodesToBeShown\" size=\"md\" />\n\t\t</div>\n\t\t<div :class=\"$style.buttonContainer\" v-if=\"useWorkflowButton\">\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"useWorkflowButton\"\n\t\t\t\toutline\n\t\t\t\tlabel=\"Use workflow\"\n\t\t\t\t@click.stop=\"onUseWorkflowClick\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport { filterTemplateNodes } from '@/utils/nodeTypesUtils';\nimport { abbreviateNumber } from '@/utils/typesUtils';\nimport NodeList from './NodeList.vue';\nimport TimeAgo from '@/components/TimeAgo.vue';\n\nexport default defineComponent({\n\tname: 'TemplateCard',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tlastItem: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfirstItem: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflow: {\n\t\t\ttype: Object,\n\t\t},\n\t\tuseWorkflowButton: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tsimpleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomponents: {\n\t\tTimeAgo,\n\t\tNodeList,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnodesToBeShown: 5,\n\t\t};\n\t},\n\tmethods: {\n\t\tfilterTemplateNodes,\n\t\tabbreviateNumber,\n\t\tcountNodesToBeSliced(nodes: []): number {\n\t\t\tif (nodes.length > this.nodesToBeShown) {\n\t\t\t\treturn this.nodesToBeShown - 1;\n\t\t\t} else {\n\t\t\t\treturn this.nodesToBeShown;\n\t\t\t}\n\t\t},\n\t\tonUseWorkflowClick(e: MouseEvent) {\n\t\t\tthis.$emit('useWorkflow', e);\n\t\t},\n\t\tonCardClick(e: MouseEvent) {\n\t\t\tthis.$emit('click', e);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.nodes {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-content: center;\n\tflex-direction: row;\n}\n\n.icon {\n\tmargin-left: var(--spacing-xs);\n}\n\n.card {\n\tposition: relative;\n\tborder-left: var(--border-base);\n\tborder-right: var(--border-base);\n\tborder-bottom: var(--border-base);\n\tbackground-color: var(--color-background-xlight);\n\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0 var(--spacing-s) var(--spacing-s) var(--spacing-s);\n\tbackground-color: var(--color-background-xlight);\n\tcursor: pointer;\n\n\t&:hover {\n\t\t.hideOnHover {\n\t\t\tvisibility: hidden;\n\t\t}\n\n\t\t.buttonContainer {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n\n.buttonContainer {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 10px;\n\ttop: 30%;\n}\n\n.loaded {\n\tpadding-top: var(--spacing-s);\n}\n\n.first {\n\tborder-top: var(--border-base);\n\tborder-top-right-radius: var(--border-radius-large);\n\tborder-top-left-radius: var(--border-radius-large);\n}\n\n.last {\n\tborder-bottom-right-radius: var(--border-radius-large);\n\tborder-bottom-left-radius: var(--border-radius-large);\n}\n\n.content {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.line {\n\tpadding: 0 6px;\n\tcolor: var(--color-foreground-base);\n\tfont-size: var(--font-size-2xs);\n}\n\n.loading {\n\twidth: 100%;\n\tbackground-color: var(--color-background-xlight);\n}\n\n.nodesContainer {\n\tmin-width: 175px;\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tflex-grow: 1;\n}\n</style>\n","<template>\n\t<div :class=\"$style.list\" v-if=\"loading || workflows.length\">\n\t\t<div :class=\"$style.header\" v-if=\"!simpleView\">\n\t\t\t<n8n-heading :bold=\"true\" size=\"medium\" color=\"text-light\">\n\t\t\t\t{{ $locale.baseText('templates.workflows') }}\n\t\t\t\t<span v-if=\"!loading && totalWorkflows\" v-text=\"`(${totalWorkflows})`\" />\n\t\t\t</n8n-heading>\n\t\t</div>\n\t\t<div :class=\"$style.container\">\n\t\t\t<TemplateCard\n\t\t\t\tv-for=\"(workflow, index) in workflows\"\n\t\t\t\t:key=\"workflow.id\"\n\t\t\t\t:workflow=\"workflow\"\n\t\t\t\t:firstItem=\"index === 0\"\n\t\t\t\t:simple-view=\"simpleView\"\n\t\t\t\t:lastItem=\"index === workflows.length - 1 && !loading\"\n\t\t\t\t:useWorkflowButton=\"useWorkflowButton\"\n\t\t\t\t@click=\"(e) => onCardClick(e, workflow.id)\"\n\t\t\t\t@useWorkflow=\"(e) => onUseWorkflow(e, workflow.id)\"\n\t\t\t/>\n\t\t\t<div v-if=\"infiniteScrollEnabled\" ref=\"loader\" />\n\t\t\t<div v-if=\"loading\">\n\t\t\t\t<TemplateCard\n\t\t\t\t\tv-for=\"n in 4\"\n\t\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t\t:loading=\"true\"\n\t\t\t\t\t:firstItem=\"workflows.length === 0 && n === 1\"\n\t\t\t\t\t:lastItem=\"n === 4\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport TemplateCard from './TemplateCard.vue';\n\nexport default defineComponent({\n\tname: 'TemplateList',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tinfiniteScrollEnabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tuseWorkflowButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflows: {\n\t\t\ttype: Array,\n\t\t},\n\t\ttotalWorkflows: {\n\t\t\ttype: Number,\n\t\t},\n\t\tsimpleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.infiniteScrollEnabled) {\n\t\t\tconst content = document.getElementById('content');\n\t\t\tif (content) {\n\t\t\t\tcontent.addEventListener('scroll', this.onScroll);\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tconst content = document.getElementById('content');\n\t\tif (content) {\n\t\t\tcontent.removeEventListener('scroll', this.onScroll);\n\t\t}\n\t},\n\tcomponents: {\n\t\tTemplateCard,\n\t},\n\tmethods: {\n\t\tonScroll() {\n\t\t\tconst loaderRef = this.$refs.loader as HTMLElement | undefined;\n\t\t\tif (!loaderRef || this.loading) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rect = loaderRef.getBoundingClientRect();\n\t\t\tconst inView =\n\t\t\t\trect.top >= 0 &&\n\t\t\t\trect.left >= 0 &&\n\t\t\t\trect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n\t\t\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth);\n\n\t\t\tif (inView) {\n\t\t\t\tthis.$emit('loadMore');\n\t\t\t}\n\t\t},\n\t\tonCardClick(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('openTemplate', { event, id });\n\t\t},\n\t\tonUseWorkflow(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('useWorkflow', { event, id });\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.header {\n\tpadding-bottom: var(--spacing-2xs);\n}\n\n.workflowButton {\n\t&:hover {\n\t\t.button {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.nodes {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main$2","defineComponent","genericHelpers","NodeIcon","filterTemplateNodes","nodes","_resolveComponent","_ctx","_createElementBlock","_Fragment","_renderList","node","_openBlock","_normalizeClass","_component_NodeIcon","_sfc_main$1","TimeAgo","NodeList","abbreviateNumber","_cache","args","_component_n8n_loading","_hoisted_1","_createVNode","_component_n8n_heading","_createCommentVNode","_hoisted_2","_component_n8n_text","_withCtx","_component_font_awesome_icon","_component_TimeAgo","_createBlock","_component_NodeList","_component_n8n_button","_sfc_main","content","TemplateCard","loaderRef","rect","event","id","_createTextVNode","_toDisplayString","_createElementVNode","workflow","index","_component_TemplateCard","e","_hoisted_3","n"],"mappings":"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"}
1
+ {"version":3,"file":"TemplateList-ygiFPwW5.js","sources":["../../src/components/NodeList.vue","../../src/components/TemplateCard.vue","../../src/components/TemplateList.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.list\">\n\t\t<div v-for=\"node in slicedNodes\" :class=\"[$style.container, $style[size]]\" :key=\"node.name\">\n\t\t\t<NodeIcon :nodeType=\"node\" :size=\"size === 'md' ? 24 : 18\" :showTooltip=\"true\" />\n\t\t</div>\n\t\t<div\n\t\t\t:class=\"[$style.button, size === 'md' ? $style.buttonMd : $style.buttonSm]\"\n\t\t\tv-if=\"filteredCoreNodes.length > limit + 1\"\n\t\t>\n\t\t\t+{{ hiddenNodes }}\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport NodeIcon from '@/components/NodeIcon.vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type { ITemplatesNode } from '@/Interface';\nimport { filterTemplateNodes } from '@/utils/nodeTypesUtils';\n\nexport default defineComponent({\n\tname: 'NodeList',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tnodes: {\n\t\t\ttype: Array,\n\t\t},\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 4,\n\t\t},\n\t\tsize: {\n\t\t\ttype: String,\n\t\t\tdefault: 'sm',\n\t\t},\n\t},\n\tcomponents: {\n\t\tNodeIcon,\n\t},\n\tcomputed: {\n\t\tfilteredCoreNodes() {\n\t\t\treturn filterTemplateNodes(this.nodes as ITemplatesNode[]);\n\t\t},\n\t\thiddenNodes(): number {\n\t\t\treturn this.filteredCoreNodes.length - this.countNodesToBeSliced(this.filteredCoreNodes);\n\t\t},\n\t\tslicedNodes(): ITemplatesNode[] {\n\t\t\treturn this.filteredCoreNodes.slice(0, this.countNodesToBeSliced(this.filteredCoreNodes));\n\t\t},\n\t},\n\tmethods: {\n\t\tcountNodesToBeSliced(nodes: ITemplatesNode[]): number {\n\t\t\tif (nodes.length > this.limit) {\n\t\t\t\treturn this.limit - 1;\n\t\t\t} else {\n\t\t\t\treturn this.limit;\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.list {\n\tmax-width: 100px;\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: flex-end;\n\talign-items: center;\n}\n.container {\n\tposition: relative;\n\tdisplay: block;\n}\n.sm {\n\tmargin-left: var(--spacing-2xs);\n}\n.md {\n\tmargin-left: var(--spacing-xs);\n}\n.button {\n\ttop: 0px;\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground: var(--color-background-light);\n\tborder: 1px var(--color-foreground-base) solid;\n\tborder-radius: var(--border-radius-base);\n\tfont-size: 10px;\n\tfont-weight: var(--font-weight-bold);\n\tcolor: var(--color-text-base);\n}\n.buttonSm {\n\tmargin-left: var(--spacing-2xs);\n\twidth: 20px;\n\tmin-width: 20px;\n\theight: 20px;\n}\n.buttonMd {\n\tmargin-left: var(--spacing-xs);\n\twidth: 24px;\n\tmin-width: 24px;\n\theight: 24px;\n}\n</style>\n","<template>\n\t<div\n\t\t:class=\"[\n\t\t\t$style.card,\n\t\t\tlastItem && $style.last,\n\t\t\tfirstItem && $style.first,\n\t\t\t!loading && $style.loaded,\n\t\t]\"\n\t\t@click=\"onCardClick\"\n\t>\n\t\t<div :class=\"$style.loading\" v-if=\"loading\">\n\t\t\t<n8n-loading :rows=\"2\" :shrinkLast=\"false\" :loading=\"loading\" />\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<n8n-heading :bold=\"true\" size=\"small\">{{ workflow.name }}</n8n-heading>\n\t\t\t<div :class=\"$style.content\" v-if=\"!simpleView\">\n\t\t\t\t<span v-if=\"workflow.totalViews\">\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<font-awesome-icon icon=\"eye\" />\n\t\t\t\t\t\t{{ abbreviateNumber(workflow.totalViews) }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</span>\n\t\t\t\t<div v-if=\"workflow.totalViews\" :class=\"$style.line\" v-text=\"'|'\" />\n\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t<TimeAgo :date=\"workflow.createdAt\" />\n\t\t\t\t</n8n-text>\n\t\t\t\t<div v-if=\"workflow.user\" :class=\"$style.line\" v-text=\"'|'\" />\n\t\t\t\t<n8n-text v-if=\"workflow.user\" size=\"small\" color=\"text-light\"\n\t\t\t\t\t>By {{ workflow.user.username }}</n8n-text\n\t\t\t\t>\n\t\t\t</div>\n\t\t</div>\n\t\t<div :class=\"[$style.nodesContainer, useWorkflowButton && $style.hideOnHover]\" v-if=\"!loading\">\n\t\t\t<NodeList v-if=\"workflow.nodes\" :nodes=\"workflow.nodes\" :limit=\"nodesToBeShown\" size=\"md\" />\n\t\t</div>\n\t\t<div :class=\"$style.buttonContainer\" v-if=\"useWorkflowButton\">\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"useWorkflowButton\"\n\t\t\t\toutline\n\t\t\t\tlabel=\"Use workflow\"\n\t\t\t\t@click.stop=\"onUseWorkflowClick\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport { filterTemplateNodes } from '@/utils/nodeTypesUtils';\nimport { abbreviateNumber } from '@/utils/typesUtils';\nimport NodeList from './NodeList.vue';\nimport TimeAgo from '@/components/TimeAgo.vue';\n\nexport default defineComponent({\n\tname: 'TemplateCard',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tlastItem: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfirstItem: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflow: {\n\t\t\ttype: Object,\n\t\t},\n\t\tuseWorkflowButton: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tsimpleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomponents: {\n\t\tTimeAgo,\n\t\tNodeList,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnodesToBeShown: 5,\n\t\t};\n\t},\n\tmethods: {\n\t\tfilterTemplateNodes,\n\t\tabbreviateNumber,\n\t\tcountNodesToBeSliced(nodes: []): number {\n\t\t\tif (nodes.length > this.nodesToBeShown) {\n\t\t\t\treturn this.nodesToBeShown - 1;\n\t\t\t} else {\n\t\t\t\treturn this.nodesToBeShown;\n\t\t\t}\n\t\t},\n\t\tonUseWorkflowClick(e: MouseEvent) {\n\t\t\tthis.$emit('useWorkflow', e);\n\t\t},\n\t\tonCardClick(e: MouseEvent) {\n\t\t\tthis.$emit('click', e);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.nodes {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-content: center;\n\tflex-direction: row;\n}\n\n.icon {\n\tmargin-left: var(--spacing-xs);\n}\n\n.card {\n\tposition: relative;\n\tborder-left: var(--border-base);\n\tborder-right: var(--border-base);\n\tborder-bottom: var(--border-base);\n\tbackground-color: var(--color-background-xlight);\n\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0 var(--spacing-s) var(--spacing-s) var(--spacing-s);\n\tbackground-color: var(--color-background-xlight);\n\tcursor: pointer;\n\n\t&:hover {\n\t\t.hideOnHover {\n\t\t\tvisibility: hidden;\n\t\t}\n\n\t\t.buttonContainer {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n\n.buttonContainer {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 10px;\n\ttop: 30%;\n}\n\n.loaded {\n\tpadding-top: var(--spacing-s);\n}\n\n.first {\n\tborder-top: var(--border-base);\n\tborder-top-right-radius: var(--border-radius-large);\n\tborder-top-left-radius: var(--border-radius-large);\n}\n\n.last {\n\tborder-bottom-right-radius: var(--border-radius-large);\n\tborder-bottom-left-radius: var(--border-radius-large);\n}\n\n.content {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.line {\n\tpadding: 0 6px;\n\tcolor: var(--color-foreground-base);\n\tfont-size: var(--font-size-2xs);\n}\n\n.loading {\n\twidth: 100%;\n\tbackground-color: var(--color-background-xlight);\n}\n\n.nodesContainer {\n\tmin-width: 175px;\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tflex-grow: 1;\n}\n</style>\n","<template>\n\t<div :class=\"$style.list\" v-if=\"loading || workflows.length\">\n\t\t<div :class=\"$style.header\" v-if=\"!simpleView\">\n\t\t\t<n8n-heading :bold=\"true\" size=\"medium\" color=\"text-light\">\n\t\t\t\t{{ $locale.baseText('templates.workflows') }}\n\t\t\t\t<span v-if=\"!loading && totalWorkflows\" v-text=\"`(${totalWorkflows})`\" />\n\t\t\t</n8n-heading>\n\t\t</div>\n\t\t<div :class=\"$style.container\">\n\t\t\t<TemplateCard\n\t\t\t\tv-for=\"(workflow, index) in workflows\"\n\t\t\t\t:key=\"workflow.id\"\n\t\t\t\t:workflow=\"workflow\"\n\t\t\t\t:firstItem=\"index === 0\"\n\t\t\t\t:simple-view=\"simpleView\"\n\t\t\t\t:lastItem=\"index === workflows.length - 1 && !loading\"\n\t\t\t\t:useWorkflowButton=\"useWorkflowButton\"\n\t\t\t\t@click=\"(e) => onCardClick(e, workflow.id)\"\n\t\t\t\t@useWorkflow=\"(e) => onUseWorkflow(e, workflow.id)\"\n\t\t\t/>\n\t\t\t<div v-if=\"infiniteScrollEnabled\" ref=\"loader\" />\n\t\t\t<div v-if=\"loading\">\n\t\t\t\t<TemplateCard\n\t\t\t\t\tv-for=\"n in 4\"\n\t\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t\t:loading=\"true\"\n\t\t\t\t\t:firstItem=\"workflows.length === 0 && n === 1\"\n\t\t\t\t\t:lastItem=\"n === 4\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport TemplateCard from './TemplateCard.vue';\n\nexport default defineComponent({\n\tname: 'TemplateList',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tinfiniteScrollEnabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tuseWorkflowButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflows: {\n\t\t\ttype: Array,\n\t\t},\n\t\ttotalWorkflows: {\n\t\t\ttype: Number,\n\t\t},\n\t\tsimpleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.infiniteScrollEnabled) {\n\t\t\tconst content = document.getElementById('content');\n\t\t\tif (content) {\n\t\t\t\tcontent.addEventListener('scroll', this.onScroll);\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tconst content = document.getElementById('content');\n\t\tif (content) {\n\t\t\tcontent.removeEventListener('scroll', this.onScroll);\n\t\t}\n\t},\n\tcomponents: {\n\t\tTemplateCard,\n\t},\n\tmethods: {\n\t\tonScroll() {\n\t\t\tconst loaderRef = this.$refs.loader as HTMLElement | undefined;\n\t\t\tif (!loaderRef || this.loading) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rect = loaderRef.getBoundingClientRect();\n\t\t\tconst inView =\n\t\t\t\trect.top >= 0 &&\n\t\t\t\trect.left >= 0 &&\n\t\t\t\trect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n\t\t\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth);\n\n\t\t\tif (inView) {\n\t\t\t\tthis.$emit('loadMore');\n\t\t\t}\n\t\t},\n\t\tonCardClick(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('openTemplate', { event, id });\n\t\t},\n\t\tonUseWorkflow(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('useWorkflow', { event, id });\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.header {\n\tpadding-bottom: var(--spacing-2xs);\n}\n\n.workflowButton {\n\t&:hover {\n\t\t.button {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.nodes {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main$2","defineComponent","genericHelpers","NodeIcon","filterTemplateNodes","nodes","_resolveComponent","_ctx","_createElementBlock","_Fragment","_renderList","node","_openBlock","_normalizeClass","_component_NodeIcon","_sfc_main$1","TimeAgo","NodeList","abbreviateNumber","_cache","args","_component_n8n_loading","_hoisted_1","_createVNode","_component_n8n_heading","_createCommentVNode","_hoisted_2","_component_n8n_text","_withCtx","_component_font_awesome_icon","_component_TimeAgo","_createBlock","_component_NodeList","_component_n8n_button","_sfc_main","content","TemplateCard","loaderRef","rect","event","id","_createTextVNode","_toDisplayString","_createElementVNode","workflow","index","_component_TemplateCard","e","_hoisted_3","n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{m as b}from"./pinia-IhuTtYiV.js";import{T as C}from"./TemplateDetails-neZvQLcE.js";import{T as E}from"./TemplateList-apw79EVp.js";import{T as I}from"./TemplatesView-cnvoEQpa.js";import{w as S,a9 as V}from"./index-hMVAffQ3.js";import{av as B,B as T,f7 as h,_ as F}from"./n8n-NE7NqrvB.js";import{G as W,ag as t,l as s,M as m,a9 as P,O as i,p as r,I as n,m as p,T as a,Q as c,S as d,R as u}from"./vendor-2CfOYFi2.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";const M=W({name:"TemplatesCollectionView",mixins:[S],components:{TemplateDetails:C,TemplateList:E,TemplatesView:I},computed:{...b(V,B),collection(){return this.templatesStore.getCollectionById(this.collectionId)},collectionId(){return this.$route.params.id},collectionWorkflows(){return this.collection?this.collection.workflows.map(({id:e})=>this.templatesStore.getTemplateById(e.toString())):null}},data(){return{loading:!0,notFoundError:!1}},methods:{scrollToTop(){setTimeout(()=>{const e=document.getElementById("content");e&&e.scrollTo({top:0,behavior:"smooth"})},50)},onOpenTemplate({event:e,id:o}){this.navigateTo(e,T.TEMPLATE,o)},onUseWorkflow({event:e,id:o}){const l={template_id:o,wf_template_repo_session_id:this.workflowsStore.currentSessionId,source:"collection"};this.$externalHooks().run("templatesCollectionView.onUseWorkflow",l),this.$telemetry.track("User inserted workflow template",l,{withPostHog:!0}),this.navigateTo(e,T.TEMPLATE_IMPORT,o)},navigateTo(e,o,l){if(e.metaKey||e.ctrlKey){const w=this.$router.resolve({name:o,params:{id:l}});window.open(w.href,"_blank");return}else this.$router.push({name:o,params:{id:l}})}},watch:{collection(e){e?h(`n8n - Template collection: ${e.name}`):h("n8n - Templates")}},async mounted(){if(this.scrollToTop(),this.collection&&this.collection.full){this.loading=!1;return}try{await this.templatesStore.fetchCollectionById(this.collectionId)}catch{this.notFoundError=!0}this.loading=!1}}),O="_wrapper_19isr_5",U="_notFound_19isr_15",L="_title_19isr_19",N="_button_19isr_23",D="_mainContent_19isr_27",H="_markdown_19isr_38",z="_details_19isr_42",A={wrapper:O,notFound:U,title:L,button:N,mainContent:D,markdown:H,details:z};function K(e,o,l,w,G,Q){const g=t("n8n-heading"),f=t("n8n-text"),k=t("n8n-loading"),y=t("n8n-markdown"),_=t("TemplateList"),$=t("TemplateDetails"),v=t("TemplatesView");return s(),m(v,{goBackEnabled:!0},P({header:i(()=>[e.notFoundError?(s(),p("div",{key:1,class:n(e.$style.notFound)},[a(f,{color:"text-base"},{default:i(()=>[d(u(e.$locale.baseText("templates.collectionsNotFound")),1)]),_:1})],2)):(s(),p("div",{key:0,class:n(e.$style.wrapper)},[r("div",{class:n(e.$style.title)},[e.collection&&e.collection.name?(s(),m(g,{key:0,tag:"h1",size:"2xlarge"},{default:i(()=>[d(u(e.collection.name),1)]),_:1})):c("",!0),e.collection&&e.collection.name?(s(),m(f,{key:1,color:"text-base",size:"small"},{default:i(()=>[d(u(e.$locale.baseText("templates.collection")),1)]),_:1})):c("",!0),a(k,{loading:!e.collection||!e.collection.name,rows:2,variant:"h1"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:i(()=>[r("div",{class:n(e.$style.wrapper)},[r("div",{class:n(e.$style.mainContent)},[e.loading||e.collection&&e.collection.description?(s(),p("div",{key:0,class:n(e.$style.markdown)},[a(y,{content:e.collection&&e.collection.description,images:e.collection&&e.collection.image,loading:e.loading},null,8,["content","images","loading"])],2)):c("",!0),a(_,{"infinite-scroll-enabled":!1,loading:e.loading,"use-workflow-button":!0,workflows:e.loading?[]:e.collectionWorkflows,onUseWorkflow:e.onUseWorkflow,onOpenTemplate:e.onOpenTemplate},null,8,["loading","workflows","onUseWorkflow","onOpenTemplate"])],2),r("div",{class:n(e.$style.details)},[a($,{"block-title":e.$locale.baseText("template.details.appsInTheCollection"),loading:e.loading,template:e.collection},null,8,["block-title","loading","template"])],2)],2)]),key:"0"}]),1024)}const R={$style:A},Ie=F(M,[["render",K],["__cssModules",R]]);export{Ie as default};
2
- //# sourceMappingURL=TemplatesCollectionView-2NGTxXTg.js.map
1
+ import{m as b}from"./pinia-IhuTtYiV.js";import{T as C}from"./TemplateDetails-FXwRGgg3.js";import{T as E}from"./TemplateList-ygiFPwW5.js";import{T as I}from"./TemplatesView-cnvoEQpa.js";import{w as S,a9 as V}from"./index-sMRiWGJS.js";import{av as B,B as T,f7 as h,_ as F}from"./n8n-NE7NqrvB.js";import{G as W,ag as t,l as s,M as m,a9 as P,O as i,p as r,I as n,m as p,T as a,Q as c,S as d,R as u}from"./vendor-2CfOYFi2.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";const M=W({name:"TemplatesCollectionView",mixins:[S],components:{TemplateDetails:C,TemplateList:E,TemplatesView:I},computed:{...b(V,B),collection(){return this.templatesStore.getCollectionById(this.collectionId)},collectionId(){return this.$route.params.id},collectionWorkflows(){return this.collection?this.collection.workflows.map(({id:e})=>this.templatesStore.getTemplateById(e.toString())):null}},data(){return{loading:!0,notFoundError:!1}},methods:{scrollToTop(){setTimeout(()=>{const e=document.getElementById("content");e&&e.scrollTo({top:0,behavior:"smooth"})},50)},onOpenTemplate({event:e,id:o}){this.navigateTo(e,T.TEMPLATE,o)},onUseWorkflow({event:e,id:o}){const l={template_id:o,wf_template_repo_session_id:this.workflowsStore.currentSessionId,source:"collection"};this.$externalHooks().run("templatesCollectionView.onUseWorkflow",l),this.$telemetry.track("User inserted workflow template",l,{withPostHog:!0}),this.navigateTo(e,T.TEMPLATE_IMPORT,o)},navigateTo(e,o,l){if(e.metaKey||e.ctrlKey){const w=this.$router.resolve({name:o,params:{id:l}});window.open(w.href,"_blank");return}else this.$router.push({name:o,params:{id:l}})}},watch:{collection(e){e?h(`n8n - Template collection: ${e.name}`):h("n8n - Templates")}},async mounted(){if(this.scrollToTop(),this.collection&&this.collection.full){this.loading=!1;return}try{await this.templatesStore.fetchCollectionById(this.collectionId)}catch{this.notFoundError=!0}this.loading=!1}}),O="_wrapper_19isr_5",U="_notFound_19isr_15",L="_title_19isr_19",N="_button_19isr_23",D="_mainContent_19isr_27",H="_markdown_19isr_38",z="_details_19isr_42",A={wrapper:O,notFound:U,title:L,button:N,mainContent:D,markdown:H,details:z};function K(e,o,l,w,G,Q){const g=t("n8n-heading"),f=t("n8n-text"),k=t("n8n-loading"),y=t("n8n-markdown"),_=t("TemplateList"),$=t("TemplateDetails"),v=t("TemplatesView");return s(),m(v,{goBackEnabled:!0},P({header:i(()=>[e.notFoundError?(s(),p("div",{key:1,class:n(e.$style.notFound)},[a(f,{color:"text-base"},{default:i(()=>[d(u(e.$locale.baseText("templates.collectionsNotFound")),1)]),_:1})],2)):(s(),p("div",{key:0,class:n(e.$style.wrapper)},[r("div",{class:n(e.$style.title)},[e.collection&&e.collection.name?(s(),m(g,{key:0,tag:"h1",size:"2xlarge"},{default:i(()=>[d(u(e.collection.name),1)]),_:1})):c("",!0),e.collection&&e.collection.name?(s(),m(f,{key:1,color:"text-base",size:"small"},{default:i(()=>[d(u(e.$locale.baseText("templates.collection")),1)]),_:1})):c("",!0),a(k,{loading:!e.collection||!e.collection.name,rows:2,variant:"h1"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:i(()=>[r("div",{class:n(e.$style.wrapper)},[r("div",{class:n(e.$style.mainContent)},[e.loading||e.collection&&e.collection.description?(s(),p("div",{key:0,class:n(e.$style.markdown)},[a(y,{content:e.collection&&e.collection.description,images:e.collection&&e.collection.image,loading:e.loading},null,8,["content","images","loading"])],2)):c("",!0),a(_,{"infinite-scroll-enabled":!1,loading:e.loading,"use-workflow-button":!0,workflows:e.loading?[]:e.collectionWorkflows,onUseWorkflow:e.onUseWorkflow,onOpenTemplate:e.onOpenTemplate},null,8,["loading","workflows","onUseWorkflow","onOpenTemplate"])],2),r("div",{class:n(e.$style.details)},[a($,{"block-title":e.$locale.baseText("template.details.appsInTheCollection"),loading:e.loading,template:e.collection},null,8,["block-title","loading","template"])],2)],2)]),key:"0"}]),1024)}const R={$style:A},Ie=F(M,[["render",K],["__cssModules",R]]);export{Ie as default};
2
+ //# sourceMappingURL=TemplatesCollectionView-iJK5C7dQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplatesCollectionView-2NGTxXTg.js","sources":["../../src/views/TemplatesCollectionView.vue"],"sourcesContent":["<template>\n\t<TemplatesView :goBackEnabled=\"true\">\n\t\t<template #header>\n\t\t\t<div v-if=\"!notFoundError\" :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.title\">\n\t\t\t\t\t<n8n-heading v-if=\"collection && collection.name\" tag=\"h1\" size=\"2xlarge\">\n\t\t\t\t\t\t{{ collection.name }}\n\t\t\t\t\t</n8n-heading>\n\t\t\t\t\t<n8n-text v-if=\"collection && collection.name\" color=\"text-base\" size=\"small\">\n\t\t\t\t\t\t{{ $locale.baseText('templates.collection') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-loading :loading=\"!collection || !collection.name\" :rows=\"2\" variant=\"h1\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.notFound\" v-else>\n\t\t\t\t<n8n-text color=\"text-base\">{{\n\t\t\t\t\t$locale.baseText('templates.collectionsNotFound')\n\t\t\t\t}}</n8n-text>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-if=\"!notFoundError\" #content>\n\t\t\t<div :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.mainContent\">\n\t\t\t\t\t<div :class=\"$style.markdown\" v-if=\"loading || (collection && collection.description)\">\n\t\t\t\t\t\t<n8n-markdown\n\t\t\t\t\t\t\t:content=\"collection && collection.description\"\n\t\t\t\t\t\t\t:images=\"collection && collection.image\"\n\t\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<TemplateList\n\t\t\t\t\t\t:infinite-scroll-enabled=\"false\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:use-workflow-button=\"true\"\n\t\t\t\t\t\t:workflows=\"loading ? [] : collectionWorkflows\"\n\t\t\t\t\t\t@useWorkflow=\"onUseWorkflow\"\n\t\t\t\t\t\t@openTemplate=\"onOpenTemplate\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.details\">\n\t\t\t\t\t<TemplateDetails\n\t\t\t\t\t\t:block-title=\"$locale.baseText('template.details.appsInTheCollection')\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:template=\"collection\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</TemplatesView>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\n\nimport TemplateDetails from '@/components/TemplateDetails.vue';\nimport TemplateList from '@/components/TemplateList.vue';\nimport TemplatesView from './TemplatesView.vue';\n\nimport { workflowHelpers } from '@/mixins/workflowHelpers';\nimport type {\n\tITemplatesCollection,\n\tITemplatesCollectionFull,\n\tITemplatesWorkflow,\n\tITemplatesWorkflowFull,\n} from '@/Interface';\n\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { VIEWS } from '@/constants';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { usePostHog } from '@/stores/posthog.store';\n\nexport default defineComponent({\n\tname: 'TemplatesCollectionView',\n\tmixins: [workflowHelpers],\n\tcomponents: {\n\t\tTemplateDetails,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tcomputed: {\n\t\t...mapStores(useTemplatesStore, usePostHog),\n\t\tcollection(): null | ITemplatesCollectionFull {\n\t\t\treturn this.templatesStore.getCollectionById(this.collectionId);\n\t\t},\n\t\tcollectionId(): string {\n\t\t\treturn this.$route.params.id;\n\t\t},\n\t\tcollectionWorkflows(): Array<ITemplatesWorkflow | ITemplatesWorkflowFull | null> | null {\n\t\t\tif (!this.collection) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn this.collection.workflows.map(({ id }) => {\n\t\t\t\treturn this.templatesStore.getTemplateById(id.toString());\n\t\t\t});\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tnotFoundError: false,\n\t\t};\n\t},\n\tmethods: {\n\t\tscrollToTop() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst contentArea = document.getElementById('content');\n\t\t\t\tif (contentArea) {\n\t\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 50);\n\t\t},\n\t\tonOpenTemplate({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE, id);\n\t\t},\n\t\tonUseWorkflow({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tconst telemetryPayload = {\n\t\t\t\ttemplate_id: id,\n\t\t\t\twf_template_repo_session_id: this.workflowsStore.currentSessionId,\n\t\t\t\tsource: 'collection',\n\t\t\t};\n\t\t\tvoid this.$externalHooks().run('templatesCollectionView.onUseWorkflow', telemetryPayload);\n\t\t\tthis.$telemetry.track('User inserted workflow template', telemetryPayload, {\n\t\t\t\twithPostHog: true,\n\t\t\t});\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE_IMPORT, 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},\n\twatch: {\n\t\tcollection(collection: ITemplatesCollection) {\n\t\t\tif (collection) {\n\t\t\t\tsetPageTitle(`n8n - Template collection: ${collection.name}`);\n\t\t\t} else {\n\t\t\t\tsetPageTitle('n8n - Templates');\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tthis.scrollToTop();\n\n\t\tif (this.collection && this.collection.full) {\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.templatesStore.fetchCollectionById(this.collectionId);\n\t\t} catch (e) {\n\t\t\tthis.notFoundError = true;\n\t\t}\n\t\tthis.loading = false;\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.wrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tdisplay: block;\n\t}\n}\n\n.notFound {\n\tpadding-top: var(--spacing-xl);\n}\n\n.title {\n\twidth: 100%;\n}\n\n.button {\n\tdisplay: block;\n}\n\n.mainContent {\n\tpadding-right: var(--spacing-2xl);\n\tmargin-bottom: var(--spacing-l);\n\twidth: 100%;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tpadding-right: 0;\n\t}\n}\n\n.markdown {\n\tmargin-bottom: var(--spacing-l);\n}\n\n.details {\n\twidth: 180px;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","workflowHelpers","TemplateDetails","TemplateList","TemplatesView","mapStores","useTemplatesStore","usePostHog","id","contentArea","event","VIEWS","telemetryPayload","page","route","collection","setPageTitle","_component_TemplatesView","_resolveComponent","_openBlock","_createBlock","_createSlots","_withCtx","_ctx","_createElementBlock","_normalizeClass","_component_n8n_heading","_createCommentVNode","_component_n8n_text","_createVNode","_component_n8n_loading","_createElementVNode","_component_n8n_markdown","_component_TemplateList","_component_TemplateDetails"],"mappings":"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"}
1
+ {"version":3,"file":"TemplatesCollectionView-iJK5C7dQ.js","sources":["../../src/views/TemplatesCollectionView.vue"],"sourcesContent":["<template>\n\t<TemplatesView :goBackEnabled=\"true\">\n\t\t<template #header>\n\t\t\t<div v-if=\"!notFoundError\" :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.title\">\n\t\t\t\t\t<n8n-heading v-if=\"collection && collection.name\" tag=\"h1\" size=\"2xlarge\">\n\t\t\t\t\t\t{{ collection.name }}\n\t\t\t\t\t</n8n-heading>\n\t\t\t\t\t<n8n-text v-if=\"collection && collection.name\" color=\"text-base\" size=\"small\">\n\t\t\t\t\t\t{{ $locale.baseText('templates.collection') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-loading :loading=\"!collection || !collection.name\" :rows=\"2\" variant=\"h1\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.notFound\" v-else>\n\t\t\t\t<n8n-text color=\"text-base\">{{\n\t\t\t\t\t$locale.baseText('templates.collectionsNotFound')\n\t\t\t\t}}</n8n-text>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-if=\"!notFoundError\" #content>\n\t\t\t<div :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.mainContent\">\n\t\t\t\t\t<div :class=\"$style.markdown\" v-if=\"loading || (collection && collection.description)\">\n\t\t\t\t\t\t<n8n-markdown\n\t\t\t\t\t\t\t:content=\"collection && collection.description\"\n\t\t\t\t\t\t\t:images=\"collection && collection.image\"\n\t\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<TemplateList\n\t\t\t\t\t\t:infinite-scroll-enabled=\"false\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:use-workflow-button=\"true\"\n\t\t\t\t\t\t:workflows=\"loading ? [] : collectionWorkflows\"\n\t\t\t\t\t\t@useWorkflow=\"onUseWorkflow\"\n\t\t\t\t\t\t@openTemplate=\"onOpenTemplate\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.details\">\n\t\t\t\t\t<TemplateDetails\n\t\t\t\t\t\t:block-title=\"$locale.baseText('template.details.appsInTheCollection')\"\n\t\t\t\t\t\t:loading=\"loading\"\n\t\t\t\t\t\t:template=\"collection\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</TemplatesView>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\n\nimport TemplateDetails from '@/components/TemplateDetails.vue';\nimport TemplateList from '@/components/TemplateList.vue';\nimport TemplatesView from './TemplatesView.vue';\n\nimport { workflowHelpers } from '@/mixins/workflowHelpers';\nimport type {\n\tITemplatesCollection,\n\tITemplatesCollectionFull,\n\tITemplatesWorkflow,\n\tITemplatesWorkflowFull,\n} from '@/Interface';\n\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { VIEWS } from '@/constants';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { usePostHog } from '@/stores/posthog.store';\n\nexport default defineComponent({\n\tname: 'TemplatesCollectionView',\n\tmixins: [workflowHelpers],\n\tcomponents: {\n\t\tTemplateDetails,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tcomputed: {\n\t\t...mapStores(useTemplatesStore, usePostHog),\n\t\tcollection(): null | ITemplatesCollectionFull {\n\t\t\treturn this.templatesStore.getCollectionById(this.collectionId);\n\t\t},\n\t\tcollectionId(): string {\n\t\t\treturn this.$route.params.id;\n\t\t},\n\t\tcollectionWorkflows(): Array<ITemplatesWorkflow | ITemplatesWorkflowFull | null> | null {\n\t\t\tif (!this.collection) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn this.collection.workflows.map(({ id }) => {\n\t\t\t\treturn this.templatesStore.getTemplateById(id.toString());\n\t\t\t});\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tnotFoundError: false,\n\t\t};\n\t},\n\tmethods: {\n\t\tscrollToTop() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst contentArea = document.getElementById('content');\n\t\t\t\tif (contentArea) {\n\t\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 50);\n\t\t},\n\t\tonOpenTemplate({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE, id);\n\t\t},\n\t\tonUseWorkflow({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tconst telemetryPayload = {\n\t\t\t\ttemplate_id: id,\n\t\t\t\twf_template_repo_session_id: this.workflowsStore.currentSessionId,\n\t\t\t\tsource: 'collection',\n\t\t\t};\n\t\t\tvoid this.$externalHooks().run('templatesCollectionView.onUseWorkflow', telemetryPayload);\n\t\t\tthis.$telemetry.track('User inserted workflow template', telemetryPayload, {\n\t\t\t\twithPostHog: true,\n\t\t\t});\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE_IMPORT, 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},\n\twatch: {\n\t\tcollection(collection: ITemplatesCollection) {\n\t\t\tif (collection) {\n\t\t\t\tsetPageTitle(`n8n - Template collection: ${collection.name}`);\n\t\t\t} else {\n\t\t\t\tsetPageTitle('n8n - Templates');\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tthis.scrollToTop();\n\n\t\tif (this.collection && this.collection.full) {\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.templatesStore.fetchCollectionById(this.collectionId);\n\t\t} catch (e) {\n\t\t\tthis.notFoundError = true;\n\t\t}\n\t\tthis.loading = false;\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.wrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tdisplay: block;\n\t}\n}\n\n.notFound {\n\tpadding-top: var(--spacing-xl);\n}\n\n.title {\n\twidth: 100%;\n}\n\n.button {\n\tdisplay: block;\n}\n\n.mainContent {\n\tpadding-right: var(--spacing-2xl);\n\tmargin-bottom: var(--spacing-l);\n\twidth: 100%;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tpadding-right: 0;\n\t}\n}\n\n.markdown {\n\tmargin-bottom: var(--spacing-l);\n}\n\n.details {\n\twidth: 180px;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","workflowHelpers","TemplateDetails","TemplateList","TemplatesView","mapStores","useTemplatesStore","usePostHog","id","contentArea","event","VIEWS","telemetryPayload","page","route","collection","setPageTitle","_component_TemplatesView","_resolveComponent","_openBlock","_createBlock","_createSlots","_withCtx","_ctx","_createElementBlock","_normalizeClass","_component_n8n_heading","_createCommentVNode","_component_n8n_text","_createVNode","_component_n8n_loading","_createElementVNode","_component_n8n_markdown","_component_TemplateList","_component_TemplateDetails"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{m as A}from"./pinia-IhuTtYiV.js";import{g as w,d as q,a9 as U}from"./index-hMVAffQ3.js";import{G as k,ag as s,l as r,M as $,a9 as I,O as d,K as R,p as a,R as f,I as l,H as N,T as n,S as v,V as T,U as b,m as u,F as E,a7 as L,Q as y}from"./vendor-2CfOYFi2.js";import{_,u as H,ff as z,av as F,p as j,l as D,t as K,B,f7 as Q}from"./n8n-NE7NqrvB.js";import{N as G,T as J}from"./TemplateList-apw79EVp.js";import{V as X}from"./vue-agile-421cHwup.js";import{T as Y}from"./TemplatesView-cnvoEQpa.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";const Z=k({name:"Card",mixins:[w],props:{loading:{type:Boolean},title:{type:String}}}),x="_card_fly8k_5",ee="_title_fly8k_21",te={card:x,title:ee},oe=["textContent"];function se(e,t,o,h,p,S){const m=s("n8n-loading"),g=s("n8n-card");return r(),$(g,R({class:e.$style.card},e.$attrs),I({default:d(()=>[n(m,{loading:e.loading,rows:3,variant:"p"},null,8,["loading"])]),_:2},[e.loading?void 0:{name:"header",fn:d(()=>[a("span",{textContent:f(e.title),class:l(e.$style.title)},null,10,oe)]),key:"0"},e.loading?void 0:{name:"footer",fn:d(()=>[N(e.$slots,"footer")]),key:"1"}]),1040,["class"])}const le={$style:te},V=_(Z,[["render",se],["__cssModules",le]]),ne=k({name:"CollectionCard",mixins:[w],props:{loading:{type:Boolean},collection:{type:Object}},components:{Card:V,NodeList:G}});function re(e,t,o,h,p,S){const m=s("n8n-text"),g=s("NodeList"),C=s("Card");return r(),$(C,{loading:e.loading,title:e.collection.name},{footer:d(()=>[n(m,{size:"small",color:"text-light"},{default:d(()=>[v(f(e.collection.workflows.length)+" "+f(e.$locale.baseText("templates.workflows")),1)]),_:1}),n(g,{nodes:e.collection.nodes,showMore:!1},null,8,["nodes"])]),_:1},8,["loading","title"])}const ae=_(ne,[["render",re]]),ie=k({name:"CollectionsCarousel",mixins:[w],props:{collections:{type:Array},loading:{type:Boolean}},watch:{collections(){setTimeout(()=>{this.updateCarouselScroll()},0)},loading(){setTimeout(()=>{this.updateCarouselScroll()},0)}},components:{Card:V,CollectionCard:ae,agile:X},data(){return{carouselScrollPosition:0,cardWidth:240,scrollEnd:!1,listElement:null}},methods:{updateCarouselScroll(){if(this.listElement){this.carouselScrollPosition=Number(this.listElement.scrollLeft.toFixed());const e=this.listElement.clientWidth,t=this.listElement.scrollWidth,o=this.carouselScrollPosition;this.scrollEnd=t-e<=o+7}},onCardClick(e,t){this.$emit("openCollection",{event:e,id:t})},scrollLeft(){this.listElement&&this.listElement.scrollBy({left:-(this.cardWidth*2),top:0,behavior:"smooth"})},scrollRight(){this.listElement&&this.listElement.scrollBy({left:this.cardWidth*2,top:0,behavior:"smooth"})}},async mounted(){await this.$nextTick();const e=this.$refs.slider;e&&(this.listElement=e.$el.querySelector(".agile__list"),this.listElement&&this.listElement.addEventListener("scroll",this.updateCarouselScroll))},beforeUnmount(){const e=this.$refs.slider;e&&e.destroy(),window.removeEventListener("scroll",this.updateCarouselScroll)}}),ce="_container_gpmxb_5",de="_button_gpmxb_9",he="_leftButton_gpmxb_30 _button_gpmxb_9",pe="_rightButton_gpmxb_39 _button_gpmxb_9",ue={container:ce,button:de,leftButton:he,rightButton:pe};function me(e,t,o,h,p,S){const m=s("Card"),g=s("CollectionCard"),C=s("agile"),i=s("font-awesome-icon");return T((r(),u("div",{class:l(e.$style.container)},[n(C,{ref:"slider",dots:!1,navButtons:!1,infinite:!1,"slides-to-show":4,onAfterChange:e.updateCarouselScroll},{default:d(()=>[(r(!0),u(E,null,L(e.loading?4:0,c=>(r(),$(m,{key:`loading-${c}`,loading:e.loading},null,8,["loading"]))),128)),(r(!0),u(E,null,L(e.loading?[]:e.collections,c=>(r(),$(g,{key:c.id,collection:c,onClick:W=>e.onCardClick(W,c.id)},null,8,["collection","onClick"]))),128))]),_:1},8,["onAfterChange"]),T(a("button",{class:l(e.$style.leftButton),onClick:t[0]||(t[0]=(...c)=>e.scrollLeft&&e.scrollLeft(...c))},[n(i,{icon:"chevron-left"})],2),[[b,e.carouselScrollPosition>0]]),T(a("button",{class:l(e.$style.rightButton),onClick:t[1]||(t[1]=(...c)=>e.scrollRight&&e.scrollRight(...c))},[n(i,{icon:"chevron-right"})],2),[[b,!e.scrollEnd]])],2)),[[b,e.loading||e.collections.length]])}const ge={$style:ue},fe=_(ie,[["render",me],["__cssModules",ge]]),Ce=k({name:"TemplateFilters",mixins:[w],props:{sortOnPopulate:{type:Boolean,default:!1},categories:{type:Array},expandLimit:{type:Number,default:12},loading:{type:Boolean},selected:{type:Array}},watch:{categories:{handler(e){if(!this.sortOnPopulate)this.sortedCategories=e;else{const t=this.selected||[],o=e.filter(({id:p})=>t.includes(p)),h=e.filter(({id:p})=>!t.includes(p));this.sortedCategories=o.concat(h)}},immediate:!0}},data(){return{collapsed:!0,sortedCategories:[]}},computed:{allSelected(){return this.selected.length===0}},methods:{collapseAction(){this.collapsed=!1},handleCheckboxChanged(e,t){this.$emit(e?"select":"clear",t.id)},isSelected(e){return this.selected.includes(e)},resetCategories(){this.$emit("clearAll")}}}),ye="_title_7aevl_5",$e="_categories_7aevl_10",we="_item_7aevl_15",ke="_button_7aevl_22",_e={title:ye,categories:$e,item:we,button:ke},Se=["textContent"];function Te(e,t,o,h,p,S){const m=s("n8n-loading"),g=s("el-checkbox"),C=s("n8n-text");return r(),u("div",{class:l([e.$style.filters,"template-filters"])},[a("div",{class:l(e.$style.title),textContent:f(e.$locale.baseText("templates.categoriesHeading"))},null,10,Se),e.loading?(r(),u("div",{key:0,class:l(e.$style.list)},[n(m,{loading:e.loading,rows:e.expandLimit},null,8,["loading","rows"])],2)):y("",!0),e.loading?y("",!0):(r(),u("ul",{key:1,class:l(e.$style.categories)},[a("li",{class:l(e.$style.item)},[n(g,{label:e.$locale.baseText("templates.allCategories"),modelValue:e.allSelected,"onUpdate:modelValue":t[0]||(t[0]=i=>e.resetCategories(i))},null,8,["label","modelValue"])],2),(r(!0),u(E,null,L(e.collapsed?e.sortedCategories.slice(0,e.expandLimit):e.sortedCategories,i=>(r(),u("li",{key:i.id,class:l(e.$style.item)},[n(g,{label:i.name,modelValue:e.isSelected(i.id),"onUpdate:modelValue":c=>e.handleCheckboxChanged(c,i)},null,8,["label","modelValue","onUpdate:modelValue"])],2))),128))],2)),e.sortedCategories.length>e.expandLimit&&e.collapsed&&!e.loading?(r(),u("div",{key:2,class:l(e.$style.button),onClick:t[1]||(t[1]=(...i)=>e.collapseAction&&e.collapseAction(...i))},[n(C,{size:"small",color:"primary"},{default:d(()=>[v(" + "+f(`${e.sortedCategories.length-e.expandLimit} more`),1)]),_:1})],2)):y("",!0)],2)}const be={$style:_e},ve=_(Ce,[["render",Te],["__cssModules",be]]),We=k({name:"TemplatesSearchView",mixins:[w,q],components:{CollectionsCarousel:fe,TemplateFilters:ve,TemplateList:J,TemplatesView:Y},setup(){return{...H()}},data(){return{areCategoriesPrepopulated:!1,categories:[],loading:!0,loadingCategories:!0,loadingCollections:!0,loadingWorkflows:!0,search:"",searchEventToTrack:null,errorLoadingWorkflows:!1,creatorHubUrl:z}},computed:{...A(K,U,D,j,F),totalWorkflows(){return this.templatesStore.getSearchedWorkflowsTotal(this.query)},workflows(){return this.templatesStore.getSearchedWorkflows(this.query)||[]},collections(){return this.templatesStore.getSearchedCollections(this.query)||[]},endOfSearchMessage(){return this.loadingWorkflows?null:!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0?!this.settingsStore.isTemplatesEndpointReachable&&this.errorLoadingWorkflows?this.$locale.baseText("templates.connectionWarning"):this.$locale.baseText("templates.noSearchResults"):null},query(){return{categories:this.categories,search:this.search}},nothingFound(){return!this.loadingWorkflows&&!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0}},methods:{onOpenCollection({event:e,id:t}){this.navigateTo(e,B.COLLECTION,t)},onOpenTemplate({event:e,id:t}){this.navigateTo(e,B.TEMPLATE,t)},navigateTo(e,t,o){if(e.metaKey||e.ctrlKey){const h=this.$router.resolve({name:t,params:{id:o}});window.open(h.href,"_blank");return}else this.$router.push({name:t,params:{id:o}})},updateSearch(){this.updateQueryParam(this.search,this.categories.join(",")),this.loadWorkflowsAndCollections(!1)},updateSearchTracking(e,t){e&&(this.searchEventToTrack&&this.searchEventToTrack.search_string.length>e.length||(this.searchEventToTrack={search_string:e,workflow_results_count:this.workflows.length,collection_results_count:this.collections.length,categories_applied:t.map(o=>this.templatesStore.getCategoryById(o.toString())),wf_template_repo_session_id:this.templatesStore.currentSessionId}))},trackSearch(){this.searchEventToTrack&&(this.$telemetry.track("User searched workflow templates",this.searchEventToTrack),this.searchEventToTrack=null)},onSearchInput(e){this.loadingWorkflows=!0,this.loadingCollections=!0,this.search=e,this.callDebounced("updateSearch",{debounceTime:500,trailing:!0}),e.length===0&&this.trackSearch()},onCategorySelected(e){this.categories=this.categories.concat(e),this.updateSearch(),this.trackCategories()},onCategoryUnselected(e){this.categories=this.categories.filter(t=>t!==e),this.updateSearch(),this.trackCategories()},onCategoriesCleared(){this.categories=[],this.updateSearch()},trackCategories(){this.categories.length&&this.$telemetry.track("User changed template filters",{search_string:this.search,categories_applied:this.categories.map(e=>this.templatesStore.getCollectionById(e.toString())),wf_template_repo_session_id:this.templatesStore.currentSessionId})},updateQueryParam(e,t){const o=Object.assign({},this.$route.query);t.length?o.categories=t:delete o.categories,e.length?o.search=e:delete o.search,this.$router.replace({query:o})},async onLoadMore(){if(!(this.workflows.length>=this.totalWorkflows))try{this.loadingWorkflows=!0,await this.templatesStore.getMoreWorkflows({categories:this.categories,search:this.search})}catch{this.showMessage({title:"Error",message:"Could not load more workflows",type:"error"})}finally{this.loadingWorkflows=!1}},async loadCategories(){try{await this.templatesStore.getCategories()}catch{}this.loadingCategories=!1},async loadCollections(){try{this.loadingCollections=!0,await this.templatesStore.getCollections({categories:this.categories,search:this.search})}catch{}this.loadingCollections=!1},async loadWorkflows(){try{this.loadingWorkflows=!0,await this.templatesStore.getWorkflows({search:this.search,categories:this.categories}),this.errorLoadingWorkflows=!1}catch{this.errorLoadingWorkflows=!0}this.loadingWorkflows=!1},async loadWorkflowsAndCollections(e){const t=this.search,o=[...this.categories];await Promise.all([this.loadWorkflows(),this.loadCollections()]),e||this.updateSearchTracking(t,o)},scrollTo(e,t="smooth"){setTimeout(()=>{const o=document.getElementById("content");o&&o.scrollTo({top:e,behavior:t})},0)}},watch:{workflows(e){e.length===0&&this.scrollTo(0)}},beforeRouteLeave(e,t,o){var p;const h=document.getElementById("content");h&&(p=this.$route.meta)!=null&&p.setScrollPosition&&typeof this.$route.meta.setScrollPosition=="function"&&this.$route.meta.setScrollPosition(h.scrollTop),this.trackSearch(),o()},async mounted(){Q("n8n - Templates"),this.loadCategories(),this.loadWorkflowsAndCollections(!0),this.usersStore.showPersonalizationSurvey(),setTimeout(()=>{this.$route.meta&&this.$route.meta.scrollOffset>0&&this.scrollTo(this.$route.meta.scrollOffset,"auto")},100)},async created(){this.$route.query.search&&typeof this.$route.query.search=="string"&&(this.search=this.$route.query.search),typeof this.$route.query.categories=="string"&&this.$route.query.categories.length&&(this.categories=this.$route.query.categories.split(",").map(e=>parseInt(e,10)),this.areCategoriesPrepopulated=!0)}}),Ee="_wrapper_p3frq_5",Le="_contentWrapper_p3frq_10",Be="_filters_p3frq_20",Ve="_search_p3frq_26",Oe="_header_p3frq_38",Pe={wrapper:Ee,contentWrapper:Le,filters:Be,search:Ve,header:Oe},Me=["textContent"],Ae=["innerHTML"];function qe(e,t,o,h,p,S){const m=s("n8n-heading"),g=s("n8n-button"),C=s("TemplateFilters"),i=s("font-awesome-icon"),c=s("n8n-input"),W=s("CollectionsCarousel"),O=s("TemplateList"),P=s("n8n-text"),M=s("TemplatesView");return r(),$(M,null,{header:d(()=>[a("div",{class:l(e.$style.wrapper)},[a("div",{class:l(e.$style.title)},[n(m,{tag:"h1",size:"2xlarge"},{default:d(()=>[v(f(e.$locale.baseText("templates.heading")),1)]),_:1})],2),a("div",{class:l(e.$style.button)},[n(g,{size:"large",type:"secondary",element:"a",href:e.creatorHubUrl,label:e.$locale.baseText("templates.shareWorkflow"),target:"_blank"},null,8,["href","label"])],2)],2)]),content:d(()=>[a("div",{class:l(e.$style.contentWrapper)},[a("div",{class:l(e.$style.filters)},[n(C,{categories:e.templatesStore.allCategories,sortOnPopulate:e.areCategoriesPrepopulated,loading:e.loadingCategories,selected:e.categories,onClear:e.onCategoryUnselected,onClearAll:e.onCategoriesCleared,onSelect:e.onCategorySelected},null,8,["categories","sortOnPopulate","loading","selected","onClear","onClearAll","onSelect"])],2),a("div",{class:l(e.$style.search)},[n(c,{modelValue:e.search,placeholder:e.$locale.baseText("templates.searchPlaceholder"),"onUpdate:modelValue":e.onSearchInput,onBlur:e.trackSearch,clearable:""},{prefix:d(()=>[n(i,{icon:"search"})]),_:1},8,["modelValue","placeholder","onUpdate:modelValue","onBlur"]),T(a("div",{class:l(e.$style.carouselContainer)},[a("div",{class:l(e.$style.header)},[n(m,{bold:!0,size:"medium",color:"text-light"},{default:d(()=>[v(f(e.$locale.baseText("templates.collections"))+" ",1),e.loadingCollections?y("",!0):(r(),u("span",{key:0,textContent:f(`(${e.collections.length})`)},null,8,Me))]),_:1})],2),n(W,{collections:e.collections,loading:e.loadingCollections,onOpenCollection:e.onOpenCollection},null,8,["collections","loading","onOpenCollection"])],2),[[b,e.collections.length||e.loadingCollections]]),n(O,{"infinite-scroll-enabled":!0,loading:e.loadingWorkflows,"total-workflows":e.totalWorkflows,workflows:e.workflows,onLoadMore:e.onLoadMore,onOpenTemplate:e.onOpenTemplate},null,8,["loading","total-workflows","workflows","onLoadMore","onOpenTemplate"]),e.endOfSearchMessage?(r(),u("div",{key:0,class:l(e.$style.endText)},[n(P,{size:"medium",color:"text-base"},{default:d(()=>[a("span",{innerHTML:e.endOfSearchMessage},null,8,Ae)]),_:1})],2)):y("",!0)],2)],2)]),_:1})}const Ue={$style:Pe},yt=_(We,[["render",qe],["__cssModules",Ue]]);export{yt as default};
2
- //# sourceMappingURL=TemplatesSearchView-0FL2pP83.js.map
1
+ import{m as A}from"./pinia-IhuTtYiV.js";import{g as w,d as q,a9 as U}from"./index-sMRiWGJS.js";import{G as k,ag as s,l as r,M as $,a9 as I,O as d,K as R,p as a,R as f,I as l,H as N,T as n,S as v,V as T,U as b,m as u,F as E,a7 as L,Q as y}from"./vendor-2CfOYFi2.js";import{_,u as H,ff as z,av as F,p as j,l as D,t as K,B,f7 as Q}from"./n8n-NE7NqrvB.js";import{N as G,T as J}from"./TemplateList-ygiFPwW5.js";import{V as X}from"./vue-agile-421cHwup.js";import{T as Y}from"./TemplatesView-cnvoEQpa.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";const Z=k({name:"Card",mixins:[w],props:{loading:{type:Boolean},title:{type:String}}}),x="_card_fly8k_5",ee="_title_fly8k_21",te={card:x,title:ee},oe=["textContent"];function se(e,t,o,h,p,S){const m=s("n8n-loading"),g=s("n8n-card");return r(),$(g,R({class:e.$style.card},e.$attrs),I({default:d(()=>[n(m,{loading:e.loading,rows:3,variant:"p"},null,8,["loading"])]),_:2},[e.loading?void 0:{name:"header",fn:d(()=>[a("span",{textContent:f(e.title),class:l(e.$style.title)},null,10,oe)]),key:"0"},e.loading?void 0:{name:"footer",fn:d(()=>[N(e.$slots,"footer")]),key:"1"}]),1040,["class"])}const le={$style:te},V=_(Z,[["render",se],["__cssModules",le]]),ne=k({name:"CollectionCard",mixins:[w],props:{loading:{type:Boolean},collection:{type:Object}},components:{Card:V,NodeList:G}});function re(e,t,o,h,p,S){const m=s("n8n-text"),g=s("NodeList"),C=s("Card");return r(),$(C,{loading:e.loading,title:e.collection.name},{footer:d(()=>[n(m,{size:"small",color:"text-light"},{default:d(()=>[v(f(e.collection.workflows.length)+" "+f(e.$locale.baseText("templates.workflows")),1)]),_:1}),n(g,{nodes:e.collection.nodes,showMore:!1},null,8,["nodes"])]),_:1},8,["loading","title"])}const ae=_(ne,[["render",re]]),ie=k({name:"CollectionsCarousel",mixins:[w],props:{collections:{type:Array},loading:{type:Boolean}},watch:{collections(){setTimeout(()=>{this.updateCarouselScroll()},0)},loading(){setTimeout(()=>{this.updateCarouselScroll()},0)}},components:{Card:V,CollectionCard:ae,agile:X},data(){return{carouselScrollPosition:0,cardWidth:240,scrollEnd:!1,listElement:null}},methods:{updateCarouselScroll(){if(this.listElement){this.carouselScrollPosition=Number(this.listElement.scrollLeft.toFixed());const e=this.listElement.clientWidth,t=this.listElement.scrollWidth,o=this.carouselScrollPosition;this.scrollEnd=t-e<=o+7}},onCardClick(e,t){this.$emit("openCollection",{event:e,id:t})},scrollLeft(){this.listElement&&this.listElement.scrollBy({left:-(this.cardWidth*2),top:0,behavior:"smooth"})},scrollRight(){this.listElement&&this.listElement.scrollBy({left:this.cardWidth*2,top:0,behavior:"smooth"})}},async mounted(){await this.$nextTick();const e=this.$refs.slider;e&&(this.listElement=e.$el.querySelector(".agile__list"),this.listElement&&this.listElement.addEventListener("scroll",this.updateCarouselScroll))},beforeUnmount(){const e=this.$refs.slider;e&&e.destroy(),window.removeEventListener("scroll",this.updateCarouselScroll)}}),ce="_container_gpmxb_5",de="_button_gpmxb_9",he="_leftButton_gpmxb_30 _button_gpmxb_9",pe="_rightButton_gpmxb_39 _button_gpmxb_9",ue={container:ce,button:de,leftButton:he,rightButton:pe};function me(e,t,o,h,p,S){const m=s("Card"),g=s("CollectionCard"),C=s("agile"),i=s("font-awesome-icon");return T((r(),u("div",{class:l(e.$style.container)},[n(C,{ref:"slider",dots:!1,navButtons:!1,infinite:!1,"slides-to-show":4,onAfterChange:e.updateCarouselScroll},{default:d(()=>[(r(!0),u(E,null,L(e.loading?4:0,c=>(r(),$(m,{key:`loading-${c}`,loading:e.loading},null,8,["loading"]))),128)),(r(!0),u(E,null,L(e.loading?[]:e.collections,c=>(r(),$(g,{key:c.id,collection:c,onClick:W=>e.onCardClick(W,c.id)},null,8,["collection","onClick"]))),128))]),_:1},8,["onAfterChange"]),T(a("button",{class:l(e.$style.leftButton),onClick:t[0]||(t[0]=(...c)=>e.scrollLeft&&e.scrollLeft(...c))},[n(i,{icon:"chevron-left"})],2),[[b,e.carouselScrollPosition>0]]),T(a("button",{class:l(e.$style.rightButton),onClick:t[1]||(t[1]=(...c)=>e.scrollRight&&e.scrollRight(...c))},[n(i,{icon:"chevron-right"})],2),[[b,!e.scrollEnd]])],2)),[[b,e.loading||e.collections.length]])}const ge={$style:ue},fe=_(ie,[["render",me],["__cssModules",ge]]),Ce=k({name:"TemplateFilters",mixins:[w],props:{sortOnPopulate:{type:Boolean,default:!1},categories:{type:Array},expandLimit:{type:Number,default:12},loading:{type:Boolean},selected:{type:Array}},watch:{categories:{handler(e){if(!this.sortOnPopulate)this.sortedCategories=e;else{const t=this.selected||[],o=e.filter(({id:p})=>t.includes(p)),h=e.filter(({id:p})=>!t.includes(p));this.sortedCategories=o.concat(h)}},immediate:!0}},data(){return{collapsed:!0,sortedCategories:[]}},computed:{allSelected(){return this.selected.length===0}},methods:{collapseAction(){this.collapsed=!1},handleCheckboxChanged(e,t){this.$emit(e?"select":"clear",t.id)},isSelected(e){return this.selected.includes(e)},resetCategories(){this.$emit("clearAll")}}}),ye="_title_7aevl_5",$e="_categories_7aevl_10",we="_item_7aevl_15",ke="_button_7aevl_22",_e={title:ye,categories:$e,item:we,button:ke},Se=["textContent"];function Te(e,t,o,h,p,S){const m=s("n8n-loading"),g=s("el-checkbox"),C=s("n8n-text");return r(),u("div",{class:l([e.$style.filters,"template-filters"])},[a("div",{class:l(e.$style.title),textContent:f(e.$locale.baseText("templates.categoriesHeading"))},null,10,Se),e.loading?(r(),u("div",{key:0,class:l(e.$style.list)},[n(m,{loading:e.loading,rows:e.expandLimit},null,8,["loading","rows"])],2)):y("",!0),e.loading?y("",!0):(r(),u("ul",{key:1,class:l(e.$style.categories)},[a("li",{class:l(e.$style.item)},[n(g,{label:e.$locale.baseText("templates.allCategories"),modelValue:e.allSelected,"onUpdate:modelValue":t[0]||(t[0]=i=>e.resetCategories(i))},null,8,["label","modelValue"])],2),(r(!0),u(E,null,L(e.collapsed?e.sortedCategories.slice(0,e.expandLimit):e.sortedCategories,i=>(r(),u("li",{key:i.id,class:l(e.$style.item)},[n(g,{label:i.name,modelValue:e.isSelected(i.id),"onUpdate:modelValue":c=>e.handleCheckboxChanged(c,i)},null,8,["label","modelValue","onUpdate:modelValue"])],2))),128))],2)),e.sortedCategories.length>e.expandLimit&&e.collapsed&&!e.loading?(r(),u("div",{key:2,class:l(e.$style.button),onClick:t[1]||(t[1]=(...i)=>e.collapseAction&&e.collapseAction(...i))},[n(C,{size:"small",color:"primary"},{default:d(()=>[v(" + "+f(`${e.sortedCategories.length-e.expandLimit} more`),1)]),_:1})],2)):y("",!0)],2)}const be={$style:_e},ve=_(Ce,[["render",Te],["__cssModules",be]]),We=k({name:"TemplatesSearchView",mixins:[w,q],components:{CollectionsCarousel:fe,TemplateFilters:ve,TemplateList:J,TemplatesView:Y},setup(){return{...H()}},data(){return{areCategoriesPrepopulated:!1,categories:[],loading:!0,loadingCategories:!0,loadingCollections:!0,loadingWorkflows:!0,search:"",searchEventToTrack:null,errorLoadingWorkflows:!1,creatorHubUrl:z}},computed:{...A(K,U,D,j,F),totalWorkflows(){return this.templatesStore.getSearchedWorkflowsTotal(this.query)},workflows(){return this.templatesStore.getSearchedWorkflows(this.query)||[]},collections(){return this.templatesStore.getSearchedCollections(this.query)||[]},endOfSearchMessage(){return this.loadingWorkflows?null:!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0?!this.settingsStore.isTemplatesEndpointReachable&&this.errorLoadingWorkflows?this.$locale.baseText("templates.connectionWarning"):this.$locale.baseText("templates.noSearchResults"):null},query(){return{categories:this.categories,search:this.search}},nothingFound(){return!this.loadingWorkflows&&!this.loadingCollections&&this.workflows.length===0&&this.collections.length===0}},methods:{onOpenCollection({event:e,id:t}){this.navigateTo(e,B.COLLECTION,t)},onOpenTemplate({event:e,id:t}){this.navigateTo(e,B.TEMPLATE,t)},navigateTo(e,t,o){if(e.metaKey||e.ctrlKey){const h=this.$router.resolve({name:t,params:{id:o}});window.open(h.href,"_blank");return}else this.$router.push({name:t,params:{id:o}})},updateSearch(){this.updateQueryParam(this.search,this.categories.join(",")),this.loadWorkflowsAndCollections(!1)},updateSearchTracking(e,t){e&&(this.searchEventToTrack&&this.searchEventToTrack.search_string.length>e.length||(this.searchEventToTrack={search_string:e,workflow_results_count:this.workflows.length,collection_results_count:this.collections.length,categories_applied:t.map(o=>this.templatesStore.getCategoryById(o.toString())),wf_template_repo_session_id:this.templatesStore.currentSessionId}))},trackSearch(){this.searchEventToTrack&&(this.$telemetry.track("User searched workflow templates",this.searchEventToTrack),this.searchEventToTrack=null)},onSearchInput(e){this.loadingWorkflows=!0,this.loadingCollections=!0,this.search=e,this.callDebounced("updateSearch",{debounceTime:500,trailing:!0}),e.length===0&&this.trackSearch()},onCategorySelected(e){this.categories=this.categories.concat(e),this.updateSearch(),this.trackCategories()},onCategoryUnselected(e){this.categories=this.categories.filter(t=>t!==e),this.updateSearch(),this.trackCategories()},onCategoriesCleared(){this.categories=[],this.updateSearch()},trackCategories(){this.categories.length&&this.$telemetry.track("User changed template filters",{search_string:this.search,categories_applied:this.categories.map(e=>this.templatesStore.getCollectionById(e.toString())),wf_template_repo_session_id:this.templatesStore.currentSessionId})},updateQueryParam(e,t){const o=Object.assign({},this.$route.query);t.length?o.categories=t:delete o.categories,e.length?o.search=e:delete o.search,this.$router.replace({query:o})},async onLoadMore(){if(!(this.workflows.length>=this.totalWorkflows))try{this.loadingWorkflows=!0,await this.templatesStore.getMoreWorkflows({categories:this.categories,search:this.search})}catch{this.showMessage({title:"Error",message:"Could not load more workflows",type:"error"})}finally{this.loadingWorkflows=!1}},async loadCategories(){try{await this.templatesStore.getCategories()}catch{}this.loadingCategories=!1},async loadCollections(){try{this.loadingCollections=!0,await this.templatesStore.getCollections({categories:this.categories,search:this.search})}catch{}this.loadingCollections=!1},async loadWorkflows(){try{this.loadingWorkflows=!0,await this.templatesStore.getWorkflows({search:this.search,categories:this.categories}),this.errorLoadingWorkflows=!1}catch{this.errorLoadingWorkflows=!0}this.loadingWorkflows=!1},async loadWorkflowsAndCollections(e){const t=this.search,o=[...this.categories];await Promise.all([this.loadWorkflows(),this.loadCollections()]),e||this.updateSearchTracking(t,o)},scrollTo(e,t="smooth"){setTimeout(()=>{const o=document.getElementById("content");o&&o.scrollTo({top:e,behavior:t})},0)}},watch:{workflows(e){e.length===0&&this.scrollTo(0)}},beforeRouteLeave(e,t,o){var p;const h=document.getElementById("content");h&&(p=this.$route.meta)!=null&&p.setScrollPosition&&typeof this.$route.meta.setScrollPosition=="function"&&this.$route.meta.setScrollPosition(h.scrollTop),this.trackSearch(),o()},async mounted(){Q("n8n - Templates"),this.loadCategories(),this.loadWorkflowsAndCollections(!0),this.usersStore.showPersonalizationSurvey(),setTimeout(()=>{this.$route.meta&&this.$route.meta.scrollOffset>0&&this.scrollTo(this.$route.meta.scrollOffset,"auto")},100)},async created(){this.$route.query.search&&typeof this.$route.query.search=="string"&&(this.search=this.$route.query.search),typeof this.$route.query.categories=="string"&&this.$route.query.categories.length&&(this.categories=this.$route.query.categories.split(",").map(e=>parseInt(e,10)),this.areCategoriesPrepopulated=!0)}}),Ee="_wrapper_p3frq_5",Le="_contentWrapper_p3frq_10",Be="_filters_p3frq_20",Ve="_search_p3frq_26",Oe="_header_p3frq_38",Pe={wrapper:Ee,contentWrapper:Le,filters:Be,search:Ve,header:Oe},Me=["textContent"],Ae=["innerHTML"];function qe(e,t,o,h,p,S){const m=s("n8n-heading"),g=s("n8n-button"),C=s("TemplateFilters"),i=s("font-awesome-icon"),c=s("n8n-input"),W=s("CollectionsCarousel"),O=s("TemplateList"),P=s("n8n-text"),M=s("TemplatesView");return r(),$(M,null,{header:d(()=>[a("div",{class:l(e.$style.wrapper)},[a("div",{class:l(e.$style.title)},[n(m,{tag:"h1",size:"2xlarge"},{default:d(()=>[v(f(e.$locale.baseText("templates.heading")),1)]),_:1})],2),a("div",{class:l(e.$style.button)},[n(g,{size:"large",type:"secondary",element:"a",href:e.creatorHubUrl,label:e.$locale.baseText("templates.shareWorkflow"),target:"_blank"},null,8,["href","label"])],2)],2)]),content:d(()=>[a("div",{class:l(e.$style.contentWrapper)},[a("div",{class:l(e.$style.filters)},[n(C,{categories:e.templatesStore.allCategories,sortOnPopulate:e.areCategoriesPrepopulated,loading:e.loadingCategories,selected:e.categories,onClear:e.onCategoryUnselected,onClearAll:e.onCategoriesCleared,onSelect:e.onCategorySelected},null,8,["categories","sortOnPopulate","loading","selected","onClear","onClearAll","onSelect"])],2),a("div",{class:l(e.$style.search)},[n(c,{modelValue:e.search,placeholder:e.$locale.baseText("templates.searchPlaceholder"),"onUpdate:modelValue":e.onSearchInput,onBlur:e.trackSearch,clearable:""},{prefix:d(()=>[n(i,{icon:"search"})]),_:1},8,["modelValue","placeholder","onUpdate:modelValue","onBlur"]),T(a("div",{class:l(e.$style.carouselContainer)},[a("div",{class:l(e.$style.header)},[n(m,{bold:!0,size:"medium",color:"text-light"},{default:d(()=>[v(f(e.$locale.baseText("templates.collections"))+" ",1),e.loadingCollections?y("",!0):(r(),u("span",{key:0,textContent:f(`(${e.collections.length})`)},null,8,Me))]),_:1})],2),n(W,{collections:e.collections,loading:e.loadingCollections,onOpenCollection:e.onOpenCollection},null,8,["collections","loading","onOpenCollection"])],2),[[b,e.collections.length||e.loadingCollections]]),n(O,{"infinite-scroll-enabled":!0,loading:e.loadingWorkflows,"total-workflows":e.totalWorkflows,workflows:e.workflows,onLoadMore:e.onLoadMore,onOpenTemplate:e.onOpenTemplate},null,8,["loading","total-workflows","workflows","onLoadMore","onOpenTemplate"]),e.endOfSearchMessage?(r(),u("div",{key:0,class:l(e.$style.endText)},[n(P,{size:"medium",color:"text-base"},{default:d(()=>[a("span",{innerHTML:e.endOfSearchMessage},null,8,Ae)]),_:1})],2)):y("",!0)],2)],2)]),_:1})}const Ue={$style:Pe},yt=_(We,[["render",qe],["__cssModules",Ue]]);export{yt as default};
2
+ //# sourceMappingURL=TemplatesSearchView-HA2xad9U.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplatesSearchView-0FL2pP83.js","sources":["../../src/components/CollectionWorkflowCard.vue","../../src/components/CollectionCard.vue","../../src/components/CollectionsCarousel.vue","../../src/components/TemplateFilters.vue","../../src/views/TemplatesSearchView.vue"],"sourcesContent":["<template>\n\t<n8n-card :class=\"$style.card\" v-bind=\"$attrs\">\n\t\t<template #header v-if=\"!loading\">\n\t\t\t<span v-text=\"title\" :class=\"$style.title\" />\n\t\t</template>\n\t\t<n8n-loading :loading=\"loading\" :rows=\"3\" variant=\"p\" />\n\t\t<template #footer v-if=\"!loading\">\n\t\t\t<slot name=\"footer\" />\n\t\t</template>\n\t</n8n-card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\n\nexport default defineComponent({\n\tname: 'Card',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.card {\n\twidth: 240px !important;\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\">\n\t\t<template #footer>\n\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t{{ collection.workflows.length }}\n\t\t\t\t{{ $locale.baseText('templates.workflows') }}\n\t\t\t</n8n-text>\n\t\t\t<NodeList :nodes=\"collection.nodes\" :showMore=\"false\" />\n\t\t</template>\n\t</Card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport Card from '@/components/CollectionWorkflowCard.vue';\nimport NodeList from '@/components/NodeList.vue';\n\nexport default defineComponent({\n\tname: 'CollectionCard',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tcollection: {\n\t\t\ttype: Object,\n\t\t},\n\t},\n\tcomponents: {\n\t\tCard,\n\t\tNodeList,\n\t},\n});\n</script>\n\n<style lang=\"scss\" module></style>\n","<template>\n\t<div :class=\"$style.container\" v-show=\"loading || collections.length\">\n\t\t<agile\n\t\t\tref=\"slider\"\n\t\t\t:dots=\"false\"\n\t\t\t:navButtons=\"false\"\n\t\t\t:infinite=\"false\"\n\t\t\t:slides-to-show=\"4\"\n\t\t\t@after-change=\"updateCarouselScroll\"\n\t\t>\n\t\t\t<Card v-for=\"n in loading ? 4 : 0\" :key=\"`loading-${n}`\" :loading=\"loading\" />\n\t\t\t<CollectionCard\n\t\t\t\tv-for=\"collection in loading ? [] : collections\"\n\t\t\t\t:key=\"collection.id\"\n\t\t\t\t:collection=\"collection\"\n\t\t\t\t@click=\"(e) => onCardClick(e, collection.id)\"\n\t\t\t/>\n\t\t</agile>\n\t\t<button v-show=\"carouselScrollPosition > 0\" :class=\"$style.leftButton\" @click=\"scrollLeft\">\n\t\t\t<font-awesome-icon icon=\"chevron-left\" />\n\t\t</button>\n\t\t<button v-show=\"!scrollEnd\" :class=\"$style.rightButton\" @click=\"scrollRight\">\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 CollectionCard from '@/components/CollectionCard.vue';\nimport { VueAgile } from 'vue-agile';\n\nimport { genericHelpers } from '@/mixins/genericHelpers';\n\ntype SliderRef = InstanceType<typeof VueAgile>;\n\nexport default defineComponent({\n\tname: 'CollectionsCarousel',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tcollections: {\n\t\t\ttype: Array as PropType<ITemplatesCollection[]>,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t},\n\twatch: {\n\t\tcollections() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateCarouselScroll();\n\t\t\t}, 0);\n\t\t},\n\t\tloading() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateCarouselScroll();\n\t\t\t}, 0);\n\t\t},\n\t},\n\tcomponents: {\n\t\tCard,\n\t\tCollectionCard,\n\t\tagile: VueAgile,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcarouselScrollPosition: 0,\n\t\t\tcardWidth: 240,\n\t\t\tscrollEnd: false,\n\t\t\tlistElement: null as null | Element,\n\t\t};\n\t},\n\tmethods: {\n\t\tupdateCarouselScroll() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.carouselScrollPosition = Number(this.listElement.scrollLeft.toFixed());\n\n\t\t\t\tconst width = this.listElement.clientWidth;\n\t\t\t\tconst scrollWidth = this.listElement.scrollWidth;\n\t\t\t\tconst scrollLeft = this.carouselScrollPosition;\n\t\t\t\tthis.scrollEnd = scrollWidth - width <= scrollLeft + 7;\n\t\t\t}\n\t\t},\n\t\tonCardClick(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('openCollection', { event, id });\n\t\t},\n\t\tscrollLeft() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.listElement.scrollBy({ left: -(this.cardWidth * 2), top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t},\n\t\tscrollRight() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.listElement.scrollBy({ left: this.cardWidth * 2, top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tawait this.$nextTick();\n\t\tconst sliderRef = this.$refs.slider as SliderRef | undefined;\n\t\tif (!sliderRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.listElement = sliderRef.$el.querySelector('.agile__list');\n\t\tif (this.listElement) {\n\t\t\tthis.listElement.addEventListener('scroll', this.updateCarouselScroll);\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tconst sliderRef = this.$refs.slider as SliderRef | undefined;\n\t\tif (sliderRef) {\n\t\t\tsliderRef.destroy();\n\t\t}\n\n\t\twindow.removeEventListener('scroll', this.updateCarouselScroll);\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\tposition: relative;\n}\n\n.button {\n\twidth: 28px;\n\theight: 37px;\n\tposition: absolute;\n\ttop: 35%;\n\tborder-radius: var(--border-radius-large);\n\tborder: var(--border-base);\n\tbackground-color: #fbfcfe;\n\tcursor: pointer;\n\n\t&:after {\n\t\tcontent: '';\n\t\twidth: 40px;\n\t\theight: 140px;\n\t\ttop: -55px;\n\t\tposition: absolute;\n\t}\n\tsvg {\n\t\tcolor: var(--color-foreground-xdark);\n\t}\n}\n\n.leftButton {\n\tcomposes: button;\n\tleft: -30px;\n\n\t&:after {\n\t\tleft: 27px;\n\t\tbackground: linear-gradient(\n\t\t\t270deg,\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t50%\n\t\t\t),\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t100%\n\t\t\t)\n\t\t);\n\t}\n}\n\n.rightButton {\n\tcomposes: button;\n\tright: -30px;\n\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","<template>\n\t<div :class=\"$style.filters\" class=\"template-filters\">\n\t\t<div :class=\"$style.title\" v-text=\"$locale.baseText('templates.categoriesHeading')\" />\n\t\t<div v-if=\"loading\" :class=\"$style.list\">\n\t\t\t<n8n-loading :loading=\"loading\" :rows=\"expandLimit\" />\n\t\t</div>\n\t\t<ul v-if=\"!loading\" :class=\"$style.categories\">\n\t\t\t<li :class=\"$style.item\">\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:label=\"$locale.baseText('templates.allCategories')\"\n\t\t\t\t\t:modelValue=\"allSelected\"\n\t\t\t\t\t@update:modelValue=\"(value) => resetCategories(value)\"\n\t\t\t\t/>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tv-for=\"category in collapsed ? sortedCategories.slice(0, expandLimit) : sortedCategories\"\n\t\t\t\t:key=\"category.id\"\n\t\t\t\t:class=\"$style.item\"\n\t\t\t>\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:label=\"category.name\"\n\t\t\t\t\t:modelValue=\"isSelected(category.id)\"\n\t\t\t\t\t@update:modelValue=\"(value) => handleCheckboxChanged(value, category)\"\n\t\t\t\t/>\n\t\t\t</li>\n\t\t</ul>\n\t\t<div\n\t\t\t:class=\"$style.button\"\n\t\t\tv-if=\"sortedCategories.length > expandLimit && collapsed && !loading\"\n\t\t\t@click=\"collapseAction\"\n\t\t>\n\t\t\t<n8n-text size=\"small\" color=\"primary\">\n\t\t\t\t+ {{ `${sortedCategories.length - expandLimit} more` }}\n\t\t\t</n8n-text>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type { ITemplatesCategory } from '@/Interface';\n\nexport default defineComponent({\n\tname: 'TemplateFilters',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tsortOnPopulate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcategories: {\n\t\t\ttype: Array,\n\t\t},\n\t\texpandLimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 12,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Array,\n\t\t},\n\t},\n\twatch: {\n\t\tcategories: {\n\t\t\thandler(categories: ITemplatesCategory[]) {\n\t\t\t\tif (!this.sortOnPopulate) {\n\t\t\t\t\tthis.sortedCategories = categories;\n\t\t\t\t} else {\n\t\t\t\t\tconst selected = this.selected || [];\n\t\t\t\t\tconst selectedCategories = categories.filter(({ id }) => selected.includes(id));\n\t\t\t\t\tconst notSelectedCategories = categories.filter(({ id }) => !selected.includes(id));\n\t\t\t\t\tthis.sortedCategories = selectedCategories.concat(notSelectedCategories);\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcollapsed: true,\n\t\t\tsortedCategories: [] as ITemplatesCategory[],\n\t\t};\n\t},\n\tcomputed: {\n\t\tallSelected(): boolean {\n\t\t\treturn this.selected.length === 0;\n\t\t},\n\t},\n\tmethods: {\n\t\tcollapseAction() {\n\t\t\tthis.collapsed = false;\n\t\t},\n\t\thandleCheckboxChanged(value: boolean, selectedCategory: ITemplatesCategory) {\n\t\t\tthis.$emit(value ? 'select' : 'clear', selectedCategory.id);\n\t\t},\n\t\tisSelected(categoryId: string) {\n\t\t\treturn this.selected.includes(categoryId);\n\t\t},\n\t\tresetCategories() {\n\t\t\tthis.$emit('clearAll');\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.title {\n\tfont-size: var(--font-size-2xs);\n\tcolor: var(--color-text-base);\n}\n\n.categories {\n\tpadding-top: var(--spacing-xs);\n\tlist-style-type: none;\n}\n\n.item {\n\tmargin-top: var(--spacing-xs);\n\n\t&:nth-child(1) {\n\t\tmargin-top: 0;\n\t}\n}\n\n.button {\n\tpadding-top: var(--spacing-2xs);\n\tcursor: pointer;\n}\n</style>\n\n<style lang=\"scss\">\n.template-filters {\n\t.el-checkbox {\n\t\tdisplay: flex;\n\t\twhite-space: unset;\n\t}\n\n\t.el-checkbox__label {\n\t\ttop: -2px;\n\t\tposition: relative;\n\t\tfont-size: var(--font-size-xs);\n\t\tline-height: var(--font-line-height-loose);\n\t\tcolor: var(--color-text-dark);\n\t\tpadding-left: var(--spacing-2xs);\n\t}\n}\n</style>\n","<template>\n\t<TemplatesView>\n\t\t<template #header>\n\t\t\t<div :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.title\">\n\t\t\t\t\t<n8n-heading tag=\"h1\" size=\"2xlarge\">\n\t\t\t\t\t\t{{ $locale.baseText('templates.heading') }}\n\t\t\t\t\t</n8n-heading>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.button\">\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\telement=\"a\"\n\t\t\t\t\t\t:href=\"creatorHubUrl\"\n\t\t\t\t\t\t:label=\"$locale.baseText('templates.shareWorkflow')\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div :class=\"$style.contentWrapper\">\n\t\t\t\t<div :class=\"$style.filters\">\n\t\t\t\t\t<TemplateFilters\n\t\t\t\t\t\t:categories=\"templatesStore.allCategories\"\n\t\t\t\t\t\t:sortOnPopulate=\"areCategoriesPrepopulated\"\n\t\t\t\t\t\t:loading=\"loadingCategories\"\n\t\t\t\t\t\t:selected=\"categories\"\n\t\t\t\t\t\t@clear=\"onCategoryUnselected\"\n\t\t\t\t\t\t@clearAll=\"onCategoriesCleared\"\n\t\t\t\t\t\t@select=\"onCategorySelected\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.search\">\n\t\t\t\t\t<n8n-input\n\t\t\t\t\t\t:modelValue=\"search\"\n\t\t\t\t\t\t:placeholder=\"$locale.baseText('templates.searchPlaceholder')\"\n\t\t\t\t\t\t@update:modelValue=\"onSearchInput\"\n\t\t\t\t\t\t@blur=\"trackSearch\"\n\t\t\t\t\t\tclearable\n\t\t\t\t\t>\n\t\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t\t<font-awesome-icon icon=\"search\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</n8n-input>\n\t\t\t\t\t<div :class=\"$style.carouselContainer\" v-show=\"collections.length || loadingCollections\">\n\t\t\t\t\t\t<div :class=\"$style.header\">\n\t\t\t\t\t\t\t<n8n-heading :bold=\"true\" size=\"medium\" color=\"text-light\">\n\t\t\t\t\t\t\t\t{{ $locale.baseText('templates.collections') }}\n\t\t\t\t\t\t\t\t<span v-if=\"!loadingCollections\" v-text=\"`(${collections.length})`\" />\n\t\t\t\t\t\t\t</n8n-heading>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<CollectionsCarousel\n\t\t\t\t\t\t\t:collections=\"collections\"\n\t\t\t\t\t\t\t:loading=\"loadingCollections\"\n\t\t\t\t\t\t\t@openCollection=\"onOpenCollection\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<TemplateList\n\t\t\t\t\t\t:infinite-scroll-enabled=\"true\"\n\t\t\t\t\t\t:loading=\"loadingWorkflows\"\n\t\t\t\t\t\t:total-workflows=\"totalWorkflows\"\n\t\t\t\t\t\t:workflows=\"workflows\"\n\t\t\t\t\t\t@loadMore=\"onLoadMore\"\n\t\t\t\t\t\t@openTemplate=\"onOpenTemplate\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div v-if=\"endOfSearchMessage\" :class=\"$style.endText\">\n\t\t\t\t\t\t<n8n-text size=\"medium\" color=\"text-base\">\n\t\t\t\t\t\t\t<span v-html=\"endOfSearchMessage\" />\n\t\t\t\t\t\t</n8n-text>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</TemplatesView>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport CollectionsCarousel from '@/components/CollectionsCarousel.vue';\nimport TemplateFilters from '@/components/TemplateFilters.vue';\nimport TemplateList from '@/components/TemplateList.vue';\nimport TemplatesView from '@/views/TemplatesView.vue';\n\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type {\n\tITemplatesCollection,\n\tITemplatesWorkflow,\n\tITemplatesQuery,\n\tITemplatesCategory,\n} from '@/Interface';\nimport type { IDataObject } from 'n8n-workflow';\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { CREATOR_HUB_URL, VIEWS } from '@/constants';\nimport { debounceHelper } from '@/mixins/debounce';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { usePostHog } from '@/stores/posthog.store';\n\ninterface ISearchEvent {\n\tsearch_string: string;\n\tworkflow_results_count: number;\n\tcollection_results_count: number;\n\tcategories_applied: ITemplatesCategory[];\n\twf_template_repo_session_id: string;\n}\n\nexport default defineComponent({\n\tname: 'TemplatesSearchView',\n\tmixins: [genericHelpers, debounceHelper],\n\tcomponents: {\n\t\tCollectionsCarousel,\n\t\tTemplateFilters,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tareCategoriesPrepopulated: false,\n\t\t\tcategories: [] as number[],\n\t\t\tloading: true,\n\t\t\tloadingCategories: true,\n\t\t\tloadingCollections: true,\n\t\t\tloadingWorkflows: true,\n\t\t\tsearch: '',\n\t\t\tsearchEventToTrack: null as null | ISearchEvent,\n\t\t\terrorLoadingWorkflows: false,\n\t\t\tcreatorHubUrl: CREATOR_HUB_URL as string,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useSettingsStore, useTemplatesStore, useUIStore, useUsersStore, usePostHog),\n\t\ttotalWorkflows(): number {\n\t\t\treturn this.templatesStore.getSearchedWorkflowsTotal(this.query);\n\t\t},\n\t\tworkflows(): ITemplatesWorkflow[] {\n\t\t\treturn this.templatesStore.getSearchedWorkflows(this.query) || [];\n\t\t},\n\t\tcollections(): ITemplatesCollection[] {\n\t\t\treturn this.templatesStore.getSearchedCollections(this.query) || [];\n\t\t},\n\t\tendOfSearchMessage(): string | null {\n\t\t\tif (this.loadingWorkflows) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.loadingCollections &&\n\t\t\t\tthis.workflows.length === 0 &&\n\t\t\t\tthis.collections.length === 0\n\t\t\t) {\n\t\t\t\tif (!this.settingsStore.isTemplatesEndpointReachable && this.errorLoadingWorkflows) {\n\t\t\t\t\treturn this.$locale.baseText('templates.connectionWarning');\n\t\t\t\t}\n\t\t\t\treturn this.$locale.baseText('templates.noSearchResults');\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t\tquery(): ITemplatesQuery {\n\t\t\treturn {\n\t\t\t\tcategories: this.categories,\n\t\t\t\tsearch: this.search,\n\t\t\t};\n\t\t},\n\t\tnothingFound(): boolean {\n\t\t\treturn (\n\t\t\t\t!this.loadingWorkflows &&\n\t\t\t\t!this.loadingCollections &&\n\t\t\t\tthis.workflows.length === 0 &&\n\t\t\t\tthis.collections.length === 0\n\t\t\t);\n\t\t},\n\t},\n\tmethods: {\n\t\tonOpenCollection({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.COLLECTION, id);\n\t\t},\n\t\tonOpenTemplate({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE, id);\n\t\t},\n\t\tnavigateTo(e: MouseEvent, page: string, id: string) {\n\t\t\tif (e.metaKey || e.ctrlKey) {\n\t\t\t\tconst route = this.$router.resolve({ name: page, params: { id } });\n\t\t\t\twindow.open(route.href, '_blank');\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tvoid this.$router.push({ name: page, params: { id } });\n\t\t\t}\n\t\t},\n\t\tupdateSearch() {\n\t\t\tthis.updateQueryParam(this.search, this.categories.join(','));\n\t\t\tvoid this.loadWorkflowsAndCollections(false);\n\t\t},\n\t\tupdateSearchTracking(search: string, categories: number[]) {\n\t\t\tif (!search) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.searchEventToTrack && this.searchEventToTrack.search_string.length > search.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.searchEventToTrack = {\n\t\t\t\tsearch_string: search,\n\t\t\t\tworkflow_results_count: this.workflows.length,\n\t\t\t\tcollection_results_count: this.collections.length,\n\t\t\t\tcategories_applied: categories.map((categoryId) =>\n\t\t\t\t\tthis.templatesStore.getCategoryById(categoryId.toString()),\n\t\t\t\t) as ITemplatesCategory[],\n\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t};\n\t\t},\n\t\ttrackSearch() {\n\t\t\tif (this.searchEventToTrack) {\n\t\t\t\tthis.$telemetry.track(\n\t\t\t\t\t'User searched workflow templates',\n\t\t\t\t\tthis.searchEventToTrack as unknown as IDataObject,\n\t\t\t\t);\n\t\t\t\tthis.searchEventToTrack = null;\n\t\t\t}\n\t\t},\n\t\tonSearchInput(search: string) {\n\t\t\tthis.loadingWorkflows = true;\n\t\t\tthis.loadingCollections = true;\n\t\t\tthis.search = search;\n\t\t\tvoid this.callDebounced('updateSearch', { debounceTime: 500, trailing: true });\n\n\t\t\tif (search.length === 0) {\n\t\t\t\tthis.trackSearch();\n\t\t\t}\n\t\t},\n\t\tonCategorySelected(selected: number) {\n\t\t\tthis.categories = this.categories.concat(selected);\n\t\t\tthis.updateSearch();\n\t\t\tthis.trackCategories();\n\t\t},\n\t\tonCategoryUnselected(selected: number) {\n\t\t\tthis.categories = this.categories.filter((id) => id !== selected);\n\t\t\tthis.updateSearch();\n\t\t\tthis.trackCategories();\n\t\t},\n\t\tonCategoriesCleared() {\n\t\t\tthis.categories = [];\n\t\t\tthis.updateSearch();\n\t\t},\n\t\ttrackCategories() {\n\t\t\tif (this.categories.length) {\n\t\t\t\tthis.$telemetry.track('User changed template filters', {\n\t\t\t\t\tsearch_string: this.search,\n\t\t\t\t\tcategories_applied: this.categories.map((categoryId: number) =>\n\t\t\t\t\t\tthis.templatesStore.getCollectionById(categoryId.toString()),\n\t\t\t\t\t),\n\t\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tupdateQueryParam(search: string, category: string) {\n\t\t\tconst query = Object.assign({}, this.$route.query);\n\n\t\t\tif (category.length) {\n\t\t\t\tquery.categories = category;\n\t\t\t} else {\n\t\t\t\tdelete query.categories;\n\t\t\t}\n\n\t\t\tif (search.length) {\n\t\t\t\tquery.search = search;\n\t\t\t} else {\n\t\t\t\tdelete query.search;\n\t\t\t}\n\n\t\t\tvoid this.$router.replace({ query });\n\t\t},\n\t\tasync onLoadMore() {\n\t\t\tif (this.workflows.length >= this.totalWorkflows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tthis.loadingWorkflows = true;\n\t\t\t\tawait this.templatesStore.getMoreWorkflows({\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tthis.showMessage({\n\t\t\t\t\ttitle: 'Error',\n\t\t\t\t\tmessage: 'Could not load more workflows',\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tthis.loadingWorkflows = false;\n\t\t\t}\n\t\t},\n\t\tasync loadCategories() {\n\t\t\ttry {\n\t\t\t\tawait this.templatesStore.getCategories();\n\t\t\t} catch (e) {}\n\t\t\tthis.loadingCategories = false;\n\t\t},\n\t\tasync loadCollections() {\n\t\t\ttry {\n\t\t\t\tthis.loadingCollections = true;\n\t\t\t\tawait this.templatesStore.getCollections({\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t});\n\t\t\t} catch (e) {}\n\n\t\t\tthis.loadingCollections = false;\n\t\t},\n\t\tasync loadWorkflows() {\n\t\t\ttry {\n\t\t\t\tthis.loadingWorkflows = true;\n\t\t\t\tawait this.templatesStore.getWorkflows({\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t});\n\t\t\t\tthis.errorLoadingWorkflows = false;\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorLoadingWorkflows = true;\n\t\t\t}\n\n\t\t\tthis.loadingWorkflows = false;\n\t\t},\n\t\tasync loadWorkflowsAndCollections(initialLoad: boolean) {\n\t\t\tconst search = this.search;\n\t\t\tconst categories = [...this.categories];\n\t\t\tawait Promise.all([this.loadWorkflows(), this.loadCollections()]);\n\t\t\tif (!initialLoad) {\n\t\t\t\tthis.updateSearchTracking(search, categories);\n\t\t\t}\n\t\t},\n\t\tscrollTo(position: number, behavior: ScrollBehavior = 'smooth') {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst contentArea = document.getElementById('content');\n\t\t\t\tif (contentArea) {\n\t\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\t\ttop: position,\n\t\t\t\t\t\tbehavior,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t},\n\t},\n\twatch: {\n\t\tworkflows(newWorkflows) {\n\t\t\tif (newWorkflows.length === 0) {\n\t\t\t\tthis.scrollTo(0);\n\t\t\t}\n\t\t},\n\t},\n\tbeforeRouteLeave(to, from, next) {\n\t\tconst contentArea = document.getElementById('content');\n\t\tif (contentArea) {\n\t\t\t// When leaving this page, store current scroll position in route data\n\t\t\tif (\n\t\t\t\tthis.$route.meta?.setScrollPosition &&\n\t\t\t\ttypeof this.$route.meta.setScrollPosition === 'function'\n\t\t\t) {\n\t\t\t\tthis.$route.meta.setScrollPosition(contentArea.scrollTop);\n\t\t\t}\n\t\t}\n\n\t\tthis.trackSearch();\n\t\tnext();\n\t},\n\tasync mounted() {\n\t\tsetPageTitle('n8n - Templates');\n\t\tvoid this.loadCategories();\n\t\tvoid this.loadWorkflowsAndCollections(true);\n\t\tvoid this.usersStore.showPersonalizationSurvey();\n\n\t\tsetTimeout(() => {\n\t\t\t// Check if there is scroll position saved in route and scroll to it\n\t\t\tif (this.$route.meta && this.$route.meta.scrollOffset > 0) {\n\t\t\t\tthis.scrollTo(this.$route.meta.scrollOffset, 'auto');\n\t\t\t}\n\t\t}, 100);\n\t},\n\tasync created() {\n\t\tif (this.$route.query.search && typeof this.$route.query.search === 'string') {\n\t\t\tthis.search = this.$route.query.search;\n\t\t}\n\n\t\tif (typeof this.$route.query.categories === 'string' && this.$route.query.categories.length) {\n\t\t\tthis.categories = this.$route.query.categories\n\t\t\t\t.split(',')\n\t\t\t\t.map((categoryId) => parseInt(categoryId, 10));\n\t\t\tthis.areCategoriesPrepopulated = true;\n\t\t}\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.wrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.contentWrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tflex-direction: column;\n\t}\n}\n\n.filters {\n\twidth: 200px;\n\tmargin-bottom: var(--spacing-xl);\n\tmargin-right: var(--spacing-2xl);\n}\n\n.search {\n\twidth: 100%;\n\n\t> * {\n\t\tmargin-bottom: var(--spacing-l);\n\t}\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tpadding-left: 0;\n\t}\n}\n\n.header {\n\tmargin-bottom: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$4","defineComponent","genericHelpers","_component_n8n_card","_resolveComponent","_openBlock","_createBlock","_mergeProps","_ctx","_createSlots","_withCtx","_createVNode","_component_n8n_loading","_createElementVNode","_toDisplayString","_sfc_main$3","Card","NodeList","_component_Card","_component_n8n_text","_component_NodeList","_sfc_main$2","CollectionCard","VueAgile","width","scrollWidth","scrollLeft","event","id","sliderRef","_normalizeClass","_component_agile","_createElementBlock","_Fragment","_renderList","n","collection","_component_CollectionCard","_withDirectives","_cache","args","_component_font_awesome_icon","_sfc_main$1","categories","selected","selectedCategories","notSelectedCategories","value","selectedCategory","categoryId","_hoisted_1","_createCommentVNode","_component_el_checkbox","category","_sfc_main","debounceHelper","CollectionsCarousel","TemplateFilters","TemplateList","TemplatesView","useToast","CREATOR_HUB_URL","mapStores","useSettingsStore","useTemplatesStore","useUIStore","useUsersStore","usePostHog","VIEWS","page","route","search","query","initialLoad","position","behavior","contentArea","newWorkflows","to","from","next","_a","setPageTitle","_component_TemplatesView","_component_n8n_heading","_component_n8n_button","_component_TemplateFilters","_component_n8n_input","_createTextVNode","_component_CollectionsCarousel","_vShow","_component_TemplateList"],"mappings":"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"}
1
+ {"version":3,"file":"TemplatesSearchView-HA2xad9U.js","sources":["../../src/components/CollectionWorkflowCard.vue","../../src/components/CollectionCard.vue","../../src/components/CollectionsCarousel.vue","../../src/components/TemplateFilters.vue","../../src/views/TemplatesSearchView.vue"],"sourcesContent":["<template>\n\t<n8n-card :class=\"$style.card\" v-bind=\"$attrs\">\n\t\t<template #header v-if=\"!loading\">\n\t\t\t<span v-text=\"title\" :class=\"$style.title\" />\n\t\t</template>\n\t\t<n8n-loading :loading=\"loading\" :rows=\"3\" variant=\"p\" />\n\t\t<template #footer v-if=\"!loading\">\n\t\t\t<slot name=\"footer\" />\n\t\t</template>\n\t</n8n-card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\n\nexport default defineComponent({\n\tname: 'Card',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.card {\n\twidth: 240px !important;\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\">\n\t\t<template #footer>\n\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t{{ collection.workflows.length }}\n\t\t\t\t{{ $locale.baseText('templates.workflows') }}\n\t\t\t</n8n-text>\n\t\t\t<NodeList :nodes=\"collection.nodes\" :showMore=\"false\" />\n\t\t</template>\n\t</Card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport Card from '@/components/CollectionWorkflowCard.vue';\nimport NodeList from '@/components/NodeList.vue';\n\nexport default defineComponent({\n\tname: 'CollectionCard',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tcollection: {\n\t\t\ttype: Object,\n\t\t},\n\t},\n\tcomponents: {\n\t\tCard,\n\t\tNodeList,\n\t},\n});\n</script>\n\n<style lang=\"scss\" module></style>\n","<template>\n\t<div :class=\"$style.container\" v-show=\"loading || collections.length\">\n\t\t<agile\n\t\t\tref=\"slider\"\n\t\t\t:dots=\"false\"\n\t\t\t:navButtons=\"false\"\n\t\t\t:infinite=\"false\"\n\t\t\t:slides-to-show=\"4\"\n\t\t\t@after-change=\"updateCarouselScroll\"\n\t\t>\n\t\t\t<Card v-for=\"n in loading ? 4 : 0\" :key=\"`loading-${n}`\" :loading=\"loading\" />\n\t\t\t<CollectionCard\n\t\t\t\tv-for=\"collection in loading ? [] : collections\"\n\t\t\t\t:key=\"collection.id\"\n\t\t\t\t:collection=\"collection\"\n\t\t\t\t@click=\"(e) => onCardClick(e, collection.id)\"\n\t\t\t/>\n\t\t</agile>\n\t\t<button v-show=\"carouselScrollPosition > 0\" :class=\"$style.leftButton\" @click=\"scrollLeft\">\n\t\t\t<font-awesome-icon icon=\"chevron-left\" />\n\t\t</button>\n\t\t<button v-show=\"!scrollEnd\" :class=\"$style.rightButton\" @click=\"scrollRight\">\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 CollectionCard from '@/components/CollectionCard.vue';\nimport { VueAgile } from 'vue-agile';\n\nimport { genericHelpers } from '@/mixins/genericHelpers';\n\ntype SliderRef = InstanceType<typeof VueAgile>;\n\nexport default defineComponent({\n\tname: 'CollectionsCarousel',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tcollections: {\n\t\t\ttype: Array as PropType<ITemplatesCollection[]>,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t},\n\twatch: {\n\t\tcollections() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateCarouselScroll();\n\t\t\t}, 0);\n\t\t},\n\t\tloading() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateCarouselScroll();\n\t\t\t}, 0);\n\t\t},\n\t},\n\tcomponents: {\n\t\tCard,\n\t\tCollectionCard,\n\t\tagile: VueAgile,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcarouselScrollPosition: 0,\n\t\t\tcardWidth: 240,\n\t\t\tscrollEnd: false,\n\t\t\tlistElement: null as null | Element,\n\t\t};\n\t},\n\tmethods: {\n\t\tupdateCarouselScroll() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.carouselScrollPosition = Number(this.listElement.scrollLeft.toFixed());\n\n\t\t\t\tconst width = this.listElement.clientWidth;\n\t\t\t\tconst scrollWidth = this.listElement.scrollWidth;\n\t\t\t\tconst scrollLeft = this.carouselScrollPosition;\n\t\t\t\tthis.scrollEnd = scrollWidth - width <= scrollLeft + 7;\n\t\t\t}\n\t\t},\n\t\tonCardClick(event: MouseEvent, id: string) {\n\t\t\tthis.$emit('openCollection', { event, id });\n\t\t},\n\t\tscrollLeft() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.listElement.scrollBy({ left: -(this.cardWidth * 2), top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t},\n\t\tscrollRight() {\n\t\t\tif (this.listElement) {\n\t\t\t\tthis.listElement.scrollBy({ left: this.cardWidth * 2, top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tawait this.$nextTick();\n\t\tconst sliderRef = this.$refs.slider as SliderRef | undefined;\n\t\tif (!sliderRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.listElement = sliderRef.$el.querySelector('.agile__list');\n\t\tif (this.listElement) {\n\t\t\tthis.listElement.addEventListener('scroll', this.updateCarouselScroll);\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tconst sliderRef = this.$refs.slider as SliderRef | undefined;\n\t\tif (sliderRef) {\n\t\t\tsliderRef.destroy();\n\t\t}\n\n\t\twindow.removeEventListener('scroll', this.updateCarouselScroll);\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\tposition: relative;\n}\n\n.button {\n\twidth: 28px;\n\theight: 37px;\n\tposition: absolute;\n\ttop: 35%;\n\tborder-radius: var(--border-radius-large);\n\tborder: var(--border-base);\n\tbackground-color: #fbfcfe;\n\tcursor: pointer;\n\n\t&:after {\n\t\tcontent: '';\n\t\twidth: 40px;\n\t\theight: 140px;\n\t\ttop: -55px;\n\t\tposition: absolute;\n\t}\n\tsvg {\n\t\tcolor: var(--color-foreground-xdark);\n\t}\n}\n\n.leftButton {\n\tcomposes: button;\n\tleft: -30px;\n\n\t&:after {\n\t\tleft: 27px;\n\t\tbackground: linear-gradient(\n\t\t\t270deg,\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t50%\n\t\t\t),\n\t\t\thsla(\n\t\t\t\tvar(--color-background-light-h),\n\t\t\t\tvar(--color-background-light-s),\n\t\t\t\tvar(--color-background-light-l),\n\t\t\t\t100%\n\t\t\t)\n\t\t);\n\t}\n}\n\n.rightButton {\n\tcomposes: button;\n\tright: -30px;\n\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","<template>\n\t<div :class=\"$style.filters\" class=\"template-filters\">\n\t\t<div :class=\"$style.title\" v-text=\"$locale.baseText('templates.categoriesHeading')\" />\n\t\t<div v-if=\"loading\" :class=\"$style.list\">\n\t\t\t<n8n-loading :loading=\"loading\" :rows=\"expandLimit\" />\n\t\t</div>\n\t\t<ul v-if=\"!loading\" :class=\"$style.categories\">\n\t\t\t<li :class=\"$style.item\">\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:label=\"$locale.baseText('templates.allCategories')\"\n\t\t\t\t\t:modelValue=\"allSelected\"\n\t\t\t\t\t@update:modelValue=\"(value) => resetCategories(value)\"\n\t\t\t\t/>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\tv-for=\"category in collapsed ? sortedCategories.slice(0, expandLimit) : sortedCategories\"\n\t\t\t\t:key=\"category.id\"\n\t\t\t\t:class=\"$style.item\"\n\t\t\t>\n\t\t\t\t<el-checkbox\n\t\t\t\t\t:label=\"category.name\"\n\t\t\t\t\t:modelValue=\"isSelected(category.id)\"\n\t\t\t\t\t@update:modelValue=\"(value) => handleCheckboxChanged(value, category)\"\n\t\t\t\t/>\n\t\t\t</li>\n\t\t</ul>\n\t\t<div\n\t\t\t:class=\"$style.button\"\n\t\t\tv-if=\"sortedCategories.length > expandLimit && collapsed && !loading\"\n\t\t\t@click=\"collapseAction\"\n\t\t>\n\t\t\t<n8n-text size=\"small\" color=\"primary\">\n\t\t\t\t+ {{ `${sortedCategories.length - expandLimit} more` }}\n\t\t\t</n8n-text>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type { ITemplatesCategory } from '@/Interface';\n\nexport default defineComponent({\n\tname: 'TemplateFilters',\n\tmixins: [genericHelpers],\n\tprops: {\n\t\tsortOnPopulate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcategories: {\n\t\t\ttype: Array,\n\t\t},\n\t\texpandLimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 12,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Array,\n\t\t},\n\t},\n\twatch: {\n\t\tcategories: {\n\t\t\thandler(categories: ITemplatesCategory[]) {\n\t\t\t\tif (!this.sortOnPopulate) {\n\t\t\t\t\tthis.sortedCategories = categories;\n\t\t\t\t} else {\n\t\t\t\t\tconst selected = this.selected || [];\n\t\t\t\t\tconst selectedCategories = categories.filter(({ id }) => selected.includes(id));\n\t\t\t\t\tconst notSelectedCategories = categories.filter(({ id }) => !selected.includes(id));\n\t\t\t\t\tthis.sortedCategories = selectedCategories.concat(notSelectedCategories);\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcollapsed: true,\n\t\t\tsortedCategories: [] as ITemplatesCategory[],\n\t\t};\n\t},\n\tcomputed: {\n\t\tallSelected(): boolean {\n\t\t\treturn this.selected.length === 0;\n\t\t},\n\t},\n\tmethods: {\n\t\tcollapseAction() {\n\t\t\tthis.collapsed = false;\n\t\t},\n\t\thandleCheckboxChanged(value: boolean, selectedCategory: ITemplatesCategory) {\n\t\t\tthis.$emit(value ? 'select' : 'clear', selectedCategory.id);\n\t\t},\n\t\tisSelected(categoryId: string) {\n\t\t\treturn this.selected.includes(categoryId);\n\t\t},\n\t\tresetCategories() {\n\t\t\tthis.$emit('clearAll');\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.title {\n\tfont-size: var(--font-size-2xs);\n\tcolor: var(--color-text-base);\n}\n\n.categories {\n\tpadding-top: var(--spacing-xs);\n\tlist-style-type: none;\n}\n\n.item {\n\tmargin-top: var(--spacing-xs);\n\n\t&:nth-child(1) {\n\t\tmargin-top: 0;\n\t}\n}\n\n.button {\n\tpadding-top: var(--spacing-2xs);\n\tcursor: pointer;\n}\n</style>\n\n<style lang=\"scss\">\n.template-filters {\n\t.el-checkbox {\n\t\tdisplay: flex;\n\t\twhite-space: unset;\n\t}\n\n\t.el-checkbox__label {\n\t\ttop: -2px;\n\t\tposition: relative;\n\t\tfont-size: var(--font-size-xs);\n\t\tline-height: var(--font-line-height-loose);\n\t\tcolor: var(--color-text-dark);\n\t\tpadding-left: var(--spacing-2xs);\n\t}\n}\n</style>\n","<template>\n\t<TemplatesView>\n\t\t<template #header>\n\t\t\t<div :class=\"$style.wrapper\">\n\t\t\t\t<div :class=\"$style.title\">\n\t\t\t\t\t<n8n-heading tag=\"h1\" size=\"2xlarge\">\n\t\t\t\t\t\t{{ $locale.baseText('templates.heading') }}\n\t\t\t\t\t</n8n-heading>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.button\">\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\telement=\"a\"\n\t\t\t\t\t\t:href=\"creatorHubUrl\"\n\t\t\t\t\t\t:label=\"$locale.baseText('templates.shareWorkflow')\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div :class=\"$style.contentWrapper\">\n\t\t\t\t<div :class=\"$style.filters\">\n\t\t\t\t\t<TemplateFilters\n\t\t\t\t\t\t:categories=\"templatesStore.allCategories\"\n\t\t\t\t\t\t:sortOnPopulate=\"areCategoriesPrepopulated\"\n\t\t\t\t\t\t:loading=\"loadingCategories\"\n\t\t\t\t\t\t:selected=\"categories\"\n\t\t\t\t\t\t@clear=\"onCategoryUnselected\"\n\t\t\t\t\t\t@clearAll=\"onCategoriesCleared\"\n\t\t\t\t\t\t@select=\"onCategorySelected\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.search\">\n\t\t\t\t\t<n8n-input\n\t\t\t\t\t\t:modelValue=\"search\"\n\t\t\t\t\t\t:placeholder=\"$locale.baseText('templates.searchPlaceholder')\"\n\t\t\t\t\t\t@update:modelValue=\"onSearchInput\"\n\t\t\t\t\t\t@blur=\"trackSearch\"\n\t\t\t\t\t\tclearable\n\t\t\t\t\t>\n\t\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t\t<font-awesome-icon icon=\"search\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</n8n-input>\n\t\t\t\t\t<div :class=\"$style.carouselContainer\" v-show=\"collections.length || loadingCollections\">\n\t\t\t\t\t\t<div :class=\"$style.header\">\n\t\t\t\t\t\t\t<n8n-heading :bold=\"true\" size=\"medium\" color=\"text-light\">\n\t\t\t\t\t\t\t\t{{ $locale.baseText('templates.collections') }}\n\t\t\t\t\t\t\t\t<span v-if=\"!loadingCollections\" v-text=\"`(${collections.length})`\" />\n\t\t\t\t\t\t\t</n8n-heading>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<CollectionsCarousel\n\t\t\t\t\t\t\t:collections=\"collections\"\n\t\t\t\t\t\t\t:loading=\"loadingCollections\"\n\t\t\t\t\t\t\t@openCollection=\"onOpenCollection\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<TemplateList\n\t\t\t\t\t\t:infinite-scroll-enabled=\"true\"\n\t\t\t\t\t\t:loading=\"loadingWorkflows\"\n\t\t\t\t\t\t:total-workflows=\"totalWorkflows\"\n\t\t\t\t\t\t:workflows=\"workflows\"\n\t\t\t\t\t\t@loadMore=\"onLoadMore\"\n\t\t\t\t\t\t@openTemplate=\"onOpenTemplate\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div v-if=\"endOfSearchMessage\" :class=\"$style.endText\">\n\t\t\t\t\t\t<n8n-text size=\"medium\" color=\"text-base\">\n\t\t\t\t\t\t\t<span v-html=\"endOfSearchMessage\" />\n\t\t\t\t\t\t</n8n-text>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</TemplatesView>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport CollectionsCarousel from '@/components/CollectionsCarousel.vue';\nimport TemplateFilters from '@/components/TemplateFilters.vue';\nimport TemplateList from '@/components/TemplateList.vue';\nimport TemplatesView from '@/views/TemplatesView.vue';\n\nimport { genericHelpers } from '@/mixins/genericHelpers';\nimport type {\n\tITemplatesCollection,\n\tITemplatesWorkflow,\n\tITemplatesQuery,\n\tITemplatesCategory,\n} from '@/Interface';\nimport type { IDataObject } from 'n8n-workflow';\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport { CREATOR_HUB_URL, VIEWS } from '@/constants';\nimport { debounceHelper } from '@/mixins/debounce';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useTemplatesStore } from '@/stores/templates.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { usePostHog } from '@/stores/posthog.store';\n\ninterface ISearchEvent {\n\tsearch_string: string;\n\tworkflow_results_count: number;\n\tcollection_results_count: number;\n\tcategories_applied: ITemplatesCategory[];\n\twf_template_repo_session_id: string;\n}\n\nexport default defineComponent({\n\tname: 'TemplatesSearchView',\n\tmixins: [genericHelpers, debounceHelper],\n\tcomponents: {\n\t\tCollectionsCarousel,\n\t\tTemplateFilters,\n\t\tTemplateList,\n\t\tTemplatesView,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tareCategoriesPrepopulated: false,\n\t\t\tcategories: [] as number[],\n\t\t\tloading: true,\n\t\t\tloadingCategories: true,\n\t\t\tloadingCollections: true,\n\t\t\tloadingWorkflows: true,\n\t\t\tsearch: '',\n\t\t\tsearchEventToTrack: null as null | ISearchEvent,\n\t\t\terrorLoadingWorkflows: false,\n\t\t\tcreatorHubUrl: CREATOR_HUB_URL as string,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useSettingsStore, useTemplatesStore, useUIStore, useUsersStore, usePostHog),\n\t\ttotalWorkflows(): number {\n\t\t\treturn this.templatesStore.getSearchedWorkflowsTotal(this.query);\n\t\t},\n\t\tworkflows(): ITemplatesWorkflow[] {\n\t\t\treturn this.templatesStore.getSearchedWorkflows(this.query) || [];\n\t\t},\n\t\tcollections(): ITemplatesCollection[] {\n\t\t\treturn this.templatesStore.getSearchedCollections(this.query) || [];\n\t\t},\n\t\tendOfSearchMessage(): string | null {\n\t\t\tif (this.loadingWorkflows) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.loadingCollections &&\n\t\t\t\tthis.workflows.length === 0 &&\n\t\t\t\tthis.collections.length === 0\n\t\t\t) {\n\t\t\t\tif (!this.settingsStore.isTemplatesEndpointReachable && this.errorLoadingWorkflows) {\n\t\t\t\t\treturn this.$locale.baseText('templates.connectionWarning');\n\t\t\t\t}\n\t\t\t\treturn this.$locale.baseText('templates.noSearchResults');\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t\tquery(): ITemplatesQuery {\n\t\t\treturn {\n\t\t\t\tcategories: this.categories,\n\t\t\t\tsearch: this.search,\n\t\t\t};\n\t\t},\n\t\tnothingFound(): boolean {\n\t\t\treturn (\n\t\t\t\t!this.loadingWorkflows &&\n\t\t\t\t!this.loadingCollections &&\n\t\t\t\tthis.workflows.length === 0 &&\n\t\t\t\tthis.collections.length === 0\n\t\t\t);\n\t\t},\n\t},\n\tmethods: {\n\t\tonOpenCollection({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.COLLECTION, id);\n\t\t},\n\t\tonOpenTemplate({ event, id }: { event: MouseEvent; id: string }) {\n\t\t\tthis.navigateTo(event, VIEWS.TEMPLATE, id);\n\t\t},\n\t\tnavigateTo(e: MouseEvent, page: string, id: string) {\n\t\t\tif (e.metaKey || e.ctrlKey) {\n\t\t\t\tconst route = this.$router.resolve({ name: page, params: { id } });\n\t\t\t\twindow.open(route.href, '_blank');\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tvoid this.$router.push({ name: page, params: { id } });\n\t\t\t}\n\t\t},\n\t\tupdateSearch() {\n\t\t\tthis.updateQueryParam(this.search, this.categories.join(','));\n\t\t\tvoid this.loadWorkflowsAndCollections(false);\n\t\t},\n\t\tupdateSearchTracking(search: string, categories: number[]) {\n\t\t\tif (!search) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.searchEventToTrack && this.searchEventToTrack.search_string.length > search.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.searchEventToTrack = {\n\t\t\t\tsearch_string: search,\n\t\t\t\tworkflow_results_count: this.workflows.length,\n\t\t\t\tcollection_results_count: this.collections.length,\n\t\t\t\tcategories_applied: categories.map((categoryId) =>\n\t\t\t\t\tthis.templatesStore.getCategoryById(categoryId.toString()),\n\t\t\t\t) as ITemplatesCategory[],\n\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t};\n\t\t},\n\t\ttrackSearch() {\n\t\t\tif (this.searchEventToTrack) {\n\t\t\t\tthis.$telemetry.track(\n\t\t\t\t\t'User searched workflow templates',\n\t\t\t\t\tthis.searchEventToTrack as unknown as IDataObject,\n\t\t\t\t);\n\t\t\t\tthis.searchEventToTrack = null;\n\t\t\t}\n\t\t},\n\t\tonSearchInput(search: string) {\n\t\t\tthis.loadingWorkflows = true;\n\t\t\tthis.loadingCollections = true;\n\t\t\tthis.search = search;\n\t\t\tvoid this.callDebounced('updateSearch', { debounceTime: 500, trailing: true });\n\n\t\t\tif (search.length === 0) {\n\t\t\t\tthis.trackSearch();\n\t\t\t}\n\t\t},\n\t\tonCategorySelected(selected: number) {\n\t\t\tthis.categories = this.categories.concat(selected);\n\t\t\tthis.updateSearch();\n\t\t\tthis.trackCategories();\n\t\t},\n\t\tonCategoryUnselected(selected: number) {\n\t\t\tthis.categories = this.categories.filter((id) => id !== selected);\n\t\t\tthis.updateSearch();\n\t\t\tthis.trackCategories();\n\t\t},\n\t\tonCategoriesCleared() {\n\t\t\tthis.categories = [];\n\t\t\tthis.updateSearch();\n\t\t},\n\t\ttrackCategories() {\n\t\t\tif (this.categories.length) {\n\t\t\t\tthis.$telemetry.track('User changed template filters', {\n\t\t\t\t\tsearch_string: this.search,\n\t\t\t\t\tcategories_applied: this.categories.map((categoryId: number) =>\n\t\t\t\t\t\tthis.templatesStore.getCollectionById(categoryId.toString()),\n\t\t\t\t\t),\n\t\t\t\t\twf_template_repo_session_id: this.templatesStore.currentSessionId,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tupdateQueryParam(search: string, category: string) {\n\t\t\tconst query = Object.assign({}, this.$route.query);\n\n\t\t\tif (category.length) {\n\t\t\t\tquery.categories = category;\n\t\t\t} else {\n\t\t\t\tdelete query.categories;\n\t\t\t}\n\n\t\t\tif (search.length) {\n\t\t\t\tquery.search = search;\n\t\t\t} else {\n\t\t\t\tdelete query.search;\n\t\t\t}\n\n\t\t\tvoid this.$router.replace({ query });\n\t\t},\n\t\tasync onLoadMore() {\n\t\t\tif (this.workflows.length >= this.totalWorkflows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tthis.loadingWorkflows = true;\n\t\t\t\tawait this.templatesStore.getMoreWorkflows({\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tthis.showMessage({\n\t\t\t\t\ttitle: 'Error',\n\t\t\t\t\tmessage: 'Could not load more workflows',\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tthis.loadingWorkflows = false;\n\t\t\t}\n\t\t},\n\t\tasync loadCategories() {\n\t\t\ttry {\n\t\t\t\tawait this.templatesStore.getCategories();\n\t\t\t} catch (e) {}\n\t\t\tthis.loadingCategories = false;\n\t\t},\n\t\tasync loadCollections() {\n\t\t\ttry {\n\t\t\t\tthis.loadingCollections = true;\n\t\t\t\tawait this.templatesStore.getCollections({\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t});\n\t\t\t} catch (e) {}\n\n\t\t\tthis.loadingCollections = false;\n\t\t},\n\t\tasync loadWorkflows() {\n\t\t\ttry {\n\t\t\t\tthis.loadingWorkflows = true;\n\t\t\t\tawait this.templatesStore.getWorkflows({\n\t\t\t\t\tsearch: this.search,\n\t\t\t\t\tcategories: this.categories,\n\t\t\t\t});\n\t\t\t\tthis.errorLoadingWorkflows = false;\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorLoadingWorkflows = true;\n\t\t\t}\n\n\t\t\tthis.loadingWorkflows = false;\n\t\t},\n\t\tasync loadWorkflowsAndCollections(initialLoad: boolean) {\n\t\t\tconst search = this.search;\n\t\t\tconst categories = [...this.categories];\n\t\t\tawait Promise.all([this.loadWorkflows(), this.loadCollections()]);\n\t\t\tif (!initialLoad) {\n\t\t\t\tthis.updateSearchTracking(search, categories);\n\t\t\t}\n\t\t},\n\t\tscrollTo(position: number, behavior: ScrollBehavior = 'smooth') {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst contentArea = document.getElementById('content');\n\t\t\t\tif (contentArea) {\n\t\t\t\t\tcontentArea.scrollTo({\n\t\t\t\t\t\ttop: position,\n\t\t\t\t\t\tbehavior,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t},\n\t},\n\twatch: {\n\t\tworkflows(newWorkflows) {\n\t\t\tif (newWorkflows.length === 0) {\n\t\t\t\tthis.scrollTo(0);\n\t\t\t}\n\t\t},\n\t},\n\tbeforeRouteLeave(to, from, next) {\n\t\tconst contentArea = document.getElementById('content');\n\t\tif (contentArea) {\n\t\t\t// When leaving this page, store current scroll position in route data\n\t\t\tif (\n\t\t\t\tthis.$route.meta?.setScrollPosition &&\n\t\t\t\ttypeof this.$route.meta.setScrollPosition === 'function'\n\t\t\t) {\n\t\t\t\tthis.$route.meta.setScrollPosition(contentArea.scrollTop);\n\t\t\t}\n\t\t}\n\n\t\tthis.trackSearch();\n\t\tnext();\n\t},\n\tasync mounted() {\n\t\tsetPageTitle('n8n - Templates');\n\t\tvoid this.loadCategories();\n\t\tvoid this.loadWorkflowsAndCollections(true);\n\t\tvoid this.usersStore.showPersonalizationSurvey();\n\n\t\tsetTimeout(() => {\n\t\t\t// Check if there is scroll position saved in route and scroll to it\n\t\t\tif (this.$route.meta && this.$route.meta.scrollOffset > 0) {\n\t\t\t\tthis.scrollTo(this.$route.meta.scrollOffset, 'auto');\n\t\t\t}\n\t\t}, 100);\n\t},\n\tasync created() {\n\t\tif (this.$route.query.search && typeof this.$route.query.search === 'string') {\n\t\t\tthis.search = this.$route.query.search;\n\t\t}\n\n\t\tif (typeof this.$route.query.categories === 'string' && this.$route.query.categories.length) {\n\t\t\tthis.categories = this.$route.query.categories\n\t\t\t\t.split(',')\n\t\t\t\t.map((categoryId) => parseInt(categoryId, 10));\n\t\t\tthis.areCategoriesPrepopulated = true;\n\t\t}\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.wrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.contentWrapper {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tflex-direction: column;\n\t}\n}\n\n.filters {\n\twidth: 200px;\n\tmargin-bottom: var(--spacing-xl);\n\tmargin-right: var(--spacing-2xl);\n}\n\n.search {\n\twidth: 100%;\n\n\t> * {\n\t\tmargin-bottom: var(--spacing-l);\n\t}\n\n\t@media (max-width: $breakpoint-xs) {\n\t\tpadding-left: 0;\n\t}\n}\n\n.header {\n\tmargin-bottom: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$4","defineComponent","genericHelpers","_component_n8n_card","_resolveComponent","_openBlock","_createBlock","_mergeProps","_ctx","_createSlots","_withCtx","_createVNode","_component_n8n_loading","_createElementVNode","_toDisplayString","_sfc_main$3","Card","NodeList","_component_Card","_component_n8n_text","_component_NodeList","_sfc_main$2","CollectionCard","VueAgile","width","scrollWidth","scrollLeft","event","id","sliderRef","_normalizeClass","_component_agile","_createElementBlock","_Fragment","_renderList","n","collection","_component_CollectionCard","_withDirectives","_cache","args","_component_font_awesome_icon","_sfc_main$1","categories","selected","selectedCategories","notSelectedCategories","value","selectedCategory","categoryId","_hoisted_1","_createCommentVNode","_component_el_checkbox","category","_sfc_main","debounceHelper","CollectionsCarousel","TemplateFilters","TemplateList","TemplatesView","useToast","CREATOR_HUB_URL","mapStores","useSettingsStore","useTemplatesStore","useUIStore","useUsersStore","usePostHog","VIEWS","page","route","search","query","initialLoad","position","behavior","contentArea","newWorkflows","to","from","next","_a","setPageTitle","_component_TemplatesView","_component_n8n_heading","_component_n8n_button","_component_TemplateFilters","_component_n8n_input","_createTextVNode","_component_CollectionsCarousel","_vShow","_component_TemplateList"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{m as S}from"./pinia-IhuTtYiV.js";import{T as I}from"./TemplateDetails-neZvQLcE.js";import{T as F}from"./TemplatesView-cnvoEQpa.js";import{W as V}from"./WorkflowPreview-iIsIMKWU.js";import{w as W,a9 as B}from"./index-hMVAffQ3.js";import{av as C,B as p,f7 as T,_ as M}from"./n8n-NE7NqrvB.js";import{G as H,ag as o,l,M as s,a9 as A,O as r,p as n,Q as d,I as a,T as m,m as k,S as c,R as w}from"./vendor-2CfOYFi2.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";var h=(e=>(e.templateCredentialsSetup="template-credentials-setup",e))(h||{});const K=e=>{try{return!!localStorage.getItem(e)}catch{return!1}},L=e=>K(e),N=H({name:"TemplatesWorkflowView",mixins:[W],components:{TemplateDetails:I,TemplatesView:F,WorkflowPreview:V},computed:{...S(B,C),template(){return this.templatesStore.getTemplateById(this.templateId)},templateId(){return this.$route.params.id}},data(){return{loading:!0,showPreview:!0,notFoundError:!1}},methods:{openTemplateSetup(e,t){const u={source:"workflow",template_id:e,wf_template_repo_session_id:this.templatesStore.currentSessionId};if(this.$externalHooks().run("templatesWorkflowView.openWorkflow",u),this.$telemetry.track("User inserted workflow template",u,{withPostHog:!0}),L(h.templateCredentialsSetup))if(t.metaKey||t.ctrlKey){const i=this.$router.resolve({name:p.TEMPLATE_SETUP,params:{id:e}});window.open(i.href,"_blank");return}else this.$router.push({name:p.TEMPLATE_SETUP,params:{id:e}});else if(t.metaKey||t.ctrlKey){const i=this.$router.resolve({name:p.TEMPLATE_IMPORT,params:{id:e}});window.open(i.href,"_blank");return}else this.$router.push({name:p.TEMPLATE_IMPORT,params:{id:e}})},onHidePreview(){this.showPreview=!1},scrollToTop(){const e=document.getElementById("content");e&&e.scrollTo({top:0})}},watch:{template(e){e?T(`n8n - Template template: ${e.name}`):T("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}}),z="_wrapper_1c2lm_5",D="_notFound_1c2lm_10",O="_title_1c2lm_14",R="_button_1c2lm_18",U="_image_1c2lm_22",G="_content_1c2lm_33",Q="_markdown_1c2lm_44",j="_details_1c2lm_55",q={wrapper:z,notFound:D,title:O,button:R,image:U,content:G,markdown:Q,details:j};function J(e,t,u,i,Y,Z){const y=o("n8n-heading"),f=o("n8n-text"),g=o("n8n-loading"),_=o("n8n-button"),v=o("WorkflowPreview"),$=o("n8n-markdown"),b=o("TemplateDetails"),P=o("TemplatesView");return l(),s(P,{goBackEnabled:!0},A({header:r(()=>[e.notFoundError?(l(),k("div",{key:1,class:a(e.$style.notFound)},[m(f,{color:"text-base"},{default:r(()=>[c(w(e.$locale.baseText("templates.workflowsNotFound")),1)]),_:1})],2)):(l(),k("div",{key:0,class:a(e.$style.wrapper)},[n("div",{class:a(e.$style.title)},[e.template&&e.template.name?(l(),s(y,{key:0,tag:"h1",size:"2xlarge"},{default:r(()=>[c(w(e.template.name),1)]),_:1})):d("",!0),e.template&&e.template.name?(l(),s(f,{key:1,color:"text-base",size:"small"},{default:r(()=>[c(w(e.$locale.baseText("generic.workflow")),1)]),_:1})):d("",!0),m(g,{loading:!e.template||!e.template.name,rows:2,variant:"h1"},null,8,["loading"])],2),n("div",{class:a(e.$style.button)},[e.template?(l(),s(_,{key:0,"data-test-id":"use-template-button",label:e.$locale.baseText("template.buttons.useThisWorkflowButton"),size:"large",onClick:t[0]||(t[0]=E=>e.openTemplateSetup(e.template.id,E))},null,8,["label"])):d("",!0),m(g,{loading:!e.template,rows:1,variant:"button"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:r(()=>[n("div",{class:a(e.$style.image)},[e.showPreview?(l(),s(v,{key:0,loading:e.loading,workflow:e.template&&e.template.workflow,onClose:e.onHidePreview},null,8,["loading","workflow","onClose"])):d("",!0)],2),n("div",{class:a(e.$style.content)},[n("div",{class:a(e.$style.markdown)},[m($,{content:e.template&&e.template.description,images:e.template&&e.template.image,loading:e.loading},null,8,["content","images","loading"])],2),n("div",{class:a(e.$style.details)},[m(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 X={$style:q},Ce=M(N,[["render",J],["__cssModules",X]]);export{Ce as default};
2
- //# sourceMappingURL=TemplatesWorkflowView-D4Lnmnhg.js.map
1
+ import{m as S}from"./pinia-IhuTtYiV.js";import{T as I}from"./TemplateDetails-FXwRGgg3.js";import{T as F}from"./TemplatesView-cnvoEQpa.js";import{W as V}from"./WorkflowPreview-iIsIMKWU.js";import{w as W,a9 as B}from"./index-sMRiWGJS.js";import{av as C,B as p,f7 as T,_ as M}from"./n8n-NE7NqrvB.js";import{G as H,ag as o,l,M as s,a9 as A,O as r,p as n,Q as d,I as a,T as m,m as k,S as c,R as w}from"./vendor-2CfOYFi2.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./lodash-es-s_m9YyW7.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";var h=(e=>(e.templateCredentialsSetup="template-credentials-setup",e))(h||{});const K=e=>{try{return!!localStorage.getItem(e)}catch{return!1}},L=e=>K(e),N=H({name:"TemplatesWorkflowView",mixins:[W],components:{TemplateDetails:I,TemplatesView:F,WorkflowPreview:V},computed:{...S(B,C),template(){return this.templatesStore.getTemplateById(this.templateId)},templateId(){return this.$route.params.id}},data(){return{loading:!0,showPreview:!0,notFoundError:!1}},methods:{openTemplateSetup(e,t){const u={source:"workflow",template_id:e,wf_template_repo_session_id:this.templatesStore.currentSessionId};if(this.$externalHooks().run("templatesWorkflowView.openWorkflow",u),this.$telemetry.track("User inserted workflow template",u,{withPostHog:!0}),L(h.templateCredentialsSetup))if(t.metaKey||t.ctrlKey){const i=this.$router.resolve({name:p.TEMPLATE_SETUP,params:{id:e}});window.open(i.href,"_blank");return}else this.$router.push({name:p.TEMPLATE_SETUP,params:{id:e}});else if(t.metaKey||t.ctrlKey){const i=this.$router.resolve({name:p.TEMPLATE_IMPORT,params:{id:e}});window.open(i.href,"_blank");return}else this.$router.push({name:p.TEMPLATE_IMPORT,params:{id:e}})},onHidePreview(){this.showPreview=!1},scrollToTop(){const e=document.getElementById("content");e&&e.scrollTo({top:0})}},watch:{template(e){e?T(`n8n - Template template: ${e.name}`):T("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}}),z="_wrapper_1c2lm_5",D="_notFound_1c2lm_10",O="_title_1c2lm_14",R="_button_1c2lm_18",U="_image_1c2lm_22",G="_content_1c2lm_33",Q="_markdown_1c2lm_44",j="_details_1c2lm_55",q={wrapper:z,notFound:D,title:O,button:R,image:U,content:G,markdown:Q,details:j};function J(e,t,u,i,Y,Z){const y=o("n8n-heading"),f=o("n8n-text"),g=o("n8n-loading"),_=o("n8n-button"),v=o("WorkflowPreview"),$=o("n8n-markdown"),b=o("TemplateDetails"),P=o("TemplatesView");return l(),s(P,{goBackEnabled:!0},A({header:r(()=>[e.notFoundError?(l(),k("div",{key:1,class:a(e.$style.notFound)},[m(f,{color:"text-base"},{default:r(()=>[c(w(e.$locale.baseText("templates.workflowsNotFound")),1)]),_:1})],2)):(l(),k("div",{key:0,class:a(e.$style.wrapper)},[n("div",{class:a(e.$style.title)},[e.template&&e.template.name?(l(),s(y,{key:0,tag:"h1",size:"2xlarge"},{default:r(()=>[c(w(e.template.name),1)]),_:1})):d("",!0),e.template&&e.template.name?(l(),s(f,{key:1,color:"text-base",size:"small"},{default:r(()=>[c(w(e.$locale.baseText("generic.workflow")),1)]),_:1})):d("",!0),m(g,{loading:!e.template||!e.template.name,rows:2,variant:"h1"},null,8,["loading"])],2),n("div",{class:a(e.$style.button)},[e.template?(l(),s(_,{key:0,"data-test-id":"use-template-button",label:e.$locale.baseText("template.buttons.useThisWorkflowButton"),size:"large",onClick:t[0]||(t[0]=E=>e.openTemplateSetup(e.template.id,E))},null,8,["label"])):d("",!0),m(g,{loading:!e.template,rows:1,variant:"button"},null,8,["loading"])],2)],2))]),_:2},[e.notFoundError?void 0:{name:"content",fn:r(()=>[n("div",{class:a(e.$style.image)},[e.showPreview?(l(),s(v,{key:0,loading:e.loading,workflow:e.template&&e.template.workflow,onClose:e.onHidePreview},null,8,["loading","workflow","onClose"])):d("",!0)],2),n("div",{class:a(e.$style.content)},[n("div",{class:a(e.$style.markdown)},[m($,{content:e.template&&e.template.description,images:e.template&&e.template.image,loading:e.loading},null,8,["content","images","loading"])],2),n("div",{class:a(e.$style.details)},[m(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 X={$style:q},Ce=M(N,[["render",J],["__cssModules",X]]);export{Ce as default};
2
+ //# sourceMappingURL=TemplatesWorkflowView-KdHMuTUs.js.map