n8n-editor-ui 1.102.0 → 1.103.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 (115) hide show
  1. package/dist/assets/{ActionDropdown-D-JmCYsp.js → ActionDropdown-oe2q-18e.js} +1 -1
  2. package/dist/assets/{AnimatedSpinner-BiuDg2x2.js → AnimatedSpinner-DNQK2Lvb.js} +1 -1
  3. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-Bp194Fz4.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CTPMm7Da.js} +1 -1
  4. package/dist/assets/{AuthView-DF-20OPE.js → AuthView-BLYDBurX.js} +2 -2
  5. package/dist/assets/{ChangePasswordView-DSn8-M1-.js → ChangePasswordView-D_oe3bys.js} +3 -3
  6. package/dist/assets/CollectionParameter-DMWMZwmI.js +4 -0
  7. package/dist/assets/{CredentialsView-IQx76pD4.js → CredentialsView-yjXzQeha.js} +8 -8
  8. package/dist/assets/{DemoFooter-49OiW0k2.js → DemoFooter-CLoho_f5.js} +8 -8
  9. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-FNKd4r6R.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-Dtt1q_gN.js} +1 -1
  10. package/dist/assets/{EntityNotFound-DScKsOtg.js → EntityNotFound-DKLj80gn.js} +1 -1
  11. package/dist/assets/{EntityUnAuthorised-DweZmhgI.js → EntityUnAuthorised-BUd46dmn.js} +1 -1
  12. package/dist/assets/{ErrorView-CNDVS4gm.js → ErrorView-DOjK08aR.js} +1 -1
  13. package/dist/assets/{EvaluationsRootView-81SdPChp.js → EvaluationsRootView-Cms0XlYE.js} +1 -1
  14. package/dist/assets/{EvaluationsView-BAyQWPF9.js → EvaluationsView-X9pjkssi.js} +3 -3
  15. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-Qw7S05EC.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-CQDOSq4d.js} +3 -6
  16. package/dist/assets/{ExecutionsView--yDyvnL8.js → ExecutionsView-NLnln1YQ.js} +9 -9
  17. package/dist/assets/{FileSaver.min-CeGSkamF.js → FileSaver.min-BoHgd5iv.js} +1 -1
  18. package/dist/assets/{FixedCollectionParameter-tgbkzIuD.js → FixedCollectionParameter-BfKt_vOb.js} +1 -1
  19. package/dist/assets/{ForgotMyPasswordView-CVwKac4K.js → ForgotMyPasswordView-OP-Zoaqi.js} +3 -3
  20. package/dist/assets/{InfoAccordion-75IQV-_q.js → InfoAccordion-KgxR9XUm.js} +1 -1
  21. package/dist/assets/{InsightsChartAverageRuntime-C4C4zghF.js → InsightsChartAverageRuntime-COSI3_o5.js} +4 -4
  22. package/dist/assets/{InsightsChartFailed-DyhWE17m.js → InsightsChartFailed-zPbPiVrK.js} +4 -4
  23. package/dist/assets/{InsightsChartFailureRate-B09GcGvY.js → InsightsChartFailureRate-BijFuiun.js} +4 -4
  24. package/dist/assets/{InsightsChartTimeSaved-DGzFyou3.js → InsightsChartTimeSaved-QPkPrxuo.js} +4 -4
  25. package/dist/assets/{InsightsChartTotal-fIUzF41H.js → InsightsChartTotal-CAIfpPOZ.js} +4 -4
  26. package/dist/assets/{InsightsDashboard-Qhv7fScv.js → InsightsDashboard-D8_DXUIT.js} +10 -10
  27. package/dist/assets/{InsightsPaywall-C3-la0kD.js → InsightsPaywall-BlFkYC7C.js} +1 -1
  28. package/dist/assets/{InsightsSummary-CJgV5s0y.js → InsightsSummary-DT-p4HNY.js} +1 -1
  29. package/dist/assets/{InsightsTableWorkflows-P5OHXu1Y.js → InsightsTableWorkflows-CN4YWTtH.js} +6 -7
  30. package/dist/assets/{InsightsTableWorkflows-DJhX6bQW.css → InsightsTableWorkflows-RGpSnp7n.css} +3 -3
  31. package/dist/assets/{Logo-8MWdHUz0.js → Logo-BhBstNGh.js} +1 -1
  32. package/dist/assets/{LogsPanel-BabpRONg.js → LogsPanel-Ceg5ubnO.js} +14 -8
  33. package/dist/assets/{MainHeader-0ppftO6b.js → MainHeader-4a5SCN9a.js} +12 -19
  34. package/dist/assets/{MainSidebar-BnXOkYK4.js → MainSidebar-PaqIlcl_.js} +4 -10
  35. package/dist/assets/{N8nDataTableServer-Cx18Zd1O.js → N8nDataTableServer-OWjVTbuy.js} +21 -11
  36. package/dist/assets/{NodeCreation-32nlvQSy.css → NodeCreation-CxN6JIS_.css} +9 -1
  37. package/dist/assets/{NodeCreation-DKbc91uY.js → NodeCreation-vn1s6ViE.js} +43 -21
  38. package/dist/assets/{NodeCreator-xRYJHbTG.js → NodeCreator-8yXN9-3-.js} +5 -11
  39. package/dist/assets/{NodeDetailsView-CPVE5S8P.js → NodeDetailsView-Bfqrvndc.js} +15 -15
  40. package/dist/assets/{NodeDetailsViewV2-5pxsZwAo.js → NodeDetailsViewV2-DvXkio7Z.js} +15 -15
  41. package/dist/assets/{NodeView-DYjZmKNE.js → NodeView-4YXAVrWh.js} +459 -455
  42. package/dist/assets/{NodeView-Cgf2HuDk.css → NodeView-hst6fesm.css} +69 -80
  43. package/dist/assets/{ProjectHeader-e8JosKaj.js → ProjectHeader-BXo_XGDO.js} +2 -2
  44. package/dist/assets/{ProjectSettings-DNKcVLkd.js → ProjectSettings-Z5Kp6E53.js} +3 -3
  45. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-EuKDPqQH.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DK8Mp74c.js} +1 -1
  46. package/dist/assets/{ResourcesListLayout-C4y0iPmg.js → ResourcesListLayout-DoL3gqUA.js} +3 -3
  47. package/dist/assets/{RunData-D3xzjO33.js → RunData-B9jGswDT.js} +83 -70
  48. package/dist/assets/{RunData-DuKNwYqe.css → RunData-D0dKnadD.css} +61 -62
  49. package/dist/assets/{RunDataJson-D5YFtOcJ.js → RunDataJson-CI2PEX1Z.js} +9 -9
  50. package/dist/assets/{RunDataJsonActions-BWvs4coo.js → RunDataJsonActions-CdUL1gL3.js} +1 -1
  51. package/dist/assets/RunDataParsedAiContent-B6Ss5mvl.js +298 -0
  52. package/dist/assets/{RunDataSearch-oo3_BoLt.js → RunDataSearch-DKaXYju2.js} +1 -1
  53. package/dist/assets/{RunDataTable-6rCOQNCX.js → RunDataTable-BQ3rdzoF.js} +50 -41
  54. package/dist/assets/{RunDataTable-CTBtmQIs.css → RunDataTable-n918b-Qv.css} +55 -55
  55. package/dist/assets/{SamlOnboarding-BG-gGcbY.js → SamlOnboarding-C_au26AK.js} +3 -3
  56. package/dist/assets/{SettingsApiView-Bmlbp7pD.js → SettingsApiView-aoaIK5C5.js} +1 -1
  57. package/dist/assets/{SettingsCommunityNodesView-4DWd4UiC.js → SettingsCommunityNodesView-Bii1jYzp.js} +3 -3
  58. package/dist/assets/{SettingsExternalSecrets-hpUcipWw.js → SettingsExternalSecrets-DzoOLUAJ.js} +1 -1
  59. package/dist/assets/{SettingsLdapView-7p7L95v9.js → SettingsLdapView-CkLOtGjj.js} +1 -1
  60. package/dist/assets/{SettingsLogStreamingView-4CpWJqj_.js → SettingsLogStreamingView-CKBVxNwk.js} +1 -1
  61. package/dist/assets/{SettingsPersonalView-9iP06ihA.js → SettingsPersonalView-gOoSkTpX.js} +1 -1
  62. package/dist/assets/{SettingsSourceControl-BGjWhqqJ.js → SettingsSourceControl-C6XS-Myv.js} +1 -1
  63. package/dist/assets/{SettingsSso-ChOyD3kc.js → SettingsSso-CobNvKat.js} +1 -1
  64. package/dist/assets/{SettingsUsageAndPlan-jP8nn4Rh.js → SettingsUsageAndPlan-3r39YZW1.js} +1 -1
  65. package/dist/assets/{SettingsUsersView-BuZbf1jq.css → SettingsUsersView-B81cHl3f.css} +9 -6
  66. package/dist/assets/{SettingsUsersView-BhfbqjxW.js → SettingsUsersView-DrrH1dLq.js} +12 -10
  67. package/dist/assets/{SettingsView-DTFEdRdj.js → SettingsView-D_wEAbZb.js} +1 -1
  68. package/dist/assets/{SetupView-CXuAO6tx.js → SetupView-CU1QrNSu.js} +3 -3
  69. package/dist/assets/{SetupWorkflowCredentialsButton-Bj4rSqAV.js → SetupWorkflowCredentialsButton-Do2E5w2d.js} +1 -1
  70. package/dist/assets/{SetupWorkflowFromTemplateView-DG8Ml3A0.js → SetupWorkflowFromTemplateView-cuwHIvkB.js} +3 -3
  71. package/dist/assets/{SigninView-KmmptKWN.js → SigninView-DA11h2Kr.js} +3 -3
  72. package/dist/assets/{SignoutView-8rAPEX_X.js → SignoutView-VJrMh5w7.js} +1 -1
  73. package/dist/assets/{SignupView-ZYUP6f-Y.js → SignupView-BNTIWYSE.js} +3 -3
  74. package/dist/assets/{TableBase-7XxrB0dw.js → TableBase-B5rreQVh.js} +1 -1
  75. package/dist/assets/{Tags-C8Jnw74N.js → Tags-SJm7l2s6.js} +1 -1
  76. package/dist/assets/{TemplateDetails-Bk1ixuRQ.js → TemplateDetails-B6-Nkya8.js} +2 -2
  77. package/dist/assets/{TemplateList-9SAC8OGn.js → TemplateList-C4Dqsvfp.js} +1 -1
  78. package/dist/assets/{TemplatesCollectionView-CLZDJ4HM.js → TemplatesCollectionView-BMGZ939P.js} +6 -6
  79. package/dist/assets/{TemplatesSearchView-DRzdGp3s.js → TemplatesSearchView-CIo8eprI.js} +3 -3
  80. package/dist/assets/{TemplatesView-V6ud-nM5.js → TemplatesView-MshXkM2_.js} +1 -1
  81. package/dist/assets/{TemplatesWorkflowView-CLb4CuR2.js → TemplatesWorkflowView-LWBGoJBO.js} +6 -6
  82. package/dist/assets/{TriggerPanel-BOC7PYsi.js → TriggerPanel-C-0JCegt.js} +4 -112
  83. package/dist/assets/{VariablesView-BDzhSaxw.js → VariablesView-omKbxNoc.js} +5 -5
  84. package/dist/assets/{WorkerView-C2A7cYkr.js → WorkerView-DPnCbr1B.js} +5 -5
  85. package/dist/assets/{WorkflowActivator-BmIzNsA8.js → WorkflowActivator-Hn_uDFPH.js} +2 -2
  86. package/dist/assets/{WorkflowExecutionsInfoAccordion-Cn4GRGO_.js → WorkflowExecutionsInfoAccordion-DWSeluMM.js} +2 -2
  87. package/dist/assets/{WorkflowExecutionsLandingPage-s-dIgG6D.js → WorkflowExecutionsLandingPage-BMcxBJEl.js} +3 -3
  88. package/dist/assets/{WorkflowExecutionsPreview-BE7NfRAa.js → WorkflowExecutionsPreview-Csq6C8Vh.js} +9 -7
  89. package/dist/assets/{WorkflowExecutionsView-DFmBdF-B.js → WorkflowExecutionsView-6L7iZJq1.js} +8 -8
  90. package/dist/assets/{WorkflowHistory-3wO0nQYD.js → WorkflowHistory-B0t-0Z77.js} +3 -3
  91. package/dist/assets/{WorkflowOnboardingView-mBVE6x-i.js → WorkflowOnboardingView-DuI2I9MQ.js} +1 -1
  92. package/dist/assets/{WorkflowPreview-DlNMFCKn.js → WorkflowPreview-D4kwrMFk.js} +3 -1
  93. package/dist/assets/{WorkflowsView-DsAOuPT0.js → WorkflowsView-WU-IKn4K.js} +52 -10
  94. package/dist/assets/{chartjs.utils-BywXqBmg.js → chartjs.utils-Bc5bGj66.js} +2 -2
  95. package/dist/assets/{en-CcKAtA8V.js → en-FjyeYndD.js} +7 -0
  96. package/dist/assets/{global-link-actions-BzAw9ZbO.js → global-link-actions-BZz1vmQq.js} +1 -1
  97. package/dist/assets/{import-curl-1LWAxRTV.js → import-curl-jc1UtwMR.js} +1 -1
  98. package/dist/assets/{index-C66_v3sX.css → index-C6LoGNAx.css} +84 -217
  99. package/dist/assets/{index-V0GOmfo8.js → index-CAU8Zeff.js} +3612 -3063
  100. package/dist/assets/{index-B6A1nL2x.js → index-Cohi4onR.js} +1 -1
  101. package/dist/assets/{pickBy-CtRItcCT.js → pickBy-Bmcb35Dl.js} +1 -1
  102. package/dist/assets/{templateActions-DpIzx0ws.js → templateActions-Bsj8nngl.js} +1 -1
  103. package/dist/assets/{useBeforeUnload-B0EP7Q2i.js → useBeforeUnload-aOI6YxZR.js} +1 -1
  104. package/dist/assets/{useExecutionDebugging-AwlOA2KI.js → useExecutionDebugging-dVW9cpg5.js} +1 -1
  105. package/dist/assets/{useExecutionHelpers-DvBwGIzz.js → useExecutionHelpers-BIfEl-h7.js} +1 -1
  106. package/dist/assets/{useImportCurlCommand-DIFC7Epr.js → useImportCurlCommand-B4EFH3RG.js} +2 -2
  107. package/dist/assets/{useKeybindings-CduQ2pi5.js → useKeybindings-0d48UFTt.js} +72 -2
  108. package/dist/assets/{useProjectPages-DmNmAOdq.js → useProjectPages-4b50pSat.js} +1 -1
  109. package/dist/assets/{usePushConnection-Dyd5__87.js → usePushConnection-CKW8UPyl.js} +2 -2
  110. package/dist/assets/{useWorkflowActivate-z9iwP6OY.js → useWorkflowActivate-C39vU0rW.js} +1 -1
  111. package/dist/index.html +2 -2
  112. package/eslint.config.mjs +1 -1
  113. package/package.json +1 -1
  114. package/dist/assets/CollectionParameter-Bz5DzZqs.js +0 -4
  115. package/dist/assets/RunDataParsedAiContent-BYISiW-I.js +0 -148
