n8n-editor-ui 1.103.1 → 1.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/assets/{ActionDropdown-BhU4vCrE.js → ActionDropdown-DkHCqhLi.js} +1 -1
  2. package/dist/assets/{AnimatedSpinner-Du5eXSIY.js → AnimatedSpinner-D6j3zAN7.js} +1 -1
  3. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DEQTwSbx.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CeptN1qB.js} +1 -1
  4. package/dist/assets/{AuthView-BJ-YTYTN.js → AuthView-DdzGr3if.js} +2 -2
  5. package/dist/assets/{ChangePasswordView-B-OkU_yr.js → ChangePasswordView-CLbLuldY.js} +3 -3
  6. package/dist/assets/CollectionParameter-C3JIvBsy.js +4 -0
  7. package/dist/assets/ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-DwQ0BmLY.js +44 -0
  8. package/dist/assets/{CredentialsView-BjUZvEdd.js → CredentialsView-Cbm8N2D-.js} +8 -8
  9. package/dist/assets/{DemoFooter-9WRPL1Nd.js → DemoFooter-DlHqx3Wb.js} +9 -8
  10. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-D3Zaxt4S.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-Dymz7mm-.js} +1 -1
  11. package/dist/assets/{EntityNotFound-DvAk0XOf.js → EntityNotFound-CmBDOsai.js} +1 -1
  12. package/dist/assets/{EntityUnAuthorised-BTLaJBAA.js → EntityUnAuthorised-CNPmvmZu.js} +1 -1
  13. package/dist/assets/{ErrorView-KDDRlAEN.js → ErrorView-BqgIhqko.js} +1 -1
  14. package/dist/assets/{EvaluationsRootView-BViIGqmh.js → EvaluationsRootView-B6RDbMu9.js} +5 -3
  15. package/dist/assets/{EvaluationsView-6l_Invxt.css → EvaluationsView-BTyYfInB.css} +6 -6
  16. package/dist/assets/{EvaluationsView-BY0HmUSo.js → EvaluationsView-nr07_JFX.js} +53 -40
  17. package/dist/assets/{ExecutionsTime-DkME6I3E.css → ExecutionsTime-Bo7IOE5K.css} +6 -6
  18. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-Dz1TldYs.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-Ci1SWv1r.js} +15 -12
  19. package/dist/assets/{ExecutionsView-z5GL4TFM.js → ExecutionsView-L8QB4qb-.js} +21 -18
  20. package/dist/assets/{FileSaver.min-BRpMoNCX.js → FileSaver.min-CiFUM_59.js} +1 -1
  21. package/dist/assets/{FixedCollectionParameter-BW_7bc6a.js → FixedCollectionParameter-BMsoLNRT.js} +1 -1
  22. package/dist/assets/{ForgotMyPasswordView-C3yPX8Sm.js → ForgotMyPasswordView-BYKQXHHe.js} +3 -3
  23. package/dist/assets/{InfoAccordion-B3ebdljQ.js → InfoAccordion-DN17_QNh.js} +1 -1
  24. package/dist/assets/{InsightsChartAverageRuntime-B07vNUKi.js → InsightsChartAverageRuntime-DX6MWomC.js} +5 -4
  25. package/dist/assets/{InsightsChartFailed-vwVIlrMM.js → InsightsChartFailed-D1ITW7ip.js} +5 -4
  26. package/dist/assets/{InsightsChartFailureRate-3R9NR__K.js → InsightsChartFailureRate-DsoCFhrx.js} +5 -4
  27. package/dist/assets/{InsightsChartTimeSaved-0XAZRsQL.js → InsightsChartTimeSaved-Cwb0-EZ1.js} +5 -4
  28. package/dist/assets/{InsightsChartTotal-QtHpPQPx.js → InsightsChartTotal-B-SjjDG4.js} +5 -4
  29. package/dist/assets/{InsightsDashboard-CXbI-Jyg.css → InsightsDashboard-C27Avzrv.css} +2 -2
  30. package/dist/assets/{InsightsDashboard-jAR8co6U.js → InsightsDashboard-DEaMMGfn.js} +19 -19
  31. package/dist/assets/{InsightsPaywall-CqlSj87d.js → InsightsPaywall-BsiLaxNd.js} +3 -3
  32. package/dist/assets/{InsightsSummary-1EyHgtD2.js → InsightsSummary-hBcY77J_.js} +9 -4
  33. package/dist/assets/{InsightsTableWorkflows-RGpSnp7n.css → InsightsTableWorkflows-BTHSCwX8.css} +27 -3
  34. package/dist/assets/{InsightsTableWorkflows-CMfER3Lz.js → InsightsTableWorkflows-D9vFPmUm.js} +80 -26
  35. package/dist/assets/{Logo-BAbynr3J.js → Logo-D-nqGbZ-.js} +1 -1
  36. package/dist/assets/{LogsPanel-C4P2jfja.js → LogsPanel-D0QGW50a.js} +16 -11
  37. package/dist/assets/{LogsPanel-Bvy4ANV7.css → LogsPanel-D0xdq4fV.css} +21 -21
  38. package/dist/assets/{MainHeader-2VAdoAN3.js → MainHeader-QpSmh7DV.js} +17 -16
  39. package/dist/assets/{MainHeader-DYYEm7nF.css → MainHeader-qSHM1Rvp.css} +12 -12
  40. package/dist/assets/{MainSidebar-CaLHZgDB.css → MainSidebar-D74VZmM5.css} +7 -8
  41. package/dist/assets/{MainSidebar-ChT_fvtq.js → MainSidebar-Dndr9Vcx.js} +26 -25
  42. package/dist/assets/{N8nDataTableServer-CUJVgPuN.js → N8nDataTableServer-B4Gq_Urn.js} +20 -10
  43. package/dist/assets/{NodeCreation-B0_VqZl0.js → NodeCreation-CRGHu2mV.js} +11 -9
  44. package/dist/assets/{NodeCreator-Dudc-sld.js → NodeCreator-BvleRmX-.js} +114 -197
  45. package/dist/assets/{NodeCreator-DWE25utr.css → NodeCreator-CkvY2niF.css} +0 -128
  46. package/dist/assets/{NodeDetailsView-D3jGDk45.js → NodeDetailsView-xvbRzTfv.js} +21 -16
  47. package/dist/assets/{NodeDetailsViewV2-B0iyvHRQ.js → NodeDetailsViewV2-CBY4UJcE.js} +21 -16
  48. package/dist/assets/{NodeView-CX3GlUP1.js → NodeView-Dm74W6kN.js} +2068 -746
  49. package/dist/assets/{NodeView-hst6fesm.css → NodeView-G2qfXaOy.css} +755 -71
  50. package/dist/assets/{ProjectHeader-CBBQ32Nc.js → ProjectHeader-0NxiEwQl.js} +2 -2
  51. package/dist/assets/{ProjectSettings-D7CCWy0v.js → ProjectSettings-ClM6Y9uS.js} +7 -5
  52. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-aTaPuBRW.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-D5JeFl_d.js} +1 -1
  53. package/dist/assets/{ResourcesListLayout-CR6jD0wL.js → ResourcesListLayout-BRro9C-1.js} +3 -3
  54. package/dist/assets/{RunDataJson-PZfvyEtF.js → RunDataJson-12Py20Rs.js} +6 -7
  55. package/dist/assets/{RunDataJsonActions-BmrxonyU.js → RunDataJsonActions-BGl8YYU0.js} +1 -1
  56. package/dist/assets/{RunDataParsedAiContent-b0irqoyM.js → RunDataParsedAiContent-DYz5OPxJ.js} +2 -2
  57. package/dist/assets/{RunDataSearch-DS17rPDS.js → RunDataSearch-NmwtxOjZ.js} +1 -1
  58. package/dist/assets/{RunDataTable-DgBV9mGl.js → RunDataTable-DJu8Ut0r.js} +17 -17
  59. package/dist/assets/{SamlOnboarding-COuXHYGq.js → SamlOnboarding-B5vqtns9.js} +3 -3
  60. package/dist/assets/{SettingsApiView-Bjmx5RKa.js → SettingsApiView-DmOvPlm6.js} +5 -4
  61. package/dist/assets/{SettingsCommunityNodesView-JkmQWaRv.js → SettingsCommunityNodesView-DEgzWHlF.js} +4 -3
  62. package/dist/assets/{SettingsExternalSecrets-unJLQHhU.js → SettingsExternalSecrets-4VNCsQKo.js} +5 -3
  63. package/dist/assets/{SettingsLdapView-DvZbXhb2.js → SettingsLdapView-BSQe5yy-.js} +1 -1
  64. package/dist/assets/{SettingsLogStreamingView-DT_BpBbv.js → SettingsLogStreamingView-Y-ve-MUB.js} +1 -1
  65. package/dist/assets/{SettingsPersonalView-D0VCYPEd.js → SettingsPersonalView-DTWO2GIc.js} +1 -1
  66. package/dist/assets/{SettingsSourceControl-CatnTfFf.js → SettingsSourceControl-D14mBzgS.js} +10 -8
  67. package/dist/assets/{SettingsSso-CxWN7WTJ.js → SettingsSso-Beon1K6u.js} +1 -1
  68. package/dist/assets/{SettingsUsageAndPlan-D6TiPwUx.css → SettingsUsageAndPlan-ZZQpCmyQ.css} +3 -3
  69. package/dist/assets/{SettingsUsageAndPlan-BMsLzUeh.js → SettingsUsageAndPlan-hc6EFbHM.js} +15 -10
  70. package/dist/assets/{SettingsUsersView-hbKTH9np.js → SettingsUsersView-CIzwxl6-.js} +105 -44
  71. package/dist/assets/{SettingsUsersView-B81cHl3f.css → SettingsUsersView-RQTdLxyb.css} +11 -7
  72. package/dist/assets/{SettingsView-C3FWxmaD.js → SettingsView-Bv-AL-MH.js} +1 -1
  73. package/dist/assets/{SetupView-DdjBoiKa.js → SetupView-BCKg0AbF.js} +3 -3
  74. package/dist/assets/{SetupWorkflowCredentialsButton-BX8a8Tuq.js → SetupWorkflowCredentialsButton-djsoNbvZ.js} +1 -1
  75. package/dist/assets/{SetupWorkflowFromTemplateView-D9BTRma8.js → SetupWorkflowFromTemplateView-CZhYUSco.js} +3 -3
  76. package/dist/assets/{SigninView-D8iOgwLO.js → SigninView-BPl0jjB0.js} +3 -3
  77. package/dist/assets/{SignoutView-DXt0Sdaq.js → SignoutView-BHPz3HFX.js} +1 -1
  78. package/dist/assets/{SignupView-D6pEOFGY.js → SignupView-Cel8_b46.js} +3 -3
  79. package/dist/assets/{TableBase-6tpR_KYY.js → TableBase-BIT7ArUw.js} +1 -1
  80. package/dist/assets/{Tags-3OtmQZg1.js → Tags-CQIEP_IZ.js} +1 -1
  81. package/dist/assets/{TemplateDetails-Bvec_Syb.js → TemplateDetails-B8u34j2l.js} +2 -2
  82. package/dist/assets/{TemplateList-B0_W0uvx.js → TemplateList-BJSJYiHs.js} +1 -1
  83. package/dist/assets/{TemplatesCollectionView-ChXD8R-e.js → TemplatesCollectionView-BCAAV1n9.js} +6 -6
  84. package/dist/assets/{TemplatesSearchView-B_cMlFlv.js → TemplatesSearchView-CXOrNnyk.js} +3 -3
  85. package/dist/assets/{TemplatesView-CziYbcJq.js → TemplatesView-1HunP4nN.js} +1 -1
  86. package/dist/assets/{TemplatesWorkflowView-Hb4zWBu5.js → TemplatesWorkflowView-0enp4pR7.js} +6 -6
  87. package/dist/assets/{TriggerPanel-BsmQ9v2s.js → TriggerPanel-B-Jt4r3F.js} +133 -981
  88. package/dist/assets/{TriggerPanel-DRpKKKun.css → TriggerPanel-DJv04feX.css} +1 -354
  89. package/dist/assets/{VariablesView-WOzl2JBK.js → VariablesView-mSWZzDyf.js} +5 -5
  90. package/dist/assets/VueMarkdown-Dxf59_T_.js +1570 -0
  91. package/dist/assets/{WorkerView-C0gI6gbP.js → WorkerView-DbqNyqok.js} +6 -5
  92. package/dist/assets/{WorkflowActivator-B96_pQnb.js → WorkflowActivator-C33REd8m.js} +2 -2
  93. package/dist/assets/{WorkflowExecutionsInfoAccordion-DFCLkh95.js → WorkflowExecutionsInfoAccordion-CCe9jbiT.js} +2 -2
  94. package/dist/assets/{WorkflowExecutionsLandingPage-B3aM2Zsk.js → WorkflowExecutionsLandingPage-DMXVsIHS.js} +3 -3
  95. package/dist/assets/{WorkflowExecutionsPreview-D6oMyJtk.js → WorkflowExecutionsPreview-Dit3_l9q.js} +5 -5
  96. package/dist/assets/{WorkflowExecutionsView-BiKDjD1D.js → WorkflowExecutionsView-BwLTPvQ7.js} +8 -8
  97. package/dist/assets/{WorkflowHistory-CgxAK62K.js → WorkflowHistory-BgNzJgze.js} +6 -6
  98. package/dist/assets/{WorkflowOnboardingView-tKN781CD.js → WorkflowOnboardingView-Bnvmd6lJ.js} +1 -1
  99. package/dist/assets/{WorkflowPreview-CDgvgZcr.js → WorkflowPreview-DIDMhnNP.js} +1 -1
  100. package/dist/assets/{WorkflowsView-zxJZKrLk.js → WorkflowsView-DxtULRby.js} +125 -17
  101. package/dist/assets/aiTemplatesStarterCollection.store-DrHWcqtc.js +795 -0
  102. package/dist/assets/{chartjs.utils-EXdTT15A.js → chartjs.utils-DQHNgzzp.js} +2 -2
  103. package/dist/assets/{en-FjyeYndD.js → en-BX7CKkqE.js} +22 -6
  104. package/dist/assets/{global-link-actions-NNtNk_7A.js → global-link-actions-DzXrk-LO.js} +1 -1
  105. package/dist/assets/{import-curl-DcVVML3m.js → import-curl-BrVSOGQW.js} +1 -1
  106. package/dist/assets/{index-C6LoGNAx.css → index-BWpYwmXd.css} +548 -948
  107. package/dist/assets/{index-BEC9W_3K.js → index-BmZCxv8-.js} +48318 -42852
  108. package/dist/assets/{index-CFNl0R-J.js → index-x7t8iCsI.js} +1 -1
  109. package/dist/assets/{pickBy-BXP1QU1C.js → pickBy-oHD63WOf.js} +1 -1
  110. package/dist/assets/{templateActions-DWb-SuCl.js → templateActions-_QLqrCsm.js} +1 -1
  111. package/dist/assets/{typescript.worker-CUj0Nj-S.js → typescript.worker-KwUz68Jx.js} +2499 -157
  112. package/dist/assets/{useBeforeUnload-uH0nIAM3.js → useBeforeUnload-CBmJdmlS.js} +1 -1
  113. package/dist/assets/{useExecutionDebugging-bE32iQtx.js → useExecutionDebugging-B22Oj62X.js} +1 -1
  114. package/dist/assets/{useExecutionHelpers-CXZC4OGe.js → useExecutionHelpers-C6meisqx.js} +1 -1
  115. package/dist/assets/{useImportCurlCommand-Bxi0W0ub.js → useImportCurlCommand-CCUM_iVn.js} +9 -9
  116. package/dist/assets/{RunData-D0dKnadD.css → useKeybindings-2A271Jke.css} +134 -2
  117. package/dist/assets/{RunData-CY2AnQ-5.js → useKeybindings-CcHEvN6i.js} +223 -1644
  118. package/dist/assets/{useProjectPages-BKkEKuqG.js → useProjectPages-CrI3xlbd.js} +1 -1
  119. package/dist/assets/{usePushConnection-TyXi_EKD.js → usePushConnection-EYkv1Xyg.js} +10 -2
  120. package/dist/assets/{useWorkflowActivate-BRxfn_zV.js → useWorkflowActivate-BiorS_mB.js} +1 -1
  121. package/dist/index.html +3 -7
  122. package/index.html +1 -5
  123. package/package.json +1 -1
  124. package/vite.config.mts +23 -3
  125. package/dist/assets/CollectionParameter-BHthTTpD.js +0 -4
  126. package/dist/assets/useKeybindings-BUK7Ngh6.css +0 -133
  127. package/dist/assets/useKeybindings-D5pwrTFM.js +0 -188
