n8n-editor-ui 1.75.0 → 1.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CGrVAIIO.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-Bk0ZjgAz.js} +1 -1
  2. package/dist/assets/{AuthView-ilZ0xRQe.js → AuthView-CQW1x21E.js} +2 -2
  3. package/dist/assets/{CanvasChat-B3m7qTtB.js → CanvasChat-DuJwpZew.js} +19 -18
  4. package/dist/assets/{CanvasControls-laNSmWAd.js → CanvasControls-Br7x0c2w.js} +1 -1
  5. package/dist/assets/{ChangePasswordView-DGXlOlVn.js → ChangePasswordView-Ck-5oU_m.js} +3 -3
  6. package/dist/assets/CollectionParameter-DRNykodC.js +4 -0
  7. package/dist/assets/{ConcurrentExecutionsHeader-CDIlj36E.js → ConcurrentExecutionsHeader-Dfi130Qe.js} +2 -2
  8. package/dist/assets/{CredentialsView-BqjdkWhh.js → CredentialsView-D44diL3J.js} +4 -4
  9. package/dist/assets/{ErrorView--I-VVLk9.js → ErrorView-ub9nQRXV.js} +1 -1
  10. package/dist/assets/{ExecutionsView-BiSV7J9a.js → ExecutionsView-DsAXYzOp.js} +17 -5
  11. package/dist/assets/{FileSaver.min-LAx9vEXw.js → FileSaver.min-nbqT44De.js} +1 -1
  12. package/dist/assets/{FixedCollectionParameter-ByX4uXQc.js → FixedCollectionParameter-DwiBHQQW.js} +1 -1
  13. package/dist/assets/{ForgotMyPasswordView-C-tewPwi.js → ForgotMyPasswordView-CH0wwots.js} +3 -3
  14. package/dist/assets/{Logo-CyDV6IUz.js → Logo-CIYEwVrA.js} +1 -1
  15. package/dist/assets/{MainHeader-nG1530RP.js → MainHeader-CN6RTCuC.js} +15 -105
  16. package/dist/assets/{MainHeader-BIKp2Ncp.css → MainHeader-DC-g9NGP.css} +12 -11
  17. package/dist/assets/{MainSidebar-CF4s-Ouk.js → MainSidebar-ih4BlE0n.js} +4 -81
  18. package/dist/assets/{NodeCreation-De8juZ9k.js → NodeCreation-DQUKwvhM.js} +4 -4
  19. package/dist/assets/{NodeCreator-Cra3o41k.js → NodeCreator-B1R35yuN.js} +5 -5
  20. package/dist/assets/{NodeViewSwitcher-BE3EzD3h.js → NodeViewSwitcher-TsFkW80s.js} +89 -48
  21. package/dist/assets/{NodeViewSwitcher-CB1zkjni.css → NodeViewSwitcher-aJwrKS8o.css} +23 -23
  22. package/dist/assets/{ProjectCardBadge-CYEfBgU2.js → ProjectCardBadge-BcCHZFJ2.js} +2 -15
  23. package/dist/assets/{ProjectHeader-DUhyXx1P.js → ProjectHeader-CSOMgkVs.js} +1 -1
  24. package/dist/assets/{ProjectSettings-DmPZa04c.js → ProjectSettings-DtqNq5WU.js} +2 -2
  25. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-C0Zr49w5.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-CZIKiOsY.js} +1 -1
  26. package/dist/assets/{ResourcesListLayout-BF7yHXTU.js → ResourcesListLayout-CvkkebAN.js} +21 -11
  27. package/dist/assets/{ResourcesListLayout-CJC-YvjD.css → ResourcesListLayout-d7mMNhOL.css} +6 -6
  28. package/dist/assets/{RunDataJson-D6kl_yU3.js → RunDataJson-DA1LNZGU.js} +15 -15
  29. package/dist/assets/{RunDataJson-BXTLuo7i.css → RunDataJson-Txw0lqay.css} +1 -0
  30. package/dist/assets/{RunDataJsonActions-CBSKVOkR.js → RunDataJsonActions-DZzYHsR7.js} +2 -2
  31. package/dist/assets/{RunDataSearch-C8ri_W9l.js → RunDataSearch-D6-6kSmI.js} +1 -1
  32. package/dist/assets/{RunDataTable-fDrhEtER.js → RunDataTable-bDBgkWN3.js} +2 -2
  33. package/dist/assets/{SamlOnboarding-B9rLeJiC.js → SamlOnboarding-ULq0l8s6.js} +3 -3
  34. package/dist/assets/{SettingsApiView-DYA_Z_Bm.js → SettingsApiView-CVRk9yEi.js} +1 -1
  35. package/dist/assets/{SettingsCommunityNodesView-DWF5X20Q.js → SettingsCommunityNodesView-B6We65ta.js} +4 -4
  36. package/dist/assets/{SettingsExternalSecrets-D56h6u5r.js → SettingsExternalSecrets-wrWe6ob7.js} +1 -1
  37. package/dist/assets/{SettingsLdapView-tZze_vXh.js → SettingsLdapView-CeKm7XML.js} +1 -1
  38. package/dist/assets/{SettingsLogStreamingView-Bw3FugIn.js → SettingsLogStreamingView-DxAoQ7dF.js} +1 -1
  39. package/dist/assets/{SettingsPersonalView-BRXa1jDG.js → SettingsPersonalView-DFcUFc08.js} +1 -1
  40. package/dist/assets/{SettingsSourceControl-BBn_qSA4.js → SettingsSourceControl-D9u9tDhF.js} +1 -1
  41. package/dist/assets/{SettingsSso-BJCIqJoE.js → SettingsSso-gUSJtFP0.js} +1 -1
  42. package/dist/assets/{SettingsUsageAndPlan-BLxfFlk9.js → SettingsUsageAndPlan-C4rSaxsT.js} +1 -1
  43. package/dist/assets/{SettingsUsersView-DgquKogH.js → SettingsUsersView-DSaFQg1K.js} +1 -1
  44. package/dist/assets/{SettingsView-geSqtBi5.js → SettingsView-BcBZpdTs.js} +1 -1
  45. package/dist/assets/{SetupView-BUnzDsGx.js → SetupView-BnZ-D6Jy.js} +3 -3
  46. package/dist/assets/{SetupWorkflowCredentialsButton-OMbE5FVR.js → SetupWorkflowCredentialsButton-B3DfAGgF.js} +1 -1
  47. package/dist/assets/{SetupWorkflowFromTemplateView-CDUDJkOD.js → SetupWorkflowFromTemplateView-DVLoF-kN.js} +3 -3
  48. package/dist/assets/{SigninView-BM3kNgaO.js → SigninView-BI4UTqFm.js} +3 -3
  49. package/dist/assets/{SignoutView-CpD96iu3.js → SignoutView-4KEfr3ze.js} +1 -1
  50. package/dist/assets/{SignupView-BHirfE85.js → SignupView-BdxSQxbe.js} +3 -3
  51. package/dist/assets/{TemplateDetails-CnvXukVX.js → TemplateDetails-BU5E9lAh.js} +1 -1
  52. package/dist/assets/{TemplateList-oSLDmMo9.js → TemplateList-CSyTesvr.js} +1 -1
  53. package/dist/assets/{TemplatesCollectionView-CoK7iBJV.js → TemplatesCollectionView-aqqEP8td.js} +5 -5
  54. package/dist/assets/{TemplatesSearchView-Cu2hXp49.js → TemplatesSearchView-BXQw_aAZ.js} +3 -3
  55. package/dist/assets/{TemplatesView-B0NINzN-.js → TemplatesView-BbVjMkgy.js} +1 -1
  56. package/dist/assets/{TemplatesWorkflowView-BQngHyNE.js → TemplatesWorkflowView-Cao3RpEd.js} +5 -5
  57. package/dist/assets/{TestDefinitionEditView-DQ1n3kAQ.js → TestDefinitionEditView-CgW-4tTx.js} +785 -547
  58. package/dist/assets/{TestDefinitionEditView-FI1GVbhl.css → TestDefinitionEditView-d7yfvp9P.css} +601 -238
  59. package/dist/assets/{TestDefinitionListView-BnnmuS88.js → TestDefinitionListView-D3eg62pM.js} +93 -68
  60. package/dist/assets/{TestDefinitionRootView-D0gG8g0k.js → TestDefinitionRootView-DJdsaL4M.js} +1 -1
  61. package/dist/assets/VariablesView-2TmNYpas.js +509 -0
  62. package/dist/assets/{VariablesView-D4pRzSuY.css → VariablesView-CIfrpJdg.css} +21 -54
  63. package/dist/assets/{WorkerView-Bm_msQwI.js → WorkerView-C3LhhFeZ.js} +5 -5
  64. package/dist/assets/{WorkflowActivator-B5QyeA7d.js → WorkflowActivator-DiOQiQK2.js} +2 -2
  65. package/dist/assets/{WorkflowExecutionsInfoAccordion-BYRGFbed.js → WorkflowExecutionsInfoAccordion-BmMiVSHQ.js} +1 -1
  66. package/dist/assets/{WorkflowExecutionsLandingPage-DuWFInNH.js → WorkflowExecutionsLandingPage-CxbfP9Kf.js} +2 -2
  67. package/dist/assets/{WorkflowExecutionsPreview-Bwo_dPzH.js → WorkflowExecutionsPreview-Cku-ZBQ3.js} +5 -5
  68. package/dist/assets/{WorkflowExecutionsView-BUHtKz5M.css → WorkflowExecutionsView-BjdRnQOE.css} +32 -32
  69. package/dist/assets/{WorkflowExecutionsView-9Bir7Ax7.js → WorkflowExecutionsView-C0CnXLDW.js} +43 -29
  70. package/dist/assets/{WorkflowHistory-Cu1-T0_R.js → WorkflowHistory-Bg6AIKXX.js} +3 -3
  71. package/dist/assets/{WorkflowOnboardingView-D_PW4z5K.js → WorkflowOnboardingView-LXWyp2is.js} +1 -1
  72. package/dist/assets/{WorkflowPreview-DMBM5zJ7.js → WorkflowPreview-CsR9t5iY.js} +1 -1
  73. package/dist/assets/{WorkflowsView-DTJQfqt9.js → WorkflowsView-DQJAEKqk.js} +7 -7
  74. package/dist/assets/{easyAiWorkflowUtils-oy6hZxJE.js → easyAiWorkflowUtils-D3El0FyE.js} +1 -1
  75. package/dist/assets/{index-DuAsyBNI.css → index-DsHZ4yOE.css} +255 -36
  76. package/dist/assets/{index-DVhaXv7m.js → index-DvkbRfZN.js} +2558 -1951
  77. package/dist/assets/{polyfills-BN5TIqPj.js → polyfills-DNwgos9f.js} +650 -0
  78. package/dist/assets/{pushConnection.store-nnc6AEL8.js → pushConnection.store-5KniMGTZ.js} +1 -1
  79. package/dist/assets/{templateActions-BjByEL0H.js → templateActions-UGDN8R7F.js} +1 -1
  80. package/dist/assets/useBeforeUnload-BwgAu_Gm.js +43 -0
  81. package/dist/assets/{useBugReporting-Cgoz2JMv.js → useBugReporting-Bqv4ngy7.js} +2 -1
  82. package/dist/assets/{useCanvasOperations-BSKKylIT.css → useCanvasOperations-Bjf582lB.css} +12 -12
  83. package/dist/assets/{useCanvasOperations-CZCbgXks.js → useCanvasOperations-Cw1yjntX.js} +56 -25
  84. package/dist/assets/{useExecutionDebugging-Czm5h-sB.js → useExecutionDebugging-CTzUvS-m.js} +1 -1
  85. package/dist/assets/{useExecutionHelpers-qeNSBls3.js → useExecutionHelpers-ts_ANr0X.js} +1 -1
  86. package/dist/assets/{usePinnedData-9d5rr-Ll.js → usePinnedData-CAHmwr13.js} +1 -1
  87. package/dist/assets/{usePushConnection-C5MO_Lyn.js → usePushConnection-BcVRW8VB.js} +3 -3
  88. package/dist/assets/{useRunWorkflow-BeM5B2jX.js → useRunWorkflow-DZq8rmMi.js} +7 -4
  89. package/dist/assets/{useWorkflowActivate-CAW-Lrw6.js → useWorkflowActivate-y3uHMZeh.js} +1 -1
  90. package/dist/index.html +3 -3
  91. package/package.json +1 -1
  92. package/dist/assets/CollectionParameter-CS9E8rhZ.js +0 -4
  93. package/dist/assets/VariablesView-CkD1CK7k.js +0 -599
  94. package/dist/assets/useNodeViewVersionSwitcher-Z6V-jW5s.js +0 -93