@@ -1,18 +1,18 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-DKbc91uY.js","assets/index-V0GOmfo8.js","assets/index-C66_v3sX.css","assets/NodeCreation-32nlvQSy.css","assets/NodeDetailsView-CPVE5S8P.js","assets/TriggerPanel-BOC7PYsi.js","assets/RunData-D3xzjO33.js","assets/FileSaver.min-CeGSkamF.js","assets/useKeybindings-CduQ2pi5.js","assets/useKeybindings-BUK7Ngh6.css","assets/useExecutionHelpers-DvBwGIzz.js","assets/RunData-DuKNwYqe.css","assets/RunDataParsedAiContent-BYISiW-I.js","assets/RunDataParsedAiContent-wfIiKsq7.css","assets/InfoAccordion-75IQV-_q.js","assets/InfoAccordion-dxudNqVC.css","assets/TriggerPanel-DRpKKKun.css","assets/useWorkflowActivate-z9iwP6OY.js","assets/ActionDropdown-D-JmCYsp.js","assets/ActionDropdown-BmC0wfMx.css","assets/import-curl-1LWAxRTV.js","assets/global-link-actions-BzAw9ZbO.js","assets/useExecutionDebugging-AwlOA2KI.js","assets/useBeforeUnload-B0EP7Q2i.js","assets/NodeDetailsView-CaTI-1QQ.css","assets/NodeDetailsViewV2-5pxsZwAo.js","assets/NodeDetailsViewV2-BxNx4ZUM.css","assets/SetupWorkflowCredentialsButton-Bj4rSqAV.js"])))=>i.map(i=>d[i]);
2
- import { _ as _export_sfc$1, h as createElementBlock, g as openBlock, j as createBaseVNode, d as defineComponent, cn as PanelPosition, co as useVueFlow, bT as toRef, e as createBlock, w as withCtx, J as renderSlot, f as createCommentVNode, F as Fragment, i as createVNode, bY as resolveDynamicComponent, l as unref, cp as _sfc_main$R, x as computed, a0 as _sfc_main$S, c as useI18n, c7 as KeyboardShortcutTooltip, n as normalizeClass, q as N8nButton, bo as NodeConnectionTypes, cq as getBezierPath, cr as getSmoothStepPath, cs as Position, bU as inject, ct as CanvasKey, ab as useCssModule, cu as parseCanvasConnectionHandleString, r as ref, o as onMounted, y as renderList, cv as _sfc_main$d$1, P as normalizeStyle, T as useUIStore, bG as useNodeTypesStore, a4 as useWorkflowsStore, ae as useSourceControlStore, am as getResourcePermissions, cw as isNodeWithWorkflowSelector, cx as getSubworkflowId, cy as isPresent, aa as watch, cz as getMousePosition, aS as STICKY_NODE_TYPE, bz as usePinnedData, cA as NOT_DUPLICATABLE_NODE_TYPES, cB as isExecutable, cC as Teleport, c9 as useStyles, bJ as getDefaultExportFromCjs, cD as DEFAULT_NODE_SIZE, cE as CanvasNodeRenderType, cF as GRID_SIZE, cb as useThrottleFn, cG as getRectOfNodes, b$ as onUnmounted, cH as onKeyDown, cI as onKeyUp, cJ as useSlots, c1 as useAttrs, cK as getBoundsofRects, cL as watchEffect, t as toDisplayString, cM as getConnectedEdges, bW as normalizeProps, D as mergeProps, bE as provide, aK as h, bh as createSlots, cN as isValidNodeConnectionType, cO as _sfc_main$3$1, cP as CanvasNodeKey, cQ as CanvasConnectionMode, cR as mergeModels, cS as useModel, I as onBeforeUnmount, cT as _sfc_main$T, N as N8nIcon, $ as N8nTooltip, bB as useNodeHelpers, cU as TitledList, k as createTextVNode, cV as CanvasNodeDirtiness, ar as useTemplateRef, cW as useElementSize, bP as _sfc_main$U, as as InlineRename, cX as toValue, cY as isCommunityPackageName, cZ as NPM_PACKAGE_DOCS_BASE_URL, c_ as BUILTIN_NODES_DOCS_URL, aM as useNDVStore, c$ as COMMUNITY_NODES_INSTALLATION_DOCS_URL, d0 as N8nTabs, bf as useExternalHooks, ay as useTelemetry, c2 as useClipboard, ak as useWorkflowHelpers, a as useToast, d1 as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, d2 as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, d3 as MCP_TRIGGER_NODE_TYPE, d4 as FORM_TRIGGER_NODE_TYPE, bx as CHAT_TRIGGER_NODE_TYPE, O as resolveComponent, H as N8nRadioButtons, bg as onClickOutside, d5 as toRef$1, d6 as tryOnScopeDispose, d7 as toValue$1, d8 as isIOS, d9 as noop$2, da as isObject, db as isClient, S as useDebounce, dc as getNodeInputs, dd as _sfc_main$V, v as useSettingsStore, de as useCredentialsStore, u as useUsersStore, af as useProjectsStore, df as OPEN_AI_API_CREDENTIAL_TYPE, dg as N8nCallout, p as N8nText, bq as get$3, dh as set$3, di as unset, dj as SWITCH_NODE_TYPE, dk as isEqual, dl as captureException, dm as isINodePropertyCollectionList, dn as isINodePropertiesList, dp as isINodePropertyOptionsList, dq as displayParameter, bF as useCanvasOperations, dr as getNodeParameters, ds as deepCopy, dt as getUpdatedToolDescription, du as isDefaultNodeName, dv as makeNodeName, dw as useHistoryStore, aO as usePostHog, dx as useResizeObserver, aq as ProjectTypes, dy as NDV_UI_OVERHAUL_EXPERIMENT, dz as BASE_NODE_SURVEY_URL, cm as ndvEventBus, bO as withModifiers, a1 as N8nLink, dA as CUSTOM_NODES_DOCS_URL, aU as withDirectives, dB as N8nNotice, aV as vShow, dC as _sfc_main$W, dD as NodeCredentials, dE as RenameNodeCommand, Q as createEventBus, a2 as defineStore, cd as shallowRef, dF as watchOnce, dG as calculateNodeSize, dH as NodeId, dI as useGetPointerPosition, dJ as clamp, dK as N8nSticky, dL as useNodeCreatorStore, az as nodeViewEventBus, dM as NODE_CREATOR_OPEN_SOURCES, dN as useBuilderStore, a_ as withKeys, dO as N8nInput, dP as CanvasNodeHandleKey, dQ as Transition$1, dR as _sfc_main$f$1, b as useRouter, bA as useLogsStore, bC as useRunWorkflow, dS as insertSpacersBetweenEndpoints, dT as createCanvasConnectionHandleString, dU as CONFIGURATION_NODE_OFFSET, dV as useDeviceSupport, dW as isOutsideSelected, K as nextTick, dX as _sfc_main$1$4, dY as MarkerType, dZ as Suspense, bX as guardReactiveProps, d_ as updateViewportToContainNodes, d$ as useNodeDirtiness, e0 as CUSTOM_API_CALL_KEY, e1 as mapLegacyEndpointsToCanvasConnectionPort, e2 as getNodeOutputs, e3 as getTriggerNodeServiceName, e4 as sanitizeHtml, e5 as WAIT_NODE_TYPE, e6 as SEND_AND_WAIT_OPERATION, e7 as FORM_NODE_TYPE, e8 as WAIT_INDEFINITELY, e9 as checkOverlap, ea as SIMULATE_NODE_TYPE, eb as SIMULATE_TRIGGER_NODE_TYPE, ec as mapLegacyConnectionsToCanvasConnections, ed as getNodeIconSource, ee as refThrottled, ef as useFocusPanelStore, eg as isValueExpression, eh as __unplugin_components_2$2, ei as __unplugin_components_3$1, bn as isChatNode, ej as truncateBeforeLast, ek as reactive, a5 as useRoute, ai as useDocumentTitle, aj as useWorkflowSaving, el as useEnvironmentsStore, em as useExternalSecretsStore, ac as useRootStore, aN as useExecutionsStore, ad as useCanvasStore, ah as useNpsSurveyStore, R as useTagsStore, a3 as usePushConnectionStore, bd as useTemplatesStore, ag as useFoldersStore, en as useAgentRequestStore, eo as useWorkflowExtraction, ep as FOCUS_PANEL_EXPERIMENT, a6 as PLACEHOLDER_EMPTY_WORKFLOW_ID, eq as NEW_WORKFLOW_ID, V as VIEWS, bH as START_NODE_TYPE, er as getNodeViewTab, G as MAIN_HEADER_TABS, es as VALID_WORKFLOW_IMPORT_URL_REGEX, aA as useMessage, aB as MODAL_CONFIRM, et as jsonParse, bw as MANUAL_CHAT_TRIGGER_NODE_TYPE, eu as EVALUATION_TRIGGER_NODE_TYPE, ev as getBounds, ew as onBeforeRouteLeave, aT as onBeforeMount, aC as WORKFLOW_SETTINGS_MODAL_KEY, ex as onActivated, ey as onDeactivated, ez as defineAsyncComponent, aI as __vitePreload, ap as EnterpriseEditionFeature, eA as EVALUATION_NODE_TYPE, eB as getEasyAiWorkflowJson, eC as getRagStarterWorkflowJson, eD as tryToParseNumber, b3 as sourceControlEventBus, eE as getNodesWithNormalizedPosition, eF as needsAgentInput, eG as FROM_AI_PARAMETERS_MODAL_KEY, eH as historyBus, eI as DRAG_EVENT_DATA_KEY } from "./index-V0GOmfo8.js";
3
- import { N as N8nActionDropdown } from "./ActionDropdown-D-JmCYsp.js";
4
- import { N as N8nBlockUi, u as useKeybindings, c as canvasEventBus } from "./useKeybindings-CduQ2pi5.js";
5
- import { i as importCurlEventBus } from "./import-curl-1LWAxRTV.js";
6
- import { g as globalLinkActionsEventBus } from "./global-link-actions-BzAw9ZbO.js";
7
- import { u as useExecutionDebugging } from "./useExecutionDebugging-AwlOA2KI.js";
8
- import { u as useBeforeUnload } from "./useBeforeUnload-B0EP7Q2i.js";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-vn1s6ViE.js","assets/index-CAU8Zeff.js","assets/index-C6LoGNAx.css","assets/NodeCreation-CxN6JIS_.css","assets/NodeDetailsView-Bfqrvndc.js","assets/TriggerPanel-C-0JCegt.js","assets/RunData-B9jGswDT.js","assets/FileSaver.min-BoHgd5iv.js","assets/useKeybindings-0d48UFTt.js","assets/useKeybindings-BUK7Ngh6.css","assets/useExecutionHelpers-BIfEl-h7.js","assets/RunData-D0dKnadD.css","assets/RunDataParsedAiContent-B6Ss5mvl.js","assets/RunDataParsedAiContent-wfIiKsq7.css","assets/InfoAccordion-KgxR9XUm.js","assets/InfoAccordion-dxudNqVC.css","assets/TriggerPanel-DRpKKKun.css","assets/useWorkflowActivate-C39vU0rW.js","assets/ActionDropdown-oe2q-18e.js","assets/ActionDropdown-BmC0wfMx.css","assets/import-curl-jc1UtwMR.js","assets/global-link-actions-BZz1vmQq.js","assets/useExecutionDebugging-dVW9cpg5.js","assets/useBeforeUnload-aOI6YxZR.js","assets/NodeDetailsView-CaTI-1QQ.css","assets/NodeDetailsViewV2-DvXkio7Z.js","assets/NodeDetailsViewV2-BxNx4ZUM.css","assets/SetupWorkflowCredentialsButton-Do2E5w2d.js"])))=>i.map(i=>d[i]);
2
+ import { _ as _export_sfc$1, h as createElementBlock, g as openBlock, j as createBaseVNode, d as defineComponent, cn as PanelPosition, co as useVueFlow, bT as toRef, e as createBlock, w as withCtx, J as renderSlot, f as createCommentVNode, F as Fragment, i as createVNode, bY as resolveDynamicComponent, l as unref, cp as _sfc_main$R, x as computed, a0 as _sfc_main$S, c as useI18n, c7 as KeyboardShortcutTooltip, n as normalizeClass, q as N8nButton, $ as N8nTooltip, bo as NodeConnectionTypes, cq as getBezierPath, cr as getSmoothStepPath, cs as Position, bU as inject, ct as CanvasKey, ab as useCssModule, cu as parseCanvasConnectionHandleString, r as ref, o as onMounted, y as renderList, cv as _sfc_main$d$1, P as normalizeStyle, T as useUIStore, bG as useNodeTypesStore, a4 as useWorkflowsStore, ae as useSourceControlStore, am as getResourcePermissions, cw as isNodeWithWorkflowSelector, cx as getSubworkflowId, cy as isPresent, aa as watch, cz as getMousePosition, aQ as STICKY_NODE_TYPE, bz as usePinnedData, cA as NOT_DUPLICATABLE_NODE_TYPES, cB as isExecutable, cC as Teleport, c9 as useStyles, bJ as getDefaultExportFromCjs, cD as DEFAULT_NODE_SIZE, cE as CanvasNodeRenderType, cF as GRID_SIZE, cb as useThrottleFn, cG as getRectOfNodes, b$ as onUnmounted, cH as onKeyDown, cI as onKeyUp, cJ as useSlots, c1 as useAttrs, cK as getBoundsofRects, cL as watchEffect, t as toDisplayString, cM as getConnectedEdges, bW as normalizeProps, D as mergeProps, bE as provide, aK as h, bf as createSlots, cN as isValidNodeConnectionType, cO as _sfc_main$3$1, cP as CanvasNodeKey, cQ as CanvasConnectionMode, cR as mergeModels, cS as useModel, I as onBeforeUnmount, cT as _sfc_main$T, N as N8nIcon, bB as useNodeHelpers, cU as TitledList, k as createTextVNode, cV as CanvasNodeDirtiness, ar as useTemplateRef, cW as useElementSize, bP as _sfc_main$U, as as InlineRename, cX as toValue, cY as isCommunityPackageName, cZ as NPM_PACKAGE_DOCS_BASE_URL, c_ as BUILTIN_NODES_DOCS_URL, aM as useNDVStore, c$ as COMMUNITY_NODES_INSTALLATION_DOCS_URL, d0 as N8nTabs, bd as useExternalHooks, ay as useTelemetry, c2 as useClipboard, ak as useWorkflowHelpers, a as useToast, d1 as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, d2 as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, d3 as MCP_TRIGGER_NODE_TYPE, d4 as FORM_TRIGGER_NODE_TYPE, bx as CHAT_TRIGGER_NODE_TYPE, O as resolveComponent, H as N8nRadioButtons, be as onClickOutside, d5 as toRef$1, d6 as tryOnScopeDispose, d7 as toValue$1, d8 as isIOS, d9 as noop$2, da as isObject, db as isClient, S as useDebounce, dc as getNodeInputs, dd as _sfc_main$V, v as useSettingsStore, de as useCredentialsStore, u as useUsersStore, af as useProjectsStore, df as OPEN_AI_API_CREDENTIAL_TYPE, dg as N8nCallout, p as N8nText, dh as useHistoryStore, di as usePostHog, dj as useNodeSettingsParameters, dk as useResizeObserver, aq as ProjectTypes, dl as NDV_UI_OVERHAUL_EXPERIMENT, dm as BASE_NODE_SURVEY_URL, cm as ndvEventBus, bO as withModifiers, a1 as N8nLink, dn as CUSTOM_NODES_DOCS_URL, aS as withDirectives, dp as N8nNotice, aT as vShow, dq as _sfc_main$W, dr as NodeCredentials, bq as get$3, ds as getNodeParameters, dt as deepCopy, du as nameIsParameter, dv as RenameNodeCommand, bF as useCanvasOperations, Q as createEventBus, dw as useEnvironmentsStore, dx as ExpressionLocalResolveContextSymbol, dy as watchOnce, dz as calculateNodeSize, dA as NodeId, dB as useGetPointerPosition, dC as clamp, dD as N8nSticky, dE as useNodeCreatorStore, bb as useTemplatesStore, V as VIEWS, dF as isExtraTemplateLinksExperimentEnabled, az as nodeViewEventBus, bj as trackTemplatesClick, bk as TemplateClickSource, dG as NODE_CREATOR_OPEN_SOURCES, dH as useBuilderStore, aY as withKeys, dI as N8nInput, dJ as CanvasNodeHandleKey, dK as Transition$1, dL as _sfc_main$f$1, b as useRouter, bA as useLogsStore, bC as useRunWorkflow, dM as insertSpacersBetweenEndpoints, dN as createCanvasConnectionHandleString, dO as CONFIGURATION_NODE_OFFSET, dP as isEqual, dQ as useDeviceSupport, dR as isOutsideSelected, K as nextTick, dS as _sfc_main$1$4, dT as MarkerType, dU as Suspense, bX as guardReactiveProps, dV as updateViewportToContainNodes, dW as useNodeDirtiness, dX as CUSTOM_API_CALL_KEY, dY as mapLegacyEndpointsToCanvasConnectionPort, dZ as getNodeOutputs, d_ as getTriggerNodeServiceName, d$ as sanitizeHtml, e0 as WAIT_NODE_TYPE, e1 as SEND_AND_WAIT_OPERATION, e2 as FORM_NODE_TYPE, e3 as WAIT_INDEFINITELY, e4 as checkOverlap, e5 as SIMULATE_NODE_TYPE, e6 as SIMULATE_TRIGGER_NODE_TYPE, e7 as mapLegacyConnectionsToCanvasConnections, e8 as getNodeIconSource, e9 as refThrottled, ea as useFocusPanelStore, eb as HTML_NODE_TYPE, ec as isValueExpression, ed as isResourceLocatorValue, ee as AI_TRANSFORM_NODE_TYPE, ef as useResolvedExpression, eg as __unplugin_components_2$2, eh as __unplugin_components_3$1, ei as __unplugin_components_4, ej as __unplugin_components_5, ek as __unplugin_components_6, el as __unplugin_components_7, em as __unplugin_components_8, en as __unplugin_components_9, eo as getParameterTypeOption, ep as htmlEditorEventBus, eq as parseFromExpression, er as isValidParameterOption, es as formatAsExpression, et as hasFocusOnInput, eu as isFocusableEl, bn as isChatNode, ev as truncateBeforeLast, ew as reactive, a5 as useRoute, ai as useDocumentTitle, aj as useWorkflowSaving, ex as useExternalSecretsStore, ac as useRootStore, aN as useExecutionsStore, ad as useCanvasStore, ah as useNpsSurveyStore, R as useTagsStore, a3 as usePushConnectionStore, ag as useFoldersStore, ey as useAgentRequestStore, ez as useWorkflowExtraction, eA as FOCUS_PANEL_EXPERIMENT, a6 as PLACEHOLDER_EMPTY_WORKFLOW_ID, eB as NEW_WORKFLOW_ID, bH as START_NODE_TYPE, eC as getNodeViewTab, G as MAIN_HEADER_TABS, eD as VALID_WORKFLOW_IMPORT_URL_REGEX, aA as useMessage, aB as MODAL_CONFIRM, eE as jsonParse, bw as MANUAL_CHAT_TRIGGER_NODE_TYPE, eF as EVALUATION_TRIGGER_NODE_TYPE, eG as getBounds, eH as onBeforeRouteLeave, aR as onBeforeMount, aC as WORKFLOW_SETTINGS_MODAL_KEY, eI as onActivated, eJ as onDeactivated, eK as defineAsyncComponent, aI as __vitePreload, ap as EnterpriseEditionFeature, eL as EVALUATION_NODE_TYPE, eM as getEasyAiWorkflowJson, eN as getRagStarterWorkflowJson, eO as tryToParseNumber, b1 as sourceControlEventBus, eP as getNodesWithNormalizedPosition, eQ as needsAgentInput, eR as FROM_AI_PARAMETERS_MODAL_KEY, eS as historyBus, eT as DRAG_EVENT_DATA_KEY } from "./index-CAU8Zeff.js";
3
+ import { u as useExperimentalNdvStore, N as N8nBlockUi, a as useKeybindings, c as canvasEventBus } from "./useKeybindings-0d48UFTt.js";
4
+ import { N as N8nActionDropdown } from "./ActionDropdown-oe2q-18e.js";
5
+ import { i as importCurlEventBus } from "./import-curl-jc1UtwMR.js";
6
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-BZz1vmQq.js";
7
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-dVW9cpg5.js";
8
+ import { u as useBeforeUnload } from "./useBeforeUnload-aOI6YxZR.js";
9
9
  const _sfc_main$Q = {};