@@ -1,4 +1,4 @@
1
- import { a5 as useRoute, x as computed, V as VIEWS, ew as reactive } from "./index-BEC9W_3K.js";
1
+ import { a6 as useRoute, x as computed, V as VIEWS, eI as reactive } from "./index-BmZCxv8-.js";
2
2
  const useProjectPages = () => {
3
3
  const route = useRoute();
4
4
  const isOverviewSubPage = computed(
@@ -1,5 +1,6 @@
1
- import { g7 as makeRestApiRequest, a4 as useWorkflowsStore, T as useUIStore, g8 as clearPopupWindowState, eM as getEasyAiWorkflowJson, ay as useTelemetry, cc as parse, g9 as hasTrimmedItem, v as useSettingsStore, aj as useWorkflowSaving, ak as useWorkflowHelpers, aC as WORKFLOW_SETTINGS_MODAL_KEY, a as useToast, ga as generateNodesGraph, c as useI18n, gb as getExecutionErrorToastConfiguration, bG as useNodeTypesStore, d_ as getTriggerNodeServiceName, bB as useNodeHelpers, gc as hasTrimmedData, bd as useExternalHooks, gd as codeNodeEditorEventBus, eF as EVALUATION_TRIGGER_NODE_TYPE, bC as useRunWorkflow, ge as getExecutionErrorMessage, de as useCredentialsStore, gf as useAssistantStore, gg as useSchemaPreviewStore, cY as isCommunityPackageName, a2 as defineStore, ac as useRootStore, a3 as usePushConnectionStore, r as ref } from "./index-BEC9W_3K.js";
2
- import { g as globalLinkActionsEventBus } from "./global-link-actions-NNtNk_7A.js";
1
+ import { gM as makeRestApiRequest, a5 as useWorkflowsStore, T as useUIStore, gN as clearPopupWindowState, eY as getEasyAiWorkflowJson, az as useTelemetry, cc as parse, gO as hasTrimmedItem, v as useSettingsStore, ak as useWorkflowSaving, al as useWorkflowHelpers, aD as WORKFLOW_SETTINGS_MODAL_KEY, a as useToast, gP as generateNodesGraph, c as useI18n, gQ as getExecutionErrorToastConfiguration, bH as useNodeTypesStore, e9 as getTriggerNodeServiceName, bC as useNodeHelpers, gR as hasTrimmedData, be as useExternalHooks, gS as codeNodeEditorEventBus, eR as EVALUATION_TRIGGER_NODE_TYPE, bD as useRunWorkflow, gT as getExecutionErrorMessage, du as useCredentialsStore, fa as useAssistantStore, fe as useSchemaPreviewStore, dd as isCommunityPackageName, a3 as defineStore, ad as useRootStore, a4 as usePushConnectionStore, r as ref } from "./index-BmZCxv8-.js";
2
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-DzXrk-LO.js";
3
+ import { u as useAITemplatesStarterCollectionStore } from "./aiTemplatesStarterCollection.store-DrHWcqtc.js";
3
4
  var GET_STATUS_ENDPOINT = "/orchestration/worker/status";
4
5
  var sendGetWorkerStatus = async (context) => {
5
6
  await makeRestApiRequest(context, "POST", GET_STATUS_ENDPOINT);
@@ -7,6 +8,7 @@ var sendGetWorkerStatus = async (context) => {
7
8
  async function executionFinished({ data }, options) {
8
9
  const workflowsStore = useWorkflowsStore();
9
10
  const uiStore = useUIStore();
11
+ const aiTemplatesStarterCollectionStore = useAITemplatesStarterCollectionStore();
10
12
  workflowsStore.lastAddedExecutingNode = null;
11
13
  if (typeof workflowsStore.activeExecutionId === "undefined") {
12
14
  return;
@@ -22,6 +24,12 @@ async function executionFinished({ data }, options) {
22
24
  status: data.status
23
25
  });
24
26
  }
27
+ if (workflow.meta.templateId.startsWith("035_template_onboarding")) {
28
+ aiTemplatesStarterCollectionStore.trackUserExecutedWorkflow(
29
+ workflow.meta.templateId.split("-").pop() ?? "",
30
+ data.status
31
+ );
32
+ }
25
33
  }
26
34
  uiStore.setProcessingExecutionResults(true);
27
35
  let successToastAlreadyShown = false;
@@ -1,4 +1,4 @@
1
- import { r as ref, b as useRouter, ak as useWorkflowHelpers, aj as useWorkflowSaving, a4 as useWorkflowsStore, T as useUIStore, a as useToast, ah as useNpsSurveyStore, a6 as PLACEHOLDER_EMPTY_WORKFLOW_ID, ay as useTelemetry, bd as useExternalHooks, c as useI18n, b4 as useStorage, gn as LOCAL_STORAGE_ACTIVATION_FLAG, go as WORKFLOW_ACTIVE_MODAL_KEY } from "./index-BEC9W_3K.js";
1
+ import { r as ref, b as useRouter, al as useWorkflowHelpers, ak as useWorkflowSaving, a5 as useWorkflowsStore, T as useUIStore, a as useToast, ai as useNpsSurveyStore, a7 as PLACEHOLDER_EMPTY_WORKFLOW_ID, az as useTelemetry, be as useExternalHooks, c as useI18n, b5 as useStorage, g$ as LOCAL_STORAGE_ACTIVATION_FLAG, h0 as WORKFLOW_ACTIVE_MODAL_KEY } from "./index-BmZCxv8-.js";
2
2
  function useWorkflowActivate() {
3
3
  const updatingWorkflowActivation = ref(false);
4
4
  const router = useRouter();
package/dist/index.html CHANGED
@@ -8,16 +8,12 @@
8
8
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
9
9
  <link rel="icon" href="/{{BASE_PATH}}/favicon.ico" />
10
10
  <style>@media (prefers-color-scheme: dark) { body { background-color: rgb(45, 46, 46) } }</style>
11
- <script type="text/javascript">
12
- window.BASE_PATH = '/{{BASE_PATH}}/';
13
- window.REST_ENDPOINT = '{{REST_ENDPOINT}}';
14
- </script>
15
- <script src="/{{REST_ENDPOINT}}/sentry.js"></script>
11
+ <script src="/{{REST_ENDPOINT}}/config.js"></script>
16
12
  <script>!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag onFeatureFlags reloadFeatureFlags".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[])</script>
17
13
 
18
14
  <title>n8n.io - Workflow Automation</title>
19
- <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-BEC9W_3K.js"></script>
20
- <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-C6LoGNAx.css">
15
+ <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-BmZCxv8-.js"></script>
16
+ <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-BWpYwmXd.css">
21
17
  </head>
22
18
  <body>
23
19
  <noscript>
package/index.html CHANGED
@@ -6,11 +6,7 @@
6
6
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
7
7
  <link rel="icon" href="/favicon.ico" />
8
8
  <style>@media (prefers-color-scheme: dark) { body { background-color: rgb(45, 46, 46) } }</style>
9
- <script type="text/javascript">
10
- window.BASE_PATH = '/{{BASE_PATH}}/';
11
- window.REST_ENDPOINT = '{{REST_ENDPOINT}}';
12
- </script>
13
- <script src="/{{REST_ENDPOINT}}/sentry.js"></script>
9
+ %CONFIG_SCRIPT%
14
10
  <script>!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag onFeatureFlags reloadFeatureFlags".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[])</script>
15
11
 
16
12
  <title>n8n.io - Workflow Automation</title>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-editor-ui",
3
- "version": "1.103.1",
3
+ "version": "1.104.1",
4
4
  "description": "Workflow Editor UI for n8n",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/vite.config.mts CHANGED
@@ -1,7 +1,8 @@
1
1
  import vue from '@vitejs/plugin-vue';
2
2
  import { posix as pathPosix, resolve } from 'path';
3
- import { defineConfig, mergeConfig } from 'vite';
3
+ import { defineConfig, mergeConfig, type UserConfig } from 'vite';
4
4
  import { viteStaticCopy } from 'vite-plugin-static-copy';
5
+ import { nodePolyfills } from 'vite-plugin-node-polyfills';
5
6
  import svgLoader from 'vite-svg-loader';
6
7
 
7
8
  import { vitestConfig } from '@n8n/vitest-config/frontend';
@@ -63,9 +64,14 @@ const alias = [
63
64
  find: /^lodash\.(.+)$/,
64
65
  replacement: 'lodash/$1',
65
66
  },
67
+ {
68
+ // For sanitize-html
69
+ find: 'source-map-js',
70
+ replacement: resolve(__dirname, 'src/source-map-js-shim'),
71
+ },
66
72
  ];
67
73
 
68
- const plugins = [
74
+ const plugins: UserConfig['plugins'] = [
69
75
  icons({
70
76
  compiler: 'vue3',
71
77
  autoInstall: true,
@@ -115,6 +121,20 @@ const plugins = [
115
121
  modernPolyfills: true,
116
122
  renderLegacyChunks: false,
117
123
  }),
124
+ {
125
+ name: 'Insert config script',
126
+ transformIndexHtml: (html, ctx) => {
127
+ const replacement = ctx.server
128
+ ? '' // Skip when using Vite dev server
129
+ : '<script src="/{{REST_ENDPOINT}}/config.js"></script>';
130
+
131
+ return html.replace('%CONFIG_SCRIPT%', replacement);
132
+ },
133
+ },
134
+ // For sanitize-html
135
+ nodePolyfills({
136
+ include: ['fs', 'path', 'url', 'util', 'timers'],
137
+ }),
118
138
  ];
119
139
 
120
140
  const { RELEASE: release } = process.env;
@@ -131,7 +151,7 @@ export default mergeConfig(
131
151
  plugins,
132
152
  resolve: { alias },
133
153
  base: publicPath,
134
- envPrefix: 'VUE',
154
+ envPrefix: ['VUE', 'N8N_ENV_FEAT'],
135
155
  css: {
136
156
  preprocessorOptions: {
137
157
  scss: {
@@ -1,4 +0,0 @@
1
- import { hU as _sfc_main } from "./index-BEC9W_3K.js";
2
- export {
3
- _sfc_main as default
4
- };
@@ -1,133 +0,0 @@
1
- /* BEM support Func
2
- -------------------------- */
3
- /* Transition
4
- -------------------------- */
5
- /* Color
6
- -------------------------- */
7
- /* Link
8
- -------------------------- */
9
- /* Border
10
- -------------------------- */
11
- /* Outline
12
- -------------------------- */
13
- /* Box shadow
14
- -------------------------- */
15
- /* Fill
16
- -------------------------- */
17
- /* Typography
18
- -------------------------- */
19
- /* z-index
20
- -------------------------- */
21
- /* Disable base
22
- -------------------------- */
23
- /* Icon
24
- -------------------------- */
25
- /* Checkbox
26
- -------------------------- */
27
- /* Radio
28
- -------------------------- */
29
- /* Select
30
- -------------------------- */
31
- /* Alert
32
- -------------------------- */
33
- /* MessageBox
34
- -------------------------- */
35
- /* Message
36
- -------------------------- */
37
- /* Notification
38
- -------------------------- */
39
- /* Input
40
- -------------------------- */
41
- /* Cascader
42
- -------------------------- */
43
- /* Group
44
- -------------------------- */
45
- /* Tab
46
- -------------------------- */
47
- /* Button
48
- -------------------------- */
49
- /* cascader
50
- -------------------------- */
51
- /* Switch
52
- -------------------------- */
53
- /* Dialog
54
- -------------------------- */
55
- /* Table
56
- -------------------------- */
57
- /* Pagination
58
- -------------------------- */
59
- /* Popup
60
- -------------------------- */
61
- /* Popover
62
- -------------------------- */
63
- /* Tooltip
64
- -------------------------- */
65
- /* Tag
66
- -------------------------- */
67
- /* Tree
68
- -------------------------- */
69
- /* Dropdown
70
- -------------------------- */
71
- /* Badge
72
- -------------------------- */
73
- /* Card
74
- --------------------------*/
75
- /* Slider
76
- --------------------------*/
77
- /* Steps
78
- --------------------------*/
79
- /* Menu
80
- --------------------------*/
81
- /* Rate
82
- --------------------------*/
83
- /* DatePicker
84
- --------------------------*/
85
- /* Loading
86
- --------------------------*/
87
- /* Scrollbar
88
- --------------------------*/
89
- /* Carousel
90
- --------------------------*/
91
- /* Collapse
92
- --------------------------*/
93
- /* Transfer
94
- --------------------------*/
95
- /* Header
96
- --------------------------*/
97
- /* Footer
98
- --------------------------*/
99
- /* Main
100
- --------------------------*/
101
- /* Timeline
102
- --------------------------*/
103
- /* Backtop
104
- --------------------------*/
105
- /* Link
106
- --------------------------*/
107
- /* Calendar
108
- --------------------------*/
109
- /* Form
110
- -------------------------- */
111
- /* Avatar
112
- --------------------------*/
113
- /* Break-point
114
- --------------------------*/
115
- /* Break-points
116
- -------------------------- */
117
- /* Scrollbar
118
- -------------------------- */
119
- /* Placeholder
120
- -------------------------- */
121
- /* BEM
122
- -------------------------- */
123
- ._uiBlocker_j0zl4_123 {
124
- position: absolute;
125
- top: 0;
126
- left: 0;
127
- width: 100%;
128
- height: 100%;
129
- background-color: var(--color-block-ui-overlay);
130
- z-index: 10;
131
- opacity: 0.6;
132
- border-radius: var(--border-radius-large);
133
- }
@@ -1,188 +0,0 @@
1
- import { d as defineComponent, e as createBlock, g as openBlock, dK as Transition, w as withCtx, aS as withDirectives, aT as vShow, j as createBaseVNode, n as normalizeClass, _ as _export_sfc, Q as createEventBus, a2 as defineStore, a4 as useWorkflowsStore, v as useSettingsStore, x as computed, cd as shallowRef, co as useVueFlow, dz as calculateNodeSize, bU as inject, r as ref, c3 as PiPWindowSymbol, cl as useActiveElement, dQ as useDeviceSupport, cX as toValue, eU as useEventListener } from "./index-BEC9W_3K.js";
2
- const _sfc_main = /* @__PURE__ */ defineComponent({
3
- __name: "BlockUi",
4
- props: {
5
- show: { type: Boolean, default: false }
6
- },
7
- setup(__props) {
8
- return (_ctx, _cache) => {
9
- return openBlock(), createBlock(Transition, {
10
- name: "fade",
11
- mode: "out-in"
12
- }, {
13
- default: withCtx(() => [
14
- withDirectives(createBaseVNode("div", {
15
- class: normalizeClass(["n8n-block-ui", _ctx.$style.uiBlocker]),
16
- role: "dialog",
17
- "aria-hidden": true
18
- }, null, 2), [
19
- [vShow, _ctx.show]
20
- ])
21
- ]),
22
- _: 1
23
- });
24
- };
25
- }
26
- });
27
- const uiBlocker = "_uiBlocker_j0zl4_123";
28
- const style0 = {
29
- uiBlocker
30
- };
31
- const cssModules = {
32
- "$style": style0
33
- };
34
- const N8nBlockUi = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules], ["__scopeId", "data-v-76a59b58"]]);
35
- const canvasEventBus = createEventBus();
36
- const useExperimentalNdvStore = defineStore("experimentalNdv", () => {
37
- const workflowStore = useWorkflowsStore();
38
- const settingsStore = useSettingsStore();
39
- const isEnabled = computed(
40
- () => !Number.isNaN(settingsStore.experimental__minZoomNodeSettingsInCanvas) && settingsStore.experimental__minZoomNodeSettingsInCanvas > 0
41
- );
42
- const maxCanvasZoom = computed(
43
- () => isEnabled.value ? settingsStore.experimental__minZoomNodeSettingsInCanvas : 4
44
- );
45
- const collapsedNodes = shallowRef({});
46
- function setNodeExpanded(nodeId, isExpanded) {
47
- collapsedNodes.value = {
48
- ...collapsedNodes.value,
49
- [nodeId]: isExpanded === void 0 ? !collapsedNodes.value[nodeId] : !isExpanded
50
- };
51
- }
52
- function collapseAllNodes() {
53
- collapsedNodes.value = workflowStore.allNodes.reduce(
54
- (acc, node) => {
55
- acc[node.id] = true;
56
- return acc;
57
- },
58
- {}
59
- );
60
- }
61
- function expandAllNodes() {
62
- collapsedNodes.value = {};
63
- }
64
- function isActive(canvasZoom) {
65
- return isEnabled.value && canvasZoom === maxCanvasZoom.value;
66
- }
67
- function focusNode(nodeId) {
68
- const nodeToFocus = workflowStore.getNodeById(nodeId);
69
- if (!nodeToFocus) {
70
- return;
71
- }
72
- const vueFlow = useVueFlow(workflowStore.workflow.id);
73
- collapsedNodes.value = workflowStore.allNodes.reduce(
74
- (acc, node) => {
75
- acc[node.id] = node.id !== nodeId;
76
- return acc;
77
- },
78
- {}
79
- );
80
- const workflow = workflowStore.getCurrentWorkflow();
81
- const nodeSize = calculateNodeSize(
82
- workflow.getChildNodes(nodeToFocus.name, "ALL_NON_MAIN").length > 0,
83
- workflow.getParentNodes(nodeToFocus.name, "ALL_NON_MAIN").length > 0,
84
- workflow.getParentNodes(nodeToFocus.name, "main").length,
85
- workflow.getChildNodes(nodeToFocus.name, "main").length,
86
- workflow.getParentNodes(nodeToFocus.name, "ALL_NON_MAIN").length
87
- );
88
- void vueFlow.setCenter(
89
- nodeToFocus.position[0] + nodeSize.width * 1.5 / 2,
90
- nodeToFocus.position[1] + 80,
91
- { duration: 200, zoom: maxCanvasZoom.value }
92
- );
93
- }
94
- return {
95
- isEnabled,
96
- maxCanvasZoom,
97
- collapsedNodes: computed(() => collapsedNodes.value),
98
- isActive,
99
- setNodeExpanded,
100
- expandAllNodes,
101
- collapseAllNodes,
102
- focusNode
103
- };
104
- });
105
- const useKeybindings = (keymap, options) => {
106
- const pipWindow = inject(PiPWindowSymbol, ref());
107
- const activeElement = useActiveElement({ window: pipWindow?.value });
108
- const { isCtrlKeyPressed } = useDeviceSupport();
109
- const isDisabled = computed(() => toValue(options?.disabled));
110
- const ignoreKeyPresses = computed(() => {
111
- if (!activeElement.value) return false;
112
- const active = activeElement.value;
113
- const isInput = ["INPUT", "TEXTAREA"].includes(active.tagName);
114
- const isContentEditable = active.closest("[contenteditable]") !== null;
115
- const isIgnoreClass = active.closest(".ignore-key-press-canvas") !== null;
116
- return isInput || isContentEditable || isIgnoreClass;
117
- });
118
- const normalizedKeymap = computed(
119
- () => Object.fromEntries(
120
- Object.entries(toValue(keymap)).flatMap(([shortcut, handler]) => {
121
- const shortcuts = shortcut.split("|");
122
- return shortcuts.map((s) => [normalizeShortcutString(s), handler]);
123
- })
124
- )
125
- );
126
- function shortcutPartsToString(parts) {
127
- return parts.map((key) => key.toLowerCase()).sort((a, b) => a.localeCompare(b)).join("+");
128
- }
129
- function normalizeShortcutString(shortcut) {
130
- if (shortcut.length === 1) {
131
- return shortcut.toLowerCase();
132
- }
133
- const splitChars = ["+", "_", "-"];
134
- const splitCharsRegEx = splitChars.reduce((acc, char) => {
135
- if (shortcut.startsWith(char) || shortcut.endsWith(char)) {
136
- return acc;
137
- }
138
- return char + acc;
139
- }, "");
140
- return shortcutPartsToString(shortcut.split(new RegExp(`[${splitCharsRegEx}]`)));
141
- }
142
- function keyboardEventCodeToKey(code) {
143
- if (code.startsWith("Digit")) {
144
- return code.replace("Digit", "").toLowerCase();
145
- } else if (code.startsWith("Key")) {
146
- return code.replace("Key", "").toLowerCase();
147
- }
148
- return code.toLowerCase();
149
- }
150
- function toShortcutString(event) {
151
- const { shiftKey, altKey } = event;
152
- const ctrlKey = isCtrlKeyPressed(event);
153
- const keys = "key" in event ? [event.key] : [];
154
- const codes = "code" in event ? [keyboardEventCodeToKey(event.code)] : [];
155
- const modifiers = [];
156
- if (shiftKey) {
157
- modifiers.push("shift");
158
- }
159
- if (ctrlKey) {
160
- modifiers.push("ctrl");
161
- }
162
- if (altKey) {
163
- modifiers.push("alt");
164
- }
165
- return {
166
- byKey: shortcutPartsToString([...modifiers, ...keys]),
167
- byCode: shortcutPartsToString([...modifiers, ...codes])
168
- };
169
- }
170
- function onKeyDown(event) {
171
- if (ignoreKeyPresses.value || isDisabled.value) return;
172
- const { byKey, byCode } = toShortcutString(event);
173
- const handler = normalizedKeymap.value[byKey] ?? normalizedKeymap.value[byCode];
174
- const run = typeof handler === "function" ? handler : handler?.disabled() ? void 0 : handler?.run;
175
- if (run) {
176
- event.preventDefault();
177
- event.stopPropagation();
178
- run(event);
179
- }
180
- }
181
- useEventListener(pipWindow?.value?.document ?? document, "keydown", onKeyDown);
182
- };
183
- export {
184
- N8nBlockUi as N,
185
- useKeybindings as a,
186
- canvasEventBus as c,
187
- useExperimentalNdvStore as u
188
- };