@@ -0,0 +1,43 @@
1
+ import { K as useUIStore, $ as useCanvasStore, r as ref, q as computed, V as VIEWS, g as useI18n } from "./index-DvkbRfZN.js";
2
+ function useBeforeUnload({ route }) {
3
+ const uiStore = useUIStore();
4
+ const canvasStore = useCanvasStore();
5
+ const i18n = useI18n();
6
+ const unloadTimeout = ref(null);
7
+ const isDemoRoute = computed(() => route.name === VIEWS.DEMO);
8
+ const handlers = [];
9
+ function onBeforeUnload(e) {
10
+ if (isDemoRoute.value || window.preventNodeViewBeforeUnload) {
11
+ return;
12
+ }
13
+ handlers.forEach((handler) => handler());
14
+ if (uiStore.stateIsDirty) {
15
+ e.returnValue = true;
16
+ return true;
17
+ } else {
18
+ canvasStore.startLoading(i18n.baseText("nodeView.redirecting"));
19
+ return;
20
+ }
21
+ }
22
+ function addBeforeUnloadHandler(handler) {
23
+ handlers.push(handler);
24
+ }
25
+ function addBeforeUnloadEventBindings() {
26
+ window.addEventListener("beforeunload", onBeforeUnload);
27
+ }
28
+ function removeBeforeUnloadEventBindings() {
29
+ if (unloadTimeout.value) {
30
+ clearTimeout(unloadTimeout.value);
31
+ }
32
+ window.removeEventListener("beforeunload", onBeforeUnload);
33
+ }
34
+ return {
35
+ onBeforeUnload,
36
+ addBeforeUnloadEventBindings,
37
+ removeBeforeUnloadEventBindings,
38
+ addBeforeUnloadHandler
39
+ };
40
+ }
41
+ export {
42
+ useBeforeUnload as u
43
+ };
@@ -1,4 +1,4 @@
1
- import { g8 as useDebugInfo } from "./index-DVhaXv7m.js";
1
+ import { gc as useDebugInfo } from "./index-DvkbRfZN.js";
2
2
  const BASE_FORUM_URL = "https://github.com/n8n-io/n8n/issues/new?labels=bug-report";