10
- const _hoisted_1$h = {
10
+ const _hoisted_1$g = {
11
11
  xmlns: "http://www.w3.org/2000/svg",
12
12
  viewBox: "0 0 16 16"
13
13
  };
14
14
  function _sfc_render$1(_ctx, _cache) {
15
- return openBlock(), createElementBlock("svg", _hoisted_1$h, _cache[0] || (_cache[0] = [
15
+ return openBlock(), createElementBlock("svg", _hoisted_1$g, _cache[0] || (_cache[0] = [
16
16
  createBaseVNode("path", {
17
17
  fill: "currentColor",
18
18
  d: "M1.6.13c-.18-.17-.47-.18-.62 0L.56.57.14.98c-.2.15-.18.44 0 .62l3.63 3.6c.1.1.1.27 0 .37-.2.2-.53.52-.93.94-.56.57-.12 1.62.22 2.11.05.07.12.1.2.1.05-.01.1-.04.15-.08l5.23-5.22c.1-.1.1-.26-.02-.34-.5-.34-1.55-.78-2.12-.22-.42.4-.75.73-.94.93-.1.1-.27.1-.37 0L1.6.13ZM9.5 3.9c.07-.09.2-.1.3-.04l6.07 3.44c.15.08.18.29.05.4l-1.21 1.22a.26.26 0 0 1-.26.07l-2.18-.64a.26.26 0 0 0-.32.33l.76 2.02c.04.1.01.2-.06.27L7.7 15.92a.26.26 0 0 1-.41-.05L3.83 9.8a.26.26 0 0 1 .04-.3l5.62-5.6Z"
@@ -86,7 +86,7 @@ function render$1(_ctx, _cache) {
86
86
  return openBlock(), createElementBlock("svg", _hoisted_1$1$2, _hoisted_3$1$1);
87
87
  }
88
88
  const Lock = { render: render$1 };
89
- const _hoisted_1$g = {
89
+ const _hoisted_1$f = {
90
90
  xmlns: "http://www.w3.org/2000/svg",
91
91
  viewBox: "0 0 25 32"
92
92
  };
@@ -95,7 +95,7 @@ const _hoisted_3$7 = [
95
95
  _hoisted_2$b
96
96
  ];
97
97
  function render(_ctx, _cache) {
98
- return openBlock(), createElementBlock("svg", _hoisted_1$g, _hoisted_3$7);
98
+ return openBlock(), createElementBlock("svg", _hoisted_1$f, _hoisted_3$7);
99
99
  }
100
100
  const Unlock = { render };
101
101
  const __default__$4 = {
@@ -229,6 +229,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
229
229
  const props = __props;
230
230
  const emit = __emit;
231
231
  const i18n = useI18n();
232
+ const experimentalNdvStore = useExperimentalNdvStore();
232
233
  const isResetZoomVisible = computed(() => props.zoom !== 1);
233
234
  function onResetZoom() {
234
235
  emit("reset-zoom");
@@ -248,6 +249,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
248
249
  return (_ctx, _cache) => {
249
250
  const _component_N8nIconButton = _sfc_main$S;
250
251
  const _component_N8nButton = N8nButton;
252
+ const _component_N8nTooltip = N8nTooltip;
251
253
  return openBlock(), createBlock(unref(_sfc_main$P), {
252
254
  "show-zoom": false,
253
255
  "show-fit-view": false
@@ -335,7 +337,37 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
335
337
  }, 8, ["class"])
336
338
  ]),
337
339
  _: 1
338
- }, 8, ["label"])) : createCommentVNode("", true)
340
+ }, 8, ["label"])) : createCommentVNode("", true),
341
+ unref(experimentalNdvStore).isActive(props.zoom) ? (openBlock(), createBlock(_component_N8nTooltip, {
342
+ key: 2,
343
+ placement: "top",
344
+ content: unref(i18n).baseText("nodeView.expandAllNodes")
345
+ }, {
346
+ default: withCtx(() => [
347
+ createVNode(_component_N8nIconButton, {
348
+ type: "tertiary",
349
+ size: "large",
350
+ icon: "maximize-2",
351
+ onClick: unref(experimentalNdvStore).expandAllNodes
352
+ }, null, 8, ["onClick"])
353
+ ]),
354
+ _: 1
355
+ }, 8, ["content"])) : createCommentVNode("", true),
356
+ unref(experimentalNdvStore).isActive(props.zoom) ? (openBlock(), createBlock(_component_N8nTooltip, {
357
+ key: 3,
358
+ placement: "top",
359
+ content: unref(i18n).baseText("nodeView.collapseAllNodes")
360
+ }, {
361
+ default: withCtx(() => [
362
+ createVNode(_component_N8nIconButton, {
363
+ type: "tertiary",
364
+ size: "large",
365
+ icon: "minimize-2",
366
+ onClick: unref(experimentalNdvStore).collapseAllNodes
367
+ }, null, 8, ["onClick"])
368
+ ]),
369
+ _: 1
370
+ }, 8, ["content"])) : createCommentVNode("", true)
339
371
  ]),
340
372
  _: 1
341
373
  });
@@ -7294,7 +7326,7 @@ const _sfc_main$1$2 = /* @__PURE__ */ defineComponent({
7294
7326
  };
7295
7327
  }
7296
7328
  });
7297
- const _hoisted_1$f = ["width", "height", "viewBox", "aria-labelledby"];
7329
+ const _hoisted_1$e = ["width", "height", "viewBox", "aria-labelledby"];
7298
7330
  const _hoisted_2$a = ["id"];
7299
7331
  const _hoisted_3$6 = ["d", "fill", "stroke", "stroke-width"];
7300
7332
  const __default__$3 = {
@@ -7515,14 +7547,14 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
7515
7547
  "stroke-width": _ctx.maskStrokeWidth,
7516
7548
  "fill-rule": "evenodd"
7517
7549
  }, null, 8, _hoisted_3$6)
7518
- ], 8, _hoisted_1$f))
7550
+ ], 8, _hoisted_1$e))
7519
7551
  ]),
7520
7552
  _: 1
7521
7553
  }, 8, ["position", "class"]);
7522
7554
  };
7523
7555
  }
7524
7556
  });
