n8n-editor-ui 1.57.0 → 1.58.0

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 (97) hide show
  1. package/dist/assets/@n8n/{permissions-BdHAniXb.js → permissions-BxSXRD9U.js} +1 -0
  2. package/dist/assets/@vueuse/{core-C-N7SOS8.js → core-nU0-5GsD.js} +56 -54
  3. package/dist/assets/AnnotationTagsDropdown-Dt1nrqPR.js +116 -0
  4. package/dist/assets/{AuthView-CqcftqAH.js → AuthView-CjKOvdaN.js} +2 -2
  5. package/dist/assets/{CanvasControls-Besc3nk2.js → CanvasControls-D82rlmHw.js} +6 -6
  6. package/dist/assets/{ChangePasswordView-BK5O6qCb.js → ChangePasswordView-DdlvGoJN.js} +7 -7
  7. package/dist/assets/{CredentialsView-DEI5jVSq.js → CredentialsView-Dh5Dj2PW.js} +9 -9
  8. package/dist/assets/{ErrorView-Cb9Ev7Dj.js → ErrorView-Bcb1V9Fc.js} +6 -6
  9. package/dist/assets/{ExecutionsFilter-fBQ6lOU_.css → ExecutionsFilter-DTy4NQw_.css} +6 -6
  10. package/dist/assets/{ExecutionsFilter-Y7dLoQFk.js → ExecutionsFilter-U6t29YO2.js} +96 -51
  11. package/dist/assets/{ExecutionsView-DcUlsJSr.js → ExecutionsView-DNk2-yfM.js} +9 -9
  12. package/dist/assets/{FixedCollectionParameter-DMEv9len.js → FixedCollectionParameter-C5fcLnIV.js} +6 -6
  13. package/dist/assets/{ForgotMyPasswordView-CrINAbmV.js → ForgotMyPasswordView-DvQ3WKNf.js} +7 -7
  14. package/dist/assets/{MainHeader-CHYc_PZ4.css → MainHeader-46C-nkS_.css} +35 -34
  15. package/dist/assets/{MainHeader-CnFMyNl3.js → MainHeader-OSniZ7Px.js} +364 -223
  16. package/dist/assets/{MainSidebar-DnSIEh1g.js → MainSidebar-BwsR-N4F.js} +394 -429
  17. package/dist/assets/{NodeCreation-B-ZsOH-L.js → NodeCreation-BeUV0F95.js} +10 -8
  18. package/dist/assets/{NodeCreator-DDYJt0Ze.js → NodeCreator-CCRzDZKt.js} +21 -17
  19. package/dist/assets/{NodeViewSwitcher-BnlgGD0J.css → NodeViewSwitcher-CCKZWp3-.css} +405 -325
  20. package/dist/assets/{NodeViewSwitcher-D6nuSKAB.js → NodeViewSwitcher-CVnkUMmu.js} +4234 -2009
  21. package/dist/assets/{ProjectCardBadge-CFNf-mDJ.js → ProjectCardBadge-BrGkbJIM.js} +3 -3
  22. package/dist/assets/{ProjectSettings-ML67RJOi.js → ProjectSettings-BYfFaMTy.js} +7 -7
  23. package/dist/assets/{ProjectTabs-Cknn_GgB.js → ProjectTabs-BIa4e3BJ.js} +2 -2
  24. package/dist/assets/{PushConnectionTracker-CWhTRNCw.js → PushConnectionTracker-yY5K4aH_.js} +2 -2
  25. package/dist/assets/{ResourcesListLayout-eqk9xNhc.js → ResourcesListLayout-ZXAENIfd.js} +2 -2
  26. package/dist/assets/{RunDataAi-B3Q65dEL.js → RunDataAi-BIySmKIQ.js} +6 -6
  27. package/dist/assets/{RunDataJson-C-dseNta.js → RunDataJson-Z08wE1iY.js} +9 -9
  28. package/dist/assets/{RunDataJsonActions-KBZ7hfZN.js → RunDataJsonActions-BSb14GOW.js} +7 -7
  29. package/dist/assets/{RunDataSearch-tlq4S7N-.js → RunDataSearch-MZfTmlLO.js} +6 -6
  30. package/dist/assets/{RunDataTable-D-c1L5v9.js → RunDataTable-DNWBiqiX.js} +6 -6
  31. package/dist/assets/{SamlOnboarding-DHXokg4W.js → SamlOnboarding-SxgwxDA9.js} +7 -7
  32. package/dist/assets/{SettingsApiView-hxxnxNIb.js → SettingsApiView-B_bJYJyE.js} +6 -6
  33. package/dist/assets/{SettingsCommunityNodesView-DjmPzymy.js → SettingsCommunityNodesView-azftQZzT.js} +8 -8
  34. package/dist/assets/{SettingsExternalSecrets-Cw-mURA4.js → SettingsExternalSecrets-B_LAI-FY.js} +6 -6
  35. package/dist/assets/{SettingsFakeDoorView-Coj99HjT.js → SettingsFakeDoorView-F6EkOY9p.js} +6 -6
  36. package/dist/assets/{SettingsLdapView-C5vB_u72.js → SettingsLdapView-NJDXkidp.js} +7 -7
  37. package/dist/assets/{SettingsLogStreamingView-BaWNNhIO.js → SettingsLogStreamingView-B7pKyM0w.js} +6 -6
  38. package/dist/assets/{SettingsPersonalView-F5OtxFhW.js → SettingsPersonalView-B2OWUUAG.js} +6 -6
  39. package/dist/assets/{SettingsSourceControl-CJ5r15dK.js → SettingsSourceControl-tB1kXcRW.js} +6 -6
  40. package/dist/assets/{SettingsSso-BrfSzt16.js → SettingsSso-jMpGNe64.js} +18 -9
  41. package/dist/assets/{SettingsUsageAndPlan-Gqra3R0E.js → SettingsUsageAndPlan-DznKS9QF.js} +116 -8
  42. package/dist/assets/{SettingsUsersView-BibKm0uw.js → SettingsUsersView-C20UIl96.js} +23 -7
  43. package/dist/assets/{SettingsView-_a_GTA-g.js → SettingsView-CpZAuZxm.js} +7 -7
  44. package/dist/assets/{SetupView-B8mzwREj.js → SetupView-BvREbLrU.js} +7 -7
  45. package/dist/assets/{SetupWorkflowCredentialsButton-C2wXpCdh.js → SetupWorkflowCredentialsButton-BIbN4cJ6.js} +6 -6
  46. package/dist/assets/{SetupWorkflowFromTemplateView-D6O8INhE.js → SetupWorkflowFromTemplateView-C357Y9Vi.js} +8 -8
  47. package/dist/assets/{SigninView-DKkeDUtH.js → SigninView-CeJ43ND1.js} +7 -7
  48. package/dist/assets/{SignoutView-BjQlWgFQ.js → SignoutView-D3sjsQEx.js} +6 -6
  49. package/dist/assets/{SignupView-O9mgfKQh.js → SignupView-CzCkWH6M.js} +7 -7
  50. package/dist/assets/{TemplateDetails-rbYl7ZHO.js → TemplateDetails-Bj7Itggv.js} +2 -2
  51. package/dist/assets/{TemplateList-4qO5UWYI.js → TemplateList-C58hSpuD.js} +2 -2
  52. package/dist/assets/{TemplatesCollectionView-CxLg3AfW.js → TemplatesCollectionView-DonGS3Xi.js} +10 -10
  53. package/dist/assets/{TemplatesSearchView-C7iabuV8.js → TemplatesSearchView-CY5IEdoI.js} +9 -9
  54. package/dist/assets/{TemplatesView-C_ljCT59.js → TemplatesView-BDxDOXvA.js} +2 -2
  55. package/dist/assets/{TemplatesWorkflowView-j-AraUuj.js → TemplatesWorkflowView-RqvxOv6Y.js} +10 -10
  56. package/dist/assets/{VariablesView-CS5qD4nw.js → VariablesView-CWgQQ11v.js} +7 -7
  57. package/dist/assets/{WorkerView-Adh7mkGw.js → WorkerView-CuZ31KTm.js} +9 -9
  58. package/dist/assets/{WorkflowActivator-BSG90j8i.js → WorkflowActivator-QJQEAlol.js} +3 -3
  59. package/dist/assets/{WorkflowExecutionsInfoAccordion-z-P6winD.js → WorkflowExecutionsInfoAccordion-D1GINK_-.js} +2 -2
  60. package/dist/assets/{WorkflowExecutionsLandingPage-BywskSzl.js → WorkflowExecutionsLandingPage-CdHZrGCm.js} +15 -9
  61. package/dist/assets/{WorkflowExecutionsPreview-Bw3RnbrX.js → WorkflowExecutionsPreview-D2bonH2m.js} +347 -15
  62. package/dist/assets/WorkflowExecutionsPreview-DRCpGEbi.css +247 -0
  63. package/dist/assets/{WorkflowExecutionsView-KGfJTF01.js → WorkflowExecutionsView-B5qZFRE6.js} +187 -139
  64. package/dist/assets/{WorkflowExecutionsView-Jm7Pw4v1.css → WorkflowExecutionsView-DqAlwS1H.css} +47 -27
  65. package/dist/assets/{WorkflowHistory-TdbKbeFT.js → WorkflowHistory-iT3c2Dba.js} +8 -8
  66. package/dist/assets/{WorkflowOnboardingView-C5BrBTek.js → WorkflowOnboardingView-ByE-C4RB.js} +6 -6
  67. package/dist/assets/{WorkflowPreview-DjH7tXfj.js → WorkflowPreview-7drYWvjZ.js} +2 -2
  68. package/dist/assets/{WorkflowsView-CqmiCNtd.js → WorkflowsView-CnUNgqQS.js} +14 -14
  69. package/dist/assets/{cloud-DVcstsW2.js → cloud-hv-DrYaS.js} +6 -6
  70. package/dist/assets/collaboration.store-C3-IWwmH.js +65 -0
  71. package/dist/assets/{dateFormatter--Jm_2fEm.js → dateFormatter-Bqx7mo81.js} +1 -1
  72. package/dist/assets/{dateformat-U_ybGERk.js → dateformat-AR6dqtgF.js} +1 -1
  73. package/dist/assets/email-providers-DDLsbDn7.js +1 -0
  74. package/dist/assets/{fast-json-stable-stringify-DFVeKQSP.js → fast-json-stable-stringify-Bv7WnfR3.js} +1 -1
  75. package/dist/assets/{file-saver-Kt7b8Ak0.js → file-saver-DIrhuITr.js} +1 -1
  76. package/dist/assets/{humanize-duration-CgUlcJVm.js → humanize-duration-C7g7MDB7.js} +1 -1
  77. package/dist/assets/{index-1JP5ktFc.css → index-Bqkr-RRJ.css} +278 -113
  78. package/dist/assets/{index-BMqv_cxE.js → index-CuuON5-N.js} +4120 -6024
  79. package/dist/assets/{jsonpath-DlnJGFD7.js → jsonpath-BerKkpZA.js} +1 -1
  80. package/dist/assets/{n8n-NifPGZSM.js → n8n-Bsq9j3nN.js} +131 -94
  81. package/dist/assets/{n8n-OU8f1_-B.css → n8n-CTcX1GX6.css} +5 -3
  82. package/dist/assets/{pushConnection.store-BQ8wQOWv.js → pushConnection.store-BNUIa0bj.js} +1 -1
  83. package/dist/assets/{templateActions-CY6KLH9V.js → templateActions-ZLUx027Z.js} +1 -1
  84. package/dist/assets/{useExecutionDebugging-CjiDOv4V.js → useExecutionDebugging-Bs3Idq-K.js} +1 -1
  85. package/dist/assets/{usePushConnection-DmqdJ4p5.js → usePushConnection-DLShU-B9.js} +3 -3
  86. package/dist/assets/{useUserHelpers-Bhb_a-iT.js → useUserHelpers-y36h7KVV.js} +1 -1
  87. package/dist/assets/{useWorkflowActivate-BpRa7BDT.js → useWorkflowActivate-BGn1xTwP.js} +1 -1
  88. package/dist/assets/{vue-agile-Cf_Be-_o.js → vue-agile-B94Z2oxM.js} +1 -1
  89. package/dist/assets/{vue-json-pretty-CUUthm-2.js → vue-json-pretty-BZDb_0OP.js} +1 -1
  90. package/dist/assets/xss-DDLsbDn7.js +1 -0
  91. package/dist/index.html +8 -8
  92. package/package.json +1 -1
  93. package/dist/assets/WorkflowExecutionsPreview-DlcWqXFI.css +0 -79
  94. package/dist/assets/common-DCQSo5lV.js +0 -365
  95. package/dist/assets/email-providers-Cebboc1h.js +0 -1
  96. package/dist/assets/useExecutionHelpers-6mVnBCgd.js +0 -59
  97. package/dist/assets/xss-Cebboc1h.js +0 -1
