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.
- package/dist/assets/@n8n/{permissions-BdHAniXb.js → permissions-BxSXRD9U.js} +1 -0
- package/dist/assets/@vueuse/{core-C-N7SOS8.js → core-nU0-5GsD.js} +56 -54
- package/dist/assets/AnnotationTagsDropdown-Dt1nrqPR.js +116 -0
- package/dist/assets/{AuthView-CqcftqAH.js → AuthView-CjKOvdaN.js} +2 -2
- package/dist/assets/{CanvasControls-Besc3nk2.js → CanvasControls-D82rlmHw.js} +6 -6
- package/dist/assets/{ChangePasswordView-BK5O6qCb.js → ChangePasswordView-DdlvGoJN.js} +7 -7
- package/dist/assets/{CredentialsView-DEI5jVSq.js → CredentialsView-Dh5Dj2PW.js} +9 -9
- package/dist/assets/{ErrorView-Cb9Ev7Dj.js → ErrorView-Bcb1V9Fc.js} +6 -6
- package/dist/assets/{ExecutionsFilter-fBQ6lOU_.css → ExecutionsFilter-DTy4NQw_.css} +6 -6
- package/dist/assets/{ExecutionsFilter-Y7dLoQFk.js → ExecutionsFilter-U6t29YO2.js} +96 -51
- package/dist/assets/{ExecutionsView-DcUlsJSr.js → ExecutionsView-DNk2-yfM.js} +9 -9
- package/dist/assets/{FixedCollectionParameter-DMEv9len.js → FixedCollectionParameter-C5fcLnIV.js} +6 -6
- package/dist/assets/{ForgotMyPasswordView-CrINAbmV.js → ForgotMyPasswordView-DvQ3WKNf.js} +7 -7
- package/dist/assets/{MainHeader-CHYc_PZ4.css → MainHeader-46C-nkS_.css} +35 -34
- package/dist/assets/{MainHeader-CnFMyNl3.js → MainHeader-OSniZ7Px.js} +364 -223
- package/dist/assets/{MainSidebar-DnSIEh1g.js → MainSidebar-BwsR-N4F.js} +394 -429
- package/dist/assets/{NodeCreation-B-ZsOH-L.js → NodeCreation-BeUV0F95.js} +10 -8
- package/dist/assets/{NodeCreator-DDYJt0Ze.js → NodeCreator-CCRzDZKt.js} +21 -17
- package/dist/assets/{NodeViewSwitcher-BnlgGD0J.css → NodeViewSwitcher-CCKZWp3-.css} +405 -325
- package/dist/assets/{NodeViewSwitcher-D6nuSKAB.js → NodeViewSwitcher-CVnkUMmu.js} +4234 -2009
- package/dist/assets/{ProjectCardBadge-CFNf-mDJ.js → ProjectCardBadge-BrGkbJIM.js} +3 -3
- package/dist/assets/{ProjectSettings-ML67RJOi.js → ProjectSettings-BYfFaMTy.js} +7 -7
- package/dist/assets/{ProjectTabs-Cknn_GgB.js → ProjectTabs-BIa4e3BJ.js} +2 -2
- package/dist/assets/{PushConnectionTracker-CWhTRNCw.js → PushConnectionTracker-yY5K4aH_.js} +2 -2
- package/dist/assets/{ResourcesListLayout-eqk9xNhc.js → ResourcesListLayout-ZXAENIfd.js} +2 -2
- package/dist/assets/{RunDataAi-B3Q65dEL.js → RunDataAi-BIySmKIQ.js} +6 -6
- package/dist/assets/{RunDataJson-C-dseNta.js → RunDataJson-Z08wE1iY.js} +9 -9
- package/dist/assets/{RunDataJsonActions-KBZ7hfZN.js → RunDataJsonActions-BSb14GOW.js} +7 -7
- package/dist/assets/{RunDataSearch-tlq4S7N-.js → RunDataSearch-MZfTmlLO.js} +6 -6
- package/dist/assets/{RunDataTable-D-c1L5v9.js → RunDataTable-DNWBiqiX.js} +6 -6
- package/dist/assets/{SamlOnboarding-DHXokg4W.js → SamlOnboarding-SxgwxDA9.js} +7 -7
- package/dist/assets/{SettingsApiView-hxxnxNIb.js → SettingsApiView-B_bJYJyE.js} +6 -6
- package/dist/assets/{SettingsCommunityNodesView-DjmPzymy.js → SettingsCommunityNodesView-azftQZzT.js} +8 -8
- package/dist/assets/{SettingsExternalSecrets-Cw-mURA4.js → SettingsExternalSecrets-B_LAI-FY.js} +6 -6
- package/dist/assets/{SettingsFakeDoorView-Coj99HjT.js → SettingsFakeDoorView-F6EkOY9p.js} +6 -6
- package/dist/assets/{SettingsLdapView-C5vB_u72.js → SettingsLdapView-NJDXkidp.js} +7 -7
- package/dist/assets/{SettingsLogStreamingView-BaWNNhIO.js → SettingsLogStreamingView-B7pKyM0w.js} +6 -6
- package/dist/assets/{SettingsPersonalView-F5OtxFhW.js → SettingsPersonalView-B2OWUUAG.js} +6 -6
- package/dist/assets/{SettingsSourceControl-CJ5r15dK.js → SettingsSourceControl-tB1kXcRW.js} +6 -6
- package/dist/assets/{SettingsSso-BrfSzt16.js → SettingsSso-jMpGNe64.js} +18 -9
- package/dist/assets/{SettingsUsageAndPlan-Gqra3R0E.js → SettingsUsageAndPlan-DznKS9QF.js} +116 -8
- package/dist/assets/{SettingsUsersView-BibKm0uw.js → SettingsUsersView-C20UIl96.js} +23 -7
- package/dist/assets/{SettingsView-_a_GTA-g.js → SettingsView-CpZAuZxm.js} +7 -7
- package/dist/assets/{SetupView-B8mzwREj.js → SetupView-BvREbLrU.js} +7 -7
- package/dist/assets/{SetupWorkflowCredentialsButton-C2wXpCdh.js → SetupWorkflowCredentialsButton-BIbN4cJ6.js} +6 -6
- package/dist/assets/{SetupWorkflowFromTemplateView-D6O8INhE.js → SetupWorkflowFromTemplateView-C357Y9Vi.js} +8 -8
- package/dist/assets/{SigninView-DKkeDUtH.js → SigninView-CeJ43ND1.js} +7 -7
- package/dist/assets/{SignoutView-BjQlWgFQ.js → SignoutView-D3sjsQEx.js} +6 -6
- package/dist/assets/{SignupView-O9mgfKQh.js → SignupView-CzCkWH6M.js} +7 -7
- package/dist/assets/{TemplateDetails-rbYl7ZHO.js → TemplateDetails-Bj7Itggv.js} +2 -2
- package/dist/assets/{TemplateList-4qO5UWYI.js → TemplateList-C58hSpuD.js} +2 -2
- package/dist/assets/{TemplatesCollectionView-CxLg3AfW.js → TemplatesCollectionView-DonGS3Xi.js} +10 -10
- package/dist/assets/{TemplatesSearchView-C7iabuV8.js → TemplatesSearchView-CY5IEdoI.js} +9 -9
- package/dist/assets/{TemplatesView-C_ljCT59.js → TemplatesView-BDxDOXvA.js} +2 -2
- package/dist/assets/{TemplatesWorkflowView-j-AraUuj.js → TemplatesWorkflowView-RqvxOv6Y.js} +10 -10
- package/dist/assets/{VariablesView-CS5qD4nw.js → VariablesView-CWgQQ11v.js} +7 -7
- package/dist/assets/{WorkerView-Adh7mkGw.js → WorkerView-CuZ31KTm.js} +9 -9
- package/dist/assets/{WorkflowActivator-BSG90j8i.js → WorkflowActivator-QJQEAlol.js} +3 -3
- package/dist/assets/{WorkflowExecutionsInfoAccordion-z-P6winD.js → WorkflowExecutionsInfoAccordion-D1GINK_-.js} +2 -2
- package/dist/assets/{WorkflowExecutionsLandingPage-BywskSzl.js → WorkflowExecutionsLandingPage-CdHZrGCm.js} +15 -9
- package/dist/assets/{WorkflowExecutionsPreview-Bw3RnbrX.js → WorkflowExecutionsPreview-D2bonH2m.js} +347 -15
- package/dist/assets/WorkflowExecutionsPreview-DRCpGEbi.css +247 -0
- package/dist/assets/{WorkflowExecutionsView-KGfJTF01.js → WorkflowExecutionsView-B5qZFRE6.js} +187 -139
- package/dist/assets/{WorkflowExecutionsView-Jm7Pw4v1.css → WorkflowExecutionsView-DqAlwS1H.css} +47 -27
- package/dist/assets/{WorkflowHistory-TdbKbeFT.js → WorkflowHistory-iT3c2Dba.js} +8 -8
- package/dist/assets/{WorkflowOnboardingView-C5BrBTek.js → WorkflowOnboardingView-ByE-C4RB.js} +6 -6
- package/dist/assets/{WorkflowPreview-DjH7tXfj.js → WorkflowPreview-7drYWvjZ.js} +2 -2
- package/dist/assets/{WorkflowsView-CqmiCNtd.js → WorkflowsView-CnUNgqQS.js} +14 -14
- package/dist/assets/{cloud-DVcstsW2.js → cloud-hv-DrYaS.js} +6 -6
- package/dist/assets/collaboration.store-C3-IWwmH.js +65 -0
- package/dist/assets/{dateFormatter--Jm_2fEm.js → dateFormatter-Bqx7mo81.js} +1 -1
- package/dist/assets/{dateformat-U_ybGERk.js → dateformat-AR6dqtgF.js} +1 -1
- package/dist/assets/email-providers-DDLsbDn7.js +1 -0
- package/dist/assets/{fast-json-stable-stringify-DFVeKQSP.js → fast-json-stable-stringify-Bv7WnfR3.js} +1 -1
- package/dist/assets/{file-saver-Kt7b8Ak0.js → file-saver-DIrhuITr.js} +1 -1
- package/dist/assets/{humanize-duration-CgUlcJVm.js → humanize-duration-C7g7MDB7.js} +1 -1
- package/dist/assets/{index-1JP5ktFc.css → index-Bqkr-RRJ.css} +278 -113
- package/dist/assets/{index-BMqv_cxE.js → index-CuuON5-N.js} +4120 -6024
- package/dist/assets/{jsonpath-DlnJGFD7.js → jsonpath-BerKkpZA.js} +1 -1
- package/dist/assets/{n8n-NifPGZSM.js → n8n-Bsq9j3nN.js} +131 -94
- package/dist/assets/{n8n-OU8f1_-B.css → n8n-CTcX1GX6.css} +5 -3
- package/dist/assets/{pushConnection.store-BQ8wQOWv.js → pushConnection.store-BNUIa0bj.js} +1 -1
- package/dist/assets/{templateActions-CY6KLH9V.js → templateActions-ZLUx027Z.js} +1 -1
- package/dist/assets/{useExecutionDebugging-CjiDOv4V.js → useExecutionDebugging-Bs3Idq-K.js} +1 -1
- package/dist/assets/{usePushConnection-DmqdJ4p5.js → usePushConnection-DLShU-B9.js} +3 -3
- package/dist/assets/{useUserHelpers-Bhb_a-iT.js → useUserHelpers-y36h7KVV.js} +1 -1
- package/dist/assets/{useWorkflowActivate-BpRa7BDT.js → useWorkflowActivate-BGn1xTwP.js} +1 -1
- package/dist/assets/{vue-agile-Cf_Be-_o.js → vue-agile-B94Z2oxM.js} +1 -1
- package/dist/assets/{vue-json-pretty-CUUthm-2.js → vue-json-pretty-BZDb_0OP.js} +1 -1
- package/dist/assets/xss-DDLsbDn7.js +1 -0
- package/dist/index.html +8 -8
- package/package.json +1 -1
- package/dist/assets/WorkflowExecutionsPreview-DlcWqXFI.css +0 -79
- package/dist/assets/common-DCQSo5lV.js +0 -365
- package/dist/assets/email-providers-Cebboc1h.js +0 -1
- package/dist/assets/useExecutionHelpers-6mVnBCgd.js +0 -59
- 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,
|
|
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
|
|
3
|
-
import { f as createEventBus, _ as _export_sfc } from "./n8n-
|
|
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
|
|
7
|
-
import { W as WorkflowActivator } from "./WorkflowActivator-
|
|
8
|
-
import { o as onClickOutside,
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
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-
|
|
15
|
+
import "./@n8n/permissions-BxSXRD9U.js";
|
|
15
16
|
import "./uuid-sKupIUZ4.js";
|
|
16
|
-
import "./dateformat-
|
|
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-
|
|
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-
|
|
36
|
-
import "./pushConnection.store-
|
|
37
|
-
const _hoisted_1$
|
|
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$
|
|
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$
|
|
59
|
+
], 8, _hoisted_1$a);
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
});
|
|
62
|
-
const _sfc_main$
|
|
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$
|
|
117
|
-
function _sfc_render$
|
|
118
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
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
|
|
123
|
-
const _sfc_main$
|
|
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$
|
|
149
|
-
function _sfc_render
|
|
150
|
-
return openBlock(), createElementBlock("span", _hoisted_1$
|
|
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
|
|
155
|
-
const
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
},
|
|
164
|
-
|
|
165
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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:
|
|
185
|
+
hidden: props.responsive && !visibility.value[tag.id]
|
|
197
186
|
}));
|
|
198
187
|
let visibleCount = toDisplay.length;
|
|
199
|
-
if (
|
|
200
|
-
visibleCount = Object.values(
|
|
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 <
|
|
206
|
-
const hidden =
|
|
207
|
-
const hiddenTitle = hidden.reduce(
|
|
208
|
-
|
|
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
|
-
|
|
222
|
-
|
|
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
|
-
|
|
238
|
-
void
|
|
239
|
-
|
|
215
|
+
maxWidth.value = 0;
|
|
216
|
+
void nextTick(() => {
|
|
217
|
+
maxWidth.value = parent.clientWidth;
|
|
240
218
|
});
|
|
241
219
|
}
|
|
242
|
-
}
|
|
243
|
-
|
|
220
|
+
};
|
|
221
|
+
const debouncedSetMaxWidth = debounce(setMaxWidth, 100);
|
|
222
|
+
const onObserved = ({ el, isIntersecting }) => {
|
|
244
223
|
if (el.dataset.id) {
|
|
245
|
-
|
|
224
|
+
visibility.value = { ...visibility.value, [el.dataset.id]: isIntersecting };
|
|
246
225
|
}
|
|
247
|
-
}
|
|
248
|
-
onClick(e, tag) {
|
|
249
|
-
if (
|
|
226
|
+
};
|
|
227
|
+
const onClick = (e, tag) => {
|
|
228
|
+
if (props.clickable) {
|
|
250
229
|
e.stopPropagation();
|
|
251
230
|
}
|
|
252
231
|
if (!tag.hidden) {
|
|
253
|
-
|
|
232
|
+
emit("click", tag.id);
|
|
254
233
|
}
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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:
|
|
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",
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
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$
|
|
327
|
-
const _sfc_main$
|
|
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$
|
|
361
|
+
], 10, _hoisted_1$6);
|
|
350
362
|
};
|
|
351
363
|
}
|
|
352
364
|
});
|
|
353
|
-
const ExpandableInputBase = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
354
|
-
const _hoisted_1$
|
|
355
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
431
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
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$
|
|
458
|
-
const _sfc_main$
|
|
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$
|
|
526
|
-
createVNode(_sfc_main$
|
|
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$
|
|
554
|
-
const _sfc_main$
|
|
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
|
|
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$
|
|
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$
|
|
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(
|
|
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(
|
|
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
|
|
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
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
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 = "
|
|
1291
|
-
const group = "
|
|
1292
|
-
const hiddenInput = "
|
|
1293
|
-
const deleteItem = "
|
|
1294
|
-
const disabledShareButton = "
|
|
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-
|
|
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: {
|