7525
- const _hoisted_1$e = ["id", "x", "y", "width", "height", "patternTransform"];
7557
+ const _hoisted_1$d = ["id", "x", "y", "width", "height", "patternTransform"];
7526
7558
  const _hoisted_2$9 = ["d", "stroke-width"];
7527
7559
  const _sfc_main$K = /* @__PURE__ */ defineComponent({
7528
7560
  __name: "CanvasBackgroundStripedPattern",
@@ -7550,7 +7582,7 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
7550
7582
  d: `M0 ${scaledGap.value / 2} H${scaledGap.value}`,
7551
7583
  "stroke-width": scaledGap.value / 2
7552
7584
  }, null, 8, _hoisted_2$9)
7553
- ], 8, _hoisted_1$e);
7585
+ ], 8, _hoisted_1$d);
7554
7586
  };
7555
7587
  }
7556
7588
  });
@@ -7578,7 +7610,7 @@ const DefaultBgColors = {
7578
7610
  [BackgroundVariant.Dots]: "#81818a",
7579
7611
  [BackgroundVariant.Lines]: "#eee"
7580
7612
  };
7581
- const _hoisted_1$d = ["id", "x", "y", "width", "height", "patternTransform"];
7613
+ const _hoisted_1$c = ["id", "x", "y", "width", "height", "patternTransform"];
7582
7614
  const _hoisted_2$8 = {
7583
7615
  key: 2,
7584
7616
  height: "100",
@@ -7661,7 +7693,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
7661
7693
  }, null, 8, _hoisted_3$5)
7662
7694
  ])) : createCommentVNode("", true)
7663
7695
  ])
7664
- ], 8, _hoisted_1$d)
7696
+ ], 8, _hoisted_1$c)
7665
7697
  ]),
7666
7698
  createBaseVNode("rect", {
7667
7699
  x: _ctx.x,
@@ -7705,7 +7737,7 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
7705
7737
  };
7706
7738
  }
7707
7739
  });
7708
- const _hoisted_1$c = ["id"];
7740
+ const _hoisted_1$b = ["id"];
7709
7741
  const _sfc_main$H = /* @__PURE__ */ defineComponent({
7710
7742
  __name: "CanvasArrowHeadMarker",
7711
7743
  props: {
@@ -7733,7 +7765,7 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
7733
7765
  stroke: "context-stroke",
7734
7766
  fill: "context-stroke"
7735
7767
  }, null, -1)
7736
- ]), 8, _hoisted_1$c)
7768
+ ]), 8, _hoisted_1$b)
7737
7769
  ])
7738
7770
  ]);
7739
7771
  };
@@ -7799,7 +7831,7 @@ const cssModules$w = {
7799
7831
  "$style": style0$w
7800
7832
  };
7801
7833
  const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$G, [["__cssModules", cssModules$w]]);
7802
- const _hoisted_1$b = ["data-source-node-name", "data-target-node-name"];
7834
+ const _hoisted_1$a = ["data-source-node-name", "data-target-node-name"];
7803
7835
  const _hoisted_2$7 = ["data-source-node-name", "data-target-node-name", "data-edge-status"];
7804
7836
  const delayedHoveredTimeout = 600;
7805
7837
  const _sfc_main$F = /* @__PURE__ */ defineComponent({
@@ -7948,7 +7980,7 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7948
7980
  "interaction-width": 40
7949
7981
  }, null, 8, ["id", "class", "style", "path", "marker-end"]);
7950
7982
  }), 128))
7951
- ], 8, _hoisted_1$b),
7983
+ ], 8, _hoisted_1$a),
7952
7984
  createVNode(unref(_sfc_main$3$1), null, {
7953
7985
  default: withCtx(() => [
7954
7986
  createBaseVNode("div", {
@@ -8066,7 +8098,7 @@ function useCanvasNode() {
8066
8098
  eventBus
8067
8099
  };
8068
8100
  }
8069
- const _hoisted_1$a = ["title"];
8101
+ const _hoisted_1$9 = ["title"];
8070
8102
  const _hoisted_2$6 = ["onClick"];
8071
8103
  const _sfc_main$E = /* @__PURE__ */ defineComponent({
8072
8104
  __name: "CanvasNodeStickyColorSelector",
@@ -8132,7 +8164,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
8132
8164
  title: unref(i18n).baseText("node.changeColor")
8133
8165
  }, [
8134
8166
  createVNode(_component_N8nIcon, { icon: "palette" })
8135
- ], 10, _hoisted_1$a)
8167
+ ], 10, _hoisted_1$9)
8136
8168
  ]),
8137
8169
  default: withCtx(() => [
8138
8170
  createBaseVNode("div", {
@@ -8195,7 +8227,8 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8195
8227
  const { isDisabled, render: render2, name } = useCanvasNode();
8196
8228
  const workflowsStore = useWorkflowsStore();
8197
8229
  const nodeTypesStore = useNodeTypesStore();
8198
- const node2 = computed(() => !!name.value && workflowsStore.getNodeByName(name.value));
8230
+ const experimentalNdvStore = useExperimentalNdvStore();
8231
+ const node2 = computed(() => name.value ? workflowsStore.getNodeByName(name.value) : null);
8199
8232
  const isToolNode = computed(() => !!node2.value && nodeTypesStore.isToolNode(node2.value.type));
8200
8233
  const nodeDisabledTitle = computed(() => {
8201
8234
  return isDisabled.value ? i18n.baseText("node.enable") : i18n.baseText("node.disable");
@@ -8214,6 +8247,9 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8214
8247
  return !props.readOnly && render2.value.type === CanvasNodeRenderType.Default;
8215
8248
  });
8216
8249
  const isDeleteNodeVisible = computed(() => !props.readOnly);
8250
+ const isFocusNodeVisible = computed(
8251
+ () => experimentalNdvStore.isEnabled && node2.value !== null && experimentalNdvStore.collapsedNodes[node2.value.id] !== false
8252
+ );
8217
8253
  const isStickyNoteChangeColorVisible = computed(
8218
8254
  () => !props.readOnly && render2.value.type === CanvasNodeRenderType.StickyNote
8219
8255
  );
@@ -8240,6 +8276,11 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8240
8276
  function onMouseLeave() {
8241
8277
  isHovered.value = false;
8242
8278
  }
8279
+ function onFocusNode() {
8280
+ if (node2.value) {
8281
+ experimentalNdvStore.focusNode(node2.value.id);
8282
+ }
8283
+ }
8243
8284
  return (_ctx, _cache) => {
8244
8285
  const _component_N8nIconButton = _sfc_main$S;
8245
8286
  const _component_N8nTooltip = N8nTooltip;
@@ -8293,8 +8334,16 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8293
8334
  title: unref(i18n).baseText("node.delete"),
8294
8335
  onClick: onDeleteNode
8295
8336
  }, null, 8, ["title"])) : createCommentVNode("", true),
8296
- isStickyNoteChangeColorVisible.value ? (openBlock(), createBlock(_component_CanvasNodeStickyColorSelector, {
8337
+ isFocusNodeVisible.value ? (openBlock(), createBlock(_component_N8nIconButton, {
8297
8338
  key: 2,
8339
+ type: "tertiary",
8340
+ size: "small",
8341
+ text: "",
8342
+ icon: "crosshair",
8343
+ onClick: onFocusNode
8344
+ })) : createCommentVNode("", true),
8345
+ isStickyNoteChangeColorVisible.value ? (openBlock(), createBlock(_component_CanvasNodeStickyColorSelector, {
8346
+ key: 3,
8298
8347
  visible: isStickyColorSelectorOpen.value,
8299
8348
  "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => isStickyColorSelectorOpen.value = $event),
8300
8349
  onUpdate: onChangeStickyColor
@@ -8324,7 +8373,7 @@ const cssModules$t = {
8324
8373
  "$style": style0$t
8325
8374
  };
8326
8375
  const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$D, [["__cssModules", cssModules$t]]);
8327
- const _hoisted_1$9 = { key: 1 };
8376
+ const _hoisted_1$8 = { key: 1 };
8328
8377
  const _hoisted_2$5 = ["textContent"];
8329
8378
  const _hoisted_3$4 = { key: 2 };
8330
8379
  const _hoisted_4$3 = { key: 5 };
@@ -8377,7 +8426,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8377
8426
  ]),
8378
8427
  _: 1
8379
8428
  })
8380
- ], 2)) : unref(executionWaiting) || unref(executionStatus) === "waiting" ? (openBlock(), createElementBlock("div", _hoisted_1$9, [
8429
+ ], 2)) : unref(executionWaiting) || unref(executionStatus) === "waiting" ? (openBlock(), createElementBlock("div", _hoisted_1$8, [
8381
8430
  createBaseVNode("div", {
8382
8431
  class: normalizeClass([_ctx.$style.status, _ctx.$style.waiting])
8383
8432
  }, [
@@ -8804,7 +8853,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
8804
8853
  };
8805
8854
  }
8806
8855
  });
8807
- const _hoisted_1$8 = {
8856
+ const _hoisted_1$7 = {
8808
8857
  key: 0,
8809
8858
  class: "webhooks"
8810
8859
  };
@@ -8979,7 +9028,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
8979
9028
  const _component_el_row = resolveComponent("el-row");
8980
9029
  const _component_n8n_tooltip = N8nTooltip;
8981
9030
  const _component_el_collapse_transition = resolveComponent("el-collapse-transition");
8982
- return webhooksNode.value.length && visibleWebhookUrls.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$8, [
9031
+ return webhooksNode.value.length && visibleWebhookUrls.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$7, [
8983
9032
  createBaseVNode("div", {
8984
9033
  class: normalizeClass(["clickable headline", { expanded: !isMinimized.value }]),
8985
9034
  title: isMinimized.value ? baseText.value.clickToDisplay : baseText.value.clickToHide,
@@ -9229,7 +9278,7 @@ function onScrollLock() {
9229
9278
  };
9230
9279
  }
9231
9280
  onScrollLock();
9232
- const _hoisted_1$7 = ["data-test-id"];
9281
+ const _hoisted_1$6 = ["data-test-id"];
9233
9282
  const _hoisted_2$3 = ["textContent"];
9234
9283
  const _hoisted_3$2 = ["onClick"];
9235
9284
  const _hoisted_4$1 = ["onClick"];
@@ -9523,7 +9572,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
9523
9572
  _: 2
9524
9573
  }, 1032, ["onTrigger"])
9525
9574
  ], 2)
9526
- ], 8, _hoisted_1$7);
9575
+ ], 8, _hoisted_1$6);
9527
9576
  }), 128))
9528
9577
  ], 6)
9529
9578
  ], 2)) : createCommentVNode("", true);
@@ -9616,7 +9665,7 @@ const cssModules$n = {
9616
9665
  "$style": style0$n
9617
9666
  };
9618
9667
  const NodeSettingsHeader = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__cssModules", cssModules$n]]);
9619
- const _hoisted_1$6 = { class: "mt-xs" };
9668
+ const _hoisted_1$5 = { class: "mt-xs" };
9620
9669
  const LANGCHAIN_NODES_PREFIX = "@n8n/n8n-nodes-langchain.";
9621
9670
  const N8N_NODES_PREFIX = "@n8n/n8n-nodes.";