@@ -1,19 +1,20 @@
1
- import { I as defineComponent, f as computed, J as openBlock, K as createElementBlock, Z as renderSlot, aB as pushScopeId, aC as popScopeId, an as resolveComponent, V as createBlock, $ as normalizeStyle, a3 as withCtx, L as createBaseVNode, R as Fragment, af as renderList, _ as normalizeClass, a6 as createTextVNode, a7 as toDisplayString, a8 as createVNode, a as ref, q as onMounted, m as onBeforeUnmount, ag as withKeys, b as watch, ac as withModifiers, n as nextTick, aM as useRouter, aE as useRoute, u as unref, U as createCommentVNode, aA as useCssModule, l as onBeforeMount, a4 as withDirectives, a9 as vShow } from "./vendor-tVazXwC6.js";
2
- import { s as shorten, c as useTagsStore, d as useDebounce, e as useUIStore, B as BREAKPOINT_SM, f as BREAKPOINT_XL, g as BREAKPOINT_LG, h as BREAKPOINT_MD, i as getBannerRowHeight, j as useRootStore, k as useCanvasStore, b as useSettingsStore, l as useSourceControlStore, a as useUsersStore, m as useWorkflowsStore, n as useProjectsStore, o as useNpsSurveyStore, u as useToast, p as useWorkflowHelpers, P as PLACEHOLDER_EMPTY_WORKFLOW_ID, V as VIEWS, q as getResourcePermissions, W as WORKFLOW_MENU_ACTIONS, r as hasPermission, E as EnterpriseEditionFeature, t as MAX_WORKFLOW_NAME_LENGTH, T as TagsDropdown, S as SaveButton, v as useI18n, w as useTelemetry, x as useMessage, y as useTitleChange, z as WORKFLOW_SHARE_MODAL_KEY, A as nodeViewEventBus, C as MODAL_CONFIRM, D as MODAL_CLOSE, F as WORKFLOW_SETTINGS_MODAL_KEY, G as SOURCE_CONTROL_PUSH_MODAL_KEY, H as VALID_WORKFLOW_IMPORT_URL_REGEX, I as DUPLICATE_MODAL_KEY, J as MAIN_HEADER_TABS, K as useNDVStore, L as useExecutionsStore, N as STICKY_NODE_TYPE } from "./index-BMqv_cxE.js";
3
- import { f as createEventBus, _ as _export_sfc } from "./n8n-NifPGZSM.js";
4
- import { m as mapStores } from "./pinia-DvV9jJ-A.js";
1
+ import { I as defineComponent, f as computed, J as openBlock, K as createElementBlock, Z as renderSlot, a as ref, q as onMounted, m as onBeforeUnmount, an as resolveComponent, V as createBlock, a3 as withCtx, L as createBaseVNode, af as renderList, _ as normalizeClass, a6 as createTextVNode, a7 as toDisplayString, u as unref, a8 as createVNode, R as Fragment, $ as normalizeStyle, aB as pushScopeId, aC as popScopeId, n as nextTick, ag as withKeys, b as watch, ac as withModifiers, aM as useRouter, aE as useRoute, aA as useCssModule, U as createCommentVNode, l as onBeforeMount, a4 as withDirectives, a9 as vShow } from "./vendor-tVazXwC6.js";
2
+ import { s as shorten, c as useTagsStore, d as useDebounce, e as useUIStore, B as BREAKPOINT_SM, f as BREAKPOINT_XL, g as BREAKPOINT_LG, h as BREAKPOINT_MD, i as getBannerRowHeight, V as VIEWS, j as useI18n, a as useUsersStore, k as useWorkflowsStore, l as isUserGlobalOwner, T as TIME, m as useRootStore, n as useCanvasStore, b as useSettingsStore, o as useSourceControlStore, p as useProjectsStore, q as useNpsSurveyStore, u as useToast, r as useWorkflowHelpers, P as PLACEHOLDER_EMPTY_WORKFLOW_ID, t as getResourcePermissions, W as WORKFLOW_MENU_ACTIONS, v as hasPermission, E as EnterpriseEditionFeature, w as MAX_WORKFLOW_NAME_LENGTH, _ as _sfc_main$f, S as SaveButton, x as useTelemetry, y as useMessage, z as useTitleChange, A as WORKFLOW_SHARE_MODAL_KEY, C as nodeViewEventBus, D as MODAL_CONFIRM, F as MODAL_CLOSE, G as WORKFLOW_SETTINGS_MODAL_KEY, H as SOURCE_CONTROL_PUSH_MODAL_KEY, I as VALID_WORKFLOW_IMPORT_URL_REGEX, J as DUPLICATE_MODAL_KEY, K as MAIN_HEADER_TABS, L as useNDVStore, N as useExecutionsStore, O as STICKY_NODE_TYPE } from "./index-CuuON5-N.js";
3
+ import { f as createEventBus, _ as _export_sfc } from "./n8n-Bsq9j3nN.js";
5
4
  import { d as debounce } from "./lodash-es-kRWQHL5K.js";