3
3
  const REPORT_TEMPLATE = `
4
4
  <!-- Please follow the template below. Skip the questions that are not relevant to you. -->
@@ -13,6 +13,7 @@ const REPORT_TEMPLATE = `
13
13
 
14
14
  \`\`\`
15
15
  (Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)
16
+ ⚠️ WARNING ⚠️ If you have sensitive data in your workflow (like API keys), please remove it before sharing.
16
17
  \`\`\`
17
18
 
18
19
 
@@ -2471,16 +2471,16 @@
2471
2471
  -------------------------- */
2472
2472
  /* BEM
2473
2473
  -------------------------- */
2474
- ._handle_17785_123 {
2474
+ ._handle_19arw_123 {
2475
2475
  display: flex;
2476
2476
  flex-direction: row;
2477
2477
  align-items: center;
2478
2478
  justify-content: center;
2479
2479
  }
2480
- ._handle_17785_123._connected_17785_129 ._label_17785_129 {
2480
+ ._handle_19arw_123._connected_19arw_129 ._label_19arw_129 {
2481
2481
  max-width: 96px;
2482
2482
  }
2483
- ._label_17785_129 {
2483
+ ._label_19arw_129 {
2484
2484
  position: absolute;
2485
2485
  background: var(--color-canvas-label-background);
2486
2486
  z-index: 1;
@@ -2489,22 +2489,22 @@
2489
2489
  text-overflow: ellipsis;
2490
2490
  overflow: hidden;
2491
2491
  }
2492
- ._required_17785_143 ._label_17785_129::after {
2492
+ ._required_19arw_143 ._label_19arw_129::after {
2493
2493
  content: "*";
2494
2494
  color: var(--color-danger);
2495
2495
  }
2496
- ._outputLabel_17785_148 {
2496
+ ._outputLabel_19arw_148 {
2497
2497
  top: 50%;
2498
2498
  left: var(--spacing-m);
2499
2499
  transform: translate(0, -50%);
2500
2500
  font-size: var(--font-size-2xs);
2501
2501
  color: var(--color-foreground-xdark);
2502
2502
  }
2503
- ._runDataLabel_17785_156 {
2503
+ ._runDataLabel_19arw_156 {
2504
2504
  position: absolute;
2505
- top: 0;
2505
+ top: 50%;
2506
2506
  left: 50%;
2507
- transform: translate(-50%, -50%);
2507
+ transform: translate(-50%, -150%);
2508
2508
  font-size: var(--font-size-xs);
2509
2509
  color: var(--color-success);
2510
2510
  }/* BEM support Func
@@ -4134,11 +4134,11 @@ path[data-v-161512f5] {
4134
4134
  -------------------------- */
4135
4135
  /* BEM
4136
4136
  -------------------------- */
4137
- .minimap-enter-active[data-v-179da034],
4138
- .minimap-leave-active[data-v-179da034] {
4137
+ .minimap-enter-active[data-v-fe4aa69f],
4138
+ .minimap-leave-active[data-v-fe4aa69f] {
4139
4139
  transition: opacity 0.3s ease;
4140
4140
  }
4141
- .minimap-enter-from[data-v-179da034],
4142
- .minimap-leave-to[data-v-179da034] {
4141
+ .minimap-enter-from[data-v-fe4aa69f],
4142
+ .minimap-leave-to[data-v-fe4aa69f] {
4143
4143
  opacity: 0;
4144
4144
  }
@@ -1,6 +1,6 @@
1
- import { gj as createCompounder, gk as SetCache, gl as arrayIncludes, gm as cacheHas, gn as baseRest, go as isArrayLikeObject, gp as baseFlatten, r as ref, K as useUIStore, bp as useNodeTypesStore, T as useWorkflowsStore, a0 as useSourceControlStore, q as computed, am as getResourcePermissions, cT as isPresent, H as watch, dB as getMousePosition$1, aC as STICKY_NODE_TYPE, g as useI18n, gq as NOT_DUPLICATABLE_NODE_TYPES, d as defineComponent, E as onClickOutside, l as unref, c as openBlock, e as createBlock, j as createBaseVNode, i as createVNode, w as withCtx, n as normalizeClass, gr as N8nActionDropdown, B as normalizeStyle, gs as Teleport, f as createCommentVNode, _ as _export_sfc$1, bl as v4, gt as CORE_NODES_CATEGORY, gu as DEFAULT_SUBCATEGORY, p as useSettingsStore, gv as AI_TRANSFORM_NODE_TYPE, gw as sublimeSearch, bb as AI_SUBCATEGORY, bc as AI_CATEGORY_AGENTS, gx as sortBy, fP as i18n, gy as AI_CATEGORY_OTHER_TOOLS, gz as AI_OTHERS_NODE_CREATOR_VIEW, gA as AI_CATEGORY_DOCUMENT_LOADERS, bi as NodeConnectionType, gB as AI_CATEGORY_LANGUAGE_MODELS, gC as AI_CATEGORY_MEMORY, gD as AI_CATEGORY_OUTPUTPARSER, gE as AI_CATEGORY_RETRIEVERS, gF as AI_CATEGORY_TEXT_SPLITTERS, gG as AI_CATEGORY_TOOLS, gH as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, gI as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, gJ as AI_CATEGORY_EMBEDDING, gK as AI_CATEGORY_VECTOR_STORES, gL as AI_UNCATEGORIZED_CATEGORY, aN as useTemplatesStore, eq as AI_NODE_CREATOR_VIEW, dR as TRIGGER_NODE_CREATOR_VIEW, bJ as MANUAL_TRIGGER_NODE_TYPE, bK as WEBHOOK_NODE_TYPE, gM as EMAIL_IMAP_NODE_TYPE, gN as SCHEDULE_TRIGGER_NODE_TYPE, bz as FORM_TRIGGER_NODE_TYPE, g4 as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, b8 as CHAT_TRIGGER_NODE_TYPE, gO as OTHER_TRIGGER_NODES_SUBCATEGORY, eJ as REGULAR_NODE_CREATOR_VIEW, gP as RSS_READ_NODE_TYPE, gQ as EMAIL_SEND_NODE_TYPE, gR as TRANSFORM_DATA_SUBCATEGORY, gS as FILTER_NODE_TYPE, gT as REMOVE_DUPLICATES_NODE_TYPE, gU as SPLIT_OUT_NODE_TYPE, gV as LIMIT_NODE_TYPE, gW as SUMMARIZE_NODE_TYPE, gX as AGGREGATE_NODE_TYPE, gY as MERGE_NODE_TYPE, cp as HTML_NODE_TYPE, gZ as MARKDOWN_NODE_TYPE, g_ as XML_NODE_TYPE, g$ as CRYPTO_NODE_TYPE, h0 as EXTRACT_FROM_FILE_NODE_TYPE, h1 as CONVERT_TO_FILE_NODE_TYPE, h2 as COMPRESSION_NODE_TYPE, h3 as EDIT_IMAGE_NODE_TYPE, h4 as FLOWS_CONTROL_SUBCATEGORY, h5 as IF_NODE_TYPE, h6 as SPLIT_IN_BATCHES_NODE_TYPE, h7 as HELPERS_SUBCATEGORY, h8 as HTTP_REQUEST_NODE_TYPE, h9 as CODE_NODE_TYPE, bd as AI_CATEGORY_CHAINS, ha as SET_NODE_TYPE, hb as DATETIME_NODE_TYPE, R as defineStore, $ as useCanvasStore, hc as AI_CATEGORY_ROOT_NODES, y as nextTick, be as AI_CODE_NODE_TYPE, bL as AI_TRANSFORM_NODE_TYPE$1, eS as CanvasConnectionMode, hd as isValidCanvasConnectionMode, d9 as isValidNodeConnectionType, S as STORES, at as useNDVStore, dG as NODE_CREATOR_OPEN_SOURCES, he as isVueFlowConnection, e1 as nodeConnectionTypes, bf as getNodeInputs, dr as CUSTOM_API_CALL_KEY, aU as useExternalHooks, ak as useTelemetry, hf as effectScope, ck as toRef, h as createElementBlock, s as renderSlot, cb as useSlots, br as provide, b5 as onUnmounted, ax as onBeforeMount, o as onMounted, hg as createPropsRestProxy, hh as useAttrs, F as Fragment, d7 as getCurrentInstance, dA as reactive, aX as inject, t as toDisplayString, A as renderList, x as onBeforeUnmount, hi as isMemoSame, hj as getCurrentScope, hk as onScopeDispose, aY as isRef, aZ as toRefs$1, hl as customRef, hm as toValue$1, b1 as resolveDynamicComponent, k as createTextVNode, b0 as mergeProps, m as resolveComponent, aq as h, hn as markRaw, ho as readonly, dF as KeyboardShortcutTooltip, hp as CanvasKey, aa as useCssModule, bo as watchEffect, a_ as normalizeProps, hq as CanvasNodeKey, eP as CanvasNodeRenderType, hr as refThrottled, hs as mergeModels, ht as useModel, bq as useNodeHelpers, bI as TitledList, cQ as resolveDirective, ay as withDirectives, ac as nodeViewEventBus, hu as CanvasNodeHandleKey, az as vShow, c$ as Transition$2, bs as _sfc_main$y, I as withModifiers, C as createEventBus, bQ as isEqual, hv as useActiveElement, d2 as useDeviceSupport, hw as useEventListener$1, aT as createSlots, dm as GRID_SIZE, hx as onKeyDown, hy as onKeyUp, ca as useThrottleFn, a$ as guardReactiveProps, cs as Suspense, bh as getNodeOutputs, d1 as getTriggerNodeServiceName, eY as sanitizeHtml, bH as nodeIssuesToString, du as WAIT_NODE_TYPE, dv as SEND_AND_WAIT_OPERATION, dw as FORM_NODE_TYPE, dx as WAIT_INDEFINITELY, Z as useRootStore, bS as useCredentialsStore, bV as useHistoryStore, D as useTagsStore, au as useExecutionsStore, a as useToast, a4 as useWorkflowHelpers, b7 as useClipboard, dU as MoveNodeCommand, c4 as RenameNodeCommand, eN as RemoveNodeCommand, eL as useDataSchema, d$ as NODE_SIZE, hz as AddNodeCommand, c0 as getNodeParameters, dW as getNewNodePosition, hA as DEFAULT_NODE_SIZE, hB as CONFIGURATION_NODE_SIZE, bg as getConnectionTypes, e0 as generateOffsets, hC as CONFIGURABLE_NODE_SIZE, d_ as PUSH_NODES_OFFSET, ea as AddConnectionCommand, ek as RemoveConnectionCommand, dV as UPDATE_WEBHOOK_ID_NODE_TYPES, dP as generateNodesGraph, a8 as EnterpriseEditionFeature, c1 as deepCopy } from "./index-DVhaXv7m.js";
2
- import { u as useBugReporting } from "./useBugReporting-Cgoz2JMv.js";
3
- import { c as capitalize, u as usePinnedData } from "./usePinnedData-9d5rr-Ll.js";
1
+ import { gn as createCompounder, go as SetCache, gp as arrayIncludes, gq as cacheHas, gr as baseRest, gs as isArrayLikeObject, gt as baseFlatten, r as ref, K as useUIStore, bn as useNodeTypesStore, T as useWorkflowsStore, a0 as useSourceControlStore, q as computed, al as getResourcePermissions, cQ as isPresent, H as watch, dy as getMousePosition$1, aB as STICKY_NODE_TYPE, g as useI18n, gu as NOT_DUPLICATABLE_NODE_TYPES, d as defineComponent, E as onClickOutside, l as unref, c as openBlock, e as createBlock, j as createBaseVNode, i as createVNode, w as withCtx, n as normalizeClass, gv as N8nActionDropdown, B as normalizeStyle, gw as Teleport, f as createCommentVNode, _ as _export_sfc$1, bj as v4, gx as CORE_NODES_CATEGORY, gy as DEFAULT_SUBCATEGORY, p as useSettingsStore, gz as AI_TRANSFORM_NODE_TYPE, gA as sublimeSearch, b9 as AI_SUBCATEGORY, ba as AI_CATEGORY_AGENTS, gB as sortBy, fU as i18n, gC as AI_CATEGORY_OTHER_TOOLS, gD as AI_OTHERS_NODE_CREATOR_VIEW, gE as AI_CATEGORY_DOCUMENT_LOADERS, bg as NodeConnectionType, gF as AI_CATEGORY_LANGUAGE_MODELS, gG as AI_CATEGORY_MEMORY, gH as AI_CATEGORY_OUTPUTPARSER, gI as AI_CATEGORY_RETRIEVERS, gJ as AI_CATEGORY_TEXT_SPLITTERS, gK as AI_CATEGORY_TOOLS, gL as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, gM as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, gN as AI_CATEGORY_EMBEDDING, gO as AI_CATEGORY_VECTOR_STORES, gP as AI_UNCATEGORIZED_CATEGORY, aL as useTemplatesStore, en as AI_NODE_CREATOR_VIEW, dO as TRIGGER_NODE_CREATOR_VIEW, bH as MANUAL_TRIGGER_NODE_TYPE, bI as WEBHOOK_NODE_TYPE, gQ as EMAIL_IMAP_NODE_TYPE, gR as SCHEDULE_TRIGGER_NODE_TYPE, bx as FORM_TRIGGER_NODE_TYPE, g8 as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, b6 as CHAT_TRIGGER_NODE_TYPE, gS as OTHER_TRIGGER_NODES_SUBCATEGORY, eG as REGULAR_NODE_CREATOR_VIEW, gT as RSS_READ_NODE_TYPE, gU as EMAIL_SEND_NODE_TYPE, gV as TRANSFORM_DATA_SUBCATEGORY, gW as FILTER_NODE_TYPE, gX as REMOVE_DUPLICATES_NODE_TYPE, gY as SPLIT_OUT_NODE_TYPE, gZ as LIMIT_NODE_TYPE, g_ as SUMMARIZE_NODE_TYPE, g$ as AGGREGATE_NODE_TYPE, h0 as MERGE_NODE_TYPE, cn as HTML_NODE_TYPE, h1 as MARKDOWN_NODE_TYPE, h2 as XML_NODE_TYPE, h3 as CRYPTO_NODE_TYPE, h4 as EXTRACT_FROM_FILE_NODE_TYPE, h5 as CONVERT_TO_FILE_NODE_TYPE, h6 as COMPRESSION_NODE_TYPE, h7 as EDIT_IMAGE_NODE_TYPE, h8 as FLOWS_CONTROL_SUBCATEGORY, h9 as IF_NODE_TYPE, ha as SPLIT_IN_BATCHES_NODE_TYPE, hb as HELPERS_SUBCATEGORY, hc as HTTP_REQUEST_NODE_TYPE, hd as CODE_NODE_TYPE, bb as AI_CATEGORY_CHAINS, he as SET_NODE_TYPE, hf as DATETIME_NODE_TYPE, R as defineStore, $ as useCanvasStore, hg as AI_CATEGORY_ROOT_NODES, y as nextTick, bc as AI_CODE_NODE_TYPE, bJ as AI_TRANSFORM_NODE_TYPE$1, eP as CanvasConnectionMode, hh as isValidCanvasConnectionMode, d6 as isValidNodeConnectionType, S as STORES, as as useNDVStore, dD as NODE_CREATOR_OPEN_SOURCES, hi as isVueFlowConnection, d_ as nodeConnectionTypes, bd as getNodeInputs, dn as CUSTOM_API_CALL_KEY, aS as useExternalHooks, aj as useTelemetry, hj as effectScope, ci as toRef, h as createElementBlock, s as renderSlot, c9 as useSlots, bp as provide, b3 as onUnmounted, aw as onBeforeMount, o as onMounted, hk as createPropsRestProxy, hl as useAttrs, F as Fragment, d4 as getCurrentInstance, dx as reactive, aV as inject, t as toDisplayString, A as renderList, x as onBeforeUnmount, hm as isMemoSame, hn as getCurrentScope, ho as onScopeDispose, aW as isRef, aX as toRefs$1, hp as customRef, hq as toValue$1, a$ as resolveDynamicComponent, k as createTextVNode, a_ as mergeProps, m as resolveComponent, ap as h, hr as markRaw, hs as readonly, dC as KeyboardShortcutTooltip, ht as CanvasKey, aa as useCssModule, bm as watchEffect, aY as normalizeProps, hu as CanvasNodeKey, eM as CanvasNodeRenderType, hv as refThrottled, hw as mergeModels, hx as useModel, bo as useNodeHelpers, bG as TitledList, cN as resolveDirective, ax as withDirectives, ac as nodeViewEventBus, hy as CanvasNodeHandleKey, ay as vShow, cY as Transition$2, bq as _sfc_main$y, I as withModifiers, C as createEventBus, bO as isEqual, hz as useActiveElement, c$ as useDeviceSupport, hA as useEventListener$1, aR as createSlots, dj as GRID_SIZE, hB as onKeyDown, hC as onKeyUp, c8 as useThrottleFn, aZ as guardReactiveProps, cq as Suspense, bf as getNodeOutputs, c_ as getTriggerNodeServiceName, eV as sanitizeHtml, bF as nodeIssuesToString, dr as WAIT_NODE_TYPE, ds as SEND_AND_WAIT_OPERATION, dt as FORM_NODE_TYPE, du as WAIT_INDEFINITELY, Z as useRootStore, bQ as useCredentialsStore, bT as useHistoryStore, D as useTagsStore, at as useExecutionsStore, a as useToast, a4 as useWorkflowHelpers, b5 as useClipboard, dR as MoveNodeCommand, c2 as RenameNodeCommand, eK as RemoveNodeCommand, eI as useDataSchema, dY as NODE_SIZE, hD as AddNodeCommand, b_ as getNodeParameters, dT as getNewNodePosition, hE as DEFAULT_NODE_SIZE, hF as CONFIGURATION_NODE_SIZE, be as getConnectionTypes, dZ as generateOffsets, hG as CONFIGURABLE_NODE_SIZE, dX as PUSH_NODES_OFFSET, e7 as AddConnectionCommand, eh as RemoveConnectionCommand, dS as UPDATE_WEBHOOK_ID_NODE_TYPES, dM as generateNodesGraph, a8 as EnterpriseEditionFeature, b$ as deepCopy } from "./index-DvkbRfZN.js";
2
+ import { u as useBugReporting } from "./useBugReporting-Bqv4ngy7.js";
3
+ import { c as capitalize, u as usePinnedData } from "./usePinnedData-CAHmwr13.js";
4
4
  var camelCase = createCompounder(function(result, word, index) {
5
5
  word = word.toLowerCase();
6
6
  return result + (index ? capitalize(word) : word);
@@ -248,7 +248,9 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
248
248
  emit("action", action, contextMenu2.targetNodeIds.value);
249
249
  }
250
250
  function closeMenu(event) {
251
- event.preventDefault();
251
+ if (event.cancelable) {
252
+ event.preventDefault();
253
+ }
252
254
  event.stopPropagation();
253
255
  contextMenu2.close();
254
256
  }
@@ -11704,11 +11706,13 @@ function getEdgeRenderData(props, {
11704
11706
  connectionType = NodeConnectionType.Main
11705
11707
  } = {}) {
11706
11708
  const { targetX, targetY, sourceX, sourceY, sourcePosition, targetPosition } = props;
11709
+ const isConnectorStraight = sourceY === targetY;
11707
11710
  if (!isRightOfSourceHandle(sourceX, targetX) || connectionType !== NodeConnectionType.Main) {
11708
11711
  const segment = getBezierPath(props);
11709
11712
  return {
11710
11713
  segments: [segment],
11711
- labelPosition: [segment[1], segment[2]]
11714
+ labelPosition: [segment[1], segment[2]],
11715
+ isConnectorStraight
11712
11716
  };
11713
11717
  }
11714
11718
  const firstSegmentTargetX = (sourceX + targetX) / 2;
@@ -11735,7 +11739,8 @@ function getEdgeRenderData(props, {
11735
11739
  });
11736
11740
  return {
11737
11741
  segments: [firstSegment, secondSegment],
11738
- labelPosition: [firstSegmentTargetX, firstSegmentTargetY]
11742
+ labelPosition: [firstSegmentTargetX, firstSegmentTargetY],
11743
+ isConnectorStraight
11739
11744
  };
11740
11745
  }
11741
11746
  function injectStrict(key, fallback) {
@@ -17098,8 +17103,9 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
17098
17103
  const node2 = inject(CanvasNodeKey);
17099
17104
  const slots = useSlots();
17100
17105
  const Render = () => {
17106
+ const renderType2 = node2?.data.value.render.type ?? CanvasNodeRenderType.Default;
17101
17107
  let Component;
17102
- switch (node2?.data.value.render.type) {
17108
+ switch (renderType2) {
17103
17109
  case CanvasNodeRenderType.StickyNote:
17104
17110
  Component = CanvasNodeStickyNote;
17105
17111
  break;
@@ -17109,7 +17115,13 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
17109
17115
  default:
17110
17116
  Component = CanvasNodeDefault;
17111
17117
  }
17112
- return h(Component, slots.default);
17118
+ return h(
17119
+ Component,
17120
+ {
17121
+ "data-canvas-node-render-type": renderType2
17122
+ },
17123
+ slots.default
17124
+ );
17113
17125
  };
17114
17126
  return (_ctx, _cache) => {
17115
17127
  return openBlock(), createBlock(Render);
@@ -17446,12 +17458,12 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
17446
17458
  };
17447
17459
  }
17448
17460
  });
17449
- const handle$3 = "_handle_17785_123";
17450
- const connected = "_connected_17785_129";
17451
- const label$2 = "_label_17785_129";
17452
- const required$2 = "_required_17785_143";
17453
- const outputLabel = "_outputLabel_17785_148";
17454
- const runDataLabel = "_runDataLabel_17785_156";
17461
+ const handle$3 = "_handle_19arw_123";
17462
+ const connected = "_connected_19arw_129";
17463
+ const label$2 = "_label_19arw_129";
17464
+ const required$2 = "_required_19arw_143";
17465
+ const outputLabel = "_outputLabel_19arw_148";
17466
+ const runDataLabel = "_runDataLabel_19arw_156";
17455
17467
  const style0$8 = {
17456
17468
  handle: handle$3,
17457
17469
  connected,
@@ -17728,7 +17740,7 @@ const cssModules$4 = {
17728
17740
  "$style": style0$4
17729
17741
  };
17730
17742
  const CanvasHandleRenderer = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__cssModules", cssModules$4]]);
17731
- const _hoisted_1$4 = ["data-node-name", "data-node-type"];
17743
+ const _hoisted_1$4 = ["data-test-id", "data-node-name", "data-node-type"];
17732
17744
  const _sfc_main$7 = /* @__PURE__ */ defineComponent({
17733
17745
  __name: "CanvasNode",
17734
17746
  props: {
@@ -17791,6 +17803,10 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
17791
17803
  selected: props.selected,
17792
17804
  ...Object.fromEntries([...nodeClasses.value].map((c) => [c, true]))
17793
17805
  }));
17806
+ const renderType2 = computed(() => props.data.render.type);
17807
+ const dataTestId = computed(
17808
+ () => [CanvasNodeRenderType.StickyNote, CanvasNodeRenderType.AddNodes].includes(renderType2.value) ? void 0 : "canvas-node"
17809
+ );
17794
17810
  const canvasNodeEventBus = ref(createEventBus());
17795
17811
  function emitCanvasNodeEvent(event) {
17796
17812
  if (event.ids.includes(props.id) && canvasNodeEventBus.value) {
@@ -17936,7 +17952,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
17936
17952
  return (_ctx, _cache) => {
17937
17953
  return openBlock(), createElementBlock("div", {
17938
17954
  class: normalizeClass(classes.value),
17939
- "data-test-id": "canvas-node",
17955
+ "data-test-id": dataTestId.value,
17940
17956
  "data-node-name": data.value.name,
17941
17957
  "data-node-type": data.value.type
17942
17958
  }, [
@@ -18154,9 +18170,11 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
18154
18170
  const edgeLabelStyle = computed(() => ({
18155
18171
  color: edgeColor.value
18156
18172
  }));
18173
+ const isConnectorStraight = computed(() => renderData.value.isConnectorStraight);
18157
18174
  const edgeToolbarStyle = computed(() => {
18175
+ const translateY = isConnectorStraight.value ? "-150%" : "-50%";
18158
18176
  return {
18159
- transform: `translate(-50%, -50%) translate(${labelPosition.value[0]}px,${labelPosition.value[1]}px)`,
18177
+ transform: `translate(-50%, ${translateY}) translate(${labelPosition.value[0]}px, ${labelPosition.value[1]}px)`,
18160
18178
  ...props.hovered ? { zIndex: 1 } : {}
18161
18179
  };
18162
18180
  });
@@ -18265,10 +18283,10 @@ const useKeybindings = (keymap, options) => {
18265
18283
  });
18266
18284
  const normalizedKeymap = computed(
18267
18285
  () => Object.fromEntries(
18268
- Object.entries(keymap.value).map(([shortcut, handler]) => {
18286
+ Object.entries(keymap.value).flatMap(([shortcut, handler]) => {
18269
18287
  const shortcuts = shortcut.split("|");
18270
18288
  return shortcuts.map((s) => [normalizeShortcutString(s), handler]);
18271
- }).flat()
18289
+ })
18272
18290
  )
18273
18291
  );
18274
18292
  function shortcutPartsToString(parts) {
@@ -18287,10 +18305,19 @@ const useKeybindings = (keymap, options) => {
18287
18305
  }, "");
18288
18306
  return shortcutPartsToString(shortcut.split(new RegExp(`[${splitCharsRegEx}]`)));
18289
18307
  }
18308
+ function keyboardEventCodeToKey(code) {
18309
+ if (code.startsWith("Digit")) {
18310
+ return code.replace("Digit", "").toLowerCase();
18311
+ } else if (code.startsWith("Key")) {
18312
+ return code.replace("Key", "").toLowerCase();
18313
+ }
18314
+ return code.toLowerCase();
18315
+ }
18290
18316
  function toShortcutString(event) {
18291
18317
  const { shiftKey, altKey } = event;
18292
18318
  const ctrlKey = isCtrlKeyPressed(event);
18293
18319
  const keys = [event.key];
18320
+ const codes = [keyboardEventCodeToKey(event.code)];
18294
18321
  const modifiers = [];
18295
18322
  if (shiftKey) {
18296
18323
  modifiers.push("shift");
@@ -18301,12 +18328,15 @@ const useKeybindings = (keymap, options) => {
18301
18328
  if (altKey) {
18302
18329
  modifiers.push("alt");
18303
18330
  }
18304
- return shortcutPartsToString([...modifiers, ...keys]);
18331
+ return {
18332
+ byKey: shortcutPartsToString([...modifiers, ...keys]),
18333
+ byCode: shortcutPartsToString([...modifiers, ...codes])
18334
+ };
18305
18335
  }
18306
18336
  function onKeyDown2(event) {
18307
18337
  if (ignoreKeyPresses.value || isDisabled.value) return;
18308
- const shortcutString = toShortcutString(event);
18309
- const handler = normalizedKeymap.value[shortcutString];
18338
+ const { byKey, byCode } = toShortcutString(event);
18339
+ const handler = normalizedKeymap.value[byKey] ?? normalizedKeymap.value[byCode];
18310
18340
  if (handler) {
18311
18341
  event.preventDefault();
18312
18342
  event.stopPropagation();
@@ -18702,8 +18732,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
18702
18732
  ctrl_c: emitWithSelectedNodes((ids) => emit("copy:nodes", ids)),
18703
18733
  enter: emitWithLastSelectedNode((id2) => onSetNodeActive(id2)),
18704
18734
  ctrl_a: () => addSelectedNodes(graphNodes.value),
18705
- "shift_+|+|=": async () => await onZoomIn(),
18706
- "shift+_|-|_": async () => await onZoomOut(),
18735
+ // Support both key and code for zooming in and out
18736
+ "shift_+|+|=|shift_Equal|Equal": async () => await onZoomIn(),
18737
+ "shift+_|-|_|shift_Minus|Minus": async () => await onZoomOut(),
18707
18738
  0: async () => await onResetZoom(),
18708
18739
  1: async () => await onFitView(),
18709
18740
  ArrowUp: emitWithLastSelectedNode(selectUpperSiblingNode),
@@ -19155,7 +19186,7 @@ const style0 = {
19155
19186
  const cssModules = {
19156
19187
  "$style": style0
19157
19188
  };
19158
- const __unplugin_components_0 = /* @__PURE__ */ _export_sfc$1(_sfc_main, [["__cssModules", cssModules], ["__scopeId", "data-v-179da034"]]);
19189
+ const __unplugin_components_0 = /* @__PURE__ */ _export_sfc$1(_sfc_main, [["__cssModules", cssModules], ["__scopeId", "data-v-fe4aa69f"]]);
19159
19190
  function useCanvasMapping({
19160
19191
  nodes,
19161
19192
  connections,
@@ -1,4 +1,4 @@
1
- import { b as useRouter, a as useToast, T as useWorkflowsStore, p as useSettingsStore, K as useUIStore, a5 as usePageRedirectionHelper, q as computed, a8 as EnterpriseEditionFeature, aq as h, eY as sanitizeHtml, ae as MODAL_CONFIRM, V as VIEWS, Z as useRootStore, f5 as isFullExecutionResponse, f6 as DEBUG_PAYWALL_MODAL_KEY, ak as useTelemetry, g as useI18n, al as useMessage } from "./index-DVhaXv7m.js";
1
+ import { b as useRouter, a as useToast, T as useWorkflowsStore, p as useSettingsStore, K as useUIStore, a5 as usePageRedirectionHelper, q as computed, a8 as EnterpriseEditionFeature, ap as h, eV as sanitizeHtml, ae as MODAL_CONFIRM, V as VIEWS, Z as useRootStore, f2 as isFullExecutionResponse, f3 as DEBUG_PAYWALL_MODAL_KEY, aj as useTelemetry, g as useI18n, ak as useMessage } from "./index-DvkbRfZN.js";
2
2
  const useExecutionDebugging = () => {
3
3
  const telemetry = useTelemetry();
4
4
  const router = useRouter();
@@ -1,4 +1,4 @@
1
- import { gi as dateformat, b as useRouter, V as VIEWS, g as useI18n, ak as useTelemetry } from "./index-DVhaXv7m.js";
1
+ import { gm as dateformat, b as useRouter, V as VIEWS, g as useI18n, aj as useTelemetry } from "./index-DvkbRfZN.js";
2
2
  const convertToDisplayDateComponents = (fullDate) => {
3
3
  const mask = `d mmm${new Date(fullDate).getFullYear() === (/* @__PURE__ */ new Date()).getFullYear() ? "" : ", yyyy"}#HH:MM:ss`;
