n8n-editor-ui 1.66.0 → 1.67.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 (99) hide show
  1. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CYMqjryg.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DbabN_I2.js} +2 -2
  2. package/dist/assets/{AuthView-31vu0x_3.js → AuthView-DmC24d7S.js} +17 -19
  3. package/dist/assets/{CanvasControls-DkT1iClJ.js → CanvasControls-BPXQqeeO.js} +1 -1
  4. package/dist/assets/{ChangePasswordView-DkhZAh4j.js → ChangePasswordView-SC3n2vJc.js} +2 -2
  5. package/dist/assets/CollectionParameter-Odk28FRT.js +4 -0
  6. package/dist/assets/{CredentialsView-Du-lMwPW.js → CredentialsView-B3m9CpEC.js} +11 -9
  7. package/dist/assets/{ErrorView-CROJIl1H.js → ErrorView-D6M8WlVP.js} +1 -1
  8. package/dist/assets/{ExecutionsFilter-BecTg03r.css → ExecutionsFilter-DVxRt-Pz.css} +6 -6
  9. package/dist/assets/{ExecutionsFilter-132FKb5o.js → ExecutionsFilter-DlZH8tDW.js} +5 -5
  10. package/dist/assets/{ExecutionsView-B41cgHPD.js → ExecutionsView-DaHtYmF4.js} +4 -4
  11. package/dist/assets/{FileSaver.min-B3lWZPMp.js → FileSaver.min-DNytcjKT.js} +1 -1
  12. package/dist/assets/FixedCollectionParameter-CypxYAFK.js +334 -0
  13. package/dist/assets/{FixedCollectionParameter-fI2wTyfY.css → FixedCollectionParameter-DzOGMEdq.css} +10 -10
  14. package/dist/assets/{ForgotMyPasswordView-DKrE7dUn.js → ForgotMyPasswordView-BJ6gd5CS.js} +4 -3
  15. package/dist/assets/{MainHeader-Bc5G9_Uq.css → MainHeader-D56WYRMG.css} +9 -9
  16. package/dist/assets/{MainHeader-CW31WCmm.js → MainHeader-DniXcGMK.js} +92 -98
  17. package/dist/assets/{MainSidebar-cNW0UJBC.css → MainSidebar-BRYJRpOA.css} +2 -2
  18. package/dist/assets/{MainSidebar-Dny90RtO.js → MainSidebar-NwOfijmV.js} +7 -6
  19. package/dist/assets/{NodeCreation-BqSkxffS.js → NodeCreation-Ce1ct2i3.js} +6 -6
  20. package/dist/assets/{NodeCreator-CoqcSKC-.js → NodeCreator-DMLTbzAt.js} +35 -22
  21. package/dist/assets/{NodeViewSwitcher-C1Gp-jKb.js → NodeViewSwitcher-B9JUn3eY.js} +399 -289
  22. package/dist/assets/{NodeViewSwitcher-B8VPj4Rs.css → NodeViewSwitcher-CnP5aYyg.css} +116 -116
  23. package/dist/assets/{ProjectCardBadge-kHyKG50e.js → ProjectCardBadge-C3QU-WmO.js} +1 -1
  24. package/dist/assets/{ProjectSettings-BohhQ-z6.js → ProjectSettings-BvcEg3hx.js} +5 -5
  25. package/dist/assets/{ProjectTabs-D-87NPFl.js → ProjectTabs-Dve3xFj9.js} +1 -1
  26. package/dist/assets/PushConnectionTracker.vue_vue_type_script_setup_true_lang-DlJOpf7N.js +39 -0
  27. package/dist/assets/{ResourceListHeader-Bs6GLg32.js → ResourceListHeader-B2sxe6HT.js} +1 -1
  28. package/dist/assets/ResourcesListLayout-Bc4__nvw.js +692 -0
  29. package/dist/assets/{ResourcesListLayout-Bw99IFlO.css → ResourcesListLayout-Ci-K1bH3.css} +8 -8
  30. package/dist/assets/{RunDataAi-CYTNyRq_.js → RunDataAi-BKu1beM6.js} +4 -4
  31. package/dist/assets/{RunDataJson-CUsbBWaI.js → RunDataJson-ea5u1EeD.js} +12 -12
  32. package/dist/assets/{RunDataJsonActions-Bnn0o9WH.js → RunDataJsonActions-Dflnt8gK.js} +127 -159
  33. package/dist/assets/{RunDataSearch-BiygytJ8.js → RunDataSearch-DKNVmEqa.js} +1 -1
  34. package/dist/assets/{RunDataTable--RIqj8DU.js → RunDataTable-DISLWxMc.js} +1 -1
  35. package/dist/assets/{SamlOnboarding-BXYS2fQg.js → SamlOnboarding-CPvGRYUg.js} +2 -2
  36. package/dist/assets/SettingsApiView-BFj9fDL9.js +227 -0
  37. package/dist/assets/{SettingsCommunityNodesView-BjakfOB1.js → SettingsCommunityNodesView-nJFDrtIR.js} +185 -195
  38. package/dist/assets/{SettingsExternalSecrets-BGIt9OQy.js → SettingsExternalSecrets-0-mj45K-.js} +3 -3
  39. package/dist/assets/{SettingsLdapView-DBY4YyYE.js → SettingsLdapView-BhBxX72w.js} +3 -3
  40. package/dist/assets/SettingsLogStreamingView-CmEJrEOv.js +500 -0
  41. package/dist/assets/{SettingsPersonalView-CgzznKXi.js → SettingsPersonalView-C__lC8Vv.js} +1 -1
  42. package/dist/assets/{SettingsSourceControl-DNWFyNrX.js → SettingsSourceControl-CMoS5B5P.js} +3 -3
  43. package/dist/assets/{SettingsSso-B8oke872.js → SettingsSso-DJfrl1Rl.js} +3 -3
  44. package/dist/assets/{SettingsUsageAndPlan-BUUYApK_.js → SettingsUsageAndPlan-CWQ5uVrG.js} +4 -3
  45. package/dist/assets/{SettingsUsageAndPlan-P6SS2mWq.css → SettingsUsageAndPlan-vijI-va0.css} +3 -3
  46. package/dist/assets/{SettingsUsersView-DyuP8V6k.js → SettingsUsersView-Cvr6Digb.js} +4 -3
  47. package/dist/assets/{SettingsView-CD83Adan.js → SettingsView-DtGga45F.js} +2 -30
  48. package/dist/assets/{SetupView-C8XYMj2N.js → SetupView-DkJH96By.js} +2 -2
  49. package/dist/assets/{SetupWorkflowCredentialsButton-u1qhjj5K.js → SetupWorkflowCredentialsButton-C1Jv_-V5.js} +1 -1
  50. package/dist/assets/{SetupWorkflowFromTemplateView-DdxqCGcl.js → SetupWorkflowFromTemplateView-WSzVMgC4.js} +3 -3
  51. package/dist/assets/{SigninView-CGQ20O_c.js → SigninView-xej8y-Vu.js} +4 -3
  52. package/dist/assets/{SignoutView-BZwBBglt.js → SignoutView-Dc8fBBIm.js} +1 -1
  53. package/dist/assets/{SignupView-BCT6dhhZ.js → SignupView-CKA28Xc8.js} +4 -3
  54. package/dist/assets/TemplateDetails-Pi49rFlS.js +179 -0
  55. package/dist/assets/TemplateList-BncQL783.js +371 -0
  56. package/dist/assets/{TemplatesCollectionView-BxBSljqH.js → TemplatesCollectionView-C9PKPo5y.js} +8 -8
  57. package/dist/assets/{TemplatesSearchView-kFcPH-ZH.js → TemplatesSearchView-65taIL-M.js} +530 -577
  58. package/dist/assets/{TemplatesView-TPTpSdeD.js → TemplatesView-DkP9JWHk.js} +32 -37
  59. package/dist/assets/{TemplatesWorkflowView-8NdGLWj7.js → TemplatesWorkflowView-B5uc0BtL.js} +5 -5
  60. package/dist/assets/{VariablesView-CHXdt5-z.css → VariablesView-BPKo50HJ.css} +18 -18
  61. package/dist/assets/{VariablesView-C1NxBxBQ.js → VariablesView-DV1-KgmN.js} +6 -5
  62. package/dist/assets/WorkerView-5P9lg6ew.js +148 -0
  63. package/dist/assets/WorkerView-Dm0b18Mh.css +22 -0
  64. package/dist/assets/{WorkflowActivator-CalsATsI.js → WorkflowActivator-Dc_Un-Af.js} +2 -2
  65. package/dist/assets/{WorkflowExecutionsInfoAccordion-rUnvuY-5.js → WorkflowExecutionsInfoAccordion-BLyC6lr5.js} +1 -1
  66. package/dist/assets/{WorkflowExecutionsLandingPage-C4K7kfqv.js → WorkflowExecutionsLandingPage-Dsa6Bgkn.js} +2 -2
  67. package/dist/assets/{WorkflowExecutionsPreview-BO31AO7v.js → WorkflowExecutionsPreview-B_X-enUV.js} +5 -5
  68. package/dist/assets/{WorkflowExecutionsView-B-5zbx_n.js → WorkflowExecutionsView-Bkz3Sig-.js} +5 -5
  69. package/dist/assets/{WorkflowHistory-uvlFDwTJ.js → WorkflowHistory-BiPMooAv.js} +5 -4
  70. package/dist/assets/{WorkflowOnboardingView-B869wGVb.js → WorkflowOnboardingView-XHuS6lCs.js} +1 -1
  71. package/dist/assets/{WorkflowPreview-BlzWpiO1.js → WorkflowPreview-DxZKd23H.js} +1 -1
  72. package/dist/assets/{WorkflowsView-IdgMnIZY.js → WorkflowsView-BBaLVqJs.js} +10 -9
  73. package/dist/assets/{dateFormatter-BCrxaIdG.js → dateFormatter-C53K7zEn.js} +1 -1
  74. package/dist/assets/{index-QAq8Sa9R.js → index-7YFQEQmt.js} +36144 -36617
  75. package/dist/assets/{index-DaeOVPzE.css → index-BFH_KxyA.css} +64 -45
  76. package/dist/assets/{pushConnection.store-Cdssd0uJ.js → pushConnection.store-DbprXL-x.js} +1 -1
  77. package/dist/assets/{templateActions-ClPy1BRa.js → templateActions-QFQD8amJ.js} +1 -1
  78. package/dist/assets/{useBugReporting-Bvr7bSQt.js → useBugReporting-IgwBNdXI.js} +1 -1
  79. package/dist/assets/{useExecutionDebugging-CwyVwJqO.js → useExecutionDebugging-CLORI_Ma.js} +3 -2
  80. package/dist/assets/{useNodeViewVersionSwitcher-BPNKvsXw.js → useNodeViewVersionSwitcher-CJLQ5lju.js} +1 -1
  81. package/dist/assets/{usePushConnection-DDXmzoG8.js → usePushConnection-DjPgTuLw.js} +9 -10
  82. package/dist/assets/{useWorkflowActivate-DKPQP7qy.js → useWorkflowActivate-D_gK841h.js} +1 -1
  83. package/dist/index.html +3 -2
  84. package/index.html +1 -0
  85. package/package.json +1 -1
  86. package/vite.config.mts +1 -17
  87. package/dist/assets/CollectionParameter-BDKfoIMJ.js +0 -4
  88. package/dist/assets/FixedCollectionParameter-DXh-j7zB.js +0 -355
  89. package/dist/assets/PushConnectionTracker-Bhnghrmf.js +0 -38
  90. package/dist/assets/ResourcesListLayout-ByBNP70B.js +0 -800
  91. package/dist/assets/SettingsApiView-DoibCiLo.js +0 -255
  92. package/dist/assets/SettingsFakeDoorView-DpKZ4qWG.css +0 -14
  93. package/dist/assets/SettingsFakeDoorView-DwXDXgon.js +0 -44
  94. package/dist/assets/SettingsLogStreamingView-DHQWns6I.js +0 -519
  95. package/dist/assets/TemplateDetails-BsLVCpdi.js +0 -199
  96. package/dist/assets/TemplateList-Bn7ePHhc.js +0 -433
  97. package/dist/assets/WorkerView-Bj1cvzLg.js +0 -825
  98. package/dist/assets/WorkerView-C_d54L0W.css +0 -181
  99. package/dist/assets/cloud-B6bxVT9F.js +0 -37