6
- import { _ as __unplugin_components_0$1 } from "./PushConnectionTracker-CWhTRNCw.js";
7
- import { W as WorkflowActivator } from "./WorkflowActivator-BSG90j8i.js";
8
- import { o as onClickOutside, a6 as useLocalStorage } from "./@vueuse/core-C-N7SOS8.js";
9
- import { F as FileSaver_minExports } from "./file-saver-Kt7b8Ak0.js";
10
- import { u as usePushConnection } from "./usePushConnection-DmqdJ4p5.js";
5
+ import { _ as __unplugin_components_0 } from "./PushConnectionTracker-yY5K4aH_.js";
6
+ import { W as WorkflowActivator } from "./WorkflowActivator-QJQEAlol.js";
7
+ import { o as onClickOutside, d as useLocalStorage } from "./@vueuse/core-nU0-5GsD.js";
8
+ import { u as useCollaborationStore } from "./collaboration.store-C3-IWwmH.js";
9
+ import { F as FileSaver_minExports } from "./file-saver-DIrhuITr.js";
10
+ import { u as usePushConnection } from "./usePushConnection-DLShU-B9.js";
11
11
  import "./axios-B4zXCSve.js";
12
12
  import "./flatted-D70IerrI.js";
13
+ import "./pinia-DvV9jJ-A.js";
13
14
  import "./bowser-C3wWO1p5.js";
14
- import "./@n8n/permissions-BdHAniXb.js";
15
+ import "./@n8n/permissions-BxSXRD9U.js";
15
16
  import "./uuid-sKupIUZ4.js";
16
- import "./dateformat-U_ybGERk.js";
17
+ import "./dateformat-AR6dqtgF.js";
17
18
  import "./vue-i18n-DNQ-lWfW.js";
18
19
  import "./luxon-Bt_g4NOb.js";
19
20
  import "./@n8n/codemirror-lang-CIGGB1t0.js";
@@ -27,17 +28,17 @@ import "./@jsplumb/connector-bezier-D659hq4c.js";
27
28
  import "./@jsplumb/browser-ui-BphmFVJY.js";
28
29
  import "./codemirror-lang-html-n8n-CXTCIWzP.js";
29
30
  import "./esprima-next-DUEu30kB.js";
30
- import "./fast-json-stable-stringify-DFVeKQSP.js";
31
+ import "./fast-json-stable-stringify-Bv7WnfR3.js";
31
32
  import "./timeago.js-CgQus8nl.js";
32
33
  import "./qrcode.vue-Di8rc46A.js";
33
34
  import "./vue3-touch-events-DVOgU3fI.js";
34
35
  import "./chart.js-DiBOFLDH.js";