9622
9671
  const _sfc_main$u = /* @__PURE__ */ defineComponent({
@@ -9675,7 +9724,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9675
9724
  const _component_n8n_button = N8nButton;
9676
9725
  const _component_n8n_callout = N8nCallout;
9677
9726
  const _component_n8n_text = N8nText;
9678
- return openBlock(), createElementBlock("div", _hoisted_1$6, [
9727
+ return openBlock(), createElementBlock("div", _hoisted_1$5, [
9679
9728
  userCanClaimOpenAiCredits.value && !showSuccessCallout.value ? (openBlock(), createBlock(_component_n8n_callout, {
9680
9729
  key: 0,
9681
9730
  theme: "secondary",
@@ -9730,297 +9779,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9730
9779
  function shouldShowParameter(item) {
9731
9780
  return item.name.match(/resource|authentication|operation/i) === null;
9732
9781
  }
9733
- function updateDynamicConnections(node2, workflowConnections, parameterData) {
9734
- const connections2 = { ...workflowConnections };
9735
- try {
9736
- if (parameterData.name.includes("conditions") || !connections2[node2.name]?.main) return null;
9737
- if (node2.type === SWITCH_NODE_TYPE && parameterData.name === "parameters.numberOutputs") {
9738
- const curentNumberOutputs = node2.parameters?.numberOutputs;
9739
- const newNumberOutputs = parameterData.value;
9740
- if (newNumberOutputs < curentNumberOutputs) {
9741
- connections2[node2.name].main = connections2[node2.name].main.slice(0, newNumberOutputs);
9742
- return connections2;
9743
- }
9744
- }
9745
- if (node2.type === SWITCH_NODE_TYPE && parameterData.name === "parameters.options.fallbackOutput") {
9746
- const curentFallbackOutput = node2.parameters?.options?.fallbackOutput;
9747
- if (curentFallbackOutput === "extra") {
9748
- if (!parameterData.value || parameterData.value !== "extra") {
9749
- connections2[node2.name].main = connections2[node2.name].main.slice(0, -1);
9750
- return connections2;
9751
- }
9752
- }
9753
- }
9754
- if (node2.type === SWITCH_NODE_TYPE && parameterData.name.includes("parameters.rules.values")) {
9755
- const { fallbackOutput } = node2.parameters?.options;
9756
- if (parameterData.value === void 0) {
9757
- let extractIndex = function(path) {
9758
- const match = path.match(/parameters\.rules\.values\[(\d+)\]$/);
9759
- return match ? parseInt(match[1], 10) : null;
9760
- };
9761
- const index = extractIndex(parameterData.name);
9762
- if (index !== null) {
9763
- connections2[node2.name].main.splice(index, 1);
9764
- return connections2;
9765
- }
9766
- if (parameterData.name === "parameters.rules.values") {
9767
- if (fallbackOutput === "extra") {
9768
- connections2[node2.name].main = [
9769
- connections2[node2.name].main[connections2[node2.name].main.length - 1]
9770
- ];
9771
- } else {
9772
- connections2[node2.name].main = [];
9773
- }
9774
- return connections2;
9775
- }
9776
- } else if (parameterData.name === "parameters.rules.values") {
9777
- const curentRulesvalues = node2.parameters?.rules?.values;
9778
- let lastConnection = void 0;
9779
- if (fallbackOutput === "extra" && connections2[node2.name].main.length === curentRulesvalues.length + 1) {
9780
- lastConnection = connections2[node2.name].main.pop();
9781
- }
9782
- const currentRulesLength = node2.parameters?.rules?.values?.length;
9783
- const newRulesLength = parameterData.value?.length;
9784
- if (newRulesLength - currentRulesLength === 1) {
9785
- connections2[node2.name].main = [...connections2[node2.name].main, []];
9786
- if (lastConnection) {
9787
- connections2[node2.name].main.push(lastConnection);
9788
- }
9789
- return connections2;
9790
- } else {
9791
- const newRulesvalues = parameterData.value;
9792
- const updatedConnectionsIndex = [];
9793
- for (const newRule of newRulesvalues) {
9794
- const index = curentRulesvalues.findIndex((rule) => isEqual(rule, newRule));
9795
- if (index !== -1) {
9796
- updatedConnectionsIndex.push(index);
9797
- }
9798
- }
9799
- const reorderedConnections = [];
9800
- for (const index of updatedConnectionsIndex) {
9801
- reorderedConnections.push(connections2[node2.name].main[index] ?? []);
9802
- }
9803
- if (lastConnection) {
9804
- reorderedConnections.push(lastConnection);
9805
- }
9806
- connections2[node2.name].main = reorderedConnections;
9807
- return connections2;
9808
- }
9809
- }
9810
- }
9811
- } catch (error2) {
9812
- captureException(error2);
9813
- }
9814
- return null;
9815
- }
9816
- function removeMismatchedOptionValues(nodeType, nodeTypeVersion, nodeParameterValues, updatedParameter) {
9817
- nodeType.properties.forEach((prop) => {
9818
- const displayOptions = prop.displayOptions;
9819
- if (!nodeParameterValues?.hasOwnProperty(prop.name) || !displayOptions || !prop.options) {
9820
- return;
9821
- }
9822
- const showCondition = displayOptions.show?.[updatedParameter.name];
9823
- const hideCondition = displayOptions.hide?.[updatedParameter.name];
9824
- if (showCondition === void 0 && hideCondition === void 0) {
9825
- return;
9826
- }
9827
- let hasValidOptions = true;
9828
- if (isINodePropertyCollectionList(prop.options) || isINodePropertiesList(prop.options)) {
9829
- hasValidOptions = Object.keys(nodeParameterValues).every(
9830
- (key) => (prop.options ?? []).find((option2) => option2.name === key) !== void 0
9831
- );
9832
- } else if (isINodePropertyOptionsList(prop.options)) {
9833
- hasValidOptions = !!prop.options.find(
9834
- (option2) => option2.value === nodeParameterValues[prop.name]
9835
- );
9836
- }
9837
- if (!hasValidOptions && displayParameter(nodeParameterValues, prop, { typeVersion: nodeTypeVersion }, nodeType)) {
9838
- unset(nodeParameterValues, prop.name);
9839
- }
9840
- });
9841
- }
9842
- function updateParameterByPath(parameterName, newValue, nodeParameters, nodeType, nodeTypeVersion) {
9843
- const parameterPath = parameterName.split(".").slice(1).join(".");
9844
- const parameterPathArray = parameterPath.match(/(.*)\[(\d+)\]$/);
9845
- if (newValue === void 0 && parameterPathArray !== null) {
9846
- const path = parameterPathArray[1];
9847
- const index = parameterPathArray[2];
9848
- const data = get$3(nodeParameters, path);
9849
- if (Array.isArray(data)) {
9850
- data.splice(parseInt(index, 10), 1);
9851
- set$3(nodeParameters, path, data);
9852
- }
9853
- } else {
9854
- if (newValue === void 0) {
9855
- unset(nodeParameters, parameterPath);
9856
- } else {
9857
- set$3(nodeParameters, parameterPath, newValue);
9858
- }
9859
- removeMismatchedOptionValues(nodeType, nodeTypeVersion, nodeParameters, {
9860
- name: parameterPath
9861
- });
9862
- }
9863
- return parameterPath;
9864
- }
9865
- function useNodeSettingsParameters() {
9866
- const workflowsStore = useWorkflowsStore();
9867
- const nodeTypesStore = useNodeTypesStore();
9868
- const telemetry = useTelemetry();
9869
- const nodeHelpers = useNodeHelpers();
9870
- const canvasOperations = useCanvasOperations();
9871
- const externalHooks = useExternalHooks();
9872
- const nodeValues = ref({
9873
- color: "#ff0000",
9874
- alwaysOutputData: false,
9875
- executeOnce: false,
9876
- notesInFlow: false,
9877
- onError: "stopWorkflow",
9878
- retryOnFail: false,
9879
- maxTries: 3,
9880
- waitBetweenTries: 1e3,
9881
- notes: "",
9882
- parameters: {}
9883
- });
9884
- function setValue(name, value) {
9885
- const nameParts = name.split(".");
9886
- let lastNamePart = nameParts.pop();
9887
- let isArray = false;
9888
- if (lastNamePart !== void 0 && lastNamePart.includes("[")) {
9889
- const lastNameParts = lastNamePart.match(/(.*)\[(\d+)\]$/);
9890
- if (lastNameParts) {
9891
- nameParts.push(lastNameParts[1]);
9892
- lastNamePart = lastNameParts[2];
9893
- isArray = true;
9894
- }
9895
- }
9896
- if (nameParts.length === 0) {
9897
- if (value === null) {
9898
- if (lastNamePart) {
9899
- const { [lastNamePart]: removedNodeValue, ...remainingNodeValues } = nodeValues.value;
9900
- nodeValues.value = remainingNodeValues;
9901
- }
9902
- } else {
9903
- nodeValues.value = {
9904
- ...nodeValues.value,
9905
- [lastNamePart]: value
9906
- };
9907
- }
9908
- } else {
9909
- if (value === null) {
9910
- let tempValue = get$3(nodeValues.value, nameParts.join("."));
9911
- if (lastNamePart && !Array.isArray(tempValue)) {
9912
- const { [lastNamePart]: removedNodeValue, ...remainingNodeValues } = tempValue;
9913
- tempValue = remainingNodeValues;
9914
- }
9915
- if (isArray && Array.isArray(tempValue) && tempValue.length === 0) {
9916
- lastNamePart = nameParts.pop();
9917
- tempValue = get$3(nodeValues.value, nameParts.join("."));
9918
- if (lastNamePart) {
9919
- const { [lastNamePart]: removedArrayNodeValue, ...remainingArrayNodeValues } = tempValue;
9920
- tempValue = remainingArrayNodeValues;
9921
- }
9922
- }
9923
- } else {
9924
- if (typeof value === "object") {
9925
- set$3(
9926
- get$3(nodeValues.value, nameParts.join(".")),
9927
- lastNamePart,
9928
- deepCopy(value)
9929
- );
9930
- } else {
9931
- set$3(
9932
- get$3(nodeValues.value, nameParts.join(".")),
9933
- lastNamePart,
9934
- value
9935
- );
9936
- }
9937
- }
9938
- }
9939
- nodeValues.value = { ...nodeValues.value };
9940
- }
9941
- function nameIsParameter(parameterData) {
9942
- return parameterData.name.startsWith("parameters.");
9943
- }
9944
- function updateNodeParameter(parameterData, newValue, node2, isToolNode) {
9945
- const nodeTypeDescription = nodeTypesStore.getNodeType(node2.type, node2.typeVersion);
9946
- if (!nodeTypeDescription) {
9947
- return;
9948
- }
9949
- let nodeParameters = getNodeParameters(
9950
- nodeTypeDescription.properties,
9951
- node2.parameters,
9952
- false,
9953
- false,
9954
- node2,
9955
- nodeTypeDescription
9956
- );
9957
- const oldNodeParameters = Object.assign({}, nodeParameters);
9958
- nodeParameters = deepCopy(nodeParameters);
9959
- const parameterPath = updateParameterByPath(
9960
- parameterData.name,
9961
- newValue,
9962
- nodeParameters,
9963
- nodeTypeDescription,
9964
- node2.typeVersion
9965
- );
9966
- nodeParameters = getNodeParameters(
9967
- nodeTypeDescription.properties,
9968
- nodeParameters,
9969
- true,
9970
- false,
9971
- node2,
9972
- nodeTypeDescription
9973
- );
9974
- if (isToolNode) {
9975
- const updatedDescription = getUpdatedToolDescription(
9976
- nodeTypeDescription,
9977
- nodeParameters,
9978
- node2.parameters
9979
- );
9980
- if (updatedDescription && nodeParameters) {
9981
- nodeParameters.toolDescription = updatedDescription;
9982
- }
9983
- }
9984
- if (isDefaultNodeName(node2.name, nodeTypeDescription, node2.parameters ?? {})) {
9985
- const newName = makeNodeName(nodeParameters ?? {}, nodeTypeDescription);
9986
- if (!node2.name.startsWith(newName)) {
9987
- setTimeout(async () => await canvasOperations.renameNode(node2.name, newName));
9988
- }
9989
- }
9990
- for (const [key, value] of Object.entries(nodeParameters)) {
9991
- if (value !== null && value !== void 0) {
9992
- setValue(`parameters.${key}`, value);
9993
- }
9994
- }
9995
- const updateInformation = {
9996
- name: node2.name,
9997
- value: nodeParameters
9998
- };
9999
- const connections2 = workflowsStore.allConnections;
10000
- const updatedConnections = updateDynamicConnections(node2, connections2, parameterData);
10001
- if (updatedConnections) {
10002
- workflowsStore.setConnections(updatedConnections, true);
10003
- }
10004
- workflowsStore.setNodeParameters(updateInformation);
10005
- void externalHooks.run("nodeSettings.valueChanged", {
10006
- parameterPath,
10007
- newValue,
10008
- parameters: nodeTypeDescription.properties,
10009
- oldNodeParameters
10010
- });
10011
- nodeHelpers.updateNodeParameterIssuesByName(node2.name);
10012
- nodeHelpers.updateNodeCredentialIssuesByName(node2.name);
10013
- telemetry.trackNodeParametersValuesChange(nodeTypeDescription.name, parameterData);
10014
- }
10015
- return {
10016
- nodeValues,
10017
- setValue,
10018
- updateParameterByPath,
10019
- updateNodeParameter,
10020
- nameIsParameter
10021
- };
10022
- }
10023
- const _hoisted_1$5 = { class: "header-side-menu" };
9782
+ const _hoisted_1$4 = { class: "header-side-menu" };
10024
9783
  const _hoisted_2$2 = {
10025
9784
  key: 2,
10026
9785
  class: "node-is-not-valid"
@@ -10258,7 +10017,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10258
10017
  nodeHelpers.updateNodeParameterIssuesByName(_node.name);
10259
10018
  nodeHelpers.updateNodeCredentialIssuesByName(_node.name);
10260
10019
  }
10261
- } else if (nodeSettingsParameters.nameIsParameter(parameterData)) {
10020
+ } else if (nameIsParameter(parameterData)) {
10262
10021
  nodeSettingsParameters.updateNodeParameter(parameterData, newValue, _node, isToolNode.value);
10263
10022
  } else {
10264
10023
  nodeValues.value = {
@@ -10307,7 +10066,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10307
10066
  type: "boolean",
10308
10067
  default: false,
10309
10068
  noDataExpression: true,
10310
- description: i18n.baseText("nodeSettings.alwaysOutputData.description")
10069
+ description: i18n.baseText("nodeSettings.alwaysOutputData.description"),
10070
+ isNodeSetting: true
10311
10071
  },
10312
10072
  {
10313
10073
  displayName: i18n.baseText("nodeSettings.executeOnce.displayName"),
@@ -10315,7 +10075,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10315
10075
  type: "boolean",
10316
10076
  default: false,
10317
10077
  noDataExpression: true,
10318
- description: i18n.baseText("nodeSettings.executeOnce.description")
10078
+ description: i18n.baseText("nodeSettings.executeOnce.description"),
10079
+ isNodeSetting: true
10319
10080
  },
10320
10081
  {
10321
10082
  displayName: i18n.baseText("nodeSettings.retryOnFail.displayName"),
@@ -10323,7 +10084,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10323
10084
  type: "boolean",
10324
10085
  default: false,
10325
10086
  noDataExpression: true,
10326
- description: i18n.baseText("nodeSettings.retryOnFail.description")
10087
+ description: i18n.baseText("nodeSettings.retryOnFail.description"),
10088
+ isNodeSetting: true
10327
10089
  },
10328
10090
  {
10329
10091
  displayName: i18n.baseText("nodeSettings.maxTries.displayName"),
@@ -10340,7 +10102,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10340
10102
  }
10341
10103
  },
10342
10104
  noDataExpression: true,
10343
- description: i18n.baseText("nodeSettings.maxTries.description")
10105
+ description: i18n.baseText("nodeSettings.maxTries.description"),
10106
+ isNodeSetting: true
10344
10107
  },
10345
10108
  {
10346
10109
  displayName: i18n.baseText("nodeSettings.waitBetweenTries.displayName"),
@@ -10357,7 +10120,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10357
10120
  }
10358
10121
  },
10359
10122
  noDataExpression: true,
10360
- description: i18n.baseText("nodeSettings.waitBetweenTries.description")
10123
+ description: i18n.baseText("nodeSettings.waitBetweenTries.description"),
10124
+ isNodeSetting: true
10361
10125
  },
10362
10126
  {
10363
10127
  displayName: i18n.baseText("nodeSettings.onError.displayName"),
@@ -10386,7 +10150,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10386
10150
  ],
10387
10151
  default: "stopWorkflow",
10388
10152
  description: i18n.baseText("nodeSettings.onError.description"),
10389
- noDataExpression: true
10153
+ noDataExpression: true,
10154
+ isNodeSetting: true
10390
10155
  }
10391
10156
  ]
10392
10157
  );
@@ -10402,7 +10167,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10402
10167
  },
10403
10168
  default: "",
10404
10169
  noDataExpression: true,
10405
- description: i18n.baseText("nodeSettings.notes.description")
10170
+ description: i18n.baseText("nodeSettings.notes.description"),
10171
+ isNodeSetting: true
10406
10172
  },