4
4
  const formattedDate = dateformat(fullDate, mask);
@@ -1,4 +1,4 @@
1
- import { g9 as baseSlice, ga as toString, bp as useNodeTypesStore, q as computed, l as unref, eK as isSubNodeType, Z as useRootStore, T as useWorkflowsStore, a as useToast, gb as PIN_DATA_NODE_TYPES_DENYLIST, bh as getNodeOutputs, bi as NodeConnectionType, gc as jsonStringify, gd as toMegaBytes, ge as stringSizeInBytes, ci as jsonParse, g as useI18n, ak as useTelemetry, aU as useExternalHooks, eL as useDataSchema, gf as MAX_PINNED_DATA_SIZE, gg as MAX_WORKFLOW_SIZE, gh as MAX_EXPECTED_REQUEST_SIZE } from "./index-DVhaXv7m.js";
1
+ import { gd as baseSlice, ge as toString, bn as useNodeTypesStore, q as computed, l as unref, eH as isSubNodeType, Z as useRootStore, T as useWorkflowsStore, a as useToast, gf as PIN_DATA_NODE_TYPES_DENYLIST, bf as getNodeOutputs, bg as NodeConnectionType, gg as jsonStringify, gh as toMegaBytes, gi as stringSizeInBytes, cg as jsonParse, g as useI18n, aj as useTelemetry, aS as useExternalHooks, eI as useDataSchema, gj as MAX_PINNED_DATA_SIZE, gk as MAX_WORKFLOW_SIZE, gl as MAX_EXPECTED_REQUEST_SIZE } from "./index-DvkbRfZN.js";
2
2
  function castSlice(array, start, end) {
3
3
  var length = array.length;
4
4
  end = end === void 0 ? length : end;
@@ -1,6 +1,6 @@
1
- import { fZ as makeRestApiRequest, R as defineStore, Z as useRootStore, d as defineComponent, cQ as resolveDirective, c as openBlock, h as createElementBlock, ay as withDirectives, j as createBaseVNode, t as toDisplayString, l as unref, g as useI18n, a4 as useWorkflowHelpers, bq as useNodeHelpers, a as useToast, bS as useCredentialsStore, bp as useNodeTypesStore, p as useSettingsStore, K as useUIStore, T as useWorkflowsStore, eV as useAssistantStore, av as usePostHog, r as ref, bU as AI_CREDITS_EXPERIMENT, f_ as parse, f$ as hasTrimmedItem, g0 as codeNodeEditorEventBus, ag as WORKFLOW_SETTINGS_MODAL_KEY, dP as generateNodesGraph, aq as h, d1 as getTriggerNodeServiceName, g1 as hasTrimmedData, aU as useExternalHooks, ak as useTelemetry, g2 as clearPopupWindowState } from "./index-DVhaXv7m.js";
2
- import { u as usePushConnectionStore, g as globalLinkActionsEventBus } from "./pushConnection.store-nnc6AEL8.js";
3
- import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-oy6hZxJE.js";
1
+ import { g1 as makeRestApiRequest, R as defineStore, Z as useRootStore, d as defineComponent, cN as resolveDirective, c as openBlock, h as createElementBlock, ax as withDirectives, j as createBaseVNode, t as toDisplayString, l as unref, g as useI18n, a4 as useWorkflowHelpers, bo as useNodeHelpers, a as useToast, bQ as useCredentialsStore, bn as useNodeTypesStore, p as useSettingsStore, K as useUIStore, T as useWorkflowsStore, eS as useAssistantStore, au as usePostHog, r as ref, bS as AI_CREDITS_EXPERIMENT, g2 as parse, g3 as hasTrimmedItem, g4 as codeNodeEditorEventBus, af as WORKFLOW_SETTINGS_MODAL_KEY, dM as generateNodesGraph, ap as h, c_ as getTriggerNodeServiceName, g5 as hasTrimmedData, aS as useExternalHooks, aj as useTelemetry, g6 as clearPopupWindowState } from "./index-DvkbRfZN.js";
2
+ import { u as usePushConnectionStore, g as globalLinkActionsEventBus } from "./pushConnection.store-5KniMGTZ.js";
3
+ import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-D3El0FyE.js";
4
4
  const GET_STATUS_ENDPOINT = "/orchestration/worker/status";
5
5
  const sendGetWorkerStatus = async (context) => {
6
6
  await makeRestApiRequest(context, "POST", GET_STATUS_ENDPOINT);
@@ -1,6 +1,6 @@
1
- import { cf as getDefaultExportFromCjs, d as defineComponent, b7 as useClipboard, a as useToast, eU as useAIAssistantHelpers, bp as useNodeTypesStore, at as useNDVStore, Z as useRootStore, eV as useAssistantStore, K as useUIStore, q as computed, c as openBlock, h as createElementBlock, j as createBaseVNode, t as toDisplayString, ay as withDirectives, f as createCommentVNode, i as createVNode, l as unref, eW as InlineAskAssistantButton, w as withCtx, k as createTextVNode, F as Fragment, A as renderList, g as useI18n, co as MAX_DISPLAY_DATA_SIZE, bt as isCommunityPackageName, eX as NEW_ASSISTANT_SESSION_MODAL, m as resolveComponent, cQ as resolveDirective, eY as sanitizeHtml, bi as NodeConnectionType, eZ as isObjectEmpty, r as ref, o as onMounted, n as normalizeClass, e as createBlock, b2 as VueMarkdown, _ as _export_sfc, T as useWorkflowsStore, bs as _sfc_main$4, I as withModifiers, H as watch, B as normalizeStyle, e_ as ElTree, bq as useNodeHelpers, a4 as useWorkflowHelpers, au as useExecutionsStore, b8 as CHAT_TRIGGER_NODE_TYPE, bk as get, e$ as SINGLE_WEBHOOK_TRIGGERS, aw as useLocalStorage, f0 as displayForm, aU as useExternalHooks, cI as isEmpty } from "./index-DVhaXv7m.js";
2
- import { c as capitalize } from "./usePinnedData-9d5rr-Ll.js";
3
- import { u as useExecutionHelpers } from "./useExecutionHelpers-qeNSBls3.js";
1
+ import { cd as getDefaultExportFromCjs, d as defineComponent, b5 as useClipboard, a as useToast, eR as useAIAssistantHelpers, bn as useNodeTypesStore, as as useNDVStore, Z as useRootStore, eS as useAssistantStore, K as useUIStore, q as computed, c as openBlock, h as createElementBlock, j as createBaseVNode, t as toDisplayString, ax as withDirectives, f as createCommentVNode, i as createVNode, l as unref, eT as InlineAskAssistantButton, w as withCtx, k as createTextVNode, F as Fragment, A as renderList, g as useI18n, cm as MAX_DISPLAY_DATA_SIZE, br as isCommunityPackageName, eU as NEW_ASSISTANT_SESSION_MODAL, m as resolveComponent, cN as resolveDirective, eV as sanitizeHtml, bg as NodeConnectionType, eW as isObjectEmpty, r as ref, o as onMounted, n as normalizeClass, e as createBlock, b0 as VueMarkdown, _ as _export_sfc, T as useWorkflowsStore, bq as _sfc_main$4, I as withModifiers, H as watch, B as normalizeStyle, eX as ElTree, bo as useNodeHelpers, a4 as useWorkflowHelpers, at as useExecutionsStore, b6 as CHAT_TRIGGER_NODE_TYPE, bi as get, eY as SINGLE_WEBHOOK_TRIGGERS, av as useLocalStorage, eZ as displayForm, aS as useExternalHooks, cF as isEmpty } from "./index-DvkbRfZN.js";
2
+ import { c as capitalize } from "./usePinnedData-CAHmwr13.js";
3
+ import { u as useExecutionHelpers } from "./useExecutionHelpers-ts_ANr0X.js";
4
4
  var core;
5
5
  var hasRequiredCore;
6
6
  function requireCore() {
@@ -3108,17 +3108,20 @@ function useRunWorkflow(useRunWorkflowOpts) {
3108
3108
  );
3109
3109
  newRunData = { [options.triggerNode]: [options.nodeData] };
3110
3110
  executedNode = options.triggerNode;
3111
+ }
3112
+ if (options.triggerNode && options.nodeData) {
3111
3113
  triggerToStartFrom = {
3112
3114
  name: options.triggerNode,
3113
3115
  data: options.nodeData
3114
3116
  };
3115
3117
  }
3116
- if (options.destinationNode && (workflowsStore.checkIfNodeHasChatParent(options.destinationNode) || destinationNodeType === CHAT_TRIGGER_NODE_TYPE)) {
3118
+ if (options.destinationNode && (workflowsStore.checkIfNodeHasChatParent(options.destinationNode) || destinationNodeType === CHAT_TRIGGER_NODE_TYPE) && options.source !== "RunData.ManualChatMessage") {
3117
3119
  const startNode = workflow.getStartNode(options.destinationNode);
3118
3120
  if (startNode && startNode.type === CHAT_TRIGGER_NODE_TYPE) {
3119
3121
  const chatHasInputData = nodeHelpers.getNodeInputData(startNode, 0, 0, "input")?.length > 0;
3120
3122
  const chatHasPinData = !!workflowData.pinData?.[startNode.name];
3121
3123
  if (!chatHasInputData && !chatHasPinData) {
3124
+ workflowsStore.chatPartialExecutionDestinationNode = options.destinationNode;
3122
3125
  workflowsStore.setPanelOpen("chat", true);
3123
3126
  return;
3124
3127
  }
@@ -1,4 +1,4 @@
1
- import { r as ref, b as useRouter, a4 as useWorkflowHelpers, T as useWorkflowsStore, K as useUIStore, a as useToast, a2 as useNpsSurveyStore, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, aU as useExternalHooks, aK as useStorage, g6 as LOCAL_STORAGE_ACTIVATION_FLAG, g7 as WORKFLOW_ACTIVE_MODAL_KEY, ak as useTelemetry, g as useI18n } from "./index-DVhaXv7m.js";
1
+ import { r as ref, b as useRouter, a4 as useWorkflowHelpers, T as useWorkflowsStore, K as useUIStore, a as useToast, a2 as useNpsSurveyStore, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, aS as useExternalHooks, aI as useStorage, ga as LOCAL_STORAGE_ACTIVATION_FLAG, gb as WORKFLOW_ACTIVE_MODAL_KEY, aj as useTelemetry, g as useI18n } from "./index-DvkbRfZN.js";
2
2
  function useWorkflowActivate() {
3
3
  const updatingWorkflowActivation = ref(false);
4
4
  const router = useRouter();
package/dist/index.html CHANGED
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
- <script type="module" crossorigin src="/{{BASE_PATH}}/assets/polyfills-BN5TIqPj.js"></script>
4
+ <script type="module" crossorigin src="/{{BASE_PATH}}/assets/polyfills-DNwgos9f.js"></script>
5
5
 
6
6
  <meta charset="utf-8" />
7
7
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
@@ -16,8 +16,8 @@
16
16
  <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
17
 
18
18
  <title>n8n.io - Workflow Automation</title>
19
- <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-DVhaXv7m.js"></script>
20
- <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-DuAsyBNI.css">
19
+ <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-DvkbRfZN.js"></script>
20
+ <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-DsHZ4yOE.css">
21
21
  </head>
22
22
  <body>
23
23
  <noscript>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-editor-ui",
3
- "version": "1.75.0",
3
+ "version": "1.76.0",
4
4
  "description": "Workflow Editor UI for n8n",
5
5
  "main": "index.js",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -1,4 +0,0 @@
1
- import { ie as _sfc_main } from "./index-DVhaXv7m.js";
2
- export {
3
- _sfc_main as default
4
- };