35
- import "./useWorkflowActivate-BpRa7BDT.js";
36
- import "./pushConnection.store-BQ8wQOWv.js";
37
- const _hoisted_1$9 = ["title", "data-test-id"];
36
+ import "./useWorkflowActivate-BGn1xTwP.js";
37
+ import "./pushConnection.store-BNUIa0bj.js";
38
+ const _hoisted_1$a = ["title", "data-test-id"];
38
39
  const DEFAULT_WORKFLOW_NAME_LIMIT = 25;
39
40
  const WORKFLOW_NAME_END_COUNT_TO_KEEP = 4;
40
- const _sfc_main$b = /* @__PURE__ */ defineComponent({
41
+ const _sfc_main$e = /* @__PURE__ */ defineComponent({
41
42
  __name: "ShortenName",
42
43
  props: {
43
44
  name: {},
@@ -55,11 +56,11 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
55
56
  "data-test-id": _ctx.testId
56
57
  }, [
57
58
  renderSlot(_ctx.$slots, "default", { shortenedName: shortenedName.value })
58
- ], 8, _hoisted_1$9);
59
+ ], 8, _hoisted_1$a);
59
60
  };
60
61
  }
61
62
  });
62
- const _sfc_main$a = defineComponent({
63
+ const _sfc_main$d = defineComponent({
63
64
  name: "IntersectionObserver",
64
65
  props: {
65
66
  threshold: {
@@ -113,14 +114,14 @@ const _sfc_main$a = defineComponent({
113
114
  }
114
115
  }
115
116
  });
116
- const _hoisted_1$8 = { ref: "root" };
117
- function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
118
- return openBlock(), createElementBlock("div", _hoisted_1$8, [
117
+ const _hoisted_1$9 = { ref: "root" };
118
+ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
119
+ return openBlock(), createElementBlock("div", _hoisted_1$9, [
119
120
  renderSlot(_ctx.$slots, "default")
120
121
  ], 512);
121
122
  }
122
- const __unplugin_components_1 = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$2]]);
123
- const _sfc_main$9 = defineComponent({
123
+ const IntersectionObserver$1 = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$1]]);
124
+ const _sfc_main$c = defineComponent({
124
125
  name: "IntersectionObserved",
125
126
  props: {
126
127
  enabled: {
@@ -145,68 +146,57 @@ const _sfc_main$9 = defineComponent({
145
146
  }
146
147
  }
147
148
  });
148
- const _hoisted_1$7 = { ref: "observed" };
149
- function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
150
- return openBlock(), createElementBlock("span", _hoisted_1$7, [
149
+ const _hoisted_1$8 = { ref: "observed" };
150
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
151
+ return openBlock(), createElementBlock("span", _hoisted_1$8, [
151
152
  renderSlot(_ctx.$slots, "default")
152
153
  ], 512);
153
154
  }
154
- const __unplugin_components_0 = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$1]]);
155
- const DEFAULT_MAX_TAGS_LIMIT = 20;
156
- const _sfc_main$8 = defineComponent({
157
- name: "TagsContainer",
158
- components: { IntersectionObserver: __unplugin_components_1, IntersectionObserved: __unplugin_components_0 },
155
+ const IntersectionObserved = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render]]);
156
+ const _withScopeId$4 = (n) => (pushScopeId("data-v-8b1055e0"), n = n(), popScopeId(), n);
157
+ const _hoisted_1$7 = { class: "tags" };
158
+ const _hoisted_2$2 = ["onClick"];
159
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
160
+ __name: "TagsContainer",
159
161
  props: {
160
- tagIds: {
161
- type: Array,
162
- required: true
163
- },
164
- limit: {
165
- type: Number,
166
- default: DEFAULT_MAX_TAGS_LIMIT
167
- },
168
- clickable: Boolean,
169
- responsive: Boolean,
170
- hoverable: Boolean
171
- },
172
- emits: {
173
- click: null
174
- },
175
- data() {
176
- return {
177
- maxWidth: 320,
178
- intersectionEventBus: createEventBus(),
179
- visibility: {},
180
- debouncedSetMaxWidth: () => {
181
- }
182
- };
162
+ tagIds: {},
163
+ tagsById: {},
164
+ limit: { default: 20 },
165
+ clickable: { type: Boolean, default: false },
166
+ responsive: { type: Boolean, default: false },
167
+ hoverable: { type: Boolean, default: false }
183
168
  },