10407
10173
  {
10408
10174
  displayName: i18n.baseText("nodeSettings.notesInFlow.displayName"),
@@ -10410,7 +10176,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10410
10176
  type: "boolean",
10411
10177
  default: false,
10412
10178
  noDataExpression: true,
10413
- description: i18n.baseText("nodeSettings.notesInFlow.description")
10179
+ description: i18n.baseText("nodeSettings.notesInFlow.description"),
10180
+ isNodeSetting: true
10414
10181
  }
10415
10182
  ]
10416
10183
  );
@@ -10626,7 +10393,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10626
10393
  key: 0,
10627
10394
  class: normalizeClass(_ctx.$style.header)
10628
10395
  }, [
10629
- createBaseVNode("div", _hoisted_1$5, [
10396
+ createBaseVNode("div", _hoisted_1$4, [
10630
10397
  node2.value ? (openBlock(), createBlock(_component_NodeTitle, {
10631
10398
  key: 0,
10632
10399
  class: "node-name",
@@ -10876,12 +10643,13 @@ const style0$m = {
10876
10643
  const cssModules$m = {
10877
10644
  "$style": style0$m
10878
10645
  };
10879
- const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__cssModules", cssModules$m], ["__scopeId", "data-v-a75f342f"]]);
10646
+ const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__cssModules", cssModules$m], ["__scopeId", "data-v-529b0cab"]]);
10880
10647
  const _sfc_main$s = /* @__PURE__ */ defineComponent({
10881
10648
  __name: "ExperimentalCanvasNodeSettings",
10882
10649
  props: {
10883
10650
  nodeId: {},
10884
- noWheel: { type: Boolean }
10651
+ noWheel: { type: Boolean },
10652
+ isReadOnly: { type: Boolean }
10885
10653
  },
10886
10654
  setup(__props) {
10887
10655
  const settingsEventBus = createEventBus();
@@ -10900,7 +10668,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
10900
10668
  "active-node": activeNode.value,
10901
10669
  "push-ref": "",
10902
10670
  "foreign-credentials": [],
10903
- "read-only": false,
10671
+ "read-only": _ctx.isReadOnly,
10904
10672
  "block-u-i": false,
10905
10673
  executable: false,
10906
10674
  "input-size": 0,
@@ -10912,55 +10680,16 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
10912
10680
  renderSlot(_ctx.$slots, "actions")
10913
10681
  ]),
10914
10682
  _: 3
10915
- }, 8, ["event-bus", "active-node", "no-wheel"]);
10683
+ }, 8, ["event-bus", "active-node", "read-only", "no-wheel"]);
10916
10684
  };
10917
10685
  }
10918
10686
  });
10919
- const useExperimentalNdvStore = defineStore("experimentalNdv", () => {
10920
- const workflowStore = useWorkflowsStore();
10921
- const settingsStore = useSettingsStore();
10922
- const isEnabled = computed(
10923
- () => !Number.isNaN(settingsStore.experimental__minZoomNodeSettingsInCanvas) && settingsStore.experimental__minZoomNodeSettingsInCanvas > 0
10924
- );
10925
- const maxCanvasZoom = computed(
10926
- () => isEnabled.value ? settingsStore.experimental__minZoomNodeSettingsInCanvas : 4
10927
- );
10928
- const collapsedNodes = shallowRef({});
10929
- function setNodeExpanded(nodeId, isExpanded) {
10930
- collapsedNodes.value = {
10931
- ...collapsedNodes.value,
10932
- [nodeId]: isExpanded ?? !collapsedNodes.value[nodeId]
10933
- };
10934
- }
10935
- function collapseAllNodes() {
10936
- collapsedNodes.value = workflowStore.allNodes.reduce(
10937
- (acc, node2) => {
10938
- acc[node2.id] = true;
10939
- return acc;
10940
- },
10941
- {}
10942
- );
10943
- }
10944
- function expandAllNodes() {
10945
- collapsedNodes.value = {};
10946
- }
10947
- function isActive(canvasZoom) {
10948
- return isEnabled.value && canvasZoom === maxCanvasZoom.value;
10949
- }
10950
- return {
10951
- isEnabled,
10952
- maxCanvasZoom,
10953
- collapsedNodes: computed(() => collapsedNodes.value),
10954
- isActive,
10955
- setNodeExpanded,
10956
- expandAllNodes,
10957
- collapseAllNodes
10958
- };
10959
- });
10960
10687
  const _sfc_main$r = /* @__PURE__ */ defineComponent({
10961
10688
  __name: "ExperimentalEmbeddedNodeDetails",
10962
10689
  props: {
10963
- nodeId: {}
10690
+ nodeId: {},
10691
+ isReadOnly: { type: Boolean },
10692
+ isConfigurable: { type: Boolean }
10964
10693
  },
10965
10694
  setup(__props) {
10966
10695
  const experimentalNdvStore = useExperimentalNdvStore();
@@ -10974,7 +10703,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
10974
10703
  }
10975
10704
  return null;
10976
10705
  });
10977
- const vf = useVueFlow(workflowsStore.workflowId);
10706
+ const vf = useVueFlow();
10978
10707
  const isMoving = ref(false);
10979
10708
  const moveStartListener = vf.onMoveStart(() => {
10980
10709
  isMoving.value = true;
@@ -10998,6 +10727,47 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
10998
10727
  )
10999
10728
  );
11000
10729
  const isOnceVisible = ref(isVisible.value);
10730
+ provide(
10731
+ ExpressionLocalResolveContextSymbol,
10732
+ computed(() => {
10733
+ if (!node2.value) {
10734
+ return void 0;
10735
+ }
10736
+ const workflow = workflowsStore.getCurrentWorkflow();
10737
+ const runIndex = 0;
10738
+ const execution = workflowsStore.workflowExecutionData;
10739
+ const nodeName = node2.value.name;
10740
+ function findInputNode() {
10741
+ const taskData = (execution?.data?.resultData.runData[nodeName] ?? [])[runIndex];
10742
+ const source = taskData?.source[0];
10743
+ if (source) {
10744
+ return {
10745
+ name: source.previousNode,
10746
+ branchIndex: source.previousNodeOutput ?? 0,
10747
+ runIndex: source.previousNodeRun ?? 0
10748
+ };
10749
+ }
10750
+ const inputs2 = workflow.getParentNodesByDepth(nodeName, 1);
10751
+ if (inputs2.length > 0) {
10752
+ return {
10753
+ name: inputs2[0].name,
10754
+ branchIndex: inputs2[0].indicies[0] ?? 0,
10755
+ runIndex: 0
10756
+ };
10757
+ }
10758
+ return void 0;
10759
+ }
10760
+ return {
10761
+ localResolve: true,
10762
+ envVars: useEnvironmentsStore().variablesAsObject,
10763
+ workflow,
10764
+ execution,
10765
+ nodeName,
10766
+ additionalKeys: {},
10767
+ inputNode: findInputNode()
10768
+ };
10769
+ })
10770
+ );
11001
10771
  watchOnce(isVisible, (visible2) => {
11002
10772
  isOnceVisible.value = isOnceVisible.value || visible2;
11003
10773
  });
@@ -11008,15 +10778,18 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
11008
10778
  return openBlock(), createElementBlock("div", {
11009
10779
  ref: "container",
11010
10780
  class: normalizeClass([_ctx.$style.component, isExpanded.value ? _ctx.$style.expanded : _ctx.$style.collapsed]),
11011
- style: normalizeStyle({ "--zoom": `${1 / unref(experimentalNdvStore).maxCanvasZoom}` })
10781
+ style: normalizeStyle({
10782
+ "--zoom": `${1 / unref(experimentalNdvStore).maxCanvasZoom}`,
10783
+ "--node-width-scaler": _ctx.isConfigurable ? 1 : 1.5
10784
+ })
11012
10785
  }, [
11013
10786
  isOnceVisible.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
11014
10787
  isExpanded.value ? (openBlock(), createBlock(_sfc_main$s, {
11015
10788
  key: 0,
11016
10789
  "node-id": _ctx.nodeId,
11017
10790
  class: normalizeClass(_ctx.$style.settingsView),
11018
- "no-wheel": !isMoving.value
11019
- /* to not interrupt panning while allowing scroll of the settings pane, allow wheel event while panning */
10791
+ "no-wheel": !isMoving.value,
10792
+ "is-read-only": _ctx.isReadOnly
11020
10793
  }, {
11021
10794
  actions: withCtx(() => [
11022
10795
  createVNode(unref(_sfc_main$S), {
@@ -11030,7 +10803,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
11030
10803
  })
11031
10804
  ]),
11032
10805
  _: 1
11033
- }, 8, ["node-id", "class", "no-wheel"])) : (openBlock(), createElementBlock("div", {
10806
+ }, 8, ["node-id", "class", "no-wheel", "is-read-only"])) : (openBlock(), createElementBlock("div", {
11034
10807
  key: 1,
11035
10808
  role: "button ",
11036
10809
  class: normalizeClass(_ctx.$style.collapsedContent),
@@ -11053,11 +10826,11 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
11053
10826
  };
11054
10827
  }
11055
10828
  });
11056
- const component$2 = "_component_1kmdn_123";
11057
- const expanded = "_expanded_1kmdn_134";
11058
- const collapsed = "_collapsed_1kmdn_137";
11059
- const collapsedContent = "_collapsedContent_1kmdn_149";
11060
- const settingsView = "_settingsView_1kmdn_150";
10829
+ const component$2 = "_component_1o2au_123";
10830
+ const expanded = "_expanded_1o2au_132";
10831
+ const collapsed = "_collapsed_1o2au_136";
10832
+ const collapsedContent = "_collapsedContent_1o2au_147";
10833
+ const settingsView = "_settingsView_1o2au_148";
11061
10834
  const style0$l = {
11062
10835
  component: component$2,
11063
10836
  expanded,
@@ -11069,7 +10842,7 @@ const cssModules$l = {
11069
10842
  "$style": style0$l
11070
10843
  };
11071
10844
  const ExperimentalInPlaceNodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$r, [["__cssModules", cssModules$l]]);
11072
- const _hoisted_1$4 = ["data-test-id"];
10845
+ const _hoisted_1$3 = ["data-test-id"];
11073
10846
  const _sfc_main$q = /* @__PURE__ */ defineComponent({
11074
10847
  __name: "CanvasNodeDefault",
11075
10848
  emits: ["open:contextmenu", "activate"],
@@ -11086,6 +10859,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
11086
10859
  outputs,
11087
10860
  connections: connections2,
11088
10861
  isDisabled,
10862
+ isReadOnly,
11089
10863
  isSelected,
11090
10864
  hasPinnedData,
11091
10865
  executionStatus,
@@ -11178,8 +10952,10 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
11178
10952
  key: 0,
11179
10953
  "node-id": unref(id2),
11180
10954
  class: normalizeClass(classes.value),
11181
- style: normalizeStyle(styles.value)
11182
- }, null, 8, ["node-id", "class", "style"])) : (openBlock(), createElementBlock("div", {
10955
+ style: normalizeStyle(styles.value),
10956
+ "is-read-only": unref(isReadOnly),
10957
+ "is-configurable": renderOptions.value.configurable ?? false
10958
+ }, null, 8, ["node-id", "class", "style", "is-read-only", "is-configurable"])) : (openBlock(), createElementBlock("div", {
11183
10959
  key: 1,
11184
10960
  class: normalizeClass(classes.value),
11185
10961
  style: normalizeStyle(styles.value),
@@ -11219,7 +10995,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
11219
10995
  key: 2,
11220
10996
  class: normalizeClass(unref($style).statusIcons)
11221
10997
  }, null, 8, ["class"])) : createCommentVNode("", true)
11222
- ], 46, _hoisted_1$4));
10998
+ ], 46, _hoisted_1$3));
11223
10999
  };
11224
11000
  }
11225
11001
  });
@@ -12751,13 +12527,28 @@ const cssModules$j = {
12751
12527
  "$style": style0$j
12752
12528
  };
12753
12529
  const CanvasNodeStickyNote = /* @__PURE__ */ _export_sfc$1(_sfc_main$o, [["__cssModules", cssModules$j]]);