@@ -1,13 +1,13 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RunDataTable--RIqj8DU.js","assets/index-QAq8Sa9R.js","assets/index-DaeOVPzE.css","assets/RunDataTable-ZwoYenSI.css","assets/RunDataJson-CUsbBWaI.js","assets/RunDataAi-CYTNyRq_.js","assets/RunDataAi-x30tU8-0.css","assets/FileSaver.min-B3lWZPMp.js","assets/dateFormatter-BCrxaIdG.js","assets/useWorkflowActivate-DKPQP7qy.js","assets/pushConnection.store-Cdssd0uJ.js","assets/useExecutionDebugging-CwyVwJqO.js","assets/useNodeViewVersionSwitcher-BPNKvsXw.js","assets/useBugReporting-Bvr7bSQt.js","assets/RunDataJson-Dtc8i0I7.css","assets/RunDataSearch-BiygytJ8.js","assets/RunDataSearch-BA0wlJtp.css","assets/NodeCreation-BqSkxffS.js","assets/NodeCreation-30KXmZi2.css","assets/CanvasControls-DkT1iClJ.js","assets/CanvasControls-Gjw5xMXK.css","assets/SetupWorkflowCredentialsButton-u1qhjj5K.js"])))=>i.map(i=>d[i]);
2
- import { aI as BaseTransition, aJ as BaseTransitionPropsValidators, aK as Comment, aL as DeprecationTypes, aM as EffectScope, aN as ErrorCodes, aO as ErrorTypeStrings, F as Fragment, aP as KeepAlive, aQ as ReactiveEffect, aR as Static, aS as Suspense, aT as Teleport, aU as Text, aV as TrackOpTypes, aW as Transition$2, aX as TransitionGroup, aY as TriggerOpTypes, aZ as VueElement, a_ as assertNumber, a$ as callWithAsyncErrorHandling, b0 as callWithErrorHandling, b1 as camelize, b2 as capitalize, b3 as cloneVNode, b4 as compatUtils, p as computed, b5 as createApp, e as createBlock, f as createCommentVNode, h as createElementBlock, j as createBaseVNode, b6 as createHydrationRenderer, b7 as createPropsRestProxy, b8 as createRenderer, b9 as createSSRApp, aE as createSlots, ba as createStaticVNode, k as createTextVNode, i as createVNode, bb as customRef, bc as defineAsyncComponent, d as defineComponent, bd as defineCustomElement, be as defineEmits, bf as defineExpose, bg as defineModel, bh as defineOptions, bi as defineProps, bj as defineSSRCustomElement, bk as defineSlots, bl as devtools, bm as effect, bn as effectScope, bo as getCurrentInstance, bp as getCurrentScope, bq as getCurrentWatcher, br as getTransitionRawChildren, bs as guardReactiveProps, bt as h, bu as handleError, bv as hasInjectionContext, bw as hydrate, bx as hydrateOnIdle, by as hydrateOnInteraction, bz as hydrateOnMediaQuery, bA as hydrateOnVisible, bB as initCustomFormatter, bC as initDirectivesForSSR, bD as inject, bE as isMemoSame, bF as isProxy, bG as isReactive, bH as isReadonly, bI as isRef, bJ as isRuntimeOnly, bK as isShallow, bL as isVNode, bM as markRaw, bN as mergeDefaults, bO as mergeModels, bP as mergeProps, C as nextTick, n as normalizeClass, bQ as normalizeProps, B as normalizeStyle, bR as onActivated, aq as onBeforeMount, y as onBeforeUnmount, bS as onBeforeUpdate, bT as onDeactivated, bU as onErrorCaptured, o as onMounted, bV as onRenderTracked, bW as onRenderTriggered, bX as onScopeDispose, bY as onServerPrefetch, bZ as onUnmounted, b_ as onUpdated, b$ as onWatcherCleanup, c as openBlock, c0 as popScopeId, c1 as provide, c2 as proxyRefs, c3 as pushScopeId, c4 as queuePostFlushCb, c5 as reactive, c6 as readonly, r as ref, c7 as registerRuntimeCompiler, c8 as render$5, z as renderList, q as renderSlot, l as resolveComponent, c9 as resolveDirective, ca as resolveDynamicComponent, cb as resolveFilter, cc as resolveTransitionHooks, cd as setBlockTracking, ce as setDevtoolsHook, cf as setTransitionHooks, cg as shallowReactive, ch as shallowReadonly, ci as shallowRef, cj as ssrContextKey, ck as ssrUtils, cl as stop, t as toDisplayString, cm as toHandlerKey, cn as toHandlers, co as toRaw, cp as toRef, cq as toRefs$1, cr as toValue$1, cs as transformVNodeArgs, ct as triggerRef, A as unref, cu as useAttrs, a9 as useCssModule, cv as useCssVars, cw as useHost, cx as useId, cy as useModel, cz as useSSRContext, cA as useShadowRoot, cB as useSlots, cC as useTemplateRef, cD as useTransitionState, cE as vModelCheckbox, cF as vModelDynamic, cG as vModelRadio, cH as vModelSelect, cI as vModelText, as as vShow, cJ as version, cK as warn$1, H as watch, cL as watchEffect, cM as watchPostEffect, cN as watchSyncEffect, cO as withAsyncContext, w as withCtx, cP as withDefaults, ar as withDirectives, G as withKeys, cQ as withMemo, I as withModifiers, cR as withScopeId, cS as createCompounder, cT as SetCache, cU as arrayIncludes, cV as cacheHas, cW as baseRest, cX as isArrayLikeObject, cY as baseFlatten, K as useUIStore, cZ as useNodeTypesStore, T as useWorkflowsStore, a0 as useSourceControlStore, al as getResourcePermissions, c_ as isPresent, c$ as getMousePosition$1, at as STICKY_NODE_TYPE, d0 as usePinnedData, g as useI18n, d1 as NOT_DUPLICATABLE_NODE_TYPES, E as onClickOutside, d2 as N8nActionDropdown, _ as _export_sfc$1, d3 as _sfc_main$11, ao as useNDVStore, d4 as isCommunityPackageName, d5 as NPM_PACKAGE_DOCS_BASE_URL, d6 as BUILTIN_NODES_DOCS_URL, d7 as COMMUNITY_NODES_INSTALLATION_DOCS_URL, d8 as NodeConnectionType, aF as useExternalHooks, aj as useTelemetry, b as useRouter, d9 as useClipboard, a4 as useWorkflowHelpers, a as useToast, da as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, db as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, dc as FORM_TRIGGER_NODE_TYPE, dd as CHAT_TRIGGER_NODE_TYPE, de as toValue$2, df as toRef$1, dg as tryOnScopeDispose$1, dh as isIOS, di as noop$4, dj as isObject$1, dk as isClient$1, dl as useNodeHelpers, J as useDebounce, dm as TitledList, dn as nodeIssuesToString, dp as getNodeInputs, dq as useRunWorkflow, dr as MANUAL_TRIGGER_NODE_TYPE, ds as WEBHOOK_NODE_TYPE, ab as nodeViewEventBus, ak as useMessage, ad as MODAL_CONFIRM, dt as useCredentialsStore, du as useHistoryStore, dv as importCurlEventBus, dw as ndvEventBus, dx as CUSTOM_NODES_DOCS_URL, dy as NodeCredentials, dz as _sfc_main$12, dA as ProjectTypes, dB as getConnectionTypes, dC as isSingleExecution, dD as get$4, dE as getNodeParameters, dF as deepCopy, dG as set$4, dH as unset, dI as SHOULD_CLEAR_NODE_OUTPUTS, dJ as RenameNodeCommand, dK as isINodePropertyCollectionList, dL as isINodePropertiesList, dM as isINodePropertyOptionsList, dN as displayParameter, dO as Draggable, az as useStorage, dP as LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH, dQ as MAIN_NODE_PANEL_WIDTH, dR as getAugmentedNamespace, dS as commonjsGlobal, dT as getDefaultExportFromCjs, dU as sanitizeHtml_1, dV as sanitizeHtml, dW as jsonParse, dX as __unplugin_components_2$2, dY as useNodeType, dZ as MAX_DISPLAY_DATA_SIZE, d_ as MAX_DISPLAY_DATA_SIZE_SCHEMA_VIEW, d$ as MAX_DISPLAY_ITEMS_AUTO_ALL, e0 as mapStores, Z as useRootStore, e1 as DATA_PINNING_DOCS_URL, e2 as DATA_EDITING_DOCS_URL, e3 as HTML_NODE_TYPE, e4 as executionDataToJson, e5 as NODE_TYPES_EXCLUDED_FROM_OUTPUT_NAME_APPEND, e6 as isEmpty, e7 as isEqual, e8 as getNodeOutputs, e9 as getNodeHints, ea as getGenericHints, eb as dataPinningEventBus, ec as clearJsonKey, ed as searchInObject, ee as isObject$2, ef as LOCAL_STORAGE_PIN_DATA_DISCOVERY_NDV_FLAG, eg as LOCAL_STORAGE_PIN_DATA_DISCOVERY_CANVAS_FLAG, eh as TEST_PIN_DATA, ei as __vitePreload, ej as storeToRefs, ek as waitingNodeTooltip, el as truncate, em as START_NODE_TYPE, en as CRON_NODE_TYPE, eo as INTERVAL_NODE_TYPE, ep as CopyInput, v as createEventBus, eq as isTriggerPanelObject, er as getTriggerNodeServiceName, V as VIEWS, af as WORKFLOW_SETTINGS_MODAL_KEY, m as useSettingsStore, es as useDeviceSupport, et as APP_MODALS_ELEMENT_ID, eu as useStyles, ev as EXECUTABLE_TRIGGER_NODE_TYPES, ew as BASE_NODE_SURVEY_URL, a7 as EnterpriseEditionFeature, ex as getAnchorPosition, ey as isValidNodeConnectionType, ez as getEndpointScope, eA as getInputEndpointUUID, eB as getInputEndpointStyle, eC as getScope, eD as getInputNameOverlay, eE as NODE_INSERT_SPACER_BETWEEN_INPUT_GROUPS, eF as NODE_MIN_INPUT_ITEMS_COUNT, eG as getOutputEndpointUUID, eH as getOutputEndpointStyle, eI as getOutputNameOverlay, eJ as NO_OP_NODE_TYPE, eK as NODE_CONNECTION_TYPE_ALLOW_MULTIPLE, eL as GRID_SIZE, eM as isString, eN as isNumber, eO as assert, eP as QUICKSTART_NOTE_NAME, eQ as CUSTOM_API_CALL_KEY, eR as FontAwesomeIcon, eS as _sfc_main$14, eT as xss, eU as WAIT_NODE_TYPE, eV as SEND_AND_WAIT_OPERATION, eW as FORM_NODE_TYPE, eX as WAIT_TIME_UNLIMITED, eY as SIMULATE_NODE_TYPE, eZ as SIMULATE_TRIGGER_NODE_TYPE, $ as useCanvasStore, e_ as getRelativePosition, e$ as v4, f0 as CORE_NODES_CATEGORY, f1 as DEFAULT_SUBCATEGORY, f2 as AI_TRANSFORM_NODE_TYPE, f3 as sublimeSearch, f4 as AI_SUBCATEGORY, f5 as AI_CATEGORY_AGENTS, f6 as sortBy, f7 as i18n, aC as useTemplatesStore, f8 as AI_NODE_CREATOR_VIEW, f9 as AI_OTHERS_NODE_CREATOR_VIEW, fa as AI_CATEGORY_DOCUMENT_LOADERS, fb as AI_CATEGORY_LANGUAGE_MODELS, fc as AI_CATEGORY_MEMORY, fd as AI_CATEGORY_OUTPUTPARSER, fe as AI_CATEGORY_RETRIEVERS, ff as AI_CATEGORY_TEXT_SPLITTERS, fg as AI_CATEGORY_TOOLS, fh as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, fi as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, fj as AI_CATEGORY_EMBEDDING, fk as AI_CATEGORY_VECTOR_STORES, fl as AI_UNCATEGORIZED_CATEGORY, fm as TRIGGER_NODE_CREATOR_VIEW, fn as EMAIL_IMAP_NODE_TYPE, fo as SCHEDULE_TRIGGER_NODE_TYPE, fp as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, fq as MANUAL_CHAT_TRIGGER_NODE_TYPE, fr as OTHER_TRIGGER_NODES_SUBCATEGORY, fs as REGULAR_NODE_CREATOR_VIEW, ft as RSS_READ_NODE_TYPE, fu as EMAIL_SEND_NODE_TYPE, fv as TRANSFORM_DATA_SUBCATEGORY, fw as FILTER_NODE_TYPE, fx as REMOVE_DUPLICATES_NODE_TYPE, fy as SPLIT_OUT_NODE_TYPE, fz as LIMIT_NODE_TYPE, fA as SUMMARIZE_NODE_TYPE, fB as AGGREGATE_NODE_TYPE, fC as MERGE_NODE_TYPE, fD as MARKDOWN_NODE_TYPE, fE as XML_NODE_TYPE, fF as CRYPTO_NODE_TYPE, fG as EXTRACT_FROM_FILE_NODE_TYPE, fH as CONVERT_TO_FILE_NODE_TYPE, fI as COMPRESSION_NODE_TYPE, fJ as EDIT_IMAGE_NODE_TYPE, fK as FLOWS_CONTROL_SUBCATEGORY, fL as IF_NODE_TYPE, fM as SPLIT_IN_BATCHES_NODE_TYPE, fN as HELPERS_SUBCATEGORY, fO as HTTP_REQUEST_NODE_TYPE, fP as CODE_NODE_TYPE, fQ as AI_CATEGORY_CHAINS, fR as SET_NODE_TYPE, fS as DATETIME_NODE_TYPE, R as defineStore, fT as AI_CATEGORY_ROOT_NODES, fU as AI_CODE_NODE_TYPE, fV as AI_TRANSFORM_NODE_TYPE$1, fW as isValidCanvasConnectionMode, fX as CanvasConnectionMode, S as STORES, fY as NODE_CREATOR_OPEN_SOURCES, fZ as isVueFlowConnection, f_ as nodeConnectionTypes, f$ as MOUSE_EVENT_BUTTON, g0 as MOUSE_EVENT_BUTTONS, g1 as KeyboardShortcutTooltip, U as useRoute, a3 as useDocumentTitle, a2 as useNpsSurveyStore, a1 as useProjectsStore, ap as useExecutionsStore, g2 as useExternalSecretsStore, g3 as useWorkflowsEEStore, g4 as useEnvironmentsStore, u as useUsersStore, D as useTagsStore, g5 as getBackgroundStyles, g6 as getNodeViewTab, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, an as MAIN_HEADER_TABS, g7 as ready$1, av as sourceControlEventBus, g8 as historyBus, g9 as WORKFLOW_LM_CHAT_MODAL_KEY, ga as generateNodesGraph, gb as N8nAddInputEndpointType, gc as getFixedNodesList, gd as tryToParseNumber, ge as MoveNodeCommand, ah as VALID_WORKFLOW_IMPORT_URL_REGEX, gf as UPDATE_WEBHOOK_ID_NODE_TYPES, gg as getNewNodePosition, gh as DRAG_EVENT_DATA_KEY, gi as NODE_SIZE, gj as getConnectorLengths, gk as MAX_X_TO_PUSH_DOWNSTREAM_NODES, gl as PUSH_NODES_OFFSET, gm as generateOffsets, gn as resetConnectionAfterPull, go as resetConnection, gp as moveBackInputLabelPosition, gq as hideOutputNameLabel, gr as addConnectionActionsOverlay, gs as getOverlay, gt as OVERLAY_ENDPOINT_ARROW_ID, gu as getConnectorPaintStyleData, gv as AddConnectionCommand, gw as addConnectionTestData, gx as showOrHideItemsLabel, gy as showOrHideMidpointArrow, gz as isJSPlumbConnection, gA as hideConnectionActions, gB as showConnectionActions, gC as resetInputLabelPosition, gD as getConnectionInfo, gE as showOutputNameLabel, gF as RemoveConnectionCommand, gG as isJSPlumbEndpointElement, gH as isElementIntersection, gI as calculateElementIntersection, gJ as showDropConnectionState, gK as showPullConnectionState, gL as EVENT_CONNECTION_ABORT, gM as INTERCEPT_BEFORE_DROP, gN as EVENT_CONNECTION, gO as EVENT_DRAG_MOVE, gP as EVENT_CONNECTION_MOUSEOVER, gQ as EVENT_CONNECTION_MOUSEOUT, gR as EVENT_CONNECTION_MOVED, gS as EVENT_ENDPOINT_MOUSEOVER, gT as EVENT_ENDPOINT_MOUSEOUT, gU as EVENT_CONNECTION_DETACHED, gV as EVENT_CONNECTION_DRAG, gW as EVENT_PLUS_ENDPOINT_CLICK, gX as EVENT_ADD_INPUT_ENDPOINT_CLICK, gY as N8nPlusEndpointType, gZ as usePostHog, g_ as CANVAS_AUTO_ADD_MANUAL_TRIGGER_EXPERIMENT, g$ as MODAL_CANCEL, h0 as addClassesToOverlays, h1 as getJSPlumbEndpoints, h2 as isSubNodeType, h3 as useDataSchema, h4 as OVERLAY_RUN_ITEMS_ID, h5 as RemoveNodeCommand, h6 as CanvasKey, h7 as CanvasNodeKey, h8 as CanvasNodeRenderType, h9 as N8nTooltip, ha as CanvasNodeHandleKey, hb as useActiveElement, hc as useEventListener$2, hd as onKeyDown, he as onKeyUp, hf as useDebounceFn, hg as sanitizeHtml$1, hh as AddNodeCommand, hi as DEFAULT_NODE_SIZE, hj as CONFIGURATION_NODE_SIZE, hk as CONFIGURABLE_NODE_SIZE, hl as NEW_WORKFLOW_ID, hm as onBeforeRouteLeave } from "./index-QAq8Sa9R.js";
3
- import { c as capitalize$1, _ as _sfc_main$13, R as RunDataAi } from "./RunDataAi-CYTNyRq_.js";
4
- import { F as FileSaver_minExports } from "./FileSaver.min-B3lWZPMp.js";
5
- import { c as convertToDisplayDateComponents } from "./dateFormatter-BCrxaIdG.js";
6
- import { u as useWorkflowActivate } from "./useWorkflowActivate-DKPQP7qy.js";
7
- import { g as globalLinkActionsEventBus, u as usePushConnectionStore } from "./pushConnection.store-Cdssd0uJ.js";
8
- import { u as useExecutionDebugging } from "./useExecutionDebugging-CwyVwJqO.js";
9
- import { u as useBeforeUnload, a as useNodeViewVersionSwitcher } from "./useNodeViewVersionSwitcher-BPNKvsXw.js";
10
- import { u as useBugReporting } from "./useBugReporting-Bvr7bSQt.js";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RunDataTable-DISLWxMc.js","assets/index-7YFQEQmt.js","assets/index-BFH_KxyA.css","assets/RunDataTable-ZwoYenSI.css","assets/RunDataJson-ea5u1EeD.js","assets/RunDataAi-BKu1beM6.js","assets/RunDataAi-x30tU8-0.css","assets/FileSaver.min-DNytcjKT.js","assets/dateFormatter-C53K7zEn.js","assets/useWorkflowActivate-D_gK841h.js","assets/pushConnection.store-DbprXL-x.js","assets/useExecutionDebugging-CLORI_Ma.js","assets/useNodeViewVersionSwitcher-CJLQ5lju.js","assets/useBugReporting-IgwBNdXI.js","assets/RunDataJson-Dtc8i0I7.css","assets/RunDataSearch-DKNVmEqa.js","assets/RunDataSearch-BA0wlJtp.css","assets/NodeCreation-Ce1ct2i3.js","assets/NodeCreation-30KXmZi2.css","assets/CanvasControls-BPXQqeeO.js","assets/CanvasControls-Gjw5xMXK.css","assets/SetupWorkflowCredentialsButton-C1Jv_-V5.js"])))=>i.map(i=>d[i]);
2
+ import { aJ as BaseTransition, aK as BaseTransitionPropsValidators, aL as Comment, aM as DeprecationTypes, aN as EffectScope, aO as ErrorCodes, aP as ErrorTypeStrings, F as Fragment, aQ as KeepAlive, aR as ReactiveEffect, aS as Static, aT as Suspense, aU as Teleport, aV as Text, aW as TrackOpTypes, aX as Transition$2, aY as TransitionGroup, aZ as TriggerOpTypes, a_ as VueElement, a$ as assertNumber, b0 as callWithAsyncErrorHandling, b1 as callWithErrorHandling, b2 as camelize, b3 as capitalize, b4 as cloneVNode, b5 as compatUtils, p as computed, b6 as createApp, e as createBlock, f as createCommentVNode, h as createElementBlock, j as createBaseVNode, b7 as createHydrationRenderer, b8 as createPropsRestProxy, b9 as createRenderer, ba as createSSRApp, aF as createSlots, bb as createStaticVNode, k as createTextVNode, i as createVNode, bc as customRef, bd as defineAsyncComponent, d as defineComponent, be as defineCustomElement, bf as defineEmits, bg as defineExpose, bh as defineModel, bi as defineOptions, bj as defineProps, bk as defineSSRCustomElement, bl as defineSlots, bm as devtools, bn as effect, bo as effectScope, bp as getCurrentInstance, bq as getCurrentScope, br as getCurrentWatcher, bs as getTransitionRawChildren, bt as guardReactiveProps, bu as h, bv as handleError, bw as hasInjectionContext, bx as hydrate, by as hydrateOnIdle, bz as hydrateOnInteraction, bA as hydrateOnMediaQuery, bB as hydrateOnVisible, bC as initCustomFormatter, bD as initDirectivesForSSR, bE as inject, bF as isMemoSame, bG as isProxy, bH as isReactive, bI as isReadonly, bJ as isRef, bK as isRuntimeOnly, bL as isShallow, bM as isVNode, bN as markRaw, bO as mergeDefaults, bP as mergeModels, bQ as mergeProps, x as nextTick, n as normalizeClass, bR as normalizeProps, B as normalizeStyle, bS as onActivated, ar as onBeforeMount, v as onBeforeUnmount, bT as onBeforeUpdate, bU as onDeactivated, bV as onErrorCaptured, o as onMounted, bW as onRenderTracked, bX as onRenderTriggered, bY as onScopeDispose, bZ as onServerPrefetch, b_ as onUnmounted, b$ as onUpdated, c0 as onWatcherCleanup, c as openBlock, c1 as popScopeId, c2 as provide, c3 as proxyRefs, c4 as pushScopeId, c5 as queuePostFlushCb, c6 as reactive, c7 as readonly, r as ref, c8 as registerRuntimeCompiler, c9 as render$5, z as renderList, q as renderSlot, l as resolveComponent, ca as resolveDirective, cb as resolveDynamicComponent, cc as resolveFilter, cd as resolveTransitionHooks, ce as setBlockTracking, cf as setDevtoolsHook, cg as setTransitionHooks, ch as shallowReactive, ci as shallowReadonly, cj as shallowRef, ck as ssrContextKey, cl as ssrUtils, cm as stop, t as toDisplayString, cn as toHandlerKey, co as toHandlers, cp as toRaw, cq as toRef, cr as toRefs$1, cs as toValue$1, ct as transformVNodeArgs, cu as triggerRef, A as unref, cv as useAttrs, aa as useCssModule, cw as useCssVars, cx as useHost, cy as useId, cz as useModel, cA as useSSRContext, cB as useShadowRoot, cC as useSlots, cD as useTemplateRef, cE as useTransitionState, cF as vModelCheckbox, cG as vModelDynamic, cH as vModelRadio, cI as vModelSelect, cJ as vModelText, at as vShow, cK as version, cL as warn$1, H as watch, cM as watchEffect, cN as watchPostEffect, cO as watchSyncEffect, cP as withAsyncContext, w as withCtx, cQ as withDefaults, as as withDirectives, G as withKeys, cR as withMemo, I as withModifiers, cS as withScopeId, cT as createCompounder, cU as SetCache, cV as arrayIncludes, cW as cacheHas, cX as baseRest, cY as isArrayLikeObject, cZ as baseFlatten, K as useUIStore, c_ as useNodeTypesStore, T as useWorkflowsStore, a0 as useSourceControlStore, am as getResourcePermissions, c$ as isPresent, d0 as getMousePosition$1, au as STICKY_NODE_TYPE, d1 as usePinnedData, g as useI18n, d2 as NOT_DUPLICATABLE_NODE_TYPES, E as onClickOutside, d3 as N8nActionDropdown, _ as _export_sfc$1, d4 as _sfc_main$11, ap as useNDVStore, d5 as isCommunityPackageName, d6 as NPM_PACKAGE_DOCS_BASE_URL, d7 as BUILTIN_NODES_DOCS_URL, d8 as COMMUNITY_NODES_INSTALLATION_DOCS_URL, d9 as NodeConnectionType, aG as useExternalHooks, ak as useTelemetry, b as useRouter, da as useClipboard, a4 as useWorkflowHelpers, a as useToast, db as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, dc as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, dd as FORM_TRIGGER_NODE_TYPE, de as CHAT_TRIGGER_NODE_TYPE, df as toValue$2, dg as toRef$1, dh as tryOnScopeDispose$1, di as isIOS, dj as noop$4, dk as isObject$1, dl as isClient$1, dm as useNodeHelpers, J as useDebounce, dn as TitledList, dp as nodeIssuesToString, dq as getNodeInputs, dr as useRunWorkflow, ds as MANUAL_TRIGGER_NODE_TYPE, dt as WEBHOOK_NODE_TYPE, du as AI_TRANSFORM_NODE_TYPE, dv as AI_TRANSFORM_CODE_GENERATED_FOR_PROMPT, dw as generateCodeForAiTransform, dx as AI_TRANSFORM_JS_CODE, ac as nodeViewEventBus, al as useMessage, ae as MODAL_CONFIRM, dy as useCredentialsStore, dz as useHistoryStore, dA as importCurlEventBus, dB as ndvEventBus, dC as CUSTOM_NODES_DOCS_URL, dD as NodeCredentials, dE as _sfc_main$12, dF as ProjectTypes, dG as getConnectionTypes, dH as isSingleExecution, dI as get$4, dJ as getNodeParameters, dK as deepCopy, dL as set$4, dM as unset, dN as SHOULD_CLEAR_NODE_OUTPUTS, dO as RenameNodeCommand, dP as isINodePropertyCollectionList, dQ as isINodePropertiesList, dR as isINodePropertyOptionsList, dS as displayParameter, dT as Draggable, aA as useStorage, dU as LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH, dV as MAIN_NODE_PANEL_WIDTH, dW as getAugmentedNamespace, dX as commonjsGlobal, dY as getDefaultExportFromCjs, dZ as sanitizeHtml_1, d_ as sanitizeHtml, d$ as jsonParse, e0 as __unplugin_components_2$2, e1 as useNodeType, e2 as MAX_DISPLAY_DATA_SIZE, e3 as MAX_DISPLAY_DATA_SIZE_SCHEMA_VIEW, e4 as MAX_DISPLAY_ITEMS_AUTO_ALL, e5 as mapStores, Z as useRootStore, e6 as DATA_PINNING_DOCS_URL, e7 as DATA_EDITING_DOCS_URL, e8 as HTML_NODE_TYPE, e9 as executionDataToJson, ea as NODE_TYPES_EXCLUDED_FROM_OUTPUT_NAME_APPEND, eb as isEmpty, ec as isEqual, ed as getNodeOutputs, ee as getNodeHints, ef as getGenericHints, eg as dataPinningEventBus, eh as clearJsonKey, ei as searchInObject, ej as isObject$2, ek as LOCAL_STORAGE_PIN_DATA_DISCOVERY_NDV_FLAG, el as LOCAL_STORAGE_PIN_DATA_DISCOVERY_CANVAS_FLAG, em as TEST_PIN_DATA, en as __vitePreload, eo as storeToRefs, ep as waitingNodeTooltip, eq as truncate, er as START_NODE_TYPE, es as CRON_NODE_TYPE, et as INTERVAL_NODE_TYPE, eu as CopyInput, C as createEventBus, ev as isTriggerPanelObject, ew as getTriggerNodeServiceName, V as VIEWS, ag as WORKFLOW_SETTINGS_MODAL_KEY, m as useSettingsStore, ex as useDeviceSupport, ey as APP_MODALS_ELEMENT_ID, ez as useStyles, eA as EXECUTABLE_TRIGGER_NODE_TYPES, eB as BASE_NODE_SURVEY_URL, a8 as EnterpriseEditionFeature, eC as getAnchorPosition, eD as isValidNodeConnectionType, eE as getEndpointScope, eF as getInputEndpointUUID, eG as getInputEndpointStyle, eH as getScope, eI as getInputNameOverlay, eJ as NODE_INSERT_SPACER_BETWEEN_INPUT_GROUPS, eK as NODE_MIN_INPUT_ITEMS_COUNT, eL as getOutputEndpointUUID, eM as getOutputEndpointStyle, eN as getOutputNameOverlay, eO as NO_OP_NODE_TYPE, eP as NODE_CONNECTION_TYPE_ALLOW_MULTIPLE, eQ as GRID_SIZE, eR as isString, eS as isNumber, eT as assert, eU as QUICKSTART_NOTE_NAME, eV as CUSTOM_API_CALL_KEY, eW as FontAwesomeIcon, eX as _sfc_main$14, eY as xss, eZ as WAIT_NODE_TYPE, e_ as SEND_AND_WAIT_OPERATION, e$ as FORM_NODE_TYPE, f0 as WAIT_TIME_UNLIMITED, f1 as SIMULATE_NODE_TYPE, f2 as SIMULATE_TRIGGER_NODE_TYPE, $ as useCanvasStore, f3 as getRelativePosition, f4 as v4, f5 as CORE_NODES_CATEGORY, f6 as DEFAULT_SUBCATEGORY, f7 as AI_TRANSFORM_NODE_TYPE$1, f8 as sublimeSearch, f9 as AI_SUBCATEGORY, fa as AI_CATEGORY_AGENTS, fb as sortBy, fc as i18n, aD as useTemplatesStore, fd as AI_NODE_CREATOR_VIEW, fe as AI_OTHERS_NODE_CREATOR_VIEW, ff as AI_CATEGORY_DOCUMENT_LOADERS, fg as AI_CATEGORY_LANGUAGE_MODELS, fh as AI_CATEGORY_MEMORY, fi as AI_CATEGORY_OUTPUTPARSER, fj as AI_CATEGORY_RETRIEVERS, fk as AI_CATEGORY_TEXT_SPLITTERS, fl as AI_CATEGORY_TOOLS, fm as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, fn as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, fo as AI_CATEGORY_EMBEDDING, fp as AI_CATEGORY_VECTOR_STORES, fq as AI_UNCATEGORIZED_CATEGORY, fr as TRIGGER_NODE_CREATOR_VIEW, fs as EMAIL_IMAP_NODE_TYPE, ft as SCHEDULE_TRIGGER_NODE_TYPE, fu as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, fv as MANUAL_CHAT_TRIGGER_NODE_TYPE, fw as OTHER_TRIGGER_NODES_SUBCATEGORY, fx as REGULAR_NODE_CREATOR_VIEW, fy as RSS_READ_NODE_TYPE, fz as EMAIL_SEND_NODE_TYPE, fA as TRANSFORM_DATA_SUBCATEGORY, fB as FILTER_NODE_TYPE, fC as REMOVE_DUPLICATES_NODE_TYPE, fD as SPLIT_OUT_NODE_TYPE, fE as LIMIT_NODE_TYPE, fF as SUMMARIZE_NODE_TYPE, fG as AGGREGATE_NODE_TYPE, fH as MERGE_NODE_TYPE, fI as MARKDOWN_NODE_TYPE, fJ as XML_NODE_TYPE, fK as CRYPTO_NODE_TYPE, fL as EXTRACT_FROM_FILE_NODE_TYPE, fM as CONVERT_TO_FILE_NODE_TYPE, fN as COMPRESSION_NODE_TYPE, fO as EDIT_IMAGE_NODE_TYPE, fP as FLOWS_CONTROL_SUBCATEGORY, fQ as IF_NODE_TYPE, fR as SPLIT_IN_BATCHES_NODE_TYPE, fS as HELPERS_SUBCATEGORY, fT as HTTP_REQUEST_NODE_TYPE, fU as CODE_NODE_TYPE, fV as AI_CATEGORY_CHAINS, fW as SET_NODE_TYPE, fX as DATETIME_NODE_TYPE, R as defineStore, fY as AI_CATEGORY_ROOT_NODES, fZ as AI_CODE_NODE_TYPE, f_ as isValidCanvasConnectionMode, f$ as CanvasConnectionMode, S as STORES, g0 as NODE_CREATOR_OPEN_SOURCES, g1 as isVueFlowConnection, g2 as nodeConnectionTypes, g3 as MOUSE_EVENT_BUTTON, g4 as MOUSE_EVENT_BUTTONS, g5 as KeyboardShortcutTooltip, U as useRoute, a3 as useDocumentTitle, a2 as useNpsSurveyStore, a1 as useProjectsStore, aq as useExecutionsStore, g6 as useExternalSecretsStore, g7 as useWorkflowsEEStore, g8 as useEnvironmentsStore, u as useUsersStore, D as useTagsStore, g9 as getBackgroundStyles, ga as getNodeViewTab, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, ao as MAIN_HEADER_TABS, gb as ready$1, aw as sourceControlEventBus, gc as historyBus, gd as WORKFLOW_LM_CHAT_MODAL_KEY, ge as generateNodesGraph, gf as N8nAddInputEndpointType, gg as getFixedNodesList, gh as tryToParseNumber, gi as MoveNodeCommand, ai as VALID_WORKFLOW_IMPORT_URL_REGEX, gj as UPDATE_WEBHOOK_ID_NODE_TYPES, gk as getNewNodePosition, gl as DRAG_EVENT_DATA_KEY, gm as NODE_SIZE, gn as getConnectorLengths, go as MAX_X_TO_PUSH_DOWNSTREAM_NODES, gp as PUSH_NODES_OFFSET, gq as generateOffsets, gr as resetConnectionAfterPull, gs as resetConnection, gt as moveBackInputLabelPosition, gu as hideOutputNameLabel, gv as addConnectionActionsOverlay, gw as getOverlay, gx as OVERLAY_ENDPOINT_ARROW_ID, gy as getConnectorPaintStyleData, gz as AddConnectionCommand, gA as addConnectionTestData, gB as showOrHideItemsLabel, gC as showOrHideMidpointArrow, gD as isJSPlumbConnection, gE as hideConnectionActions, gF as showConnectionActions, gG as resetInputLabelPosition, gH as getConnectionInfo, gI as showOutputNameLabel, gJ as RemoveConnectionCommand, gK as isJSPlumbEndpointElement, gL as isElementIntersection, gM as calculateElementIntersection, gN as showDropConnectionState, gO as showPullConnectionState, gP as EVENT_CONNECTION_ABORT, gQ as INTERCEPT_BEFORE_DROP, gR as EVENT_CONNECTION, gS as EVENT_DRAG_MOVE, gT as EVENT_CONNECTION_MOUSEOVER, gU as EVENT_CONNECTION_MOUSEOUT, gV as EVENT_CONNECTION_MOVED, gW as EVENT_ENDPOINT_MOUSEOVER, gX as EVENT_ENDPOINT_MOUSEOUT, gY as EVENT_CONNECTION_DETACHED, gZ as EVENT_CONNECTION_DRAG, g_ as EVENT_PLUS_ENDPOINT_CLICK, g$ as EVENT_ADD_INPUT_ENDPOINT_CLICK, h0 as N8nPlusEndpointType, h1 as usePostHog, h2 as CANVAS_AUTO_ADD_MANUAL_TRIGGER_EXPERIMENT, h3 as MODAL_CANCEL, h4 as addClassesToOverlays, h5 as getJSPlumbEndpoints, h6 as isSubNodeType, h7 as useDataSchema, h8 as OVERLAY_RUN_ITEMS_ID, h9 as RemoveNodeCommand, ha as CanvasKey, hb as CanvasNodeKey, hc as CanvasNodeRenderType, hd as N8nTooltip, he as CanvasNodeHandleKey, hf as useActiveElement, hg as useEventListener$2, hh as onKeyDown, hi as onKeyUp, hj as useDebounceFn, hk as sanitizeHtml$1, hl as AddNodeCommand, hm as DEFAULT_NODE_SIZE, hn as CONFIGURATION_NODE_SIZE, ho as CONFIGURABLE_NODE_SIZE, hp as NEW_WORKFLOW_ID, hq as onBeforeRouteLeave } from "./index-7YFQEQmt.js";
3
+ import { c as capitalize$1, _ as _sfc_main$13, R as RunDataAi } from "./RunDataAi-BKu1beM6.js";
4
+ import { F as FileSaver_minExports } from "./FileSaver.min-DNytcjKT.js";
5
+ import { c as convertToDisplayDateComponents } from "./dateFormatter-C53K7zEn.js";
6
+ import { u as useWorkflowActivate } from "./useWorkflowActivate-D_gK841h.js";
7
+ import { g as globalLinkActionsEventBus, u as usePushConnectionStore } from "./pushConnection.store-DbprXL-x.js";
8
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-CLORI_Ma.js";
9
+ import { u as useBeforeUnload, a as useNodeViewVersionSwitcher } from "./useNodeViewVersionSwitcher-CJLQ5lju.js";
10
+ import { u as useBugReporting } from "./useBugReporting-IgwBNdXI.js";
11
11
  /**
12
12
  * vue v3.5.11
13
13
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
@@ -569,9 +569,9 @@ const _sfc_main$$ = /* @__PURE__ */ defineComponent({
569
569
  class: normalizeClass(_ctx.$style.editContainer),
570
570
  onKeydown: [
571
571
  withKeys(onRename, ["enter"]),
572
- _cache[2] || (_cache[2] = withModifiers(() => {
572
+ _cache[3] || (_cache[3] = withModifiers(() => {
573
573
  }, ["stop"])),
574
- _cache[3] || (_cache[3] = withKeys(($event) => editName.value = false, ["esc"]))
574
+ _cache[4] || (_cache[4] = withKeys(($event) => editName.value = false, ["esc"]))
575
575
  ]
576
576
  }, [
577
577
  createVNode(_component_n8n_text, {
@@ -599,7 +599,9 @@ const _sfc_main$$ = /* @__PURE__ */ defineComponent({
599
599
  type: "secondary",
600
600
  size: "small",
601
601
  label: _ctx.$locale.baseText("ndv.title.cancel"),
602
- onClick: _cache[1] || (_cache[1] = ($event) => editName.value = false)
602
+ onClick: _cache[1] || (_cache[1] = ($event) => editName.value = false),
603
+ onKeydown: _cache[2] || (_cache[2] = withKeys(withModifiers(() => {
604
+ }, ["stop"]), ["enter"]))
603
605
  }, null, 8, ["label"]),
604
606
  createVNode(_component_n8n_button, {
605
607
  type: "primary",
@@ -1499,11 +1501,12 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
1499
1501
  hideIcon: { type: Boolean },
1500
1502
  tooltip: {}
1501
1503
  },
1502
- emits: ["stopExecution", "execute"],
1504
+ emits: ["stopExecution", "execute", "valueChanged"],
1503
1505
  setup(__props, { emit: __emit }) {
1504
1506
  const props = __props;
1505
1507
  const emit = __emit;
1506
1508
  const lastPopupCountUpdate = ref(0);
1509
+ const codeGenerationInProgress = ref(false);
1507
1510
  const router = useRouter();
1508
1511
  const { runWorkflow, runWorkflowResolvePending, stopCurrentExecution } = useRunWorkflow({ router });
1509
1512
  const workflowsStore = useWorkflowsStore();
@@ -1522,7 +1525,7 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
1522
1525
  });
1523
1526
  const isNodeRunning = computed(() => {
1524
1527
  var _a, _b;
1525
- if (!uiStore.isActionActive["workflowRunning"]) return false;
1528
+ if (!uiStore.isActionActive["workflowRunning"] || codeGenerationInProgress.value) return false;
1526
1529
  const triggeredNode = workflowsStore.executedNode;
1527
1530
  return workflowsStore.isNodeExecuting(((_a = node2.value) == null ? void 0 : _a.name) ?? "") || triggeredNode === ((_b = node2.value) == null ? void 0 : _b.name);
1528
1531
  });
@@ -1570,6 +1573,9 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
1570
1573
  if (isListeningForEvents.value) {
1571
1574
  return "";
1572
1575
  }
1576
+ if (codeGenerationInProgress.value) {
1577
+ return i18n2.baseText("ndv.execute.generatingCode");
1578
+ }
1573
1579
  if (isTriggerNode.value && ((_a = node2 == null ? void 0 : node2.value) == null ? void 0 : _a.disabled)) {
1574
1580
  return i18n2.baseText("ndv.execute.nodeIsDisabled");
1575
1581
  }
@@ -1586,6 +1592,9 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
1586
1592
  return "";
1587
1593
  });
1588
1594
  const tooltipText = computed(() => {
1595
+ if (shouldGenerateCode.value) {
1596
+ return i18n2.baseText("ndv.execute.generateCodeAndTestNode.description");
1597
+ }
1589
1598
  if (disabledHint.value) return disabledHint.value;
1590
1599
  if (props.tooltip && !isLoading.value && testStepButtonPopupCount() < MAX_POPUP_COUNT) {
1591
1600
  return props.tooltip;
@@ -1615,8 +1624,29 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
1615
1624
  return i18n2.baseText("ndv.execute.testNode");
1616
1625
  });
1617
1626
  const isLoading = computed(
1618
- () => isNodeRunning.value && !isListeningForEvents.value && !isListeningForWorkflowEvents.value
1627
+ () => codeGenerationInProgress.value || isNodeRunning.value && !isListeningForEvents.value && !isListeningForWorkflowEvents.value
1619
1628
  );
1629
+ const buttonIcon = computed(() => {
1630
+ if (shouldGenerateCode.value) return "terminal";
1631
+ if (!isListeningForEvents.value && !props.hideIcon) return "flask";
1632
+ return void 0;
1633
+ });
1634
+ const shouldGenerateCode = computed(() => {
1635
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
1636
+ if (((_a = node2.value) == null ? void 0 : _a.type) !== AI_TRANSFORM_NODE_TYPE) {
1637
+ return false;
1638
+ }
1639
+ if (!((_c = (_b = node2.value) == null ? void 0 : _b.parameters) == null ? void 0 : _c.instructions)) {
1640
+ return false;
1641
+ }
1642
+ if (!((_e = (_d = node2.value) == null ? void 0 : _d.parameters) == null ? void 0 : _e.jsCode)) {
1643
+ return true;
1644
+ }
1645
+ if (((_f = node2.value) == null ? void 0 : _f.parameters[AI_TRANSFORM_CODE_GENERATED_FOR_PROMPT]) && ((_h = (_g = node2.value) == null ? void 0 : _g.parameters) == null ? void 0 : _h.instructions).trim() !== ((_j = (_i = node2.value) == null ? void 0 : _i.parameters) == null ? void 0 : _j[AI_TRANSFORM_CODE_GENERATED_FOR_PROMPT]).trim()) {
1646
+ return true;
1647
+ }
1648
+ return false;
1649
+ });
1620
1650
  async function stopWaitingForWebhook() {
1621
1651
  try {
1622
1652
  await workflowsStore.removeTestWebhook(workflowsStore.workflowId);
@@ -1638,6 +1668,46 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
1638
1668
  }
1639
1669
  }
1640
1670
  async function onClick() {
1671
+ var _a, _b, _c;
1672
+ if (shouldGenerateCode.value) {
1673
+ codeGenerationInProgress.value = true;
1674
+ try {
1675
+ toast.showMessage({
1676
+ title: i18n2.baseText("ndv.execute.generateCode.title"),
1677
+ message: i18n2.baseText("ndv.execute.generateCode.message", {
1678
+ interpolate: { nodeName: (_a = node2.value) == null ? void 0 : _a.name }
1679
+ }),
1680
+ type: "success"
1681
+ });
1682
+ const prompt2 = (_c = (_b = node2.value) == null ? void 0 : _b.parameters) == null ? void 0 : _c.instructions;
1683
+ const updateInformation = await generateCodeForAiTransform(
1684
+ prompt2,
1685
+ `parameters.${AI_TRANSFORM_JS_CODE}`
1686
+ );
1687
+ if (!updateInformation) return;
1688
+ emit("valueChanged", updateInformation);
1689
+ emit("valueChanged", {
1690
+ name: `parameters.${AI_TRANSFORM_CODE_GENERATED_FOR_PROMPT}`,
1691
+ value: prompt2
1692
+ });
1693
+ useTelemetry().trackAiTransform("generationFinished", {
1694
+ prompt: prompt2,
1695
+ code: updateInformation.value
1696
+ });
1697
+ } catch (error2) {
1698
+ useTelemetry().trackAiTransform("generationFinished", {
1699
+ prompt,
1700
+ code: "",
1701
+ hasError: true
1702
+ });
1703
+ toast.showMessage({
1704
+ type: "error",
1705
+ title: i18n2.baseText("codeNodeEditor.askAi.generationFailed"),
1706
+ message: error2.message
1707
+ });
1708
+ }
1709
+ codeGenerationInProgress.value = false;
1710
+ }
1641
1711
  if (isChatNode.value || isChatChild.value && ndvStore.isNDVDataEmpty("input")) {
1642
1712
  ndvStore.setActiveNodeName(null);
1643
1713
  nodeViewEventBus.emit("openChat");
@@ -1705,7 +1775,7 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
1705
1775
  label: buttonLabel.value,
1706
1776
  type: _ctx.type,
1707
1777
  size: _ctx.size,
1708
- icon: !isListeningForEvents.value && !_ctx.hideIcon ? "flask" : void 0,
1778
+ icon: buttonIcon.value,
1709
1779
  "transparent-background": _ctx.transparent,
1710
1780
  title: !isTriggerNode.value && !tooltipText.value ? unref(i18n2).baseText("ndv.execute.testNode.description") : "",
1711
1781
  onMouseover: onMouseOver,
@@ -1799,8 +1869,8 @@ const _sfc_main$W = /* @__PURE__ */ defineComponent({
1799
1869
  const hasForeignCredential = computed(() => props.foreignCredentials.length > 0);
1800
1870
  const isHomeProjectTeam = computed(
1801
1871
  () => {
1802
- var _a;
1803
- return ((_a = currentWorkflow.value.homeProject) == null ? void 0 : _a.type) === ProjectTypes.Team;
1872
+ var _a, _b;
1873
+ return ((_b = (_a = currentWorkflow.value) == null ? void 0 : _a.homeProject) == null ? void 0 : _b.type) === ProjectTypes.Team;
1804
1874
  }
1805
1875
  );
1806
1876
  const isReadOnly = computed(
@@ -2486,7 +2556,8 @@ const _sfc_main$W = /* @__PURE__ */ defineComponent({
2486
2556
  size: "small",
2487
2557
  "telemetry-source": "parameters",
2488
2558
  onExecute: onNodeExecute,
2489
- onStopExecution
2559
+ onStopExecution,
2560
+ onValueChanged: valueChanged
2490
2561
  }, null, 8, ["node-name", "disabled", "tooltip"])) : createCommentVNode("", true)
2491
2562
  ])) : createCommentVNode("", true)
2492
2563
  ]),
@@ -2672,29 +2743,73 @@ const style0$y = {
2672
2743
  const cssModules$A = {
2673
2744
  "$style": style0$y
2674
2745
  };
2675
- const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$W, [["__cssModules", cssModules$A], ["__scopeId", "data-v-1b928372"]]);
2676
- const _sfc_main$V = defineComponent({
2677
- components: {
2678
- Draggable
2679
- },
2746
+ const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$W, [["__cssModules", cssModules$A], ["__scopeId", "data-v-1dacd3ce"]]);
2747
+ const _sfc_main$V = /* @__PURE__ */ defineComponent({
2748
+ __name: "PanelDragButton",
2680
2749
  props: {
2681
- canMoveRight: {
2682
- type: Boolean
2683
- },
2684
- canMoveLeft: {
2685
- type: Boolean
2686
- }
2750
+ canMoveRight: { type: Boolean },
2751
+ canMoveLeft: { type: Boolean }
2687
2752
  },
2688
- methods: {
2689
- onDrag(e) {
2690
- this.$emit("drag", e);
2691
- },
2692
- onDragStart() {
2693
- this.$emit("dragstart");
2694
- },
2695
- onDragEnd() {
2696
- this.$emit("dragend");
2697
- }
2753
+ emits: ["drag", "dragstart", "dragend"],
2754
+ setup(__props, { emit: __emit }) {
2755
+ const emit = __emit;
2756
+ const onDrag = (e) => {
2757
+ emit("drag", e);
2758
+ };
2759
+ const onDragEnd = () => {
2760
+ emit("dragend");
2761
+ };
2762
+ const onDragStart = () => {
2763
+ emit("dragstart");
2764
+ };
2765
+ return (_ctx, _cache) => {
2766
+ const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
2767
+ return openBlock(), createBlock(Draggable, {
2768
+ type: "panel-resize",
2769
+ class: normalizeClass(_ctx.$style.dragContainer),
2770
+ onDrag,
2771
+ onDragstart: onDragStart,
2772
+ onDragend: onDragEnd
2773
+ }, {
2774
+ default: withCtx(({ isDragging }) => [
2775
+ createBaseVNode("div", {
2776
+ class: normalizeClass({ [_ctx.$style.dragButton]: true })
2777
+ }, [
2778
+ _ctx.canMoveLeft ? (openBlock(), createElementBlock("span", {
2779
+ key: 0,
2780
+ class: normalizeClass({ [_ctx.$style.leftArrow]: true, [_ctx.$style.visible]: isDragging })
2781
+ }, [
2782
+ createVNode(_component_font_awesome_icon, { icon: "arrow-left" })
2783
+ ], 2)) : createCommentVNode("", true),
2784
+ _ctx.canMoveRight ? (openBlock(), createElementBlock("span", {
2785
+ key: 1,
2786
+ class: normalizeClass({ [_ctx.$style.rightArrow]: true, [_ctx.$style.visible]: isDragging })
2787
+ }, [
2788
+ createVNode(_component_font_awesome_icon, { icon: "arrow-right" })
2789
+ ], 2)) : createCommentVNode("", true),
2790
+ createBaseVNode("div", {
2791
+ class: normalizeClass(_ctx.$style.grid)
2792
+ }, _cache[0] || (_cache[0] = [
2793
+ createBaseVNode("div", null, [
2794
+ createBaseVNode("div"),
2795
+ createBaseVNode("div"),
2796
+ createBaseVNode("div"),
2797
+ createBaseVNode("div"),
2798
+ createBaseVNode("div")
2799
+ ], -1),
2800
+ createBaseVNode("div", null, [
2801
+ createBaseVNode("div"),
2802
+ createBaseVNode("div"),
2803
+ createBaseVNode("div"),
2804
+ createBaseVNode("div"),
2805
+ createBaseVNode("div")
2806
+ ], -1)
2807
+ ]), 2)
2808
+ ], 2)
2809
+ ]),
2810
+ _: 1
2811
+ }, 8, ["class"]);
2812
+ };
2698
2813
  }
2699
2814
  });
2700
2815
  const dragContainer = "_dragContainer_1fum9_1";
@@ -2713,59 +2828,10 @@ const style0$x = {
2713
2828
  arrow,
2714
2829
  grid
2715
2830
  };
2716
- function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
2717
- const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
2718
- const _component_Draggable = Draggable;
2719
- return openBlock(), createBlock(_component_Draggable, {
2720
- type: "panel-resize",
2721
- class: normalizeClass(_ctx.$style.dragContainer),
2722
- onDrag: _ctx.onDrag,
2723
- onDragstart: _ctx.onDragStart,
2724
- onDragend: _ctx.onDragEnd
2725
- }, {
2726
- default: withCtx(({ isDragging }) => [
2727
- createBaseVNode("div", {
2728
- class: normalizeClass({ [_ctx.$style.dragButton]: true })
2729
- }, [
2730
- _ctx.canMoveLeft ? (openBlock(), createElementBlock("span", {
2731
- key: 0,
2732
- class: normalizeClass({ [_ctx.$style.leftArrow]: true, [_ctx.$style.visible]: isDragging })
2733
- }, [
2734
- createVNode(_component_font_awesome_icon, { icon: "arrow-left" })
2735
- ], 2)) : createCommentVNode("", true),
2736
- _ctx.canMoveRight ? (openBlock(), createElementBlock("span", {
2737
- key: 1,
2738
- class: normalizeClass({ [_ctx.$style.rightArrow]: true, [_ctx.$style.visible]: isDragging })
2739
- }, [
2740
- createVNode(_component_font_awesome_icon, { icon: "arrow-right" })
2741
- ], 2)) : createCommentVNode("", true),
2742
- createBaseVNode("div", {
2743
- class: normalizeClass(_ctx.$style.grid)
2744
- }, _cache[0] || (_cache[0] = [
2745
- createBaseVNode("div", null, [
2746
- createBaseVNode("div"),
2747
- createBaseVNode("div"),
2748
- createBaseVNode("div"),
2749
- createBaseVNode("div"),
2750
- createBaseVNode("div")
2751
- ], -1),
2752
- createBaseVNode("div", null, [
2753
- createBaseVNode("div"),
2754
- createBaseVNode("div"),
2755
- createBaseVNode("div"),
2756
- createBaseVNode("div"),
2757
- createBaseVNode("div")
2758
- ], -1)
2759
- ]), 2)
2760
- ], 2)
2761
- ]),
2762
- _: 1
2763
- }, 8, ["class", "onDrag", "onDragstart", "onDragend"]);
2764
- }
2765
2831
  const cssModules$z = {
2766
2832
  "$style": style0$x
2767
2833
  };
2768
- const PanelDragButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$V, [["render", _sfc_render$8], ["__cssModules", cssModules$z]]);
2834
+ const PanelDragButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$V, [["__cssModules", cssModules$z]]);
2769
2835
  const _hoisted_1$r = ["data-node-name", "data-node-placement", "onClick"];
2770
2836
  const _sfc_main$U = /* @__PURE__ */ defineComponent({
2771
2837
  __name: "NDVFloatingNodes",
@@ -3250,7 +3316,7 @@ const dataPanel = "_dataPanel_a6j4o_1";
3250
3316
  const inputPanel = "_inputPanel_a6j4o_10 _dataPanel_a6j4o_1";
3251
3317
  const outputPanel = "_outputPanel_a6j4o_18 _dataPanel_a6j4o_1";
3252
3318
  const mainPanel = "_mainPanel_a6j4o_26";
3253
- const draggable$1 = "_draggable_a6j4o_30";
3319
+ const draggable = "_draggable_a6j4o_30";
3254
3320
  const mainPanelInner = "_mainPanelInner_a6j4o_34";
3255
3321
  const dragging = "_dragging_a6j4o_41";
3256
3322
  const dragButtonContainer = "_dragButtonContainer_a6j4o_54";
@@ -3260,7 +3326,7 @@ const style0$v = {
3260
3326
  inputPanel,
3261
3327
  outputPanel,
3262
3328
  mainPanel,
3263
- draggable: draggable$1,
3329
+ draggable,
3264
3330
  mainPanelInner,
3265
3331
  dragging,
3266
3332
  "double-width": "_double-width_a6j4o_50",
@@ -3882,19 +3948,19 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
3882
3948
  }
3883
3949
  });
3884
3950
  const LazyRunDataTable = defineAsyncComponent(
3885
- async () => await __vitePreload(() => import("./RunDataTable--RIqj8DU.js"), true ? __vite__mapDeps([0,1,2,3]) : void 0)
3951
+ async () => await __vitePreload(() => import("./RunDataTable-DISLWxMc.js"), true ? __vite__mapDeps([0,1,2,3]) : void 0)
3886
3952
  );
3887
3953
  const LazyRunDataJson = defineAsyncComponent(
3888
- async () => await __vitePreload(() => import("./RunDataJson-CUsbBWaI.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14]) : void 0)
3954
+ async () => await __vitePreload(() => import("./RunDataJson-ea5u1EeD.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14]) : void 0)
3889
3955
  );
3890
3956
  const LazyRunDataSchema = defineAsyncComponent(
3891
- async () => await __vitePreload(() => import("./index-QAq8Sa9R.js").then((n) => n.jx), true ? __vite__mapDeps([1,2]) : void 0)
3957
+ async () => await __vitePreload(() => import("./index-7YFQEQmt.js").then((n) => n.jy), true ? __vite__mapDeps([1,2]) : void 0)
3892
3958
  );
3893
3959
  const LazyRunDataHtml = defineAsyncComponent(
3894
3960
  async () => await __vitePreload(() => Promise.resolve().then(() => RunDataHtml$1), true ? void 0 : void 0)
3895
3961
  );
3896
3962
  const LazyRunDataSearch = defineAsyncComponent(
3897
- async () => await __vitePreload(() => import("./RunDataSearch-BiygytJ8.js"), true ? __vite__mapDeps([15,1,2,16]) : void 0)
3963
+ async () => await __vitePreload(() => import("./RunDataSearch-DKNVmEqa.js"), true ? __vite__mapDeps([15,1,2,16]) : void 0)
3898
3964
  );
3899
3965
  const _sfc_main$O = defineComponent({
3900
3966
  name: "RunData",
@@ -3945,7 +4011,8 @@ const _sfc_main$O = defineComponent({
3945
4011
  type: String
3946
4012
  },
3947
4013
  pushRef: {
3948
- type: String
4014
+ type: String,
4015
+ required: true
3949
4016
  },
3950
4017
  paneType: {
3951
4018
  type: String,
@@ -5779,7 +5846,7 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
5779
5846
  const cssModules$v = {
5780
5847
  "$style": style0$t
5781
5848
  };
5782
- const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$O, [["render", _sfc_render$6], ["__cssModules", cssModules$v], ["__scopeId", "data-v-608fc001"]]);
5849
+ const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$O, [["render", _sfc_render$6], ["__cssModules", cssModules$v], ["__scopeId", "data-v-4243851b"]]);
5783
5850
  const _sfc_main$N = /* @__PURE__ */ defineComponent({
5784
5851
  __name: "RunInfo",
5785
5852
  props: {
@@ -6473,7 +6540,8 @@ const _sfc_main$J = defineComponent({
6473
6540
  type: Boolean
6474
6541
  },
6475
6542
  pushRef: {
6476
- type: String
6543
+ type: String,
6544
+ required: true
6477
6545
  },
6478
6546
  readOnly: {
6479
6547
  type: Boolean
@@ -6584,7 +6652,7 @@ const _sfc_main$J = defineComponent({
6584
6652
  rootNode() {
6585
6653
  var _a;
6586
6654
  const workflow = this.workflow;
6587
- const rootNodes = workflow.getChildNodes(((_a = this.activeNode) == null ? void 0 : _a.name) ?? "", "ALL_NON_MAIN");
6655
+ const rootNodes = workflow.getChildNodes(((_a = this.activeNode) == null ? void 0 : _a.name) ?? "", "ALL");
6588
6656
  return rootNodes[0];
6589
6657
  },
6590
6658
  rootNodesParents() {
@@ -6750,7 +6818,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
6750
6818
  node: _ctx.currentNode,
6751
6819
  nodes: _ctx.isMappingMode ? _ctx.rootNodesParents : _ctx.parentNodes,
6752
6820
  workflow: _ctx.workflow,
6753
- "run-index": _ctx.runIndex,
6821
+ "run-index": _ctx.isMappingMode ? 0 : _ctx.runIndex,
6754
6822
  "linked-runs": _ctx.linkedRuns,
6755
6823
  "can-link-runs": !_ctx.mappedNode && _ctx.canLinkRuns,
6756
6824
  "too-much-data-title": _ctx.$locale.baseText("ndv.input.tooMuchData.title"),
@@ -7562,6 +7630,20 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
7562
7630
  return parentNodes.value[0];
7563
7631
  });
7564
7632
  const inputNodeName = computed(() => {
7633
+ var _a;
7634
+ const nodeOutputs = activeNode.value && activeNodeType.value ? getNodeOutputs(props.workflowObject, activeNode.value, activeNodeType.value) : [];
7635
+ const nonMainOutputs = nodeOutputs.filter((output) => {
7636
+ if (typeof output === "string") return output !== NodeConnectionType.Main;
7637
+ return output.type !== NodeConnectionType.Main;
7638
+ });
7639
+ const isSubNode = nonMainOutputs.length > 0;
7640
+ if (isSubNode && activeNode.value) {
7641
+ const connectedOutputNode = (_a = props.workflowObject.getChildNodes(
7642
+ activeNode.value.name,
7643
+ "ALL_NON_MAIN"
7644
+ )) == null ? void 0 : _a[0];
7645
+ return connectedOutputNode;
7646
+ }
7565
7647
  return selectedInput.value || parentNode.value;
7566
7648
  });
7567
7649
  const inputNode = computed(() => {
@@ -9223,10 +9305,10 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
9223
9305
  };
9224
9306
  });
9225
9307
  const nodeExecutionStatus = computed(() => {
9226
- var _a, _b;
9308
+ var _a, _b, _c;
9227
9309
  const nodeExecutionRunData = (_a = workflowsStore.getWorkflowRunData) == null ? void 0 : _a[props.name];
9228
9310
  if (nodeExecutionRunData) {
9229
- return ((_b = nodeExecutionRunData.filter(Boolean)[0]) == null ? void 0 : _b.executionStatus) ?? "";
9311
+ return ((_c = (_b = nodeExecutionRunData.filter(Boolean)) == null ? void 0 : _b[0]) == null ? void 0 : _c.executionStatus) ?? "";
9230
9312
  }
9231
9313
  return "";
9232
9314
  });
@@ -9728,7 +9810,7 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
9728
9810
  };
9729
9811
  }
9730
9812
  });
9731
- const __unplugin_components_0$6 = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["__scopeId", "data-v-aa223f3f"]]);
9813
+ const __unplugin_components_0$6 = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["__scopeId", "data-v-21033a3a"]]);
9732
9814
  const state = reactive({
9733
9815
  customActions: {},
9734
9816
  delegatedClickHandler: null
@@ -10116,7 +10198,7 @@ function sortNodeCreateElements(nodes) {
10116
10198
  function searchNodes(searchFilter, items) {
10117
10199
  const askAiEnabled = useSettingsStore().isAskAiEnabled;
10118
10200
  if (!askAiEnabled) {
10119
- items = items.filter((item) => item.key !== AI_TRANSFORM_NODE_TYPE);
10201
+ items = items.filter((item) => item.key !== AI_TRANSFORM_NODE_TYPE$1);
10120
10202
  }
10121
10203
  const trimmedFilter = searchFilter.toLowerCase().replace("trigger", "").trimEnd();
10122
10204
  const result = (sublimeSearch(trimmedFilter, items, [
@@ -10494,7 +10576,7 @@ function RegularView(nodes) {
10494
10576
  SET_NODE_TYPE,
10495
10577
  CODE_NODE_TYPE,
10496
10578
  DATETIME_NODE_TYPE,
10497
- AI_TRANSFORM_NODE_TYPE
10579
+ AI_TRANSFORM_NODE_TYPE$1
10498
10580
  ];
10499
10581
  const view = {
10500
10582
  value: REGULAR_NODE_CREATOR_VIEW,
@@ -10954,7 +11036,7 @@ const useViewStacks = defineStore("nodeCreatorViewStacks", () => {
10954
11036
  const isAskAiEnabled = settingsStore.isAskAiEnabled;
10955
11037
  if (!isAskAiEnabled) {
10956
11038
  itemsInSubcategory = itemsInSubcategory.filter(
10957
- (item) => item.key !== AI_TRANSFORM_NODE_TYPE$1
11039
+ (item) => item.key !== AI_TRANSFORM_NODE_TYPE
10958
11040
  );
10959
11041
  }
10960
11042
  const sections = stack.sections;
@@ -11045,8 +11127,8 @@ function mapLegacyConnectionsToCanvasConnections(legacyConnections, nodes) {
11045
11127
  );
11046
11128
  fromConnectionTypes.forEach((fromConnectionType) => {
11047
11129
  const fromPorts = legacyConnections[fromNodeName][fromConnectionType];
11048
- fromPorts.forEach((toPorts, fromIndex) => {
11049
- toPorts.forEach((toPort) => {
11130
+ fromPorts == null ? void 0 : fromPorts.forEach((toPorts, fromIndex) => {
11131
+ toPorts == null ? void 0 : toPorts.forEach((toPort) => {
11050
11132
  var _a2;
11051
11133
  const toId = ((_a2 = nodes.find((node2) => node2.name === toPort.node)) == null ? void 0 : _a2.id) ?? "";
11052
11134
  const toConnectionType = toPort.type;
@@ -11192,13 +11274,15 @@ const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
11192
11274
  const ndvStore = useNDVStore();
11193
11275
  const uiStore = useUIStore();
11194
11276
  const nodeTypesStore = useNodeTypesStore();
11195
- const externalHooks = useExternalHooks();
11196
11277
  const telemetry = useTelemetry();
11278
+ const externalHooks = useExternalHooks();
11197
11279
  const selectedView = ref(TRIGGER_NODE_CREATOR_VIEW);
11198
11280
  const mergedNodes = ref([]);
11199
11281
  const actions2 = ref({});
11200
11282
  const showScrim = ref(false);
11201
11283
  const openSource = ref("");
11284
+ const isCreateNodeActive = ref(false);
11285
+ const nodePanelSessionId = ref("");
11202
11286
  const allNodeCreatorNodes = computed(
11203
11287
  () => Object.values(mergedNodes.value).map((i) => transformNodeType(i))
11204
11288
  );
@@ -11251,52 +11335,29 @@ const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
11251
11335
  createNodeActive,
11252
11336
  nodeCreatorView
11253
11337
  }) {
11254
- if (createNodeActive === uiStore.isCreateNodeActive) {
11338
+ if (createNodeActive === isCreateNodeActive.value) {
11255
11339
  return;
11256
11340
  }
11257
11341
  if (!nodeCreatorView) {
11258
11342
  nodeCreatorView = workflowsStore.workflowTriggerNodes.length > 0 ? REGULAR_NODE_CREATOR_VIEW : TRIGGER_NODE_CREATOR_VIEW;
11259
11343
  }
11260
11344
  setSelectedView(nodeCreatorView);
11261
- let mode;
11262
- switch (selectedView.value) {
11263
- case AI_NODE_CREATOR_VIEW:
11264
- mode = "ai";
11265
- break;
11266
- case REGULAR_NODE_CREATOR_VIEW:
11267
- mode = "regular";
11268
- break;
11269
- default:
11270
- mode = "regular";
11271
- }
11272
- uiStore.isCreateNodeActive = createNodeActive;
11345
+ isCreateNodeActive.value = createNodeActive;
11273
11346
  if (createNodeActive && source) {
11274
11347
  setOpenSource(source);
11275
11348
  }
11276
11349
  void externalHooks.run("nodeView.createNodeActiveChanged", {
11277
11350
  source,
11278
- mode,
11351
+ mode: getMode(nodeCreatorView),
11279
11352
  createNodeActive
11280
11353
  });
11281
- trackNodesPanelActiveChanged({
11282
- source,
11283
- mode,
11284
- createNodeActive,
11285
- workflowId: workflowsStore.workflowId
11286
- });
11287
- }
11288
- function trackNodesPanelActiveChanged({
11289
- source,
11290
- mode,
11291
- createNodeActive,
11292
- workflowId
11293
- }) {
11294
- telemetry.trackNodesPanel("nodeView.createNodeActiveChanged", {
11295
- source,
11296
- mode,
11297
- createNodeActive,
11298
- workflow_id: workflowId
11299
- });
11354
+ if (createNodeActive) {
11355
+ onCreatorOpened({
11356
+ source,
11357
+ mode: getMode(nodeCreatorView),
11358
+ workflow_id: workflowsStore.workflowId
11359
+ });
11360
+ }
11300
11361
  }
11301
11362
  function openNodeCreatorForConnectingNode({
11302
11363
  connection,
@@ -11358,7 +11419,107 @@ const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
11358
11419
  }
11359
11420
  return filter2;
11360
11421
  }
11422
+ function resetNodesPanelSession() {
11423
+ nodePanelSessionId.value = `nodes_panel_session_${(/* @__PURE__ */ new Date()).valueOf()}`;
11424
+ }
11425
+ function trackNodeCreatorEvent(event, properties = {}, withPostHog = false) {
11426
+ telemetry.track(
11427
+ event,
11428
+ {
11429
+ ...properties,
11430
+ nodes_panel_session_id: nodePanelSessionId.value
11431
+ },
11432
+ {
11433
+ withPostHog
11434
+ }
11435
+ );
11436
+ }
11437
+ function onCreatorOpened({
11438
+ source,
11439
+ mode,
11440
+ workflow_id
11441
+ }) {
11442
+ resetNodesPanelSession();
11443
+ trackNodeCreatorEvent("User opened nodes panel", {
11444
+ source,
11445
+ mode,
11446
+ workflow_id
11447
+ });
11448
+ }
11449
+ function onNodeFilterChanged({
11450
+ newValue,
11451
+ filteredNodes,
11452
+ filterMode,
11453
+ subcategory,
11454
+ title: title2
11455
+ }) {
11456
+ if (!newValue.length) {
11457
+ return;
11458
+ }
11459
+ const { results_count, trigger_count, regular_count } = filteredNodes.reduce(
11460
+ (accu, node2) => {
11461
+ if (!("properties" in node2)) {
11462
+ return accu;
11463
+ }
11464
+ const isCustomAction = "actionKey" in node2.properties && node2.properties.actionKey === CUSTOM_API_CALL_KEY;
11465
+ if (isCustomAction) {
11466
+ return accu;
11467
+ }
11468
+ const isTrigger = node2.key.includes("Trigger");
11469
+ return {
11470
+ results_count: accu.results_count + 1,
11471
+ trigger_count: accu.trigger_count + (isTrigger ? 1 : 0),
11472
+ regular_count: accu.regular_count + (isTrigger ? 0 : 1)
11473
+ };
11474
+ },
11475
+ {
11476
+ results_count: 0,
11477
+ trigger_count: 0,
11478
+ regular_count: 0
11479
+ }
11480
+ );
11481
+ trackNodeCreatorEvent("User entered nodes panel search term", {
11482
+ search_string: newValue,
11483
+ filter_mode: getMode(filterMode),
11484
+ category_name: subcategory,
11485
+ results_count,
11486
+ trigger_count,
11487
+ regular_count,
11488
+ title: title2
11489
+ });
11490
+ }
11491
+ function onCategoryExpanded(properties) {
11492
+ trackNodeCreatorEvent("User viewed node category", { ...properties, is_subcategory: false });
11493
+ }
11494
+ function onViewActions(properties) {
11495
+ trackNodeCreatorEvent("User viewed node actions", properties);
11496
+ }
11497
+ function onActionsCustomAPIClicked(properties) {
11498
+ trackNodeCreatorEvent("User clicked custom API from node actions", properties);
11499
+ }
11500
+ function onAddActions(properties) {
11501
+ trackNodeCreatorEvent("User added action", properties);
11502
+ }
11503
+ function onSubcategorySelected(properties) {
11504
+ trackNodeCreatorEvent("User viewed node category", {
11505
+ category_name: properties.subcategory,
11506
+ is_subcategory: true
11507
+ });
11508
+ }
11509
+ function onNodeAddedToCanvas(properties) {
11510
+ trackNodeCreatorEvent("User added node to workflow canvas", properties, true);
11511
+ }
11512
+ function getMode(mode) {
11513
+ if (mode === AI_NODE_CREATOR_VIEW || mode === AI_OTHERS_NODE_CREATOR_VIEW) {
11514
+ return "ai";
11515
+ }
11516
+ if (mode === TRIGGER_NODE_CREATOR_VIEW) {
11517
+ return "trigger";
11518
+ }
11519
+ return "regular";
11520
+ }
11361
11521
  return {
11522
+ isCreateNodeActive,
11362
11523
  openSource,
11363
11524
  selectedView,
11364
11525
  showScrim,
@@ -11373,7 +11534,15 @@ const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
11373
11534
  openSelectiveNodeCreator,
11374
11535
  openNodeCreatorForConnectingNode,
11375
11536
  openNodeCreatorForTriggerNodes,
11376
- allNodeCreatorNodes
11537
+ allNodeCreatorNodes,
11538
+ onCreatorOpened,
11539
+ onNodeFilterChanged,
11540
+ onCategoryExpanded,
11541
+ onActionsCustomAPIClicked,
11542
+ onViewActions,
11543
+ onAddActions,
11544
+ onSubcategorySelected,
11545
+ onNodeAddedToCanvas
11377
11546
  };
11378
11547
  });
11379
11548
  const _hoisted_1$g = ["textContent"];
@@ -11525,13 +11694,13 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
11525
11694
  }
11526
11695
  });
11527
11696
  const LazyNodeCreation = defineAsyncComponent(
11528
- async () => await __vitePreload(() => import("./NodeCreation-BqSkxffS.js").then((n) => n.N), true ? __vite__mapDeps([17,1,2,18]) : void 0)
11697
+ async () => await __vitePreload(() => import("./NodeCreation-Ce1ct2i3.js").then((n) => n.N), true ? __vite__mapDeps([17,1,2,18]) : void 0)
11529
11698
  );
11530
11699
  const LazyCanvasControls = defineAsyncComponent(
11531
- async () => await __vitePreload(() => import("./CanvasControls-DkT1iClJ.js"), true ? __vite__mapDeps([19,1,2,20]) : void 0)
11700
+ async () => await __vitePreload(() => import("./CanvasControls-BPXQqeeO.js"), true ? __vite__mapDeps([19,1,2,20]) : void 0)
11532
11701
  );
11533
11702
  const LazySetupWorkflowCredentialsButton = defineAsyncComponent(
11534
- async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-u1qhjj5K.js"), true ? __vite__mapDeps([21,1,2]) : void 0)
11703
+ async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-C1Jv_-V5.js"), true ? __vite__mapDeps([21,1,2]) : void 0)
11535
11704
  );
11536
11705
  const _sfc_main$C = defineComponent({
11537
11706
  name: "NodeView",
@@ -13328,22 +13497,19 @@ const _sfc_main$C = defineComponent({
13328
13497
  this.workflowsStore.setNodePristine(newNodeData.name, true);
13329
13498
  this.uiStore.stateIsDirty = true;
13330
13499
  if (nodeTypeName === STICKY_NODE_TYPE) {
13331
- this.$telemetry.trackNodesPanel("nodeView.addSticky", {
13500
+ this.$telemetry.track("User inserted workflow note", {
13332
13501
  workflow_id: this.workflowsStore.workflowId
13333
13502
  });
13334
13503
  } else {
13335
13504
  void this.externalHooks.run("nodeView.addNodeButton", { nodeTypeName });
13336
- const trackProperties = {
13505
+ this.nodeCreatorStore.onNodeAddedToCanvas({
13337
13506
  node_type: nodeTypeName,
13338
13507
  node_version: newNodeData.typeVersion,
13339
13508
  is_auto_add: isAutoAdd,
13340
13509
  workflow_id: this.workflowsStore.workflowId,
13341
- drag_and_drop: options.dragAndDrop
13342
- };
13343
- if (lastSelectedNode) {
13344
- trackProperties.input_node_type = lastSelectedNode.type;
13345
- }
13346
- this.$telemetry.trackNodesPanel("nodeView.addNodeButton", trackProperties);
13510
+ drag_and_drop: options.dragAndDrop,
13511
+ input_node_type: lastSelectedNode ? lastSelectedNode.type : void 0
13512
+ });
13347
13513
  }
13348
13514
  if (trackHistory && !isAutoAdd) {
13349
13515
  this.deselectAllNodes();
@@ -14749,12 +14915,13 @@ const _sfc_main$C = defineComponent({
14749
14915
  mode,
14750
14916
  createNodeActive
14751
14917
  });
14752
- this.$telemetry.trackNodesPanel("nodeView.createNodeActiveChanged", {
14753
- source,
14754
- mode,
14755
- createNodeActive,
14756
- workflow_id: this.workflowsStore.workflowId
14757
- });
14918
+ if (createNodeActive) {
14919
+ this.nodeCreatorStore.onCreatorOpened({
14920
+ source,
14921
+ mode,
14922
+ workflow_id: this.workflowsStore.workflowId
14923
+ });
14924
+ }
14758
14925
  },
14759
14926
  async onAddNodes({ nodes, connections: connections2 }, dragAndDrop = false, position2) {
14760
14927
  let currentPosition = position2;
@@ -15193,7 +15360,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
15193
15360
  const cssModules$n = {
15194
15361
  "$style": style2
15195
15362
  };
15196
- const NodeViewV1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["render", _sfc_render$2], ["__cssModules", cssModules$n], ["__scopeId", "data-v-58f513fa"]]);
15363
+ const NodeViewV1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["render", _sfc_render$2], ["__cssModules", cssModules$n], ["__scopeId", "data-v-07a30429"]]);
15197
15364
  const _sfc_main$B = {};
15198
15365
  function _sfc_render$1(_ctx, _cache) {
15199
15366
  const _component_N8nButton = resolveComponent("N8nButton");
@@ -18570,7 +18737,7 @@ function useKeyPress(keyFilter, options) {
18570
18737
  function reset() {
18571
18738
  modifierPressed = false;
18572
18739
  pressedKeys.clear();
18573
- isPressed.value = false;
18740
+ isPressed.value = toValue$1(keyFilter) === true;
18574
18741
  }
18575
18742
  function createKeyFilterFn(keyFilter2) {
18576
18743
  if (keyFilter2 === null) {
@@ -22765,7 +22932,7 @@ class Storage {
22765
22932
  edgeLookup,
22766
22933
  emits,
22767
22934
  id: id2,
22768
- vueFlowVersion: "1.41.2",
22935
+ vueFlowVersion: "1.41.4",
22769
22936
  $destroy: () => {
22770
22937
  this.remove(id2);
22771
22938
  }
@@ -23261,7 +23428,9 @@ const _sfc_main$8$1 = /* @__PURE__ */ defineComponent({
23261
23428
  const panKeyPressed = useKeyPress(panActivationKeyCode);
23262
23429
  const selectionKeyPressed = useKeyPress(selectionKeyCode);
23263
23430
  const zoomKeyPressed = useKeyPress(zoomActivationKeyCode);
23264
- const shouldPanOnDrag = toRef(() => !selectionKeyPressed.value && (panKeyPressed.value || panOnDrag.value));
23431
+ const shouldPanOnDrag = toRef(
23432
+ () => (!selectionKeyPressed.value || selectionKeyPressed.value && selectionKeyCode.value === true) && (panKeyPressed.value || panOnDrag.value)
23433
+ );
23265
23434
  const shouldPanOnScroll = toRef(() => panKeyPressed.value || panOnScroll.value);
23266
23435
  const isSelecting = toRef(() => selectionKeyPressed.value || selectionKeyCode.value === true && shouldPanOnDrag.value !== true);
23267
23436
  onMounted(() => {
@@ -23354,10 +23523,13 @@ const _sfc_main$8$1 = /* @__PURE__ */ defineComponent({
23354
23523
  if (!shouldPanOnDrag.value && (event.type === "mousedown" || event.type === "touchstart")) {
23355
23524
  return false;
23356
23525
  }
23526
+ if (selectionKeyCode.value === true && Array.isArray(panOnDrag.value) && panOnDrag.value.includes(0) && eventButton === 0) {
23527
+ return false;
23528
+ }
23357
23529
  if (Array.isArray(shouldPanOnDrag.value) && !shouldPanOnDrag.value.includes(eventButton) && (event.type === "mousedown" || event.type === "touchstart")) {
23358
23530
  return false;
23359
23531
  }
23360
- const buttonAllowed = Array.isArray(shouldPanOnDrag.value) && shouldPanOnDrag.value.includes(eventButton) || !eventButton || eventButton <= 1;
23532
+ const buttonAllowed = Array.isArray(shouldPanOnDrag.value) && shouldPanOnDrag.value.includes(eventButton) || selectionKeyCode.value === true && Array.isArray(shouldPanOnDrag.value) && !shouldPanOnDrag.value.includes(0) || !eventButton || eventButton <= 1;
23361
23533
  return (!event.ctrlKey || event.type === "wheel") && buttonAllowed;
23362
23534
  });
23363
23535
  watch(
@@ -23935,9 +24107,10 @@ const ConnectionLine = defineComponent({
23935
24107
  const startHandleId = connectionStartHandle.value.handleId;
23936
24108
  const handleType = connectionStartHandle.value.type;
23937
24109
  const fromHandleBounds = fromNode.value.handleBounds;
23938
- let handleBounds = fromHandleBounds == null ? void 0 : fromHandleBounds[handleType];
24110
+ let handleBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType]) || [];
23939
24111
  if (connectionMode.value === ConnectionMode.Loose) {
23940
- handleBounds = handleBounds || (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType === "source" ? "target" : "source"]);
24112
+ const oppositeBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType === "source" ? "target" : "source"]) || [];
24113
+ handleBounds = [...handleBounds, ...oppositeBounds];
23941
24114
  }
23942
24115
  if (!handleBounds) {
23943
24116
  return null;
@@ -24630,7 +24803,7 @@ const _sfc_main$1$4 = /* @__PURE__ */ defineComponent({
24630
24803
  connectionRadius: {},
24631
24804
  isValidConnection: { type: [Function, null], default: void 0 },
24632
24805
  deleteKeyCode: { default: void 0 },
24633
- selectionKeyCode: { default: void 0 },
24806
+ selectionKeyCode: { type: [Boolean, null], default: void 0 },
24634
24807
  multiSelectionKeyCode: { default: void 0 },
24635
24808
  zoomActivationKeyCode: { default: void 0 },
24636
24809
  panActivationKeyCode: { default: void 0 },
@@ -25230,10 +25403,14 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
25230
25403
  const [gapX, gapY] = Array.isArray(__props.gap) ? __props.gap : [__props.gap, __props.gap];
25231
25404
  const scaledGap = [gapX * viewport.value.zoom || 1, gapY * viewport.value.zoom || 1];
25232
25405
  const scaledSize = __props.size * viewport.value.zoom;
25233
- const patternOffset = __props.variant === BackgroundVariant.Dots ? [scaledSize / __props.offset, scaledSize / __props.offset] : [scaledGap[0] / __props.offset, scaledGap[1] / __props.offset];
25406
+ const [offsetX, offsetY] = Array.isArray(__props.offset) ? __props.offset : [__props.offset, __props.offset];
25407
+ const scaledOffset = [
25408
+ offsetX * viewport.value.zoom || 1 + scaledGap[0] / 2,
25409
+ offsetY * viewport.value.zoom || 1 + scaledGap[1] / 2
25410
+ ];
25234
25411
  return {
25235
25412
  scaledGap,
25236
- offset: patternOffset,
25413
+ offset: scaledOffset,
25237
25414
  size: scaledSize
25238
25415
  };
25239
25416
  });
@@ -25266,7 +25443,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
25266
25443
  }, null, 8, ["size", "color", "dimensions"])) : _ctx.variant === unref(BackgroundVariant).Dots ? (openBlock(), createBlock(unref(DotPattern), {
25267
25444
  key: 1,
25268
25445
  color: patternColor.value,
25269
- radius: background.value.size / _ctx.offset
25446
+ radius: background.value.size / 2
25270
25447
  }, null, 8, ["color", "radius"])) : createCommentVNode("", true),
25271
25448
  _ctx.bgColor ? (openBlock(), createElementBlock("svg", _hoisted_2$5, [
25272
25449
  createBaseVNode("rect", {
@@ -31711,10 +31888,6 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
31711
31888
  }
31712
31889
  });
31713
31890
  const CanvasBackgroundStripedPattern = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__scopeId", "data-v-3476bfc9"]]);
31714
- function isMiddleMouseButton(event) {
31715
- return event.which === 2 || event.button === 1;
31716
- }
31717
- const panningKeyCode = " ";
31718
31891
  const defaultZoom = 1;
31719
31892
  const minimapVisibilityDelay = 1e3;
31720
31893
  const _sfc_main$7 = /* @__PURE__ */ defineComponent({
@@ -31735,8 +31908,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
31735
31908
  const $style = useCssModule();
31736
31909
  const emit = __emit;
31737
31910
  const props = __props;
31911
+ const { controlKeyCode } = useDeviceSupport();
31738
31912
  const {
31739
- vueFlowRef,
31740
31913
  getSelectedNodes: selectedNodes,
31741
31914
  addSelectedNodes,
31742
31915
  removeSelectedNodes,
@@ -31756,17 +31929,17 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
31756
31929
  const isPaneReady = ref(false);
31757
31930
  const classes = computed(() => ({
31758
31931
  [$style.canvas]: true,
31759
- [$style.ready]: isPaneReady.value,
31760
- [$style.draggable]: isPanningEnabled.value
31932
+ [$style.ready]: isPaneReady.value
31761
31933
  }));
31762
31934
  const disableKeyBindings = computed(() => !props.keyBindings);
31763
- const isPanningEnabled = ref(false);
31935
+ const panningKeyCode = ref([" ", controlKeyCode]);
31936
+ const panningMouseButton = ref([1]);
31764
31937
  const selectionKeyCode = ref(true);
31765
- onKeyDown(panningKeyCode, () => {
31766
- setPanningEnabled(true);
31938
+ onKeyDown(panningKeyCode.value, () => {
31939
+ selectionKeyCode.value = null;
31767
31940
  });
31768
- onKeyUp(panningKeyCode, () => {
31769
- setPanningEnabled(false);
31941
+ onKeyUp(panningKeyCode.value, () => {
31942
+ selectionKeyCode.value = true;
31770
31943
  });
31771
31944
  const keyMap = computed(() => ({
31772
31945
  ctrl_c: emitWithSelectedNodes((ids) => emit("copy:nodes", ids)),
@@ -31792,21 +31965,6 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
31792
31965
  }
31793
31966
  }));
31794
31967
  useKeybindings(keyMap, { disabled: disableKeyBindings });
31795
- function setPanningEnabled(value) {
31796
- if (value) {
31797
- isPanningEnabled.value = true;
31798
- selectionKeyCode.value = null;
31799
- } else {
31800
- isPanningEnabled.value = false;
31801
- selectionKeyCode.value = true;
31802
- }
31803
- }
31804
- function resetSelectionKeyCode() {
31805
- selectionKeyCode.value = null;
31806
- void nextTick(() => {
31807
- selectionKeyCode.value = true;
31808
- });
31809
- }
31810
31968
  const lastSelectedNode = computed(() => selectedNodes.value[selectedNodes.value.length - 1]);
31811
31969
  const hasSelection = computed(() => selectedNodes.value.length > 0);
31812
31970
  const selectedNodeIds = computed(() => selectedNodes.value.map((node2) => node2.id));
@@ -31933,23 +32091,11 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
31933
32091
  setInteractive(!value);
31934
32092
  elementsSelectable.value = true;
31935
32093
  }
31936
- function onPaneMouseDown(event) {
31937
- if (isMiddleMouseButton(event)) {
31938
- setPanningEnabled(true);
31939
- void nextTick(
31940
- () => {
31941
- var _a, _b;
31942
- return (_b = (_a = vueFlowRef.value) == null ? void 0 : _a.querySelector(".vue-flow__pane")) == null ? void 0 : _b.dispatchEvent(new MouseEvent("mousedown", event));
31943
- }
31944
- );
31945
- }
31946
- }
31947
32094
  function onPaneMoveStart() {
31948
32095
  isPaneMoving.value = true;
31949
32096
  }
31950
32097
  function onPaneMoveEnd() {
31951
32098
  isPaneMoving.value = false;
31952
- setPanningEnabled(false);
31953
32099
  }
31954
32100
  const contextMenu2 = useContextMenu();
31955
32101
  function onOpenContextMenu(event) {
@@ -32028,12 +32174,10 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
32028
32174
  onMounted(() => {
32029
32175
  props.eventBus.on("fitView", onFitView);
32030
32176
  props.eventBus.on("nodes:select", onSelectNodes);
32031
- window.addEventListener("focus", resetSelectionKeyCode);
32032
32177
  });
32033
32178
  onUnmounted(() => {
32034
32179
  props.eventBus.off("fitView", onFitView);
32035
32180
  props.eventBus.off("nodes:select", onSelectNodes);
32036
- window.removeEventListener("focus", resetSelectionKeyCode);
32037
32181
  });
32038
32182
  onPaneReady(async () => {
32039
32183
  await onFitView();
@@ -32057,6 +32201,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
32057
32201
  "apply-changes": false,
32058
32202
  "connection-line-options": { markerEnd: unref(MarkerType).ArrowClosed },
32059
32203
  "connection-radius": 60,
32204
+ "pan-on-drag": panningMouseButton.value,
32060
32205
  "pan-on-scroll": "",
32061
32206
  "snap-to-grid": "",
32062
32207
  "snap-grid": [unref(GRID_SIZE), unref(GRID_SIZE)],
@@ -32064,7 +32209,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
32064
32209
  "max-zoom": 4,
32065
32210
  class: normalizeClass(classes.value),
32066
32211
  "selection-key-code": selectionKeyCode.value,
32067
- "pan-activation-key-code": panningKeyCode,
32212
+ "pan-activation-key-code": panningKeyCode.value,
32068
32213
  "data-test-id": "canvas",
32069
32214
  onConnectStart,
32070
32215
  onConnect,
@@ -32074,8 +32219,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
32074
32219
  onViewportChange,
32075
32220
  onNodesChange,
32076
32221
  onMoveStart: onPaneMoveStart,
32077
- onMoveEnd: onPaneMoveEnd,
32078
- onMousedown: onPaneMouseDown
32222
+ onMoveEnd: onPaneMoveEnd
32079
32223
  }, {
32080
32224
  "node-canvas-node": withCtx((canvasNodeProps) => [
32081
32225
  createVNode(Node, mergeProps(canvasNodeProps, {
@@ -32162,22 +32306,20 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
32162
32306
  }))
32163
32307
  ]),
32164
32308
  _: 1
32165
- }, 8, ["id", "nodes", "edges", "connection-line-options", "snap-grid", "class", "selection-key-code"]);
32309
+ }, 8, ["id", "nodes", "edges", "connection-line-options", "pan-on-drag", "snap-grid", "class", "selection-key-code", "pan-activation-key-code"]);
32166
32310
  };
32167
32311
  }
32168
32312
  });
32169
- const canvas$1 = "_canvas_rjqxg_1";
32170
- const ready = "_ready_rjqxg_4";
32171
- const draggable = "_draggable_rjqxg_7";
32313
+ const canvas$1 = "_canvas_1sz6z_1";
32314
+ const ready = "_ready_1sz6z_4";
32172
32315
  const style0$2 = {
32173
32316
  canvas: canvas$1,
32174
- ready,
32175
- draggable
32317
+ ready
32176
32318
  };
32177
32319
  const cssModules$2 = {
32178
32320
  "$style": style0$2
32179
32321
  };
32180
- const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModules", cssModules$2], ["__scopeId", "data-v-2a7d0d16"]]);
32322
+ const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModules", cssModules$2], ["__scopeId", "data-v-1991ee65"]]);
32181
32323
  function useCanvasMapping({
32182
32324
  nodes,
32183
32325
  connections: connections2,
@@ -33090,6 +33232,9 @@ function useCanvasOperations({ router }) {
33090
33232
  }
33091
33233
  void nextTick(() => {
33092
33234
  workflowsStore.setNodePristine(nodeData.name, true);
33235
+ if (!options.keepPristine) {
33236
+ uiStore.stateIsDirty = true;
33237
+ }
33093
33238
  nodeHelpers.matchCredentials(nodeData);
33094
33239
  nodeHelpers.updateNodeParameterIssues(nodeData);
33095
33240
  nodeHelpers.updateNodeCredentialIssues(nodeData);
@@ -33189,22 +33334,19 @@ function useCanvasOperations({ router }) {
33189
33334
  }
33190
33335
  }
33191
33336
  function trackAddStickyNoteNode() {
33192
- telemetry.trackNodesPanel("nodeView.addSticky", {
33337
+ telemetry.track("User inserted workflow note", {
33193
33338
  workflow_id: workflowsStore.workflowId
33194
33339
  });
33195
33340
  }
33196
33341
  function trackAddDefaultNode(nodeData, options) {
33197
- const trackProperties = {
33342
+ nodeCreatorStore.onNodeAddedToCanvas({
33198
33343
  node_type: nodeData.type,
33199
33344
  node_version: nodeData.typeVersion,
33200
33345
  is_auto_add: options.isAutoAdd,
33201
33346
  workflow_id: workflowsStore.workflowId,
33202
- drag_and_drop: options.dragAndDrop
33203
- };
33204
- if (uiStore.lastInteractedWithNode) {
33205
- trackProperties.input_node_type = uiStore.lastInteractedWithNode.type;
33206
- }
33207
- telemetry.trackNodesPanel("nodeView.addNodeButton", trackProperties);
33347
+ drag_and_drop: options.dragAndDrop,
33348
+ input_node_type: uiStore.lastInteractedWithNode ? uiStore.lastInteractedWithNode.type : void 0
33349
+ });
33208
33350
  }
33209
33351
  function resolveNodeData(node2, nodeTypeDescription) {
33210
33352
  const id2 = node2.id ?? v4();
@@ -33225,7 +33367,6 @@ function useCanvasOperations({ router }) {
33225
33367
  parameters
33226
33368
  };
33227
33369
  resolveNodeParameters(nodeData);
33228
- resolveNodeCredentials(nodeData, nodeTypeDescription);
33229
33370
  resolveNodeName(nodeData);
33230
33371
  resolveNodeWebhook(nodeData, nodeTypeDescription);
33231
33372
  return nodeData;
@@ -33266,48 +33407,6 @@ function useCanvasOperations({ router }) {
33266
33407
  );
33267
33408
  node2.parameters = nodeParameters ?? {};
33268
33409
  }
33269
- function resolveNodeCredentials(node2, nodeTypeDescription) {
33270
- var _a, _b, _c, _d;
33271
- const credentialPerType = (_a = nodeTypeDescription.credentials) == null ? void 0 : _a.map((type) => credentialsStore.getUsableCredentialByType(type.name)).flat();
33272
- if ((credentialPerType == null ? void 0 : credentialPerType.length) === 1) {
33273
- const defaultCredential = credentialPerType[0];
33274
- const selectedCredentials = credentialsStore.getCredentialById(defaultCredential.id);
33275
- const selected2 = { id: selectedCredentials.id, name: selectedCredentials.name };
33276
- const credentials = {
33277
- [defaultCredential.type]: selected2
33278
- };
33279
- if (nodeTypeDescription.credentials) {
33280
- const authentication = nodeTypeDescription.credentials.find(
33281
- (type) => type.name === defaultCredential.type
33282
- );
33283
- const authDisplayOptionsHide = (_b = authentication == null ? void 0 : authentication.displayOptions) == null ? void 0 : _b.hide;
33284
- const authDisplayOptionsShow = (_c = authentication == null ? void 0 : authentication.displayOptions) == null ? void 0 : _c.show;
33285
- if (!authDisplayOptionsHide) {
33286
- if (!authDisplayOptionsShow) {
33287
- node2.credentials = credentials;
33288
- } else if (Object.keys(authDisplayOptionsShow).length === 1 && authDisplayOptionsShow.authentication) {
33289
- node2.credentials = credentials;
33290
- let parameters = {};
33291
- for (const displayOption of Object.keys(authDisplayOptionsShow)) {
33292
- if (node2.parameters && !node2.parameters[displayOption]) {
33293
- parameters = {};
33294
- node2.credentials = void 0;
33295
- break;
33296
- }
33297
- const optionValue = (_d = authDisplayOptionsShow[displayOption]) == null ? void 0 : _d[0];
33298
- if (optionValue && typeof optionValue === "string") {
33299
- parameters[displayOption] = optionValue;
33300
- }
33301
- node2.parameters = {
33302
- ...node2.parameters,
33303
- ...parameters
33304
- };
33305
- }
33306
- }
33307
- }
33308
- }
33309
- }
33310
- }
33311
33410
  function resolveNodePosition(node2, nodeTypeDescription) {
33312
33411
  let position2 = node2.position;
33313
33412
  let pushOffsets = [40, 40];
@@ -33420,7 +33519,7 @@ function useCanvasOperations({ router }) {
33420
33519
  }
33421
33520
  function resolveNodeWebhook(node2, nodeTypeDescription) {
33422
33521
  var _a;
33423
- if ((_a = nodeTypeDescription.webhooks) == null ? void 0 : _a.length) {
33522
+ if (((_a = nodeTypeDescription.webhooks) == null ? void 0 : _a.length) && !node2.webhookId) {
33424
33523
  node2.webhookId = v4();
33425
33524
  }
33426
33525
  if ([WEBHOOK_NODE_TYPE, FORM_TRIGGER_NODE_TYPE].includes(node2.type) && node2.parameters.path === "") {
@@ -33449,7 +33548,7 @@ function useCanvasOperations({ router }) {
33449
33548
  );
33450
33549
  }
33451
33550
  }
33452
- function createConnection(connection, { trackHistory = false } = {}) {
33551
+ function createConnection(connection, { trackHistory = false, keepPristine = false } = {}) {
33453
33552
  const sourceNode = workflowsStore.getNodeById(connection.source);
33454
33553
  const targetNode = workflowsStore.getNodeById(connection.target);
33455
33554
  if (!sourceNode || !targetNode) {
@@ -33477,7 +33576,9 @@ function useCanvasOperations({ router }) {
33477
33576
  nodeHelpers.updateNodeInputIssues(sourceNode);
33478
33577
  nodeHelpers.updateNodeInputIssues(targetNode);
33479
33578
  });
33480
- uiStore.stateIsDirty = true;
33579
+ if (!keepPristine) {
33580
+ uiStore.stateIsDirty = true;
33581
+ }
33481
33582
  }
33482
33583
  function revertCreateConnection(connection) {
33483
33584
  const sourceNodeName = connection[0].node;
@@ -33632,17 +33733,20 @@ function useCanvasOperations({ router }) {
33632
33733
  const targetNodeHasInputConnectionPortOfType = targetConnection.index < targetNodeInputs.length;
33633
33734
  return targetNodeHasInputConnectionOfType && targetNodeHasInputConnectionPortOfType;
33634
33735
  }
33635
- async function addConnections(connections2, { trackBulk = true, trackHistory = false } = {}) {
33736
+ async function addConnections(connections2, { trackBulk = true, trackHistory = false, keepPristine = false } = {}) {
33636
33737
  await nextTick();
33637
33738
  if (trackBulk && trackHistory) {
33638
33739
  historyStore.startRecordingUndo();
33639
33740
  }
33640
33741
  for (const connection of connections2) {
33641
- createConnection(connection, { trackHistory });
33742
+ createConnection(connection, { trackHistory, keepPristine });
33642
33743
  }
33643
33744
  if (trackBulk && trackHistory) {
33644
33745
  historyStore.stopRecordingUndo();
33645
33746
  }
33747
+ if (!keepPristine) {
33748
+ uiStore.stateIsDirty = true;
33749
+ }
33646
33750
  }
33647
33751
  function resetWorkspace() {
33648
33752
  nodeCreatorStore.setNodeCreatorState({ createNodeActive: false });
@@ -33665,7 +33769,9 @@ function useCanvasOperations({ router }) {
33665
33769
  async function initializeWorkspace(data) {
33666
33770
  workflowHelpers.initState(data);
33667
33771
  await addNodes2(data.nodes, { keepPristine: true });
33668
- await addConnections(mapLegacyConnectionsToCanvasConnections(data.connections, data.nodes));
33772
+ await addConnections(mapLegacyConnectionsToCanvasConnections(data.connections, data.nodes), {
33773
+ keepPristine: true
33774
+ });
33669
33775
  }
33670
33776
  function removeUnknownCredentials(workflow) {
33671
33777
  if (!(workflow == null ? void 0 : workflow.nodes)) return;
@@ -34018,7 +34124,8 @@ function useCanvasOperations({ router }) {
34018
34124
  importWorkflowData,
34019
34125
  fetchWorkflowDataFromUrl,
34020
34126
  resetWorkspace,
34021
- initializeWorkspace
34127
+ initializeWorkspace,
34128
+ resolveNodeWebhook
34022
34129
  };
34023
34130
  }
34024
34131
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
@@ -34082,7 +34189,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
34082
34189
  __name: "NodeView.v2",
34083
34190
  setup(__props) {
34084
34191
  const LazyNodeCreation2 = defineAsyncComponent(
34085
- async () => await __vitePreload(() => import("./NodeCreation-BqSkxffS.js").then((n) => n.N), true ? __vite__mapDeps([17,1,2,18]) : void 0)
34192
+ async () => await __vitePreload(() => import("./NodeCreation-Ce1ct2i3.js").then((n) => n.N), true ? __vite__mapDeps([17,1,2,18]) : void 0)
34086
34193
  );
34087
34194
  const LazyNodeDetailsView = defineAsyncComponent(
34088
34195
  async () => await __vitePreload(() => Promise.resolve().then(() => NodeDetailsView), true ? void 0 : void 0)
@@ -34954,6 +35061,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
34954
35061
  }
34955
35062
  function addPostMessageEventBindings() {
34956
35063
  window.addEventListener("message", onPostMessageReceived);
35064
+ }
35065
+ function removePostMessageEventBindings() {
35066
+ window.removeEventListener("message", onPostMessageReceived);
35067
+ }
35068
+ function emitPostMessageReady() {
34957
35069
  if (window.parent) {
34958
35070
  window.parent.postMessage(
34959
35071
  JSON.stringify({ command: "n8nReady", version: rootStore.versionCli }),
@@ -34961,9 +35073,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
34961
35073
  );
34962
35074
  }
34963
35075
  }
34964
- function removePostMessageEventBindings() {
34965
- window.removeEventListener("message", onPostMessageReceived);
34966
- }
34967
35076
  async function onPostMessageReceived(messageEvent) {
34968
35077
  var _a, _b;
34969
35078
  if (!messageEvent || typeof messageEvent.data !== "string" || !((_b = (_a = messageEvent.data) == null ? void 0 : _a.includes) == null ? void 0 : _b.call(_a, '"command"'))) {
@@ -35081,7 +35190,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
35081
35190
  }
35082
35191
  function onClickPane(position2) {
35083
35192
  lastClickPosition.value = [position2.x, position2.y];
35084
- uiStore.isCreateNodeActive = false;
35193
+ nodeCreatorStore.isCreateNodeActive = false;
35085
35194
  setNodeSelected();
35086
35195
  }
35087
35196
  function registerCustomActions() {
@@ -35125,6 +35234,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
35125
35234
  if (!isDemoRoute.value) {
35126
35235
  pushConnectionStore.pushConnect();
35127
35236
  }
35237
+ addPostMessageEventBindings();
35128
35238
  });
35129
35239
  onMounted(() => {
35130
35240
  canvasStore.startLoading();
@@ -35138,12 +35248,12 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
35138
35248
  canvasStore.stopLoading();
35139
35249
  void externalHooks.run("nodeView.mount").catch(() => {
35140
35250
  });
35251
+ emitPostMessageReady();
35141
35252
  });
35142
35253
  void usersStore.showPersonalizationSurvey();
35143
35254
  checkIfRouteIsAllowed();
35144
35255
  });
35145
35256
  addSourceControlEventBindings();
35146
- addPostMessageEventBindings();
35147
35257
  addWorkflowSavedEventBindings();
35148
35258
  addBeforeUnloadEventBindings();
35149
35259
  addImportEventBindings();
@@ -35246,7 +35356,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
35246
35356
  default: withCtx(() => [
35247
35357
  !isCanvasReadOnly.value ? (openBlock(), createBlock(unref(LazyNodeCreation2), {
35248
35358
  key: 0,
35249
- "create-node-active": unref(uiStore).isCreateNodeActive,
35359
+ "create-node-active": unref(nodeCreatorStore).isCreateNodeActive,
35250
35360
  "node-view-scale": viewportTransform.value.zoom,
35251
35361
  onToggleNodeCreator,
35252
35362
  onAddNodes: onAddNodesAndConnections