184
- computed: {
185
- ...mapStores(useTagsStore),
186
- style() {
187
- return {
188
- "max-width": `${this.maxWidth}px`
189
- };
190
- },
191
- tags() {
192
- const tags = this.tagIds.map((tagId) => this.tagsStore.tagsById[tagId]).filter(Boolean);
193
- let toDisplay = this.limit ? tags.slice(0, this.limit) : tags;
169
+ emits: ["click"],
170
+ setup(__props, { emit: __emit }) {
171
+ const props = __props;
172
+ const emit = __emit;
173
+ const maxWidth = ref(320);
174
+ const intersectionEventBus = createEventBus();
175
+ const visibility = ref({});
176
+ const tagsContainer = ref();
177
+ const style = computed(() => ({
178
+ "max-width": `${maxWidth.value}px`
179
+ }));
180
+ const tags = computed(() => {
181
+ const allTags = props.tagIds.map((tagId) => props.tagsById[tagId]).filter(Boolean);
182
+ let toDisplay = props.limit ? allTags.slice(0, props.limit) : allTags;
194
183
  toDisplay = toDisplay.map((tag) => ({
195
184
  ...tag,
196
- hidden: this.responsive && !this.visibility[tag.id]
185
+ hidden: props.responsive && !visibility.value[tag.id]
197
186
  }));
198
187
  let visibleCount = toDisplay.length;
199
- if (this.responsive) {
200
- visibleCount = Object.values(this.visibility).reduce(
188
+ if (props.responsive) {
189
+ visibleCount = Object.values(visibility.value).reduce(
201
190
  (accu, val) => val ? accu + 1 : accu,
202
191
  0
203
192
  );
204
193
  }
205
- if (visibleCount < tags.length) {
206
- const hidden = tags.slice(visibleCount);
207
- const hiddenTitle = hidden.reduce((accu, tag) => {
208
- return accu ? `${accu}, ${tag.name}` : tag.name;
209
- }, "");
194
+ if (visibleCount < allTags.length) {
195
+ const hidden = allTags.slice(visibleCount);
196
+ const hiddenTitle = hidden.reduce(
197
+ (accu, tag) => accu ? `${accu}, ${tag.name}` : tag.name,
198
+ ""
199
+ );
210
200
  const countTag = {
211
201
  id: "count",
212
202
  name: `+${hidden.length}`,
@@ -216,115 +206,137 @@ const _sfc_main$8 = defineComponent({
216
206
  toDisplay.splice(visibleCount, 0, countTag);
217
207
  }
218
208
  return toDisplay;
219
- }
220
- },
221
- created() {
222
- this.debouncedSetMaxWidth = debounce(this.setMaxWidth, 100);
223
- },
224
- mounted() {
225
- this.setMaxWidth();
226
- window.addEventListener("resize", this.debouncedSetMaxWidth);
227
- },
228
- beforeUnmount() {
229
- window.removeEventListener("resize", this.debouncedSetMaxWidth);
230
- },
231
- methods: {
232
- setMaxWidth() {
233
- const containerEl = this.$refs.tagsContainer;
234
- const container2 = containerEl.$el;
235
- const parent = container2.parentNode;
209
+ });
210
+ const setMaxWidth = () => {
211
+ var _a;
212
+ const container2 = (_a = tagsContainer.value) == null ? void 0 : _a.$el;
213
+ const parent = container2 == null ? void 0 : container2.parentNode;
236
214
  if (parent) {
237
- this.maxWidth = 0;
238
- void this.$nextTick(() => {
239
- this.maxWidth = parent.clientWidth;
215
+ maxWidth.value = 0;
216
+ void nextTick(() => {
217
+ maxWidth.value = parent.clientWidth;
240
218
  });
241
219
  }
242
- },
243
- onObserved({ el, isIntersecting }) {
220
+ };
221
+ const debouncedSetMaxWidth = debounce(setMaxWidth, 100);
222
+ const onObserved = ({ el, isIntersecting }) => {
244
223
  if (el.dataset.id) {
245
- this.visibility = { ...this.visibility, [el.dataset.id]: isIntersecting };
224
+ visibility.value = { ...visibility.value, [el.dataset.id]: isIntersecting };
246
225
  }
247
- },
248
- onClick(e, tag) {
249
- if (this.clickable) {
226
+ };
227
+ const onClick = (e, tag) => {
228
+ if (props.clickable) {
250
229
  e.stopPropagation();
251
230
  }
252
231
  if (!tag.hidden) {
253
- this.$emit("click", tag.id);
232
+ emit("click", tag.id);
254
233
  }
255
- }
256
- }
257
- });
258
- const _withScopeId$4 = (n) => (pushScopeId("data-v-708f5aea"), n = n(), popScopeId(), n);
259
- const _hoisted_1$6 = { class: "tags" };
260
- const _hoisted_2$1 = ["onClick"];
261
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
262
- const _component_el_tag = resolveComponent("el-tag");
263
- const _component_IntersectionObserved = __unplugin_components_0;
264
- const _component_IntersectionObserver = __unplugin_components_1;
265
- return openBlock(), createBlock(_component_IntersectionObserver, {
266
- ref: "tagsContainer",
267
- threshold: 1,
268
- class: "tags-container",
269
- style: normalizeStyle(_ctx.style),
270
- enabled: _ctx.responsive,
271
- "event-bus": _ctx.intersectionEventBus,
272
- onObserved: _ctx.onObserved
273
- }, {
274
- default: withCtx(() => [
275
- createBaseVNode("span", _hoisted_1$6, [
276
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.tags, (tag) => {
277
- return openBlock(), createElementBlock("span", {
278
- key: tag.id,
279
- class: normalizeClass({ clickable: !tag.hidden }),
280
- onClick: (e) => _ctx.onClick(e, tag)
281
- }, [
282
- tag.isCount ? (openBlock(), createBlock(_component_el_tag, {
283
- key: 0,
284
- title: tag.title,
285
- type: "info",
286
- size: "small",
287
- class: "count-container",
288
- "disable-transitions": true
289
- }, {
290
- default: withCtx(() => [
291
- createTextVNode(toDisplayString(tag.name), 1)
292
- ]),
293
- _: 2
294
- }, 1032, ["title"])) : (openBlock(), createBlock(_component_IntersectionObserved, {
295
- key: 1,
296
- class: normalizeClass({ hideTag: tag.hidden }),
297
- "data-id": tag.id,
298
- enabled: _ctx.responsive,
299
- "event-bus": _ctx.intersectionEventBus
300
- }, {
301
- default: withCtx(() => [
302
- createVNode(_component_el_tag, {
303
- title: tag.name,
234
+ };
235
+ onMounted(() => {
236
+ setMaxWidth();
237
+ window.addEventListener("resize", debouncedSetMaxWidth);
238
+ });
239
+ onBeforeUnmount(() => {
240
+ window.removeEventListener("resize", debouncedSetMaxWidth);
241
+ });
242
+ return (_ctx, _cache) => {
243
+ const _component_el_tag = resolveComponent("el-tag");
244
+ return openBlock(), createBlock(IntersectionObserver$1, {
245
+ ref_key: "tagsContainer",
246
+ ref: tagsContainer,
247
+ threshold: 1,
248
+ class: "tags-container",
249
+ style: normalizeStyle(style.value),
250
+ enabled: _ctx.responsive,
251
+ "event-bus": unref(intersectionEventBus),
252
+ onObserved
253
+ }, {
254
+ default: withCtx(() => [
255
+ createBaseVNode("span", _hoisted_1$7, [
256
+ (openBlock(true), createElementBlock(Fragment, null, renderList(tags.value, (tag) => {
257
+ return openBlock(), createElementBlock("span", {
258
+ key: tag.id,
259
+ class: normalizeClass({ clickable: !tag.hidden }),
260
+ onClick: (e) => onClick(e, tag)
261
+ }, [
262
+ tag.isCount ? (openBlock(), createBlock(_component_el_tag, {
263
+ key: 0,
264
+ title: tag.title,
304
265
  type: "info",
305
266
  size: "small",
306
- class: normalizeClass({ hoverable: _ctx.hoverable }),
267
+ class: "count-container",
307
268
  "disable-transitions": true
308
269
  }, {
309
270
  default: withCtx(() => [
310
271
  createTextVNode(toDisplayString(tag.name), 1)
311
272
  ]),
312
273
  _: 2
313
- }, 1032, ["title", "class"])
314
- ]),
315
- _: 2
316
- }, 1032, ["class", "data-id", "enabled", "event-bus"]))
317
- ], 10, _hoisted_2$1);
318
- }), 128))
319
- ])
320
- ]),
321
- _: 1
322
- }, 8, ["style", "enabled", "event-bus", "onObserved"]);
323
- }
324
- const TagsContainer = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render], ["__scopeId", "data-v-708f5aea"]]);
274
+ }, 1032, ["title"])) : (openBlock(), createBlock(IntersectionObserved, {
275
+ key: 1,
276
+ class: normalizeClass({ hideTag: tag.hidden }),
277
+ "data-id": tag.id,
278
+ enabled: _ctx.responsive,
279
+ "event-bus": unref(intersectionEventBus)
280
+ }, {
281
+ default: withCtx(() => [
282
+ createVNode(_component_el_tag, {
283
+ title: tag.name,
284
+ type: "info",
285
+ size: "small",
286
+ class: normalizeClass({ hoverable: _ctx.hoverable }),
287
+ "disable-transitions": true
288
+ }, {
289
+ default: withCtx(() => [
290
+ createTextVNode(toDisplayString(tag.name), 1)
291
+ ]),
292
+ _: 2
293
+ }, 1032, ["title", "class"])
294
+ ]),
295
+ _: 2
296
+ }, 1032, ["class", "data-id", "enabled", "event-bus"]))
297
+ ], 10, _hoisted_2$2);
298
+ }), 128))
299
+ ])
300
+ ]),
301
+ _: 1
302
+ }, 8, ["style", "enabled", "event-bus"]);
303
+ };
304
+ }
305
+ });
306
+ const TagsContainer = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-8b1055e0"]]);
307
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
308
+ __name: "WorkflowTagsContainer",
309
+ props: {
310
+ tagIds: {},
311
+ limit: {},
312
+ clickable: { type: Boolean },
313
+ responsive: { type: Boolean },
314
+ hoverable: { type: Boolean }
315
+ },
316
+ emits: ["click"],
317
+ setup(__props, { emit: __emit }) {
318
+ const emit = __emit;
319
+ const annotationTagsStore = useTagsStore();
320
+ const tagsById = computed(() => annotationTagsStore.tagsById);
321
+ function onClick(tagId) {
322
+ emit("click", tagId);
323
+ }
324
+ return (_ctx, _cache) => {
325
+ return openBlock(), createBlock(TagsContainer, {
326
+ "tag-ids": _ctx.tagIds,
327
+ "tags-by-id": tagsById.value,
328
+ limit: _ctx.limit,
329
+ clickable: _ctx.clickable,
330
+ responsive: _ctx.responsive,
331
+ hoverable: _ctx.hoverable,
332
+ onClick
333
+ }, null, 8, ["tag-ids", "tags-by-id", "limit", "clickable", "responsive", "hoverable"]);
334
+ };
335
+ }
336
+ });
325
337
  const _withScopeId$3 = (n) => (pushScopeId("data-v-b6416d9d"), n = n(), popScopeId(), n);