12754
- const _hoisted_1$3 = ["textContent"];
12755
12530
  const _sfc_main$n = /* @__PURE__ */ defineComponent({
12756
12531
  __name: "CanvasNodeAddNodes",
12757
12532
  setup(__props) {
12758
12533
  const nodeCreatorStore = useNodeCreatorStore();
12759
12534
  const i18n = useI18n();
12535
+ const settingsStore = useSettingsStore();
12536
+ const templatesStore = useTemplatesStore();
12760
12537
  const isTooltipVisible = ref(false);
12538
+ const templateRepository = computed(() => {
12539
+ if (templatesStore.hasCustomTemplatesHost) {
12540
+ return {
12541
+ to: { name: VIEWS.TEMPLATES }
12542
+ };
12543
+ }
12544
+ return {
12545
+ to: templatesStore.websiteTemplateRepositoryURL,
12546
+ target: "_blank"
12547
+ };
12548
+ });
12549
+ const templatesLinkEnabled = computed(() => {
12550
+ return isExtraTemplateLinksExperimentEnabled() && settingsStore.isTemplatesEnabled;
12551
+ });
12761
12552
  onMounted(() => {
12762
12553
  nodeViewEventBus.on("runWorkflowButton:mouseenter", onShowTooltip);
12763
12554
  nodeViewEventBus.on("runWorkflowButton:mouseleave", onHideTooltip);
@@ -12780,6 +12571,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
12780
12571
  return (_ctx, _cache) => {
12781
12572
  const _component_N8nIcon = N8nIcon;
12782
12573
  const _component_N8nTooltip = N8nTooltip;
12574
+ const _component_N8nLink = N8nLink;
12783
12575
  return openBlock(), createElementBlock("div", {
12784
12576
  ref: "container",
12785
12577
  class: normalizeClass(_ctx.$style.addNodes),
@@ -12811,16 +12603,31 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
12811
12603
  _: 1
12812
12604
  }, 8, ["visible", "disabled", "popper-class"]),
12813
12605
  createBaseVNode("p", {
12814
- class: normalizeClass(_ctx.$style.label),
12815
- textContent: toDisplayString(unref(i18n).baseText("nodeView.canvasAddButton.addFirstStep"))
12816
- }, null, 10, _hoisted_1$3)
12606
+ class: normalizeClass(_ctx.$style.label)
12607
+ }, [
12608
+ createTextVNode(toDisplayString(unref(i18n).baseText("nodeView.canvasAddButton.addFirstStep")) + " ", 1),
12609
+ templatesLinkEnabled.value ? (openBlock(), createBlock(_component_N8nLink, {
12610
+ key: 0,
12611
+ to: templateRepository.value.to,
12612
+ target: templateRepository.value.target,
12613
+ underline: true,
12614
+ size: "small",
12615
+ "data-test-id": "canvas-template-link",
12616
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(trackTemplatesClick)(unref(TemplateClickSource).emptyWorkflowLink))
12617
+ }, {
12618
+ default: withCtx(() => [
12619
+ createTextVNode(toDisplayString(unref(i18n).baseText("nodeView.templateLink")), 1)
12620
+ ]),
12621
+ _: 1
12622
+ }, 8, ["to", "target"])) : createCommentVNode("", true)
12623
+ ], 2)
12817
12624
  ], 2);
12818
12625
  };
12819
12626
  }
12820
12627
  });
12821
- const addNodes = "_addNodes_kytyq_123";
12822
- const button$1 = "_button_kytyq_131";
12823
- const label$4 = "_label_kytyq_145";
12628
+ const addNodes = "_addNodes_164y0_123";
12629
+ const button$1 = "_button_164y0_131";
12630
+ const label$4 = "_label_164y0_145";
12824
12631
  const style0$i = {
12825
12632
  addNodes,
12826
12633
  button: button$1,
@@ -13712,7 +13519,8 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
13712
13519
  const style = useCssModule();
13713
13520
  const props = __props;
13714
13521
  const contextMenu2 = useContextMenu();
13715
- const { connectingHandle } = useCanvas();
13522
+ const { connectingHandle, viewport } = useCanvas();
13523
+ const experimentalNdvStore = useExperimentalNdvStore();
13716
13524
  const nodeClasses = ref([]);
13717
13525
  const inputs2 = computed(() => props.data.inputs);
13718
13526
  const outputs = computed(() => props.data.outputs);
@@ -13730,6 +13538,9 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
13730
13538
  connections: connections2
13731
13539
  });
13732
13540
  const isDisabled = computed(() => props.data.disabled);
