n8n-editor-ui 1.107.3 → 1.109.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/{AddDataStoreModal-BWJ9lPXD.js → AddDataStoreModal-DQSrUeGv.js} +27 -10
- package/dist/assets/{AnimatedSpinner-DNlzAAjE.js → AnimatedSpinner-DG0OJkY1.js} +1 -1
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CNykFw3C.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DL7yrAdr.js} +1 -1
- package/dist/assets/{AuthView-CBZF2tp7.js → AuthView-BjsoW1-5.js} +2 -2
- package/dist/assets/{ChangePasswordView-BNZ4Lec-.js → ChangePasswordView-wL-Pegb8.js} +3 -3
- package/dist/assets/CollectionParameter-CGRCLW5F.js +4 -0
- package/dist/assets/{ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CWb4OBYA.js → ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-Y9jgPwUm.js} +1 -1
- package/dist/assets/{CredentialsView-CsNObRPu.js → CredentialsView-Cp-dKa-6.js} +8 -8
- package/dist/assets/DataStoreActions.vue_vue_type_script_setup_true_lang-jUSBJd47.js +89 -0
- package/dist/assets/{WorkflowActivator-22RW64G2.css → DataStoreDetailsView-BxDmY87S.css} +268 -200
- package/dist/assets/DataStoreDetailsView-D9YNa5HC.js +41178 -0
- package/dist/assets/{DataStoreView-BNXibrgV.js → DataStoreView-Bs-qcZ8z.js} +63 -155
- package/dist/assets/{DataStoreView-D-Wmcgs5.css → DataStoreView-bZrewhaR.css} +10 -15
- package/dist/assets/{DemoFooter-DN__rQTx.js → DemoFooter-DPTKA9IL.js} +6 -6
- package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-BLs3shin.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-DiIUOGo1.js} +1 -1
- package/dist/assets/{EntityNotFound-DwzIV-IA.js → EntityNotFound-7GWizCKV.js} +1 -1
- package/dist/assets/{EntityUnAuthorised-Uk7UofGI.js → EntityUnAuthorised-BGNR4Y6R.js} +1 -1
- package/dist/assets/{ErrorView-2aaHp4mm.js → ErrorView-Dbc4jM8G.js} +1 -1
- package/dist/assets/{EvaluationsRootView-DajOMNNe.js → EvaluationsRootView-bKi3SFkK.js} +1 -1
- package/dist/assets/{EvaluationsView-D9B7p6ca.js → EvaluationsView-URJMmngS.js} +4 -4
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-xG0FUKDV.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-C8GA5YsR.js} +4 -4
- package/dist/assets/{ExecutionsView-CcstUltt.js → ExecutionsView-C32NF_Mi.js} +11 -11
- package/dist/assets/{FixedCollectionParameter-B0MexyJU.js → FixedCollectionParameter-C32o7Xw1.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-Bah9hI_a.js → ForgotMyPasswordView-BIGcjM0k.js} +3 -3
- package/dist/assets/{InfoAccordion-BL8J1chC.js → InfoAccordion-DVdDpADr.js} +2 -2
- package/dist/assets/{InsightsChartAverageRuntime-PuDIJUWO.js → InsightsChartAverageRuntime-CjOAk50Z.js} +4 -4
- package/dist/assets/{InsightsChartFailed-e8gNXvOD.js → InsightsChartFailed-DCQYezXm.js} +4 -4
- package/dist/assets/{InsightsChartFailureRate-CTHQ0RyF.js → InsightsChartFailureRate-L674yUIQ.js} +4 -4
- package/dist/assets/{InsightsChartTimeSaved-DnvNXWyi.js → InsightsChartTimeSaved-B6a4bv2j.js} +4 -4
- package/dist/assets/{InsightsChartTotal-DD_g0FlT.js → InsightsChartTotal-BGmz_E44.js} +4 -4
- package/dist/assets/{InsightsDashboard-Dd6ng80b.js → InsightsDashboard-CbtPLqME.js} +10 -10
- package/dist/assets/{InsightsPaywall-CMRBFk7F.js → InsightsPaywall-iTfZzLCq.js} +1 -1
- package/dist/assets/{InsightsSummary-od7C9keP.js → InsightsSummary-D0XZxoWu.js} +2 -2
- package/dist/assets/{InsightsTableWorkflows-bDP7Feik.js → InsightsTableWorkflows-DYL5sIeL.js} +15 -13
- package/dist/assets/{Logo-DccSZavS.js → Logo-BF6xE_TK.js} +1 -1
- package/dist/assets/{LogsPanel-B-Tmod-K.css → LogsPanel-BinqqXXh.css} +14 -17
- package/dist/assets/{LogsPanel-CgRsN0f1.js → LogsPanel-DhSbCRI8.js} +193 -141
- package/dist/assets/{MainHeader-C7eM_NQZ.css → MainHeader-BofAi8wS.css} +42 -42
- package/dist/assets/{MainHeader-BuQIia5G.js → MainHeader-C992btCf.js} +488 -481
- package/dist/assets/{MainSidebar-DmJW5X0O.js → MainSidebar-CfBkhJuz.js} +47 -66
- package/dist/assets/{NodeCreation-BWPpAKFI.js → NodeCreation-C4-JrWkw.js} +4 -4
- package/dist/assets/{NodeCreator-CcJ3ERxm.js → NodeCreator-BHFu5J3H.js} +19 -17
- package/dist/assets/{NodeCreator-COgNP4W1.css → NodeCreator-vQ-Sfr_5.css} +8 -9
- package/dist/assets/{NodeDetailsView-CCLWHias.js → NodeDetailsView-DucQbxES.js} +14 -14
- package/dist/assets/{NodeDetailsViewV2-dXQZWfaF.js → NodeDetailsViewV2-By7jano3.js} +25 -25
- package/dist/assets/{NodeDetailsViewV2-Bn1PbAPe.css → NodeDetailsViewV2-J_3cfdea.css} +15 -15
- package/dist/assets/{NodeView-DXfRa5dq.js → NodeView-Bi4OfDJp.js} +15 -11
- package/dist/assets/ProjectBreadcrumb-B1Hnf5da.css +445 -0
- package/dist/assets/ProjectBreadcrumb-l5PnV6Jp.js +381 -0
- package/dist/assets/{ProjectHeader-B9EjwT8u.js → ProjectHeader-D1veUs2f.js} +27 -30
- package/dist/assets/{ProjectSettings-DxChDPJp.js → ProjectSettings-CiMu32JB.js} +6 -6
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CAcI_6zc.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-Cl5RoRJK.js} +2 -2
- package/dist/assets/{ResourcesListLayout-BXykiIem.js → ResourcesListLayout-V2ovJZd-.js} +3 -3
- package/dist/assets/{RunDataJson-DQ-wEydT.js → RunDataJson--o61ywP4.js} +3 -3
- package/dist/assets/{RunDataJsonActions-DkwJw6g0.js → RunDataJsonActions-BuTnnCdp.js} +14 -14
- package/dist/assets/{RunDataParsedAiContent-pthnU6es.js → RunDataParsedAiContent-Dv43fJJj.js} +2 -2
- package/dist/assets/{RunDataSearch-Dz5_0Sop.js → RunDataSearch-DhhRomuh.js} +1 -1
- package/dist/assets/{RunDataTable-DlwkWBoU.js → RunDataTable-BRNjCbjf.js} +6 -6
- package/dist/assets/{SamlOnboarding-BfiycZyp.js → SamlOnboarding-ChVfS2ix.js} +3 -3
- package/dist/assets/{SettingsApiView-D6E5CVxl.js → SettingsApiView-EJcHWxis.js} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-CQV4UbKm.js → SettingsCommunityNodesView-BCGKGJGl.js} +5 -5
- package/dist/assets/{SettingsExternalSecrets-nYlsTral.js → SettingsExternalSecrets-DQ6GuwI_.js} +1 -1
- package/dist/assets/{SettingsLdapView-C35iJN3N.js → SettingsLdapView-YMEEL5g4.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-DF2IVwuv.js → SettingsLogStreamingView-CMRM9qEX.js} +1 -1
- package/dist/assets/{SettingsPersonalView-DvTBCV7u.js → SettingsPersonalView-CQ3j6jFh.js} +2 -2
- package/dist/assets/{SettingsSourceControl-Bp7kBNsF.js → SettingsSourceControl-W3xQHBQs.js} +2 -2
- package/dist/assets/{SettingsSso-D3MsGwAG.js → SettingsSso-B-RJISS8.js} +8 -6
- package/dist/assets/{SettingsUsageAndPlan-BvSyV6eq.js → SettingsUsageAndPlan-BI4z3ArV.js} +2 -2
- package/dist/assets/{SettingsUsersView-BKx9xQmw.js → SettingsUsersView-FdTxfP_9.js} +3 -3
- package/dist/assets/{SettingsView-N1braOIS.js → SettingsView-enVRJi4X.js} +1 -1
- package/dist/assets/{SetupView-DB325RA-.js → SetupView-DhQVRFto.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-Bv6XJXPb.js → SetupWorkflowCredentialsButton-o-0v9TC0.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-DvJ9hJNk.js → SetupWorkflowFromTemplateView-t24Wf8j0.js} +4 -4
- package/dist/assets/{SigninView-Do_ZE4PN.js → SigninView-CqnnxcHH.js} +3 -3
- package/dist/assets/{SignoutView-RMWoU9ka.js → SignoutView-BYkRErR0.js} +1 -1
- package/dist/assets/{SignupView-DaSOlcHH.js → SignupView-CZ5xz8Ej.js} +3 -3
- package/dist/assets/{TableBase-DEfTMdd5.js → TableBase-DZ3KHAaq.js} +1 -1
- package/dist/assets/{Tag-Bpg7pWwM.js → Tag-BZXOdJeY.js} +1 -1
- package/dist/assets/{Tags-BOko1qXh.js → Tags-BGrNA-zc.js} +2 -2
- package/dist/assets/{TemplateDetails-DKT_t-A1.js → TemplateDetails-CGeXTU0J.js} +2 -2
- package/dist/assets/{TemplateList-CKb1zA2_.js → TemplateList-BUJPQKR1.js} +1 -1
- package/dist/assets/{TemplatesCollectionView-D47Zvruw.js → TemplatesCollectionView-CDz25qgN.js} +7 -7
- package/dist/assets/{TemplatesSearchView-C1Drn--8.js → TemplatesSearchView-l-Ueq6ha.js} +3 -3
- package/dist/assets/{TemplatesView-DLGApF1u.js → TemplatesView-CbzVhmOD.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-BU_v7Vg5.js → TemplatesWorkflowView-D2fR5qLE.js} +7 -7
- package/dist/assets/{TriggerPanel-DmVMaaLr.css → TriggerPanel-BFPMKijE.css} +4 -4
- package/dist/assets/{TriggerPanel-BEWhhdtu.js → TriggerPanel-BNb8Fkp3.js} +23 -12
- package/dist/assets/{VariablesView-CvBjaoev.js → VariablesView-ZO4oTir0.js} +9 -9
- package/dist/assets/{WorkerView-cFswonAF.js → WorkerView-DjYjCGEz.js} +6 -6
- package/dist/assets/{WorkflowActivator-mjgVWRcp.js → WorkflowActivator-CFrLXTxM.js} +13 -389
- package/dist/assets/WorkflowActivator-jI4sUqXL.css +391 -0
- package/dist/assets/{WorkflowExecutionsInfoAccordion-CZwCkYjJ.js → WorkflowExecutionsInfoAccordion-C8Tc4Mno.js} +3 -3
- package/dist/assets/{WorkflowExecutionsLandingPage-C5AsTUva.js → WorkflowExecutionsLandingPage-BiuuJ3ll.js} +3 -3
- package/dist/assets/{WorkflowExecutionsPreview-1HvxolBT.js → WorkflowExecutionsPreview-CYoDxL8E.js} +4 -4
- package/dist/assets/{WorkflowExecutionsView-YiB3L6cC.js → WorkflowExecutionsView-C78loZuv.js} +8 -8
- package/dist/assets/{WorkflowHistory-DMhEstvs.js → WorkflowHistory-CqoFF8_8.js} +4 -4
- package/dist/assets/{WorkflowOnboardingView-Dnm-Rnp-.js → WorkflowOnboardingView-dpvpoau1.js} +1 -1
- package/dist/assets/{WorkflowPreview-Dy8KQCnA.js → WorkflowPreview-83_iB67I.js} +1 -1
- package/dist/assets/{WorkflowsView-Cv689d2r.js → WorkflowsView-Bhr5Vfcw.js} +24 -23
- package/dist/assets/{WorkflowsView-eYGsq80b.css → WorkflowsView-BuvoAeDm.css} +18 -17
- package/dist/assets/{canvas-DBxg3FGB.js → canvas-Kg89rGSt.js} +1 -1
- package/dist/assets/{chartjs.utils-ziIypBRK.js → chartjs.utils-6nSeP00a.js} +2 -2
- package/dist/assets/{core-BQX74yIJ.js → core-BiQ8TPaF.js} +9 -8
- package/dist/assets/dataStore.store-Bru4R38e.js +268 -0
- package/dist/assets/{en-CdefH_p-.js → en-CZDXhi4W.js} +50 -27
- package/dist/assets/{global-link-actions-BgqtAMjH.js → global-link-actions-BfwrTt1h.js} +1 -1
- package/dist/assets/{index-BFyMw9-0.css → index-Am8RmnT4.css} +233 -241
- package/dist/assets/{index-D4wn1X5v.js → index-CZxO9Y7t.js} +1 -1
- package/dist/assets/{index-eiGMGof4.js → index-V25MIkzH.js} +6310 -5682
- package/dist/assets/{pickBy-D-ZGPPK6.js → pickBy-CInoejW7.js} +1 -1
- package/dist/assets/{polyfills-eMEFRc79.js → polyfills-BhZQ1FDI.js} +44 -0
- package/dist/assets/{readyToRunWorkflows.store-BAFBPhWS.js → readyToRunWorkflows.store-D8qADh9A.js} +1 -1
- package/dist/assets/{templateActions-BI7pkM1w.js → templateActions-CytValxU.js} +1 -1
- package/dist/assets/{typescript.worker-ku8s_Oaf.js → typescript.worker-BcoVIdo9.js} +8 -8
- package/dist/assets/{useBeforeUnload-BjekgFaf.js → useBeforeUnload-yQFY1z_s.js} +1 -1
- package/dist/assets/{useExecutionDebugging-B38snoEK.js → useExecutionDebugging-DiCw9NpL.js} +1 -1
- package/dist/assets/{useImportCurlCommand-Cm4bDewX.js → useImportCurlCommand-UhCp_Hxn.js} +44 -37
- package/dist/assets/{useProjectPages-ALKmwRBA.js → useProjectPages-DNuz01tw.js} +1 -1
- package/dist/assets/{usePushConnection-CEXhOxd5.js → usePushConnection-BOddel3U.js} +3 -3
- package/dist/assets/{useWorkflowActivate-B8jSp35O.js → useWorkflowActivate-DKZ9PzgK.js} +1 -1
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-BNLFCXfs.js +0 -4
- package/dist/assets/dataStore.store-BPclFpMe.js +0 -98
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { d as defineComponent, r as ref, x as computed, e as createBlock, f as createCommentVNode, g as openBlock, l as unref, y as N8nPopoverReka, w as withCtx, j as createBaseVNode, n as normalizeClass, i as createVNode, h as createElementBlock, m as N8nHeading, k as createTextVNode, t as toDisplayString, z as N8nCallout, F as Fragment, A as renderList, B as withModifiers, N as N8nIcon, p as N8nText, C as N8nLink, D as useI18n, _ as _export_sfc, E as ElDropdown, G as N8nAvatar, H as ElDropdownMenu, I as ElDropdownItem, J as N8nUserInfo, K as mergeProps, L as MAIN_HEADER_TABS, O as N8nRadioButtons, P as
|
|
2
|
-
import { _ as __unplugin_components_0, W as WorkflowActivator } from "./WorkflowActivator-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { T as Tag } from "./Tag-
|
|
6
|
-
import { u as usePushConnection } from "./usePushConnection-
|
|
7
|
-
import "./
|
|
8
|
-
import "./
|
|
9
|
-
import "./
|
|
1
|
+
import { d as defineComponent, r as ref, x as computed, e as createBlock, f as createCommentVNode, g as openBlock, l as unref, y as N8nPopoverReka, w as withCtx, j as createBaseVNode, n as normalizeClass, i as createVNode, h as createElementBlock, m as N8nHeading, k as createTextVNode, t as toDisplayString, z as N8nCallout, F as Fragment, A as renderList, B as withModifiers, N as N8nIcon, p as N8nText, C as N8nLink, D as useI18n, _ as _export_sfc, E as ElDropdown, G as N8nAvatar, H as ElDropdownMenu, I as ElDropdownItem, J as N8nUserInfo, K as mergeProps, L as MAIN_HEADER_TABS, O as N8nRadioButtons, P as useDebounce, Q as useUIStore, R as BREAKPOINT_SM, S as BREAKPOINT_XL, T as BREAKPOINT_LG, U as BREAKPOINT_MD, o as onMounted, W as onBeforeUnmount, X as renderSlot, Y as nextTick, Z as getBannerRowHeight, $ as defineStore, a0 as usePushConnectionStore, a1 as useWorkflowsStore, u as useUsersStore, a2 as useRoute, a3 as PLACEHOLDER_EMPTY_WORKFLOW_ID, a4 as STORES, a5 as TIME, a6 as useDocumentVisibility, a7 as watch, V as VIEWS, a8 as resolveComponent, a9 as Tooltip, aa as _sfc_main$d, c as useI18n$1, ab as I18nT, b as useRouter, ac as useEvaluationStore, ad as useNodeTypesStore, ae as useWorkflowSettingsCache, af as useSourceControlStore, ag as WORKFLOW_ACTIVE_MODAL_KEY, ah as ERROR_WORKFLOW_DOCS_URL, ai as EVALUATIONS_DOCS_URL, aj as TIME_SAVED_DOCS_URL, ak as WORKFLOW_SETTINGS_MODAL_KEY, al as useTelemetry, am as useMessage, an as MODAL_CONFIRM, ao as debounce, ap as normalizeStyle, aq as createEventBus, ar as useTagsStore, as as useCssModule, at as useRootStore, v as useSettingsStore, au as useProjectsStore, av as useFoldersStore, aw as useNpsSurveyStore, a as useToast, ax as useDocumentTitle, ay as useWorkflowSaving, az as useWorkflowHelpers, aA as usePageRedirectionHelper, aB as getResourcePermissions, aC as WORKFLOW_MENU_ACTIONS, aD as hasPermission, aE as EnterpriseEditionFeature, aF as ProjectTypes, aG as useTemplateRef, aH as InlineRename, aI as MAX_WORKFLOW_NAME_LENGTH, aJ as _sfc_main$e, aK as N8nBadge, q as N8nButton, aL as SaveButton, aM as N8nActionDropdown, aN as WORKFLOW_SHARE_MODAL_KEY, aO as nodeViewEventBus, aP as IMPORT_WORKFLOW_URL_MODAL_KEY, aQ as FileSaver_minExports, aR as DUPLICATE_MODAL_KEY, aS as ResourceType, aT as PROJECT_MOVE_RESOURCE_MODAL, aU as __vitePreload, aV as hyphenate, aW as h, aX as hasOwn, aY as useNDVStore, aZ as useExecutionsStore, a_ as useLocalStorage, a$ as LOCAL_STORAGE_HIDE_GITHUB_STAR_BUTTON, b0 as STICKY_NODE_TYPE, b1 as onBeforeMount, b2 as withDirectives, b3 as vShow, b4 as N8N_MAIN_GITHUB_REPO_URL } from "./index-V25MIkzH.js";
|
|
2
|
+
import { _ as __unplugin_components_0, W as WorkflowActivator } from "./WorkflowActivator-CFrLXTxM.js";
|
|
3
|
+
import { u as useBeforeUnload } from "./useBeforeUnload-yQFY1z_s.js";
|
|
4
|
+
import { _ as _sfc_main$f } from "./PushConnectionTracker.vue_vue_type_script_setup_true_lang-Cl5RoRJK.js";
|
|
5
|
+
import { T as Tag } from "./Tag-BZXOdJeY.js";
|
|
6
|
+
import { u as usePushConnection } from "./usePushConnection-BOddel3U.js";
|
|
7
|
+
import "./ProjectBreadcrumb-l5PnV6Jp.js";
|
|
8
|
+
import "./useWorkflowActivate-DKZ9PzgK.js";
|
|
9
|
+
import "./global-link-actions-BfwrTt1h.js";
|
|
10
|
+
import "./readyToRunWorkflows.store-D8qADh9A.js";
|
|
10
11
|
const _hoisted_1$4 = ["data-action-id", "onClick"];
|
|
11
12
|
const _hoisted_2$3 = { key: 0 };
|
|
12
13
|
const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
@@ -393,271 +394,6 @@ const cssModules$3 = {
|
|
|
393
394
|
};
|
|
394
395
|
const TabBar = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$3]]);
|
|
395
396
|
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
396
|
-
__name: "IntersectionObserver",
|
|
397
|
-
props: {
|
|
398
|
-
threshold: { default: 0 },
|
|
399
|
-
enabled: { type: Boolean, default: false },
|
|
400
|
-
eventBus: {}
|
|
401
|
-
},
|
|
402
|
-
emits: ["observed"],
|
|
403
|
-
setup(__props, { emit: __emit }) {
|
|
404
|
-
const props = __props;
|
|
405
|
-
const emit = __emit;
|
|
406
|
-
const observer = ref(null);
|
|
407
|
-
const root = ref(null);
|
|
408
|
-
onBeforeUnmount(() => {
|
|
409
|
-
if (props.enabled && observer.value) {
|
|
410
|
-
observer.value.disconnect();
|
|
411
|
-
}
|
|
412
|
-
});
|
|
413
|
-
onMounted(() => {
|
|
414
|
-
if (!props.enabled) {
|
|
415
|
-
return;
|
|
416
|
-
}
|
|
417
|
-
const options = {
|
|
418
|
-
root: root.value,
|
|
419
|
-
rootMargin: "0px",
|
|
420
|
-
threshold: props.threshold
|
|
421
|
-
};
|
|
422
|
-
const intersectionObserver = new IntersectionObserver((entries) => {
|
|
423
|
-
entries.forEach(({ target, isIntersecting }) => {
|
|
424
|
-
emit("observed", {
|
|
425
|
-
el: target,
|
|
426
|
-
isIntersecting
|
|
427
|
-
});
|
|
428
|
-
});
|
|
429
|
-
}, options);
|
|
430
|
-
observer.value = intersectionObserver;
|
|
431
|
-
props.eventBus.on("observe", (observed) => {
|
|
432
|
-
if (observed) {
|
|
433
|
-
intersectionObserver.observe(observed);
|
|
434
|
-
}
|
|
435
|
-
});
|
|
436
|
-
props.eventBus.on("unobserve", (observed) => {
|
|
437
|
-
intersectionObserver.unobserve(observed);
|
|
438
|
-
});
|
|
439
|
-
});
|
|
440
|
-
return (_ctx, _cache) => {
|
|
441
|
-
return openBlock(), createElementBlock("div", {
|
|
442
|
-
ref_key: "root",
|
|
443
|
-
ref: root
|
|
444
|
-
}, [
|
|
445
|
-
renderSlot(_ctx.$slots, "default")
|
|
446
|
-
], 512);
|
|
447
|
-
};
|
|
448
|
-
}
|
|
449
|
-
});
|
|
450
|
-
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
451
|
-
__name: "IntersectionObserved",
|
|
452
|
-
props: {
|
|
453
|
-
enabled: { type: Boolean, default: false },
|
|
454
|
-
eventBus: {}
|
|
455
|
-
},
|
|
456
|
-
setup(__props) {
|
|
457
|
-
const props = __props;
|
|
458
|
-
const observed = ref(null);
|
|
459
|
-
onMounted(async () => {
|
|
460
|
-
if (!props.enabled) {
|
|
461
|
-
return;
|
|
462
|
-
}
|
|
463
|
-
await nextTick();
|
|
464
|
-
props.eventBus.emit("observe", observed.value);
|
|
465
|
-
});
|
|
466
|
-
onBeforeUnmount(() => {
|
|
467
|
-
if (props.enabled) {
|
|
468
|
-
props.eventBus.emit("unobserve", observed.value);
|
|
469
|
-
}
|
|
470
|
-
});
|
|
471
|
-
return (_ctx, _cache) => {
|
|
472
|
-
return openBlock(), createElementBlock("span", {
|
|
473
|
-
ref_key: "observed",
|
|
474
|
-
ref: observed
|
|
475
|
-
}, [
|
|
476
|
-
renderSlot(_ctx.$slots, "default")
|
|
477
|
-
], 512);
|
|
478
|
-
};
|
|
479
|
-
}
|
|
480
|
-
});
|
|
481
|
-
const _hoisted_1$2 = { class: "tags" };
|
|
482
|
-
const _hoisted_2$2 = ["onClick"];
|
|
483
|
-
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
484
|
-
__name: "TagsContainer",
|
|
485
|
-
props: {
|
|
486
|
-
tagIds: {},
|
|
487
|
-
tagsById: {},
|
|
488
|
-
limit: { default: 20 },
|
|
489
|
-
clickable: { type: Boolean, default: false },
|
|
490
|
-
responsive: { type: Boolean, default: false },
|
|
491
|
-
hoverable: { type: Boolean, default: false }
|
|
492
|
-
},
|
|
493
|
-
emits: ["click"],
|
|
494
|
-
setup(__props, { emit: __emit }) {
|
|
495
|
-
const props = __props;
|
|
496
|
-
const emit = __emit;
|
|
497
|
-
const maxWidth = ref(320);
|
|
498
|
-
const intersectionEventBus = createEventBus();
|
|
499
|
-
const visibility = ref({});
|
|
500
|
-
const tagsContainer = ref();
|
|
501
|
-
const style = computed(() => ({
|
|
502
|
-
"max-width": `${maxWidth.value}px`
|
|
503
|
-
}));
|
|
504
|
-
const tags = computed(() => {
|
|
505
|
-
const allTags = props.tagIds.map((tagId) => props.tagsById[tagId]).filter(Boolean);
|
|
506
|
-
let toDisplay = props.limit ? allTags.slice(0, props.limit) : allTags;
|
|
507
|
-
toDisplay = toDisplay.map((tag) => ({
|
|
508
|
-
...tag,
|
|
509
|
-
hidden: props.responsive && !visibility.value[tag.id]
|
|
510
|
-
}));
|
|
511
|
-
let visibleCount = toDisplay.length;
|
|
512
|
-
if (props.responsive) {
|
|
513
|
-
visibleCount = Object.values(visibility.value).reduce(
|
|
514
|
-
(accu, val) => val ? accu + 1 : accu,
|
|
515
|
-
0
|
|
516
|
-
);
|
|
517
|
-
}
|
|
518
|
-
if (visibleCount < allTags.length) {
|
|
519
|
-
const hidden = allTags.slice(visibleCount);
|
|
520
|
-
const hiddenTitle = hidden.reduce(
|
|
521
|
-
(accu, tag) => accu ? `${accu}, ${tag.name}` : tag.name,
|
|
522
|
-
""
|
|
523
|
-
);
|
|
524
|
-
const countTag = {
|
|
525
|
-
id: "count",
|
|
526
|
-
name: `+${hidden.length}`,
|
|
527
|
-
title: hiddenTitle,
|
|
528
|
-
isCount: true
|
|
529
|
-
};
|
|
530
|
-
toDisplay.splice(visibleCount, 0, countTag);
|
|
531
|
-
}
|
|
532
|
-
return toDisplay;
|
|
533
|
-
});
|
|
534
|
-
const setMaxWidth = () => {
|
|
535
|
-
const container2 = tagsContainer.value?.$el;
|
|
536
|
-
const parent = container2?.parentNode;
|
|
537
|
-
if (parent) {
|
|
538
|
-
maxWidth.value = 0;
|
|
539
|
-
void nextTick(() => {
|
|
540
|
-
maxWidth.value = parent.clientWidth;
|
|
541
|
-
});
|
|
542
|
-
}
|
|
543
|
-
};
|
|
544
|
-
const debouncedSetMaxWidth = debounce(setMaxWidth, 100);
|
|
545
|
-
const onObserved = ({ el, isIntersecting }) => {
|
|
546
|
-
if (el.dataset.id) {
|
|
547
|
-
visibility.value = { ...visibility.value, [el.dataset.id]: isIntersecting };
|
|
548
|
-
}
|
|
549
|
-
};
|
|
550
|
-
const onClick = (e, tag) => {
|
|
551
|
-
if (props.clickable) {
|
|
552
|
-
e.stopPropagation();
|
|
553
|
-
}
|
|
554
|
-
if (!tag.hidden) {
|
|
555
|
-
emit("click", tag.id);
|
|
556
|
-
}
|
|
557
|
-
};
|
|
558
|
-
onMounted(() => {
|
|
559
|
-
setMaxWidth();
|
|
560
|
-
window.addEventListener("resize", debouncedSetMaxWidth);
|
|
561
|
-
});
|
|
562
|
-
onBeforeUnmount(() => {
|
|
563
|
-
window.removeEventListener("resize", debouncedSetMaxWidth);
|
|
564
|
-
});
|
|
565
|
-
return (_ctx, _cache) => {
|
|
566
|
-
const _component_el_tag = resolveComponent("el-tag");
|
|
567
|
-
return openBlock(), createBlock(_sfc_main$9, {
|
|
568
|
-
ref_key: "tagsContainer",
|
|
569
|
-
ref: tagsContainer,
|
|
570
|
-
threshold: 1,
|
|
571
|
-
class: "tags-container",
|
|
572
|
-
style: normalizeStyle(style.value),
|
|
573
|
-
enabled: _ctx.responsive,
|
|
574
|
-
"event-bus": unref(intersectionEventBus),
|
|
575
|
-
onObserved
|
|
576
|
-
}, {
|
|
577
|
-
default: withCtx(() => [
|
|
578
|
-
createBaseVNode("span", _hoisted_1$2, [
|
|
579
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(tags.value, (tag) => {
|
|
580
|
-
return openBlock(), createElementBlock("span", {
|
|
581
|
-
key: tag.id,
|
|
582
|
-
class: normalizeClass({ clickable: !tag.hidden }),
|
|
583
|
-
onClick: (e) => onClick(e, tag)
|
|
584
|
-
}, [
|
|
585
|
-
tag.isCount ? (openBlock(), createBlock(_component_el_tag, {
|
|
586
|
-
key: 0,
|
|
587
|
-
title: tag.title,
|
|
588
|
-
type: "info",
|
|
589
|
-
size: "small",
|
|
590
|
-
class: "count-container",
|
|
591
|
-
"disable-transitions": true
|
|
592
|
-
}, {
|
|
593
|
-
default: withCtx(() => [
|
|
594
|
-
createTextVNode(toDisplayString(tag.name), 1)
|
|
595
|
-
]),
|
|
596
|
-
_: 2
|
|
597
|
-
}, 1032, ["title"])) : (openBlock(), createBlock(_sfc_main$8, {
|
|
598
|
-
key: 1,
|
|
599
|
-
class: normalizeClass({ hideTag: tag.hidden }),
|
|
600
|
-
"data-id": tag.id,
|
|
601
|
-
enabled: _ctx.responsive,
|
|
602
|
-
"event-bus": unref(intersectionEventBus)
|
|
603
|
-
}, {
|
|
604
|
-
default: withCtx(() => [
|
|
605
|
-
createVNode(_component_el_tag, {
|
|
606
|
-
title: tag.name,
|
|
607
|
-
type: "info",
|
|
608
|
-
size: "mini",
|
|
609
|
-
class: normalizeClass({ hoverable: _ctx.hoverable }),
|
|
610
|
-
"disable-transitions": true
|
|
611
|
-
}, {
|
|
612
|
-
default: withCtx(() => [
|
|
613
|
-
createTextVNode(toDisplayString(tag.name), 1)
|
|
614
|
-
]),
|
|
615
|
-
_: 2
|
|
616
|
-
}, 1032, ["title", "class"])
|
|
617
|
-
]),
|
|
618
|
-
_: 2
|
|
619
|
-
}, 1032, ["class", "data-id", "enabled", "event-bus"]))
|
|
620
|
-
], 10, _hoisted_2$2);
|
|
621
|
-
}), 128))
|
|
622
|
-
])
|
|
623
|
-
]),
|
|
624
|
-
_: 1
|
|
625
|
-
}, 8, ["style", "enabled", "event-bus"]);
|
|
626
|
-
};
|
|
627
|
-
}
|
|
628
|
-
});
|
|
629
|
-
const TagsContainer = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-6bab2764"]]);
|
|
630
|
-
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
631
|
-
__name: "WorkflowTagsContainer",
|
|
632
|
-
props: {
|
|
633
|
-
tagIds: {},
|
|
634
|
-
limit: {},
|
|
635
|
-
clickable: { type: Boolean },
|
|
636
|
-
responsive: { type: Boolean },
|
|
637
|
-
hoverable: { type: Boolean }
|
|
638
|
-
},
|
|
639
|
-
emits: ["click"],
|
|
640
|
-
setup(__props, { emit: __emit }) {
|
|
641
|
-
const emit = __emit;
|
|
642
|
-
const annotationTagsStore = useTagsStore();
|
|
643
|
-
const tagsById = computed(() => annotationTagsStore.tagsById);
|
|
644
|
-
function onClick(tagId) {
|
|
645
|
-
emit("click", tagId);
|
|
646
|
-
}
|
|
647
|
-
return (_ctx, _cache) => {
|
|
648
|
-
return openBlock(), createBlock(TagsContainer, {
|
|
649
|
-
"tag-ids": _ctx.tagIds,
|
|
650
|
-
"tags-by-id": tagsById.value,
|
|
651
|
-
limit: _ctx.limit,
|
|
652
|
-
clickable: _ctx.clickable,
|
|
653
|
-
responsive: _ctx.responsive,
|
|
654
|
-
hoverable: _ctx.hoverable,
|
|
655
|
-
onClick
|
|
656
|
-
}, null, 8, ["tag-ids", "tags-by-id", "limit", "clickable", "responsive", "hoverable"]);
|
|
657
|
-
};
|
|
658
|
-
}
|
|
659
|
-
});
|
|
660
|
-
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
661
397
|
__name: "BreakpointsObserver",
|
|
662
398
|
props: {
|
|
663
399
|
valueXS: {},
|
|
@@ -730,71 +466,6 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
730
466
|
};
|
|
731
467
|
}
|
|
732
468
|
});
|
|
733
|
-
const _hoisted_1$1 = { key: 0 };
|
|
734
|
-
const _hoisted_2$1 = { key: 1 };
|
|
735
|
-
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
736
|
-
__name: "WorkflowHistoryButton",
|
|
737
|
-
props: {
|
|
738
|
-
workflowId: {},
|
|
739
|
-
isNewWorkflow: { type: Boolean },
|
|
740
|
-
isFeatureEnabled: { type: Boolean }
|
|
741
|
-
},
|
|
742
|
-
emits: ["upgrade"],
|
|
743
|
-
setup(__props, { emit: __emit }) {
|
|
744
|
-
const locale = useI18n$1();
|
|
745
|
-
const props = __props;
|
|
746
|
-
const emit = __emit;
|
|
747
|
-
const workflowHistoryRoute = computed(() => ({
|
|
748
|
-
name: VIEWS.WORKFLOW_HISTORY,
|
|
749
|
-
params: {
|
|
750
|
-
workflowId: props.workflowId
|
|
751
|
-
}
|
|
752
|
-
}));
|
|
753
|
-
return (_ctx, _cache) => {
|
|
754
|
-
const _component_N8nIconButton = _sfc_main$d;
|
|
755
|
-
const _component_RouterLink = resolveComponent("RouterLink");
|
|
756
|
-
const _component_N8nLink = N8nLink;
|
|
757
|
-
const _component_N8nTooltip = N8nTooltip;
|
|
758
|
-
return openBlock(), createBlock(_component_N8nTooltip, { placement: "bottom" }, {
|
|
759
|
-
content: withCtx(() => [
|
|
760
|
-
_ctx.isFeatureEnabled && _ctx.isNewWorkflow ? (openBlock(), createElementBlock("span", _hoisted_1$1, 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(unref(I18nT), {
|
|
761
|
-
key: 2,
|
|
762
|
-
keypath: "workflowHistory.button.tooltip.disabled",
|
|
763
|
-
scope: "global"
|
|
764
|
-
}, {
|
|
765
|
-
link: withCtx(() => [
|
|
766
|
-
createVNode(_component_N8nLink, {
|
|
767
|
-
size: "small",
|
|
768
|
-
onClick: _cache[0] || (_cache[0] = ($event) => emit("upgrade"))
|
|
769
|
-
}, {
|
|
770
|
-
default: withCtx(() => [
|
|
771
|
-
createTextVNode(toDisplayString(unref(locale).baseText("workflowHistory.button.tooltip.disabled.link")), 1)
|
|
772
|
-
]),
|
|
773
|
-
_: 1
|
|
774
|
-
})
|
|
775
|
-
]),
|
|
776
|
-
_: 1
|
|
777
|
-
}))
|
|
778
|
-
]),
|
|
779
|
-
default: withCtx(() => [
|
|
780
|
-
createVNode(_component_RouterLink, { to: workflowHistoryRoute.value }, {
|
|
781
|
-
default: withCtx(() => [
|
|
782
|
-
createVNode(_component_N8nIconButton, {
|
|
783
|
-
disabled: _ctx.isNewWorkflow || !_ctx.isFeatureEnabled,
|
|
784
|
-
"data-test-id": "workflow-history-button",
|
|
785
|
-
type: "highlight",
|
|
786
|
-
icon: "history",
|
|
787
|
-
size: "medium"
|
|
788
|
-
}, null, 8, ["disabled"])
|
|
789
|
-
]),
|
|
790
|
-
_: 1
|
|
791
|
-
}, 8, ["to"])
|
|
792
|
-
]),
|
|
793
|
-
_: 1
|
|
794
|
-
});
|
|
795
|
-
};
|
|
796
|
-
}
|
|
797
|
-
});
|
|
798
469
|
const HEARTBEAT_INTERVAL = 5 * TIME.MINUTE;
|
|
799
470
|
const useCollaborationStore = defineStore(STORES.COLLABORATION, () => {
|
|
800
471
|
const pushStore = usePushConnectionStore();
|
|
@@ -870,7 +541,7 @@ const useCollaborationStore = defineStore(STORES.COLLABORATION, () => {
|
|
|
870
541
|
stopHeartbeat
|
|
871
542
|
};
|
|
872
543
|
});
|
|
873
|
-
const _sfc_main$
|
|
544
|
+
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
874
545
|
__name: "CollaborationPane",
|
|
875
546
|
setup(__props) {
|
|
876
547
|
const collaborationStore = useCollaborationStore();
|
|
@@ -913,15 +584,80 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
913
584
|
};
|
|
914
585
|
}
|
|
915
586
|
});
|
|
916
|
-
const container$2 = "_container_ame1i_123";
|
|
917
|
-
const style0$1 = {
|
|
918
|
-
container: container$2
|
|
919
|
-
};
|
|
920
|
-
const cssModules$2 = {
|
|
921
|
-
"$style": style0$1
|
|
922
|
-
};
|
|
923
|
-
const CollaborationPane = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
924
|
-
const
|
|
587
|
+
const container$2 = "_container_ame1i_123";
|
|
588
|
+
const style0$1 = {
|
|
589
|
+
container: container$2
|
|
590
|
+
};
|
|
591
|
+
const cssModules$2 = {
|
|
592
|
+
"$style": style0$1
|
|
593
|
+
};
|
|
594
|
+
const CollaborationPane = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$2]]);
|
|
595
|
+
const _hoisted_1$2 = { key: 0 };
|
|
596
|
+
const _hoisted_2$2 = { key: 1 };
|
|
597
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
598
|
+
__name: "WorkflowHistoryButton",
|
|
599
|
+
props: {
|
|
600
|
+
workflowId: {},
|
|
601
|
+
isNewWorkflow: { type: Boolean },
|
|
602
|
+
isFeatureEnabled: { type: Boolean }
|
|
603
|
+
},
|
|
604
|
+
emits: ["upgrade"],
|
|
605
|
+
setup(__props, { emit: __emit }) {
|
|
606
|
+
const locale = useI18n$1();
|
|
607
|
+
const props = __props;
|
|
608
|
+
const emit = __emit;
|
|
609
|
+
const workflowHistoryRoute = computed(() => ({
|
|
610
|
+
name: VIEWS.WORKFLOW_HISTORY,
|
|
611
|
+
params: {
|
|
612
|
+
workflowId: props.workflowId
|
|
613
|
+
}
|
|
614
|
+
}));
|
|
615
|
+
return (_ctx, _cache) => {
|
|
616
|
+
const _component_N8nIconButton = _sfc_main$d;
|
|
617
|
+
const _component_RouterLink = resolveComponent("RouterLink");
|
|
618
|
+
const _component_N8nLink = N8nLink;
|
|
619
|
+
const _component_N8nTooltip = Tooltip;
|
|
620
|
+
return openBlock(), createBlock(_component_N8nTooltip, { placement: "bottom" }, {
|
|
621
|
+
content: withCtx(() => [
|
|
622
|
+
_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$2, toDisplayString(unref(locale).baseText("workflowHistory.button.tooltip.enabled")), 1)) : (openBlock(), createBlock(unref(I18nT), {
|
|
623
|
+
key: 2,
|
|
624
|
+
keypath: "workflowHistory.button.tooltip.disabled",
|
|
625
|
+
scope: "global"
|
|
626
|
+
}, {
|
|
627
|
+
link: withCtx(() => [
|
|
628
|
+
createVNode(_component_N8nLink, {
|
|
629
|
+
size: "small",
|
|
630
|
+
onClick: _cache[0] || (_cache[0] = ($event) => emit("upgrade"))
|
|
631
|
+
}, {
|
|
632
|
+
default: withCtx(() => [
|
|
633
|
+
createTextVNode(toDisplayString(unref(locale).baseText("workflowHistory.button.tooltip.disabled.link")), 1)
|
|
634
|
+
]),
|
|
635
|
+
_: 1
|
|
636
|
+
})
|
|
637
|
+
]),
|
|
638
|
+
_: 1
|
|
639
|
+
}))
|
|
640
|
+
]),
|
|
641
|
+
default: withCtx(() => [
|
|
642
|
+
createVNode(_component_RouterLink, { to: workflowHistoryRoute.value }, {
|
|
643
|
+
default: withCtx(() => [
|
|
644
|
+
createVNode(_component_N8nIconButton, {
|
|
645
|
+
disabled: _ctx.isNewWorkflow || !_ctx.isFeatureEnabled,
|
|
646
|
+
"data-test-id": "workflow-history-button",
|
|
647
|
+
type: "highlight",
|
|
648
|
+
icon: "history",
|
|
649
|
+
size: "medium"
|
|
650
|
+
}, null, 8, ["disabled"])
|
|
651
|
+
]),
|
|
652
|
+
_: 1
|
|
653
|
+
}, 8, ["to"])
|
|
654
|
+
]),
|
|
655
|
+
_: 1
|
|
656
|
+
});
|
|
657
|
+
};
|
|
658
|
+
}
|
|
659
|
+
});
|
|
660
|
+
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
925
661
|
__name: "WorkflowProductionChecklist",
|
|
926
662
|
props: {
|
|
927
663
|
workflow: {}
|
|
@@ -985,106 +721,371 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
985
721
|
completed: hasEvaluationSetOutputsNode.value
|
|
986
722
|
});
|
|
987
723
|
}
|
|
988
|
-
if (!suggestedActionSettings.timeSaved?.ignored) {
|
|
989
|
-
actions.push({
|
|
990
|
-
id: "timeSaved",
|
|
991
|
-
title: i18n.baseText("workflowProductionChecklist.timeSaved.title"),
|
|
992
|
-
description: i18n.baseText("workflowProductionChecklist.timeSaved.description"),
|
|
993
|
-
moreInfoLink: TIME_SAVED_DOCS_URL,
|
|
994
|
-
completed: hasTimeSaved.value
|
|
995
|
-
});
|
|
724
|
+
if (!suggestedActionSettings.timeSaved?.ignored) {
|
|
725
|
+
actions.push({
|
|
726
|
+
id: "timeSaved",
|
|
727
|
+
title: i18n.baseText("workflowProductionChecklist.timeSaved.title"),
|
|
728
|
+
description: i18n.baseText("workflowProductionChecklist.timeSaved.description"),
|
|
729
|
+
moreInfoLink: TIME_SAVED_DOCS_URL,
|
|
730
|
+
completed: hasTimeSaved.value
|
|
731
|
+
});
|
|
732
|
+
}
|
|
733
|
+
return actions;
|
|
734
|
+
});
|
|
735
|
+
async function loadWorkflowSettings() {
|
|
736
|
+
if (props.workflow.id) {
|
|
737
|
+
cachedSettings.value = await workflowsCache.getMergedWorkflowSettings(props.workflow.id);
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
async function handleActionClick(actionId) {
|
|
741
|
+
if (actionId === "evaluations") {
|
|
742
|
+
await router.push({
|
|
743
|
+
name: VIEWS.EVALUATION_EDIT,
|
|
744
|
+
params: { name: props.workflow.id }
|
|
745
|
+
});
|
|
746
|
+
} else if (actionId === "errorWorkflow" || actionId === "timeSaved") {
|
|
747
|
+
uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);
|
|
748
|
+
}
|
|
749
|
+
isPopoverOpen.value = false;
|
|
750
|
+
}
|
|
751
|
+
function isValidAction(action) {
|
|
752
|
+
return ["evaluations", "errorWorkflow", "timeSaved"].includes(action);
|
|
753
|
+
}
|
|
754
|
+
async function handleIgnoreClick(actionId) {
|
|
755
|
+
if (!isValidAction(actionId)) {
|
|
756
|
+
return;
|
|
757
|
+
}
|
|
758
|
+
await workflowsCache.ignoreSuggestedAction(props.workflow.id, actionId);
|
|
759
|
+
await loadWorkflowSettings();
|
|
760
|
+
telemetry.track("user clicked ignore suggested action", {
|
|
761
|
+
actionId
|
|
762
|
+
});
|
|
763
|
+
}
|
|
764
|
+
async function handleIgnoreAll() {
|
|
765
|
+
const ignoreAllConfirmed = await message.confirm(
|
|
766
|
+
i18n.baseText("workflowProductionChecklist.ignoreAllConfirmation.description"),
|
|
767
|
+
i18n.baseText("workflowProductionChecklist.ignoreAllConfirmation.title"),
|
|
768
|
+
{
|
|
769
|
+
confirmButtonText: i18n.baseText("workflowProductionChecklist.ignoreAllConfirmation.confirm")
|
|
770
|
+
}
|
|
771
|
+
);
|
|
772
|
+
if (ignoreAllConfirmed === MODAL_CONFIRM) {
|
|
773
|
+
await workflowsCache.ignoreAllSuggestedActionsForAllWorkflows(
|
|
774
|
+
availableActions.value.map((action) => action.id)
|
|
775
|
+
);
|
|
776
|
+
await loadWorkflowSettings();
|
|
777
|
+
telemetry.track("user clicked ignore suggested actions for all workflows");
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
function openSuggestedActions() {
|
|
781
|
+
isPopoverOpen.value = true;
|
|
782
|
+
}
|
|
783
|
+
function onPopoverOpened() {
|
|
784
|
+
telemetry.track("user opened suggested actions checklist");
|
|
785
|
+
}
|
|
786
|
+
function handlePopoverOpenChange(open) {
|
|
787
|
+
if (open) {
|
|
788
|
+
isPopoverOpen.value = true;
|
|
789
|
+
onPopoverOpened();
|
|
790
|
+
} else if (!isActivationModalOpen.value) {
|
|
791
|
+
isPopoverOpen.value = false;
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
watch(
|
|
795
|
+
() => props.workflow.active,
|
|
796
|
+
async (isActive, wasActive) => {
|
|
797
|
+
if (isActive && !wasActive) {
|
|
798
|
+
if (!cachedSettings.value?.firstActivatedAt) {
|
|
799
|
+
setTimeout(() => {
|
|
800
|
+
openSuggestedActions();
|
|
801
|
+
}, 0);
|
|
802
|
+
}
|
|
803
|
+
await workflowsCache.updateFirstActivatedAt(props.workflow.id);
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
);
|
|
807
|
+
onMounted(async () => {
|
|
808
|
+
await loadWorkflowSettings();
|
|
809
|
+
});
|
|
810
|
+
return (_ctx, _cache) => {
|
|
811
|
+
return availableActions.value.length > 0 ? (openBlock(), createBlock(unref(N8nSuggestedActions), {
|
|
812
|
+
key: 0,
|
|
813
|
+
open: isPopoverOpen.value,
|
|
814
|
+
title: unref(i18n).baseText("workflowProductionChecklist.title"),
|
|
815
|
+
actions: availableActions.value,
|
|
816
|
+
"ignore-all-label": unref(i18n).baseText("workflowProductionChecklist.turnOffWorkflowSuggestions"),
|
|
817
|
+
notice: isProtectedEnvironment.value ? unref(i18n).baseText("workflowProductionChecklist.readOnlyNotice") : "",
|
|
818
|
+
"popover-alignment": "end",
|
|
819
|
+
onActionClick: handleActionClick,
|
|
820
|
+
onIgnoreClick: handleIgnoreClick,
|
|
821
|
+
onIgnoreAll: handleIgnoreAll,
|
|
822
|
+
"onUpdate:open": handlePopoverOpenChange
|
|
823
|
+
}, null, 8, ["open", "title", "actions", "ignore-all-label", "notice"])) : createCommentVNode("", true);
|
|
824
|
+
};
|
|
825
|
+
}
|
|
826
|
+
});
|
|
827
|
+
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
828
|
+
__name: "IntersectionObserver",
|
|
829
|
+
props: {
|
|
830
|
+
threshold: { default: 0 },
|
|
831
|
+
enabled: { type: Boolean, default: false },
|
|
832
|
+
eventBus: {}
|
|
833
|
+
},
|
|
834
|
+
emits: ["observed"],
|
|
835
|
+
setup(__props, { emit: __emit }) {
|
|
836
|
+
const props = __props;
|
|
837
|
+
const emit = __emit;
|
|
838
|
+
const observer = ref(null);
|
|
839
|
+
const root = ref(null);
|
|
840
|
+
onBeforeUnmount(() => {
|
|
841
|
+
if (props.enabled && observer.value) {
|
|
842
|
+
observer.value.disconnect();
|
|
843
|
+
}
|
|
844
|
+
});
|
|
845
|
+
onMounted(() => {
|
|
846
|
+
if (!props.enabled) {
|
|
847
|
+
return;
|
|
848
|
+
}
|
|
849
|
+
const options = {
|
|
850
|
+
root: root.value,
|
|
851
|
+
rootMargin: "0px",
|
|
852
|
+
threshold: props.threshold
|
|
853
|
+
};
|
|
854
|
+
const intersectionObserver = new IntersectionObserver((entries) => {
|
|
855
|
+
entries.forEach(({ target, isIntersecting }) => {
|
|
856
|
+
emit("observed", {
|
|
857
|
+
el: target,
|
|
858
|
+
isIntersecting
|
|
859
|
+
});
|
|
860
|
+
});
|
|
861
|
+
}, options);
|
|
862
|
+
observer.value = intersectionObserver;
|
|
863
|
+
props.eventBus.on("observe", (observed) => {
|
|
864
|
+
if (observed) {
|
|
865
|
+
intersectionObserver.observe(observed);
|
|
866
|
+
}
|
|
867
|
+
});
|
|
868
|
+
props.eventBus.on("unobserve", (observed) => {
|
|
869
|
+
intersectionObserver.unobserve(observed);
|
|
870
|
+
});
|
|
871
|
+
});
|
|
872
|
+
return (_ctx, _cache) => {
|
|
873
|
+
return openBlock(), createElementBlock("div", {
|
|
874
|
+
ref_key: "root",
|
|
875
|
+
ref: root
|
|
876
|
+
}, [
|
|
877
|
+
renderSlot(_ctx.$slots, "default")
|
|
878
|
+
], 512);
|
|
879
|
+
};
|
|
880
|
+
}
|
|
881
|
+
});
|
|
882
|
+
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
883
|
+
__name: "IntersectionObserved",
|
|
884
|
+
props: {
|
|
885
|
+
enabled: { type: Boolean, default: false },
|
|
886
|
+
eventBus: {}
|
|
887
|
+
},
|
|
888
|
+
setup(__props) {
|
|
889
|
+
const props = __props;
|
|
890
|
+
const observed = ref(null);
|
|
891
|
+
onMounted(async () => {
|
|
892
|
+
if (!props.enabled) {
|
|
893
|
+
return;
|
|
894
|
+
}
|
|
895
|
+
await nextTick();
|
|
896
|
+
props.eventBus.emit("observe", observed.value);
|
|
897
|
+
});
|
|
898
|
+
onBeforeUnmount(() => {
|
|
899
|
+
if (props.enabled) {
|
|
900
|
+
props.eventBus.emit("unobserve", observed.value);
|
|
901
|
+
}
|
|
902
|
+
});
|
|
903
|
+
return (_ctx, _cache) => {
|
|
904
|
+
return openBlock(), createElementBlock("span", {
|
|
905
|
+
ref_key: "observed",
|
|
906
|
+
ref: observed
|
|
907
|
+
}, [
|
|
908
|
+
renderSlot(_ctx.$slots, "default")
|
|
909
|
+
], 512);
|
|
910
|
+
};
|
|
911
|
+
}
|
|
912
|
+
});
|
|
913
|
+
const _hoisted_1$1 = { class: "tags" };
|
|
914
|
+
const _hoisted_2$1 = ["onClick"];
|
|
915
|
+
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
916
|
+
__name: "TagsContainer",
|
|
917
|
+
props: {
|
|
918
|
+
tagIds: {},
|
|
919
|
+
tagsById: {},
|
|
920
|
+
limit: { default: 20 },
|
|
921
|
+
clickable: { type: Boolean, default: false },
|
|
922
|
+
responsive: { type: Boolean, default: false },
|
|
923
|
+
hoverable: { type: Boolean, default: false }
|
|
924
|
+
},
|
|
925
|
+
emits: ["click"],
|
|
926
|
+
setup(__props, { emit: __emit }) {
|
|
927
|
+
const props = __props;
|
|
928
|
+
const emit = __emit;
|
|
929
|
+
const maxWidth = ref(320);
|
|
930
|
+
const intersectionEventBus = createEventBus();
|
|
931
|
+
const visibility = ref({});
|
|
932
|
+
const tagsContainer = ref();
|
|
933
|
+
const style = computed(() => ({
|
|
934
|
+
"max-width": `${maxWidth.value}px`
|
|
935
|
+
}));
|
|
936
|
+
const tags = computed(() => {
|
|
937
|
+
const allTags = props.tagIds.map((tagId) => props.tagsById[tagId]).filter(Boolean);
|
|
938
|
+
let toDisplay = props.limit ? allTags.slice(0, props.limit) : allTags;
|
|
939
|
+
toDisplay = toDisplay.map((tag) => ({
|
|
940
|
+
...tag,
|
|
941
|
+
hidden: props.responsive && !visibility.value[tag.id]
|
|
942
|
+
}));
|
|
943
|
+
let visibleCount = toDisplay.length;
|
|
944
|
+
if (props.responsive) {
|
|
945
|
+
visibleCount = Object.values(visibility.value).reduce(
|
|
946
|
+
(accu, val) => val ? accu + 1 : accu,
|
|
947
|
+
0
|
|
948
|
+
);
|
|
949
|
+
}
|
|
950
|
+
if (visibleCount < allTags.length) {
|
|
951
|
+
const hidden = allTags.slice(visibleCount);
|
|
952
|
+
const hiddenTitle = hidden.reduce(
|
|
953
|
+
(accu, tag) => accu ? `${accu}, ${tag.name}` : tag.name,
|
|
954
|
+
""
|
|
955
|
+
);
|
|
956
|
+
const countTag = {
|
|
957
|
+
id: "count",
|
|
958
|
+
name: `+${hidden.length}`,
|
|
959
|
+
title: hiddenTitle,
|
|
960
|
+
isCount: true
|
|
961
|
+
};
|
|
962
|
+
toDisplay.splice(visibleCount, 0, countTag);
|
|
996
963
|
}
|
|
997
|
-
return
|
|
964
|
+
return toDisplay;
|
|
998
965
|
});
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
await router.push({
|
|
1007
|
-
name: VIEWS.EVALUATION_EDIT,
|
|
1008
|
-
params: { name: props.workflow.id }
|
|
966
|
+
const setMaxWidth = () => {
|
|
967
|
+
const container2 = tagsContainer.value?.$el;
|
|
968
|
+
const parent = container2?.parentNode;
|
|
969
|
+
if (parent) {
|
|
970
|
+
maxWidth.value = 0;
|
|
971
|
+
void nextTick(() => {
|
|
972
|
+
maxWidth.value = parent.clientWidth;
|
|
1009
973
|
});
|
|
1010
|
-
} else if (actionId === "errorWorkflow" || actionId === "timeSaved") {
|
|
1011
|
-
uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);
|
|
1012
|
-
}
|
|
1013
|
-
isPopoverOpen.value = false;
|
|
1014
|
-
}
|
|
1015
|
-
function isValidAction(action) {
|
|
1016
|
-
return ["evaluations", "errorWorkflow", "timeSaved"].includes(action);
|
|
1017
|
-
}
|
|
1018
|
-
async function handleIgnoreClick(actionId) {
|
|
1019
|
-
if (!isValidAction(actionId)) {
|
|
1020
|
-
return;
|
|
1021
974
|
}
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
}
|
|
1028
|
-
async function handleIgnoreAll() {
|
|
1029
|
-
const ignoreAllConfirmed = await message.confirm(
|
|
1030
|
-
i18n.baseText("workflowProductionChecklist.ignoreAllConfirmation.description"),
|
|
1031
|
-
i18n.baseText("workflowProductionChecklist.ignoreAllConfirmation.title"),
|
|
1032
|
-
{
|
|
1033
|
-
confirmButtonText: i18n.baseText("workflowProductionChecklist.ignoreAllConfirmation.confirm")
|
|
1034
|
-
}
|
|
1035
|
-
);
|
|
1036
|
-
if (ignoreAllConfirmed === MODAL_CONFIRM) {
|
|
1037
|
-
await workflowsCache.ignoreAllSuggestedActionsForAllWorkflows(
|
|
1038
|
-
availableActions.value.map((action) => action.id)
|
|
1039
|
-
);
|
|
1040
|
-
await loadWorkflowSettings();
|
|
1041
|
-
telemetry.track("user clicked ignore suggested actions for all workflows");
|
|
975
|
+
};
|
|
976
|
+
const debouncedSetMaxWidth = debounce(setMaxWidth, 100);
|
|
977
|
+
const onObserved = ({ el, isIntersecting }) => {
|
|
978
|
+
if (el.dataset.id) {
|
|
979
|
+
visibility.value = { ...visibility.value, [el.dataset.id]: isIntersecting };
|
|
1042
980
|
}
|
|
1043
|
-
}
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
function onPopoverOpened() {
|
|
1048
|
-
telemetry.track("user opened suggested actions checklist");
|
|
1049
|
-
}
|
|
1050
|
-
function handlePopoverOpenChange(open) {
|
|
1051
|
-
if (open) {
|
|
1052
|
-
isPopoverOpen.value = true;
|
|
1053
|
-
onPopoverOpened();
|
|
1054
|
-
} else if (!isActivationModalOpen.value) {
|
|
1055
|
-
isPopoverOpen.value = false;
|
|
981
|
+
};
|
|
982
|
+
const onClick = (e, tag) => {
|
|
983
|
+
if (props.clickable) {
|
|
984
|
+
e.stopPropagation();
|
|
1056
985
|
}
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
() => props.workflow.active,
|
|
1060
|
-
async (isActive, wasActive) => {
|
|
1061
|
-
if (isActive && !wasActive) {
|
|
1062
|
-
if (!cachedSettings.value?.firstActivatedAt) {
|
|
1063
|
-
setTimeout(() => {
|
|
1064
|
-
openSuggestedActions();
|
|
1065
|
-
}, 0);
|
|
1066
|
-
}
|
|
1067
|
-
await workflowsCache.updateFirstActivatedAt(props.workflow.id);
|
|
1068
|
-
}
|
|
986
|
+
if (!tag.hidden) {
|
|
987
|
+
emit("click", tag.id);
|
|
1069
988
|
}
|
|
1070
|
-
|
|
1071
|
-
onMounted(
|
|
1072
|
-
|
|
989
|
+
};
|
|
990
|
+
onMounted(() => {
|
|
991
|
+
setMaxWidth();
|
|
992
|
+
window.addEventListener("resize", debouncedSetMaxWidth);
|
|
993
|
+
});
|
|
994
|
+
onBeforeUnmount(() => {
|
|
995
|
+
window.removeEventListener("resize", debouncedSetMaxWidth);
|
|
1073
996
|
});
|
|
1074
997
|
return (_ctx, _cache) => {
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
998
|
+
const _component_el_tag = resolveComponent("el-tag");
|
|
999
|
+
return openBlock(), createBlock(_sfc_main$5, {
|
|
1000
|
+
ref_key: "tagsContainer",
|
|
1001
|
+
ref: tagsContainer,
|
|
1002
|
+
threshold: 1,
|
|
1003
|
+
class: "tags-container",
|
|
1004
|
+
style: normalizeStyle(style.value),
|
|
1005
|
+
enabled: _ctx.responsive,
|
|
1006
|
+
"event-bus": unref(intersectionEventBus),
|
|
1007
|
+
onObserved
|
|
1008
|
+
}, {
|
|
1009
|
+
default: withCtx(() => [
|
|
1010
|
+
createBaseVNode("span", _hoisted_1$1, [
|
|
1011
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(tags.value, (tag) => {
|
|
1012
|
+
return openBlock(), createElementBlock("span", {
|
|
1013
|
+
key: tag.id,
|
|
1014
|
+
class: normalizeClass({ clickable: !tag.hidden }),
|
|
1015
|
+
onClick: (e) => onClick(e, tag)
|
|
1016
|
+
}, [
|
|
1017
|
+
tag.isCount ? (openBlock(), createBlock(_component_el_tag, {
|
|
1018
|
+
key: 0,
|
|
1019
|
+
title: tag.title,
|
|
1020
|
+
type: "info",
|
|
1021
|
+
size: "small",
|
|
1022
|
+
class: "count-container",
|
|
1023
|
+
"disable-transitions": true
|
|
1024
|
+
}, {
|
|
1025
|
+
default: withCtx(() => [
|
|
1026
|
+
createTextVNode(toDisplayString(tag.name), 1)
|
|
1027
|
+
]),
|
|
1028
|
+
_: 2
|
|
1029
|
+
}, 1032, ["title"])) : (openBlock(), createBlock(_sfc_main$4, {
|
|
1030
|
+
key: 1,
|
|
1031
|
+
class: normalizeClass({ hideTag: tag.hidden }),
|
|
1032
|
+
"data-id": tag.id,
|
|
1033
|
+
enabled: _ctx.responsive,
|
|
1034
|
+
"event-bus": unref(intersectionEventBus)
|
|
1035
|
+
}, {
|
|
1036
|
+
default: withCtx(() => [
|
|
1037
|
+
createVNode(_component_el_tag, {
|
|
1038
|
+
title: tag.name,
|
|
1039
|
+
type: "info",
|
|
1040
|
+
size: "mini",
|
|
1041
|
+
class: normalizeClass({ hoverable: _ctx.hoverable }),
|
|
1042
|
+
"disable-transitions": true
|
|
1043
|
+
}, {
|
|
1044
|
+
default: withCtx(() => [
|
|
1045
|
+
createTextVNode(toDisplayString(tag.name), 1)
|
|
1046
|
+
]),
|
|
1047
|
+
_: 2
|
|
1048
|
+
}, 1032, ["title", "class"])
|
|
1049
|
+
]),
|
|
1050
|
+
_: 2
|
|
1051
|
+
}, 1032, ["class", "data-id", "enabled", "event-bus"]))
|
|
1052
|
+
], 10, _hoisted_2$1);
|
|
1053
|
+
}), 128))
|
|
1054
|
+
])
|
|
1055
|
+
]),
|
|
1056
|
+
_: 1
|
|
1057
|
+
}, 8, ["style", "enabled", "event-bus"]);
|
|
1058
|
+
};
|
|
1059
|
+
}
|
|
1060
|
+
});
|
|
1061
|
+
const TagsContainer = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-6bab2764"]]);
|
|
1062
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
1063
|
+
__name: "WorkflowTagsContainer",
|
|
1064
|
+
props: {
|
|
1065
|
+
tagIds: {},
|
|
1066
|
+
limit: {},
|
|
1067
|
+
clickable: { type: Boolean },
|
|
1068
|
+
responsive: { type: Boolean },
|
|
1069
|
+
hoverable: { type: Boolean }
|
|
1070
|
+
},
|
|
1071
|
+
emits: ["click"],
|
|
1072
|
+
setup(__props, { emit: __emit }) {
|
|
1073
|
+
const emit = __emit;
|
|
1074
|
+
const annotationTagsStore = useTagsStore();
|
|
1075
|
+
const tagsById = computed(() => annotationTagsStore.tagsById);
|
|
1076
|
+
function onClick(tagId) {
|
|
1077
|
+
emit("click", tagId);
|
|
1078
|
+
}
|
|
1079
|
+
return (_ctx, _cache) => {
|
|
1080
|
+
return openBlock(), createBlock(TagsContainer, {
|
|
1081
|
+
"tag-ids": _ctx.tagIds,
|
|
1082
|
+
"tags-by-id": tagsById.value,
|
|
1083
|
+
limit: _ctx.limit,
|
|
1084
|
+
clickable: _ctx.clickable,
|
|
1085
|
+
responsive: _ctx.responsive,
|
|
1086
|
+
hoverable: _ctx.hoverable,
|
|
1087
|
+
onClick
|
|
1088
|
+
}, null, 8, ["tag-ids", "tags-by-id", "limit", "clickable", "responsive", "hoverable"]);
|
|
1088
1089
|
};
|
|
1089
1090
|
}
|
|
1090
1091
|
});
|
|
@@ -1159,7 +1160,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1159
1160
|
const props = __props;
|
|
1160
1161
|
const $style = useCssModule();
|
|
1161
1162
|
const rootStore = useRootStore();
|
|
1162
|
-
const canvasStore = useCanvasStore();
|
|
1163
1163
|
const settingsStore = useSettingsStore();
|
|
1164
1164
|
const sourceControlStore = useSourceControlStore();
|
|
1165
1165
|
const tagsStore = useTagsStore();
|
|
@@ -1185,7 +1185,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1185
1185
|
const tagsSaving = ref(false);
|
|
1186
1186
|
const importFileRef = ref();
|
|
1187
1187
|
const tagsEventBus = createEventBus();
|
|
1188
|
-
const sourceControlModalEventBus = createEventBus();
|
|
1189
1188
|
const changeOwnerEventBus = createEventBus();
|
|
1190
1189
|
const hasChanged = (prev, curr) => {
|
|
1191
1190
|
if (prev.length !== curr.length) {
|
|
@@ -1500,13 +1499,13 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1500
1499
|
break;
|
|
1501
1500
|
}
|
|
1502
1501
|
case WORKFLOW_MENU_ACTIONS.PUSH: {
|
|
1503
|
-
canvasStore.startLoading();
|
|
1504
1502
|
try {
|
|
1505
1503
|
await onSaveButtonClick();
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1504
|
+
void router.push({
|
|
1505
|
+
query: {
|
|
1506
|
+
...route.query,
|
|
1507
|
+
sourceControl: "push"
|
|
1508
|
+
}
|
|
1510
1509
|
});
|
|
1511
1510
|
} catch (error) {
|
|
1512
1511
|
switch (error.message) {
|
|
@@ -1520,8 +1519,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1520
1519
|
default:
|
|
1521
1520
|
toast.showError(error, locale.baseText("error"));
|
|
1522
1521
|
}
|
|
1523
|
-
} finally {
|
|
1524
|
-
canvasStore.stopLoading();
|
|
1525
1522
|
}
|
|
1526
1523
|
break;
|
|
1527
1524
|
}
|
|
@@ -1640,33 +1637,43 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1640
1637
|
function goToWorkflowHistoryUpgrade() {
|
|
1641
1638
|
void pageRedirectionHelper.goToUpgrade("workflow-history", "upgrade-workflow-history");
|
|
1642
1639
|
}
|
|
1643
|
-
function
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
folderName: props.currentFolder.name ?? ""
|
|
1653
|
-
}
|
|
1654
|
-
});
|
|
1655
|
-
} else if (projectsStore.currentProject.id !== projectsStore.personalProject?.id) {
|
|
1656
|
-
toastTitle = locale.baseText("workflows.create.project.toast.title", {
|
|
1657
|
-
interpolate: { projectName: currentProjectName.value ?? "" }
|
|
1658
|
-
});
|
|
1659
|
-
}
|
|
1660
|
-
toastText = locale.baseText("workflows.create.project.toast.text", {
|
|
1661
|
-
interpolate: { projectName: currentProjectName.value ?? "" }
|
|
1662
|
-
});
|
|
1640
|
+
function getPersonalProjectToastContent() {
|
|
1641
|
+
const title = locale.baseText("workflows.create.personal.toast.title");
|
|
1642
|
+
if (!props.currentFolder) {
|
|
1643
|
+
return { title };
|
|
1644
|
+
}
|
|
1645
|
+
const toastMessage = locale.baseText("workflows.create.folder.toast.title", {
|
|
1646
|
+
interpolate: {
|
|
1647
|
+
projectName: "Personal",
|
|
1648
|
+
folderName: props.currentFolder.name
|
|
1663
1649
|
}
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1650
|
+
});
|
|
1651
|
+
return { title, toastMessage };
|
|
1652
|
+
}
|
|
1653
|
+
function getToastContent() {
|
|
1654
|
+
const currentProject = projectsStore.currentProject;
|
|
1655
|
+
const isPersonalProject = !projectsStore.currentProject || currentProject?.id === projectsStore.personalProject?.id;
|
|
1656
|
+
const projectName = currentProjectName.value ?? "";
|
|
1657
|
+
if (isPersonalProject) {
|
|
1658
|
+
return getPersonalProjectToastContent();
|
|
1659
|
+
}
|
|
1660
|
+
const titleKey = props.currentFolder ? "workflows.create.folder.toast.title" : "workflows.create.project.toast.title";
|
|
1661
|
+
const interpolateData = props.currentFolder ? { projectName, folderName: props.currentFolder.name ?? "" } : { projectName };
|
|
1662
|
+
const title = locale.baseText(titleKey, { interpolate: interpolateData });
|
|
1663
|
+
const toastMessage = locale.baseText("workflows.create.project.toast.text", {
|
|
1664
|
+
interpolate: { projectName }
|
|
1665
|
+
});
|
|
1666
|
+
return { title, toastMessage };
|
|
1667
|
+
}
|
|
1668
|
+
function showCreateWorkflowSuccessToast(id) {
|
|
1669
|
+
const shouldShowToast = !id || ["new", PLACEHOLDER_EMPTY_WORKFLOW_ID].includes(id);
|
|
1670
|
+
if (!shouldShowToast) return;
|
|
1671
|
+
const { title, toastMessage } = getToastContent();
|
|
1672
|
+
toast.showMessage({
|
|
1673
|
+
title,
|
|
1674
|
+
message: toastMessage,
|
|
1675
|
+
type: "success"
|
|
1676
|
+
});
|
|
1670
1677
|
}
|
|
1671
1678
|
const onBreadcrumbsItemSelected = (item) => {
|
|
1672
1679
|
if (item.href) {
|
|
@@ -1679,13 +1686,13 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1679
1686
|
const _component_FolderBreadcrumbs = __unplugin_components_0;
|
|
1680
1687
|
const _component_N8nBadge = N8nBadge;
|
|
1681
1688
|
const _component_N8nButton = N8nButton;
|
|
1682
|
-
const _component_N8nTooltip =
|
|
1689
|
+
const _component_N8nTooltip = Tooltip;
|
|
1683
1690
|
const _component_EnterpriseEdition = resolveComponent("EnterpriseEdition");
|
|
1684
1691
|
const _component_N8nActionDropdown = N8nActionDropdown;
|
|
1685
1692
|
return openBlock(), createElementBlock("div", {
|
|
1686
1693
|
class: normalizeClass(unref($style).container)
|
|
1687
1694
|
}, [
|
|
1688
|
-
createVNode(_sfc_main$
|
|
1695
|
+
createVNode(_sfc_main$9, {
|
|
1689
1696
|
"value-x-s": 15,
|
|
1690
1697
|
"value-s-m": 25,
|
|
1691
1698
|
"value-m-d": 50,
|
|
@@ -1742,7 +1749,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1742
1749
|
"data-test-id": "new-tag-link",
|
|
1743
1750
|
onClick: onTagsEditEnable
|
|
1744
1751
|
}, " + " + toDisplayString(unref(i18n).baseText("workflowDetails.addTag")), 1)
|
|
1745
|
-
])) : (openBlock(), createBlock(_sfc_main$
|
|
1752
|
+
])) : (openBlock(), createBlock(_sfc_main$2, {
|
|
1746
1753
|
key: _ctx.id,
|
|
1747
1754
|
"tag-ids": workflowTagIds.value,
|
|
1748
1755
|
clickable: true,
|
|
@@ -1768,7 +1775,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1768
1775
|
]),
|
|
1769
1776
|
createVNode(_sfc_main$f, { class: "actions" }, {
|
|
1770
1777
|
default: withCtx(() => [
|
|
1771
|
-
!isNewWorkflow.value ? (openBlock(), createBlock(_sfc_main$
|
|
1778
|
+
!isNewWorkflow.value ? (openBlock(), createBlock(_sfc_main$6, {
|
|
1772
1779
|
key: 0,
|
|
1773
1780
|
workflow: unref(workflowsStore).workflow
|
|
1774
1781
|
}, null, 8, ["workflow"])) : createCommentVNode("", true),
|
|
@@ -1847,7 +1854,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1847
1854
|
"data-test-id": "workflow-save-button",
|
|
1848
1855
|
onClick: onSaveButtonClick
|
|
1849
1856
|
}, null, 8, ["saved", "disabled", "is-saving", "with-shortcut", "shortcut-tooltip"]),
|
|
1850
|
-
createVNode(_sfc_main$
|
|
1857
|
+
createVNode(_sfc_main$7, {
|
|
1851
1858
|
"workflow-id": props.id,
|
|
1852
1859
|
"is-feature-enabled": isWorkflowHistoryFeatureEnabled.value,
|
|
1853
1860
|
"is-new-workflow": isNewWorkflow.value,
|
|
@@ -1896,7 +1903,7 @@ const style1 = {
|
|
|
1896
1903
|
const cssModules$1 = {
|
|
1897
1904
|
"$style": style1
|
|
1898
1905
|
};
|
|
1899
|
-
const WorkflowDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1], ["__scopeId", "data-v-
|
|
1906
|
+
const WorkflowDetails = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1], ["__scopeId", "data-v-3cc77b55"]]);
|
|
1900
1907
|
const GithubButton = defineComponent({
|
|
1901
1908
|
name: "github-button",
|
|
1902
1909
|
props: {
|