326
- const _hoisted_1$5 = ["data-value"];
327
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
338
+ const _hoisted_1$6 = ["data-value"];
339
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
328
340
  __name: "ExpandableInputBase",
329
341
  props: {
330
342
  modelValue: {},
@@ -346,13 +358,13 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
346
358
  "data-value": hiddenValue.value
347
359
  }, [
348
360
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
349
- ], 10, _hoisted_1$5);
361
+ ], 10, _hoisted_1$6);
350
362
  };
351
363
  }
352
364
  });
353
- const ExpandableInputBase = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-b6416d9d"]]);
354
- const _hoisted_1$4 = ["value", "placeholder", "maxlength"];
355
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
365
+ const ExpandableInputBase = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-b6416d9d"]]);
366
+ const _hoisted_1$5 = ["value", "placeholder", "maxlength"];
367
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
356
368
  __name: "ExpandableInputEdit",
357
369
  props: {
358
370
  modelValue: {},
@@ -419,7 +431,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
419
431
  withKeys(onEnter, ["enter"]),
420
432
  withKeys(onEscape, ["esc"])
421
433
  ]
422
- }, null, 40, _hoisted_1$4)
434
+ }, null, 40, _hoisted_1$5)
423
435
  ]),
424
436
  _: 1
425
437
  }, 8, ["model-value", "placeholder"]);
@@ -427,8 +439,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
427
439
  }
428
440
  });
429
441
  const _withScopeId$2 = (n) => (pushScopeId("data-v-87c6f53b"), n = n(), popScopeId(), n);
430
- const _hoisted_1$3 = ["value"];
431
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
442
+ const _hoisted_1$4 = ["value"];
443
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
432
444
  __name: "ExpandableInputPreview",
433
445
  props: {
434
446
  modelValue: {}
@@ -445,17 +457,17 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
445
457
  value: _ctx.modelValue,
446
458
  disabled: true,
447
459
  size: "4"
448
- }, null, 8, _hoisted_1$3)
460
+ }, null, 8, _hoisted_1$4)
449
461
  ]),
450
462
  _: 1
451
463
  }, 8, ["model-value"]);
452
464
  };
453
465
  }
454
466
  });
455
- const ExpandableInputPreview = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-87c6f53b"]]);
467
+ const ExpandableInputPreview = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-87c6f53b"]]);
456
468
  const _withScopeId$1 = (n) => (pushScopeId("data-v-dd0473d7"), n = n(), popScopeId(), n);
457
- const _hoisted_1$2 = { key: 0 };
458
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
469
+ const _hoisted_1$3 = { key: 0 };
470
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
459
471
  __name: "InlineTextEdit",