13541
+ const isExperimentalEmbeddedNdvShown = computed(
13542
+ () => experimentalNdvStore.isActive(viewport.value.zoom)
13543
+ );
13733
13544
  const classes = computed(() => ({
13734
13545
  [style.canvasNode]: true,
13735
13546
  [style.showToolbar]: showToolbar2.value,
@@ -13778,7 +13589,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
13778
13589
  const handleType = mode === CanvasConnectionMode.Input ? "target" : "source";
13779
13590
  const connectionsCount = connections2.value[mode][endpoint.type]?.[endpoint.index]?.length ?? 0;
13780
13591
  const isConnecting = connectingHandle.value?.nodeId === props.id && connectingHandle.value?.handleType === handleType && connectingHandle.value?.handleId === handleId;
13781
- const offsetValue = position2 === Position.Bottom ? `${GRID_SIZE * 2 * (1 + index * 2) + CONFIGURATION_NODE_OFFSET}px` : `${100 / (endpoints.length + 1) * (index + 1)}%`;
13592
+ const offsetValue = position2 === Position.Bottom ? `${GRID_SIZE * 2 * (1 + index * 2) + CONFIGURATION_NODE_OFFSET}px` : isExperimentalEmbeddedNdvShown.value && endpoints.length === 1 ? `${(1 + index) * (GRID_SIZE * 2)}px` : `${100 / (endpoints.length + 1) * (index + 1)}%`;
13782
13593
  return {
13783
13594
  ...endpoint,
13784
13595
  handleId,
@@ -15362,39 +15173,106 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15362
15173
  ...{ name: "FocusPanel" },
15363
15174
  __name: "FocusPanel",
15364
15175
  props: {
15365
- executable: { type: Boolean }
15176
+ isCanvasReadOnly: { type: Boolean }
15366
15177
  },
15367
- setup(__props) {
15178
+ emits: ["focus"],
15179
+ setup(__props, { emit: __emit }) {
15368
15180
  const props = __props;
15181
+ const emit = __emit;
15182
+ const inputField = ref();
15369
15183
  const locale = useI18n();
15370
15184
  const nodeHelpers = useNodeHelpers();
15371
15185
  const focusPanelStore = useFocusPanelStore();
15372
15186
  const nodeTypesStore = useNodeTypesStore();
15373
15187
  const nodeSettingsParameters = useNodeSettingsParameters();
15188
+ const environmentsStore = useEnvironmentsStore();
15189
+ const { debounce } = useDebounce();
15374
15190
  const focusedNodeParameter = computed(() => focusPanelStore.focusedNodeParameters[0]);
15375
15191
  const resolvedParameter = computed(
15376
15192
  () => focusedNodeParameter.value && focusPanelStore.isRichParameter(focusedNodeParameter.value) ? focusedNodeParameter.value : void 0
15377
15193
  );
15378
15194
  const focusPanelActive = computed(() => focusPanelStore.focusPanelActive);
15195
+ const isDisabled = computed(() => {
15196
+ if (!resolvedParameter.value) return false;
15197
+ return !!resolvedParameter.value.parameter.disabledOptions && nodeSettingsParameters.shouldDisplayNodeParameter(
15198
+ resolvedParameter.value.node.parameters,
15199
+ resolvedParameter.value.node,
15200
+ resolvedParameter.value.parameter,
15201
+ "",
15202
+ "disabledOptions"
15203
+ );
15204
+ });
15205
+ const isDisplayed = computed(() => {
15206
+ if (!resolvedParameter.value) return true;
15207
+ return nodeSettingsParameters.shouldDisplayNodeParameter(
15208
+ resolvedParameter.value.node.parameters,
15209
+ resolvedParameter.value.node,
15210
+ resolvedParameter.value.parameter,
15211
+ "",
15212
+ "displayOptions"
15213
+ );
15214
+ });
15379
15215
  const isExecutable2 = computed(() => {
15380
15216
  if (!resolvedParameter.value) return false;
15217
+ if (!isDisplayed.value) return false;
15381
15218
  const foreignCredentials = nodeHelpers.getForeignCredentialsIfSharingEnabled(
15382
15219
  resolvedParameter.value.node.credentials
15383
15220
  );
15384
15221
  return nodeHelpers.isNodeExecutable(
15385
15222
  resolvedParameter.value.node,
15386
- props.executable,
15223
+ !props.isCanvasReadOnly,
15387
15224
  foreignCredentials
15388
15225
  );
15389
15226
  });
15227
+ function getTypeOption(optionName) {
15228
+ return resolvedParameter.value ? getParameterTypeOption(resolvedParameter.value.parameter, optionName) : void 0;
15229
+ }
15230
+ const codeEditorMode = computed(() => {
15231
+ return resolvedParameter.value?.node.parameters.mode;
15232
+ });
15233
+ const editorType = computed(() => {
15234
+ return getTypeOption("editor") ?? void 0;
15235
+ });
15236
+ const editorLanguage = computed(() => {
15237
+ if (editorType.value === "json" || resolvedParameter.value?.parameter.type === "json")
15238
+ return "json";
15239
+ return getTypeOption("editorLanguage") ?? "javaScript";
15240
+ });
15241
+ const editorRows = computed(() => getTypeOption("rows"));
15390
15242
  const isToolNode = computed(
15391
15243
  () => resolvedParameter.value ? nodeTypesStore.isToolNode(resolvedParameter.value?.node.type) : false
15392
15244
  );
15245
+ const isHtmlNode = computed(
15246
+ () => !!resolvedParameter.value && resolvedParameter.value.node.type === HTML_NODE_TYPE
15247
+ );
15393
15248
  const expressionModeEnabled = computed(
15394
15249
  () => resolvedParameter.value && isValueExpression(resolvedParameter.value.parameter, resolvedParameter.value.value)
15395
15250
  );
15396
- function optionSelected() {
15397
- }
15251
+ const expression = computed(() => {
15252
+ if (!expressionModeEnabled.value) return "";
15253
+ return isResourceLocatorValue(resolvedParameter.value) ? resolvedParameter.value.value : resolvedParameter.value;
15254
+ });
15255
+ const shouldCaptureForPosthog = computed(
15256
+ () => resolvedParameter.value?.node.type === AI_TRANSFORM_NODE_TYPE
15257
+ );
15258
+ const isReadOnly = computed(() => props.isCanvasReadOnly || isDisabled.value);
15259
+ const resolvedAdditionalExpressionData = computed(() => {
15260
+ return {
15261
+ $vars: environmentsStore.variablesAsObject
15262
+ };
15263
+ });
15264
+ const targetNodeParameterContext = computed(() => {
15265
+ if (!resolvedParameter.value) return void 0;
15266
+ return {
15267
+ nodeName: resolvedParameter.value.node.name,
15268
+ parameterPath: resolvedParameter.value.parameterPath
15269
+ };
15270
+ });
15271
+ const { resolvedExpression } = useResolvedExpression({
15272
+ expression,
15273
+ additionalData: resolvedAdditionalExpressionData,
15274
+ stringifyObject: resolvedParameter.value && resolvedParameter.value.parameter.type !== "multiOptions"
15275
+ });
15398
15276
  function valueChanged(value) {
15399
15277
  if (resolvedParameter.value === void 0) {
15400
15278
  return;
@@ -15406,15 +15284,68 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15406
15284
  isToolNode.value
15407
15285
  );
15408
15286
  }
15287
+ async function setFocus() {
15288
+ await nextTick();
15289
+ if (inputField.value) {
15290
+ if (hasFocusOnInput(inputField.value)) {
15291
+ inputField.value.focusOnInput();
15292
+ } else if (isFocusableEl(inputField.value)) {
15293
+ inputField.value.focus();
15294
+ }
15295
+ }
15296
+ emit("focus");
15297
+ }
15298
+ function optionSelected(command) {
15299
+ if (!resolvedParameter.value) return;
15300
+ switch (command) {
15301
+ case "resetValue":
15302
+ return typeof resolvedParameter.value.parameter.default === "string" && valueChanged(resolvedParameter.value.parameter.default);
15303
+ case "addExpression": {
15304
+ const newValue = formatAsExpression(
15305
+ resolvedParameter.value.value,
15306
+ resolvedParameter.value.parameter.type
15307
+ );
15308
+ valueChanged(typeof newValue === "string" ? newValue : newValue.value);
15309
+ void setFocus();
15310
+ break;
15311
+ }
15312
+ case "removeExpression": {
15313
+ const newValue = parseFromExpression(
15314
+ resolvedParameter.value.value,
15315
+ resolvedExpression.value,
15316
+ resolvedParameter.value.parameter.type,
15317
+ resolvedParameter.value.parameter.default,
15318
+ (resolvedParameter.value.parameter.options ?? []).filter(isValidParameterOption)
15319
+ );
15320
+ if (typeof newValue === "string") {
15321
+ valueChanged(newValue);
15322
+ } else if (newValue && typeof newValue.value === "string") {
15323
+ valueChanged(newValue.value);
15324
+ }
15325
+ void setFocus();
15326
+ break;
15327
+ }
15328
+ case "formatHtml":
15329
+ htmlEditorEventBus.emit("format-html");
15330
+ return;
15331
+ }
15332
+ }
15333
+ const valueChangedDebounced = debounce(valueChanged, { debounceTime: 0 });
15409
15334
  return (_ctx, _cache) => {
15410
15335
  const _component_n8n_icon = N8nIcon;
15411
15336
  const _component_NodeExecuteButton = _sfc_main$V;
15412
15337
  const _component_ParameterOptions = __unplugin_components_2$2;
15413
15338
  const _component_ExpressionEditorModalInput = __unplugin_components_3$1;
15339
+ const _component_CodeNodeEditor = __unplugin_components_4;
15340
+ const _component_HtmlEditor = __unplugin_components_5;
15341
+ const _component_CssEditor = __unplugin_components_6;
15342
+ const _component_SqlEditor = __unplugin_components_7;
15343
+ const _component_JsEditor = __unplugin_components_8;
15344
+ const _component_JsonEditor = __unplugin_components_9;
15414
15345
  return focusPanelActive.value ? (openBlock(), createElementBlock("div", {
15415
15346
  key: 0,
15416
15347
  class: normalizeClass(_ctx.$style.container),
15417
- onKeydown: _cache[3] || (_cache[3] = withModifiers(() => {
15348
+ onKeydown: _cache[2] || (_cache[2] = withModifiers(() => {
15418
15349
  }, ["stop"]))
15419
15350
  }, [
15420
15351
  createBaseVNode("div", {
@@ -15487,38 +15418,109 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15487
15418
  createBaseVNode("div", {
15488
15419
  class: normalizeClass(_ctx.$style.parameterOptionsWrapper)
15489
15420
  }, [
15490
- _cache[4] || (_cache[4] = createBaseVNode("div", null, null, -1)),
15491
- createVNode(_component_ParameterOptions, {
15421
+ _cache[3] || (_cache[3] = createBaseVNode("div", null, null, -1)),
15422
+ isDisplayed.value ? (openBlock(), createBlock(_component_ParameterOptions, {
15423
+ key: 0,
15492
15424
  parameter: resolvedParameter.value.parameter,
15493
15425
  value: resolvedParameter.value.value,
15494
- "is-read-only": false,
15426
+ "is-read-only": isReadOnly.value,
15495
15427
  "onUpdate:modelValue": optionSelected
15496
- }, null, 8, ["parameter", "value"])
15428
+ }, null, 8, ["parameter", "value", "is-read-only"])) : createCommentVNode("", true)
15497
15429
  ], 2),
15498
15430
  typeof resolvedParameter.value.value === "string" ? (openBlock(), createElementBlock("div", {
15499
15431
  key: 0,
15500
15432
  class: normalizeClass(_ctx.$style.editorContainer)
15501
15433
  }, [
15502
- expressionModeEnabled.value ? (openBlock(), createBlock(_component_ExpressionEditorModalInput, {
15434
+ !isDisplayed.value ? (openBlock(), createElementBlock("div", {
15503
15435
  key: 0,
15436
+ class: normalizeClass([_ctx.$style.content, _ctx.$style.emptyContent])
15437
+ }, [
15438
+ createBaseVNode("div", {
15439
+ class: normalizeClass(_ctx.$style.emptyText)
15440
+ }, [
15441
+ createVNode(unref(N8nText), { color: "text-base" }, {
15442
+ default: withCtx(() => [
15443
+ createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.missingParameter")), 1)
15444
+ ]),
15445
+ _: 1
15446
+ })
15447
+ ], 2)
15448
+ ], 2)) : expressionModeEnabled.value ? (openBlock(), createBlock(_component_ExpressionEditorModalInput, {
15449
+ key: 1,
15450
+ ref_key: "inputField",
15451
+ ref: inputField,
15504
15452
  "model-value": resolvedParameter.value.value,
15505
15453
  class: normalizeClass(_ctx.$style.editor),
15506
- "is-read-only": false,
15454
+ "is-read-only": isReadOnly.value,
15507
15455
  path: resolvedParameter.value.parameterPath,
15508
15456
  "data-test-id": "expression-modal-input",
15509
- "target-node-parameter-context": {
15510
- nodeName: resolvedParameter.value.node.name,
15511
- parameterPath: resolvedParameter.value.parameterPath
15512
- },
15513
- onChange: _cache[1] || (_cache[1] = ($event) => valueChanged($event.value))
15514
- }, null, 8, ["model-value", "class", "path", "target-node-parameter-context"])) : (openBlock(), createBlock(unref(N8nInput), {
15515
- key: 1,
15516
- "model-value": resolvedParameter.value.value,
15517
- class: normalizeClass(_ctx.$style.editor),
15518
- type: "textarea",
15519
- resize: "none",
15520
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => valueChanged($event))
15521
- }, null, 8, ["model-value", "class"]))
15457
+ "target-node-parameter-context": targetNodeParameterContext.value,
15458
+ onChange: _cache[1] || (_cache[1] = ($event) => unref(valueChangedDebounced)($event.value))
15459
+ }, null, 8, ["model-value", "class", "is-read-only", "path", "target-node-parameter-context"])) : ["json", "string"].includes(resolvedParameter.value.parameter.type) ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
15460
+ editorType.value === "codeNodeEditor" ? (openBlock(), createBlock(_component_CodeNodeEditor, {
15461
+ key: 0,
15462
+ id: resolvedParameter.value.parameterPath,
15463
+ mode: codeEditorMode.value,
15464
+ "model-value": resolvedParameter.value.value,
15465
+ "default-value": resolvedParameter.value.parameter.default,
15466
+ language: editorLanguage.value,
15467
+ "is-read-only": isReadOnly.value,
15468
+ "target-node-parameter-context": targetNodeParameterContext.value,
15469
+ "fill-parent": "",
15470
+ "disable-ask-ai": true,
15471
+ "onUpdate:modelValue": unref(valueChangedDebounced)
15472
+ }, null, 8, ["id", "mode", "model-value", "default-value", "language", "is-read-only", "target-node-parameter-context", "onUpdate:modelValue"])) : editorType.value === "htmlEditor" ? (openBlock(), createBlock(_component_HtmlEditor, {
15473
+ key: 1,
15474
+ "model-value": resolvedParameter.value.value,
15475
+ "is-read-only": isReadOnly.value,
15476
+ rows: editorRows.value,
15477
+ "disable-expression-coloring": !isHtmlNode.value,
15478
+ "disable-expression-completions": !isHtmlNode.value,
15479
+ fullscreen: "",
15480
+ "onUpdate:modelValue": unref(valueChangedDebounced)
15481
+ }, null, 8, ["model-value", "is-read-only", "rows", "disable-expression-coloring", "disable-expression-completions", "onUpdate:modelValue"])) : editorType.value === "cssEditor" ? (openBlock(), createBlock(_component_CssEditor, {
15482
+ key: 2,
15483
+ "model-value": resolvedParameter.value.value,
15484
+ "is-read-only": isReadOnly.value,
15485
+ rows: editorRows.value,
15486
+ fullscreen: "",
15487
+ "onUpdate:modelValue": unref(valueChangedDebounced)
15488
+ }, null, 8, ["model-value", "is-read-only", "rows", "onUpdate:modelValue"])) : editorType.value === "sqlEditor" ? (openBlock(), createBlock(_component_SqlEditor, {
15489
+ key: 3,
15490
+ "model-value": resolvedParameter.value.value,
15491
+ dialect: getTypeOption("sqlDialect"),
15492
+ "is-read-only": isReadOnly.value,
15493
+ rows: editorRows.value,
15494
+ fullscreen: "",
15495
+ "onUpdate:modelValue": unref(valueChangedDebounced)
15496
+ }, null, 8, ["model-value", "dialect", "is-read-only", "rows", "onUpdate:modelValue"])) : editorType.value === "jsEditor" ? (openBlock(), createBlock(_component_JsEditor, {
15497
+ key: 4,
15498
+ "model-value": resolvedParameter.value.value,
15499
+ "is-read-only": isReadOnly.value,
15500
+ rows: editorRows.value,
15501
+ "posthog-capture": shouldCaptureForPosthog.value,
15502
+ "fill-parent": "",
15503
+ "onUpdate:modelValue": unref(valueChangedDebounced)
15504
+ }, null, 8, ["model-value", "is-read-only", "rows", "posthog-capture", "onUpdate:modelValue"])) : resolvedParameter.value.parameter.type === "json" ? (openBlock(), createBlock(_component_JsonEditor, {
15505
+ key: 5,
15506
+ "model-value": resolvedParameter.value.value,
15507
+ "is-read-only": isReadOnly.value,
15508
+ rows: editorRows.value,
15509
+ fullscreen: "",
15510
+ "fill-parent": "",
15511
+ "onUpdate:modelValue": unref(valueChangedDebounced)
15512
+ }, null, 8, ["model-value", "is-read-only", "rows", "onUpdate:modelValue"])) : (openBlock(), createBlock(unref(N8nInput), {
15513
+ key: 6,
15514
+ ref_key: "inputField",
15515
+ ref: inputField,
15516
+ "model-value": resolvedParameter.value.value,
15517
+ class: normalizeClass(_ctx.$style.editor),
15518
+ readonly: isReadOnly.value,
15519
+ type: "textarea",
15520
+ resize: "none",
15521
+ "onUpdate:modelValue": unref(valueChangedDebounced)
15522
+ }, null, 8, ["model-value", "class", "readonly", "onUpdate:modelValue"]))
15523
+ ], 64)) : createCommentVNode("", true)
15522
15524
  ], 2)) : createCommentVNode("", true)
15523
15525
  ], 2)
15524
15526
  ], 2)) : (openBlock(), createElementBlock("div", {
@@ -15540,19 +15542,19 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15540
15542
  };
15541
15543
  }
15542
15544
  });
15543
- const container = "_container_1shes_123";
15544
- const closeButton = "_closeButton_1shes_132";
15545
- const header = "_header_1shes_136";
15546
- const content = "_content_1shes_144";
15547
- const emptyContent = "_emptyContent_1shes_150";
15548
- const emptyText = "_emptyText_1shes_155";
15549
- const tabHeader = "_tabHeader_1shes_158";
15550
- const tabHeaderText = "_tabHeaderText_1shes_165";
15551
- const buttonWrapper = "_buttonWrapper_1shes_170";
15552
- const parameterDetailsWrapper = "_parameterDetailsWrapper_1shes_175";
15553
- const parameterOptionsWrapper = "_parameterOptionsWrapper_1shes_182";
15554
- const editorContainer = "_editorContainer_1shes_186";
15555
- const editor = "_editor_1shes_186";
15545
+ const container = "_container_1gj6t_123";
15546
+ const closeButton = "_closeButton_1gj6t_132";
15547
+ const header = "_header_1gj6t_136";
15548
+ const content = "_content_1gj6t_144";
15549
+ const emptyContent = "_emptyContent_1gj6t_150";
15550
+ const emptyText = "_emptyText_1gj6t_155";
15551
+ const tabHeader = "_tabHeader_1gj6t_158";
15552
+ const tabHeaderText = "_tabHeaderText_1gj6t_165";
15553
+ const buttonWrapper = "_buttonWrapper_1gj6t_170";
15554
+ const parameterDetailsWrapper = "_parameterDetailsWrapper_1gj6t_175";
15555
+ const parameterOptionsWrapper = "_parameterOptionsWrapper_1gj6t_182";
15556
+ const editorContainer = "_editorContainer_1gj6t_186";
15557
+ const editor = "_editor_1gj6t_186";
15556
15558
  const style0$2 = {
15557
15559
  container,
15558
15560
  closeButton,
@@ -15910,16 +15912,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15910
15912
  __name: "NodeView",
15911
15913
  setup(__props) {
15912
15914
  const LazyNodeCreation = defineAsyncComponent(
15913
- async () => await __vitePreload(() => import("./NodeCreation-DKbc91uY.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
15915
+ async () => await __vitePreload(() => import("./NodeCreation-vn1s6ViE.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
15914
15916
  );
15915
15917
  const LazyNodeDetailsView = defineAsyncComponent(
15916
- async () => await __vitePreload(() => import("./NodeDetailsView-CPVE5S8P.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]) : void 0)
15918
+ async () => await __vitePreload(() => import("./NodeDetailsView-Bfqrvndc.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]) : void 0)
15917
15919
  );
15918
15920
  const LazyNodeDetailsViewV2 = defineAsyncComponent(
15919
- async () => await __vitePreload(() => import("./NodeDetailsViewV2-5pxsZwAo.js"), true ? __vite__mapDeps([25,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,26]) : void 0)
15921
+ async () => await __vitePreload(() => import("./NodeDetailsViewV2-DvXkio7Z.js"), true ? __vite__mapDeps([25,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,26]) : void 0)
15920
15922
  );
15921
15923
  const LazySetupWorkflowCredentialsButton = defineAsyncComponent(
15922
- async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-Bj4rSqAV.js"), true ? __vite__mapDeps([27,1,2]) : void 0)
15924
+ async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-Do2E5w2d.js"), true ? __vite__mapDeps([27,1,2]) : void 0)
15923
15925
  );
15924
15926
  const $style = useCssModule();
15925
15927
  const router = useRouter();
@@ -16711,6 +16713,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16711
16713
  }
16712
16714
  function onToggleNodeCreator(options) {
16713
16715
  nodeCreatorStore.setNodeCreatorState(options);
16716
+ if (options.createNodeActive) {
16717
+ focusPanelStore.closeFocusPanel();
16718
+ }
16714
16719
  if (!options.createNodeActive && !options.hasAddedNodes) {
16715
16720
  uiStore.resetLastInteractedWith();
16716
16721
  }
@@ -16786,11 +16791,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16786
16791
  telemetry.track("User clicked execute node button", telemetryPayload);
16787
16792
  void externalHooks.run("nodeView.onRunNode", telemetryPayload);
16788
16793
  }
16789
- async function onOpenExecution(executionId) {
16794
+ async function onOpenExecution(executionId, nodeId) {
16790
16795
  canvasStore.startLoading();
16791
16796
  resetWorkspace();
16792
16797
  await initializeData();
16793
- const data = await openExecution(executionId);
16798
+ const data = await openExecution(executionId, nodeId);
16794
16799
  if (!data) {
16795
16800
  return;
16796
16801
  }
@@ -16975,7 +16980,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16975
16980
  } else if (json2 && json2.command === "openExecution") {
16976
16981
  try {
16977
16982
  isProductionExecutionPreview.value = json2.executionMode !== "manual" && json2.executionMode !== "evaluation";
16978
- await onOpenExecution(json2.executionId);
16983
+ await onOpenExecution(json2.executionId, json2.nodeId);
16979
16984
  canOpenNDV.value = json2.canOpenNDV ?? true;
16980
16985
  hideNodeIssues.value = json2.hideNodeIssues ?? false;
16981
16986
  isExecutionPreview.value = true;
@@ -17455,8 +17460,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17455
17460
  }, 8, ["id", "workflow", "workflow-object", "fallback-nodes", "show-fallback-nodes", "event-bus", "read-only", "executing", "key-bindings", "onUpdate:logs:inputOpen", "onUpdate:logs:outputOpen", "onUpdate:hasRangeSelection"])) : createCommentVNode("", true),
17456
17461
  isFocusPanelFeatureEnabled.value ? (openBlock(), createBlock(FocusPanel, {
17457
17462
  key: 1,
17458
- executable: !isCanvasReadOnly.value
17459
- }, null, 8, ["executable"])) : createCommentVNode("", true)
17463
+ "is-canvas-read-only": isCanvasReadOnly.value
17464
+ }, null, 8, ["is-canvas-read-only"])) : createCommentVNode("", true)
17460
17465
  ], 2);
17461
17466
  };
17462
17467
  }
@@ -17483,7 +17488,6 @@ const NodeView$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
17483
17488
  }, Symbol.toStringTag, { value: "Module" }));
17484
17489
  export {
17485
17490
  NodeSettings as N,
17486
- useNodeDocsUrl as a,
17487
- NodeView$1 as b,
17488
- useExperimentalNdvStore as u
17491
+ NodeView$1 as a,
17492
+ useNodeDocsUrl as u
17489
17493
  };