460
472
  props: {
461
473
  isEditEnabled: { type: Boolean, default: false },
@@ -522,8 +534,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
522
534
  onKeydown: _cache[1] || (_cache[1] = withModifiers(() => {
523
535
  }, ["stop"]))
524
536
  }, [
525
- _ctx.isEditEnabled && !isDisabled.value ? (openBlock(), createElementBlock("span", _hoisted_1$2, [
526
- createVNode(_sfc_main$6, {
537
+ _ctx.isEditEnabled && !isDisabled.value ? (openBlock(), createElementBlock("span", _hoisted_1$3, [
538
+ createVNode(_sfc_main$8, {
527
539
  modelValue: newValue.value,
528
540
  "onUpdate:modelValue": [
529
541
  _cache[0] || (_cache[0] = ($event) => newValue.value = $event),
@@ -550,8 +562,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
550
562
  };
551
563
  }
552
564
  });
553
- const InlineTextEdit = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-dd0473d7"]]);
554
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
565
+ const InlineTextEdit = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-dd0473d7"]]);
566
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
555
567
  __name: "BreakpointsObserver",
556
568
  props: {
557
569
  valueXS: {},
@@ -624,7 +636,158 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
624
636
  };
625
637
  }
626
638
  });
627
- const _withScopeId = (n) => (pushScopeId("data-v-f3671ada"), n = n(), popScopeId(), n);
639
+ const _hoisted_1$2 = { key: 0 };
640
+ const _hoisted_2$1 = { key: 1 };
641
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
642
+ __name: "WorkflowHistoryButton",
643
+ props: {
644
+ workflowId: {},
645
+ isNewWorkflow: { type: Boolean },
646
+ isFeatureEnabled: { type: Boolean }
647
+ },
648
+ emits: ["upgrade"],
649
+ setup(__props, { emit: __emit }) {
650
+ const locale = useI18n();
651
+ const props = __props;
652
+ const emit = __emit;
653
+ const workflowHistoryRoute = computed(() => ({
654
+ name: VIEWS.WORKFLOW_HISTORY,
655
+ params: {
656
+ workflowId: props.workflowId
657
+ }
658
+ }));
659
+ return (_ctx, _cache) => {
660
+ const _component_N8nIconButton = resolveComponent("N8nIconButton");
661
+ const _component_RouterLink = resolveComponent("RouterLink");
662
+ const _component_N8nLink = resolveComponent("N8nLink");
663
+ const _component_i18n_t = resolveComponent("i18n-t");
664
+ const _component_N8nTooltip = resolveComponent("N8nTooltip");
665
+ return openBlock(), createBlock(_component_N8nTooltip, { placement: "bottom" }, {
666
+ content: withCtx(() => [
667
+ _ctx.isFeatureEnabled && _ctx.isNewWorkflow ? (openBlock(), createElementBlock("span", _hoisted_1$2, toDisplayString(unref(locale).baseText("workflowHistory.button.tooltip.empty")), 1)) : _ctx.isFeatureEnabled ? (openBlock(), createElementBlock("span", _hoisted_2$1, toDisplayString(unref(locale).baseText("workflowHistory.button.tooltip.enabled")), 1)) : (openBlock(), createBlock(_component_i18n_t, {
668
+ key: 2,
669
+ keypath: "workflowHistory.button.tooltip.disabled"
670
+ }, {
671
+ link: withCtx(() => [
672
+ createVNode(_component_N8nLink, {
673
+ size: "small",
674
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("upgrade"))
675
+ }, {
676
+ default: withCtx(() => [
677
+ createTextVNode(toDisplayString(unref(locale).baseText("workflowHistory.button.tooltip.disabled.link")), 1)
678
+ ]),
679
+ _: 1
680
+ })
681
+ ]),
682
+ _: 1
683
+ }))
684
+ ]),
685
+ default: withCtx(() => [
686
+ createVNode(_component_RouterLink, {
687
+ to: workflowHistoryRoute.value,
688
+ class: normalizeClass(_ctx.$style.workflowHistoryButton)
689
+ }, {
690
+ default: withCtx(() => [
691
+ createVNode(_component_N8nIconButton, {
692
+ disabled: _ctx.isNewWorkflow || !_ctx.isFeatureEnabled,
693
+ "data-test-id": "workflow-history-button",
694
+ type: "tertiary",
695
+ icon: "history",
696
+ size: "medium",
697
+ text: ""
698
+ }, null, 8, ["disabled"])
699
+ ]),
700
+ _: 1
701
+ }, 8, ["to", "class"])
702
+ ]),
703
+ _: 1
704
+ });
705
+ };
706
+ }
707
+ });
708
+ const workflowHistoryButton = "_workflowHistoryButton_1hnmm_1";
709
+ const style0$2 = {
710
+ workflowHistoryButton
711
+ };
712
+ const cssModules$3 = {
713
+ "$style": style0$2
714
+ };
715
+ const WorkflowHistoryButton = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__cssModules", cssModules$3]]);
716
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
717
+ __name: "CollaborationPane",
718
+ setup(__props) {
719
+ const collaborationStore = useCollaborationStore();
720
+ const usersStore = useUsersStore();
721
+ const workflowsStore = useWorkflowsStore();
722
+ const HEARTBEAT_INTERVAL = 5 * TIME.MINUTE;
723
+ const heartbeatTimer = ref(null);
724
+ const activeUsersSorted = computed(() => {
725
+ const currentWorkflowUsers = (collaborationStore.getUsersForCurrentWorkflow ?? []).map(
726
+ (userInfo) => userInfo.user
727
+ );
728
+ const owner = currentWorkflowUsers.find(isUserGlobalOwner);
729
+ return {
730
+ defaultGroup: owner ? [owner, ...currentWorkflowUsers.filter((user) => user.id !== owner.id)] : currentWorkflowUsers
731
+ };
732
+ });
733
+ const currentUserEmail = computed(() => {
734
+ var _a;
735
+ return (_a = usersStore.currentUser) == null ? void 0 : _a.email;
736
+ });
737
+ const startHeartbeat = () => {
738
+ if (heartbeatTimer.value !== null) {
739
+ clearInterval(heartbeatTimer.value);
740
+ heartbeatTimer.value = null;
741
+ }
742
+ heartbeatTimer.value = window.setInterval(() => {
743
+ collaborationStore.notifyWorkflowOpened(workflowsStore.workflow.id);
744
+ }, HEARTBEAT_INTERVAL);
745
+ };
746
+ const stopHeartbeat = () => {
747
+ if (heartbeatTimer.value !== null) {
748
+ clearInterval(heartbeatTimer.value);
749
+ }
750
+ };
751
+ const onDocumentVisibilityChange = () => {
752
+ if (document.visibilityState === "hidden") {
753
+ stopHeartbeat();
754
+ } else {
755
+ startHeartbeat();
756
+ }
757
+ };
758
+ onMounted(() => {
759
+ collaborationStore.initialize();
760
+ startHeartbeat();
761
+ document.addEventListener("visibilitychange", onDocumentVisibilityChange);
762
+ });
763
+ onBeforeUnmount(() => {
764
+ document.removeEventListener("visibilitychange", onDocumentVisibilityChange);
765
+ stopHeartbeat();
766
+ collaborationStore.terminate();
767
+ });
768
+ return (_ctx, _cache) => {
769
+ const _component_n8n_user_stack = resolveComponent("n8n-user-stack");
770
+ return openBlock(), createElementBlock("div", {
771
+ class: normalizeClass(`collaboration-pane-container ${_ctx.$style.container}`),
772
+ "data-test-id": "collaboration-pane"
773
+ }, [
774
+ createVNode(_component_n8n_user_stack, {
775
+ users: activeUsersSorted.value,
776
+ "current-user-email": currentUserEmail.value
777
+ }, null, 8, ["users", "current-user-email"])
778
+ ], 2);
779
+ };
780
+ }
781
+ });
782
+ const container$2 = "_container_iuui0_1";
783
+ const style0$1 = {
784
+ container: container$2
785
+ };
786
+ const cssModules$2 = {
787
+ "$style": style0$1
788
+ };
789
+ const CollaborationPane = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__cssModules", cssModules$2]]);
790
+ const _withScopeId = (n) => (pushScopeId("data-v-71fdd091"), n = n(), popScopeId(), n);
628
791
  const _hoisted_1$1 = {
629
792
  key: 0,
630
793
  class: "tags",
@@ -763,17 +926,6 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
763
926
  const isWorkflowHistoryFeatureEnabled = computed(() => {
764
927
  return settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.WorkflowHistory];
765
928
  });
766
- const workflowHistoryRoute = computed(() => {
767
- return {
768
- name: VIEWS.WORKFLOW_HISTORY,
769
- params: {
770
- workflowId: props.workflow.id
771
- }
772
- };
773
- });
774
- const isWorkflowHistoryButtonDisabled = computed(() => {
775
- return isNewWorkflow.value;
776
- });
777
929
  const workflowTagIds = computed(() => {
778
930
  return (props.workflow.tags ?? []).map((tag) => typeof tag === "string" ? tag : tag.id);
779
931
  });
@@ -1083,6 +1235,9 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1083
1235
  function goToUpgrade() {
1084
1236
  void uiStore.goToUpgrade("workflow_sharing", "upgrade-workflow-sharing");
1085
1237
  }
1238
+ function goToWorkflowHistoryUpgrade() {
1239
+ void uiStore.goToUpgrade("workflow-history", "upgrade-workflow-history");
1240
+ }
1086
1241
  function showCreateWorkflowSuccessToast(id) {
1087
1242
  if (!id || ["new", PLACEHOLDER_EMPTY_WORKFLOW_ID].includes(id)) {
1088
1243
  let toastTitle = locale.baseText("workflows.create.personal.toast.title");
@@ -1107,20 +1262,18 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1107
1262
  const _component_i18n_t = resolveComponent("i18n-t");
1108
1263
  const _component_N8nTooltip = resolveComponent("N8nTooltip");
1109
1264
  const _component_EnterpriseEdition = resolveComponent("EnterpriseEdition");
1110
- const _component_N8nIconButton = resolveComponent("N8nIconButton");
1111
- const _component_RouterLink = resolveComponent("RouterLink");
1112
1265
  const _component_N8nActionDropdown = resolveComponent("N8nActionDropdown");
1113
1266
  return openBlock(), createElementBlock("div", {
1114
1267
  class: normalizeClass(unref($style).container)
1115
1268
  }, [
1116
- createVNode(_sfc_main$3, {
1269
+ createVNode(_sfc_main$5, {
1117
1270
  "value-x-s": 15,
1118
1271
  "value-s-m": 25,
1119
1272
  "value-m-d": 50,
1120
1273
  class: "name-container"
1121
1274
  }, {
1122
1275
  default: withCtx(({ value }) => [
1123
- createVNode(_sfc_main$b, {
1276
+ createVNode(_sfc_main$e, {
1124
1277
  name: _ctx.workflow.name,
1125
1278
  limit: value,
1126
1279
  custom: true,
@@ -1145,7 +1298,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1145
1298
  _: 1
1146
1299
  }),
1147
1300
  unref(settingsStore).areTagsEnabled ? (openBlock(), createElementBlock("span", _hoisted_1$1, [
1148
- isTagsEditEnabled.value && !_ctx.readOnly && (isNewWorkflow.value || workflowPermissions.value.update) ? (openBlock(), createBlock(TagsDropdown, {
1301
+ isTagsEditEnabled.value && !_ctx.readOnly && (isNewWorkflow.value || workflowPermissions.value.update) ? (openBlock(), createBlock(_sfc_main$f, {
1149
1302
  key: 0,
1150
1303
  ref: "dropdown",
1151
1304
  modelValue: appliedTagIds.value,
@@ -1162,7 +1315,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1162
1315
  "data-test-id": "new-tag-link",
1163
1316
  onClick: onTagsEditEnable
1164
1317
  }, " + " + toDisplayString(_ctx.$locale.baseText("workflowDetails.addTag")), 1)
1165
- ])) : (openBlock(), createBlock(TagsContainer, {
1318
+ ])) : (openBlock(), createBlock(_sfc_main$a, {
1166
1319
  key: _ctx.workflow.id,
1167
1320
  "tag-ids": workflowTagIds.value,
1168
1321
  clickable: true,
@@ -1171,7 +1324,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1171
1324
  onClick: onTagsEditEnable
1172
1325
  }, null, 8, ["tag-ids"]))
1173
1326
  ])) : (openBlock(), createElementBlock("span", _hoisted_3)),
1174
- createVNode(__unplugin_components_0$1, { class: "actions" }, {
1327
+ createVNode(__unplugin_components_0, { class: "actions" }, {
1175
1328
  default: withCtx(() => [
1176
1329
  createBaseVNode("span", {
1177
1330
  class: normalizeClass(`activator ${unref($style).group}`)
@@ -1218,6 +1371,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1218
1371
  createBaseVNode("div", {
1219
1372
  class: normalizeClass(unref($style).group)
1220
1373
  }, [
1374
+ createVNode(CollaborationPane),
1221
1375
  createVNode(_component_N8nButton, {
1222
1376
  type: "secondary",
1223
1377
  "data-test-id": "workflow-share-button",
@@ -1245,23 +1399,12 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1245
1399
  "data-test-id": "workflow-save-button",
1246
1400
  onClick: onSaveButtonClick
1247
1401
  }, null, 8, ["saved", "disabled", "is-saving", "with-shortcut", "shortcut-tooltip"]),
1248
- isWorkflowHistoryFeatureEnabled.value ? (openBlock(), createBlock(_component_RouterLink, {
1249
- key: 0,
1250
- to: workflowHistoryRoute.value,
1251
- class: normalizeClass(unref($style).workflowHistoryButton)
1252
- }, {
1253
- default: withCtx(() => [
1254
- createVNode(_component_N8nIconButton, {
1255
- disabled: isWorkflowHistoryButtonDisabled.value,
1256
- "data-test-id": "workflow-history-button",
1257
- type: "tertiary",
1258
- icon: "history",
1259
- size: "medium",
1260
- text: ""
1261
- }, null, 8, ["disabled"])
1262
- ]),
1263
- _: 1
1264
- }, 8, ["to", "class"])) : createCommentVNode("", true)
1402
+ createVNode(WorkflowHistoryButton, {
1403
+ "workflow-id": props.workflow.id,
1404
+ "is-feature-enabled": isWorkflowHistoryFeatureEnabled.value,
1405
+ "is-new-workflow": isNewWorkflow.value,
1406
+ onUpgrade: goToWorkflowHistoryUpgrade
1407
+ }, null, 8, ["workflow-id", "is-feature-enabled", "is-new-workflow"])
1265
1408
  ], 2),
1266
1409
  createBaseVNode("div", {
1267
1410
  class: normalizeClass([unref($style).workflowMenuContainer, unref($style).group])
@@ -1287,24 +1430,22 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1287
1430
  };
1288
1431
  }
1289
1432
  });
1290
- const container$1 = "_container_osj4g_1";
1291
- const group = "_group_osj4g_9";
1292
- const hiddenInput = "_hiddenInput_osj4g_14";
1293
- const deleteItem = "_deleteItem_osj4g_18";
1294
- const disabledShareButton = "_disabledShareButton_osj4g_22";
1295
- const workflowHistoryButton = "_workflowHistoryButton_osj4g_26";
1433
+ const container$1 = "_container_1ascc_1";
1434
+ const group = "_group_1ascc_9";
1435
+ const hiddenInput = "_hiddenInput_1ascc_14";
1436
+ const deleteItem = "_deleteItem_1ascc_18";
1437
+ const disabledShareButton = "_disabledShareButton_1ascc_22";
1296
1438
  const style1 = {
1297
1439
  container: container$1,
1298
1440
  group,
1299
1441
  hiddenInput,
1300
1442
  deleteItem,
1301
- disabledShareButton,
1302
- workflowHistoryButton
1443
+ disabledShareButton
1303
1444
  };
1304
1445
  const cssModules$1 = {
1305
1446
  "$style": style1
1306
1447
  };
1307
- const WorkflowDetails = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$1], ["__scopeId", "data-v-f3671ada"]]);
1448
+ const WorkflowDetails = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$1], ["__scopeId", "data-v-71fdd091"]]);
1308
1449
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1309
1450
  __name: "TabBar",
1310
1451
  props: {