n8n-editor-ui 1.110.1 → 1.112.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 (137) hide show
  1. package/dist/assets/{AddDataStoreModal-D3j8deoq.css → AddDataStoreModal-B7jBhCjt.css} +5 -3
  2. package/dist/assets/{AddDataStoreModal-BXMe2_Yo.js → AddDataStoreModal-CLYFuWF4.js} +19 -9
  3. package/dist/assets/{AnimatedSpinner-CxbOZIWM.js → AnimatedSpinner-D7Nt5ZAz.js} +2 -1
  4. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-D-tU5Nsg.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BzK1dfc7.js} +2 -1
  5. package/dist/assets/{AuthView-ty01eojq.js → AuthView-Db8T18BU.js} +3 -2
  6. package/dist/assets/{ChangePasswordView-nmwMP1GF.js → ChangePasswordView-Clb7ta4t.js} +4 -3
  7. package/dist/assets/CollectionParameter-BGBoLgV2.js +5 -0
  8. package/dist/assets/{ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CSmXlf80.js → ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-BG5somV-.js} +2 -1
  9. package/dist/assets/{CredentialsView-IHneFweR.js → CredentialsView-CydHAPfb.js} +11 -9
  10. package/dist/assets/{DataStoreActions.vue_vue_type_script_setup_true_lang-Dug6Q9SH.js → DataStoreActions.vue_vue_type_script_setup_true_lang-qftEof1u.js} +7 -2
  11. package/dist/assets/{DataStoreDetailsView-DSpK3R_L.css → DataStoreDetailsView-C8fMxukz.css} +103 -82
  12. package/dist/assets/{DataStoreDetailsView-BZ7cLl6L.js → DataStoreDetailsView-DZK3pYSP.js} +1271 -696
  13. package/dist/assets/{DataStoreView-CzuM5UmJ.js → DataStoreView-CT0OnFLR.js} +14 -29
  14. package/dist/assets/{DemoFooter-CTFaju55.js → DemoFooter-DHwNRr6t.js} +7 -6
  15. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-DirQeoxa.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-Y97PdUKW.js} +2 -1
  16. package/dist/assets/{EntityNotFound-SgHEB5Zx.js → EntityNotFound-BDjIF_1D.js} +2 -1
  17. package/dist/assets/{EntityUnAuthorised-Ba1UjrRW.js → EntityUnAuthorised-Dz3DXm1-.js} +2 -1
  18. package/dist/assets/{ErrorView-DR_boVdR.js → ErrorView-BH0St5KC.js} +2 -1
  19. package/dist/assets/{EvaluationsRootView-DutxuCnH.js → EvaluationsRootView-CnJlr4OF.js} +2 -1
  20. package/dist/assets/{EvaluationsView-ClUUTcAC.js → EvaluationsView-DABp8z-m.js} +4 -3
  21. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-_0D6TWFX.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-gCj_FZH6.js} +3 -2
  22. package/dist/assets/{ExecutionsView-gF8JMKIq.js → ExecutionsView-CivgrlFE.js} +14 -12
  23. package/dist/assets/{ExecutionsView-DpVZbkhT.css → ExecutionsView-GKNLT5Ec.css} +1 -1
  24. package/dist/assets/{FixedCollectionParameter-DTkvAml6.css → FixedCollectionParameter-Dg7ZadcB.css} +18 -18
  25. package/dist/assets/{FixedCollectionParameter-D9zye2vX.js → FixedCollectionParameter-l8xC6wRw.js} +7 -3
  26. package/dist/assets/{ForgotMyPasswordView-EkWEVktJ.js → ForgotMyPasswordView-WF87QWAH.js} +4 -3
  27. package/dist/assets/{InfoAccordion-u7XlbH6a.js → InfoAccordion-8iWJ2sSU.js} +2 -1
  28. package/dist/assets/{InsightsChartAverageRuntime-CoBgniUR.js → InsightsChartAverageRuntime-BEd6XJn6.js} +5 -4
  29. package/dist/assets/{InsightsChartFailed-Dn6SuM16.js → InsightsChartFailed-CVwzK3ch.js} +5 -4
  30. package/dist/assets/{InsightsChartFailureRate-CJl1j0ob.js → InsightsChartFailureRate-BeA77_lp.js} +5 -4
  31. package/dist/assets/{InsightsChartTimeSaved-B5DjojXI.js → InsightsChartTimeSaved-DkgR7j7U.js} +5 -4
  32. package/dist/assets/{InsightsChartTotal-T1SFp7S-.js → InsightsChartTotal--1QxzvAZ.js} +5 -4
  33. package/dist/assets/{InsightsDashboard-CCDahAm5.js → InsightsDashboard-cHCzH4ZY.js} +13 -11
  34. package/dist/assets/{InsightsPaywall-Cp82bMTp.js → InsightsPaywall-neQ9PmYP.js} +2 -1
  35. package/dist/assets/{InsightsSummary-I5vKNG0I.js → InsightsSummary-BekdjOxv.js} +4 -2
  36. package/dist/assets/{InsightsTableWorkflows-D1U89HJ4.js → InsightsTableWorkflows-LMO-UU8h.js} +5 -4
  37. package/dist/assets/{Logo-DHG_oEvt.js → Logo-DXNRuN8z.js} +2 -1
  38. package/dist/assets/{LogsPanel-CvmnM4bL.js → LogsPanel-2GQHQFmh.js} +38 -23
  39. package/dist/assets/{LogsPanel-BinqqXXh.css → LogsPanel-CUsQIBpC.css} +17 -17
  40. package/dist/assets/{MainHeader-pDg5KXTB.css → MainHeader-6lIHYgJG.css} +16 -16
  41. package/dist/assets/{MainHeader-CTxGLJsC.js → MainHeader-BlBek00C.js} +14 -13
  42. package/dist/assets/{MainSidebar-D_xwIVsL.js → MainSidebar-qdHg8D5V.js} +3 -2
  43. package/dist/assets/{NodeCreation-iNUuiza-.js → NodeCreation-DO5k3aK3.js} +4 -3
  44. package/dist/assets/{NodeCreator-DMpMHPcz.js → NodeCreator-C3Pmrqkh.js} +4 -6
  45. package/dist/assets/{NodeDetailsView-BKEGFeZ7.js → NodeDetailsView-BACft9ex.js} +18 -17
  46. package/dist/assets/{NodeDetailsView-CjdovDgq.css → NodeDetailsView-CBYV4Rrz.css} +11 -11
  47. package/dist/assets/{NodeDetailsViewV2-XPdbzrLu.js → NodeDetailsViewV2--1S2eK5u.js} +14 -13
  48. package/dist/assets/{NodeView-Bj14aKtm.js → NodeView-BRwQ5Cqs.js} +185 -113
  49. package/dist/assets/{NodeView-BRa11kAq.css → NodeView-Chs2u0U9.css} +70 -31
  50. package/dist/assets/{PageViewLayout--7SkYsc9.js → PageViewLayout-DldtilHz.js} +2 -1
  51. package/dist/assets/{PrebuiltAgentTemplatesView-B7fK6krA.js → PrebuiltAgentTemplatesView-ChyN8J2x.js} +3 -2
  52. package/dist/assets/{ProjectBreadcrumb-BxMwihEP.js → ProjectBreadcrumb-9uWmVmc7.js} +2 -1
  53. package/dist/assets/{ProjectHeader-CVfPUZNI.js → ProjectHeader-CWapIKXf.js} +93 -23
  54. package/dist/assets/{ProjectSettings-t9C-Ly49.js → ProjectSettings-BlYXGYRx.js} +5 -3
  55. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-zVio8c2n.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DjpouOrH.js} +2 -1
  56. package/dist/assets/{ResourcesListLayout-O-Z59wTE.js → ResourcesListLayout-CfDIFGjS.js} +7 -6
  57. package/dist/assets/{ResourcesListLayout-B5eMf4SI.css → ResourcesListLayout-vTwRIDRz.css} +8 -8
  58. package/dist/assets/{RunDataJson-0J6_FxmM.js → RunDataJson-CTm3-xdY.js} +4 -3
  59. package/dist/assets/{RunDataJsonActions-ZbUSwg32.js → RunDataJsonActions-B_yBOGYB.js} +2 -1
  60. package/dist/assets/{RunDataParsedAiContent-Byf4f3hM.js → RunDataParsedAiContent-Cg9vUI0v.js} +3 -2
  61. package/dist/assets/{RunDataSearch-CyCbN9Nc.js → RunDataSearch-DPt2MvbI.js} +2 -1
  62. package/dist/assets/{RunDataTable-Rj0zhULj.js → RunDataTable-DHVRSqQT.js} +2 -1
  63. package/dist/assets/{SamlOnboarding-UDfF4zGH.js → SamlOnboarding-CN_xGqen.js} +4 -3
  64. package/dist/assets/{SelectedItemsInfo-CfUb0ZrI.css → SelectedItemsInfo-Dl4uynXs.css} +5 -3
  65. package/dist/assets/{SelectedItemsInfo-64VntNmH.js → SelectedItemsInfo-DzoCyQOW.js} +12 -7
  66. package/dist/assets/{SettingsApiView-BMYiuOCY.js → SettingsApiView-BIKCRKGM.js} +2 -1
  67. package/dist/assets/{SettingsCommunityNodesView-BULfnkhp.js → SettingsCommunityNodesView-ClWYmDB8.js} +7 -4
  68. package/dist/assets/{SettingsExternalSecrets-DgYPNKtM.js → SettingsExternalSecrets-D58JxT3V.js} +2 -1
  69. package/dist/assets/{SettingsLdapView-B64PusRO.js → SettingsLdapView-uImCjvMm.js} +2 -1
  70. package/dist/assets/{SettingsLogStreamingView-DiDxOEmg.js → SettingsLogStreamingView-DUn62Yq4.js} +2 -1
  71. package/dist/assets/{SettingsPersonalView-TP__Drcl.js → SettingsPersonalView-DGiCMsXu.js} +2 -1
  72. package/dist/assets/{SettingsSourceControl-FiqxT6qx.js → SettingsSourceControl-CVik5czR.js} +2 -1
  73. package/dist/assets/{SettingsSso-e5ntwax1.js → SettingsSso-BQkWpsdO.js} +2 -1
  74. package/dist/assets/{SettingsUsageAndPlan-BiNhzaI3.js → SettingsUsageAndPlan-BuwgmEka.js} +2 -1
  75. package/dist/assets/{SettingsUsersView-g3odVDFj.js → SettingsUsersView-DCmtHeMa.js} +2 -1
  76. package/dist/assets/{SettingsView-5M3uETdg.js → SettingsView-CrBThv_a.js} +2 -1
  77. package/dist/assets/{SetupView-DOX9lfRU.js → SetupView-CES8Gnnv.js} +4 -3
  78. package/dist/assets/{SetupWorkflowCredentialsButton-DMIEMB5C.js → SetupWorkflowCredentialsButton-Bjhx_rck.js} +2 -1
  79. package/dist/assets/{SetupWorkflowFromTemplateView-DEJsN9PM.js → SetupWorkflowFromTemplateView-C8kmCc7J.js} +4 -3
  80. package/dist/assets/{SigninView-FKXG_00n.js → SigninView-24xKsh_S.js} +4 -3
  81. package/dist/assets/{SignoutView-ppJ6lbCU.js → SignoutView-DgFIUUyh.js} +2 -1
  82. package/dist/assets/{SignupView-CmcH1BYL.js → SignupView-BckB-uUh.js} +4 -3
  83. package/dist/assets/{TableBase-DBeBHkOY.js → TableBase-CQEzJfeN.js} +2 -1
  84. package/dist/assets/{Tags-CdXa3Xx9.js → Tags-DbX-5_Fk.js} +2 -2
  85. package/dist/assets/{TemplateDetails-BxvljQA3.js → TemplateDetails-BGraOFbY.js} +3 -2
  86. package/dist/assets/{TemplateList-CV9csLUI.js → TemplateList-5P1N08U1.js} +2 -1
  87. package/dist/assets/{TemplatesCollectionView-4dKgKAQR.js → TemplatesCollectionView-D2-SU0eR.js} +7 -7
  88. package/dist/assets/{TemplatesSearchView-taSkU7cY.js → TemplatesSearchView-ncBXTfOM.js} +4 -3
  89. package/dist/assets/{TemplatesView-CXSlz1M1.js → TemplatesView-DO7HuUts.js} +2 -1
  90. package/dist/assets/{TemplatesWorkflowView-C-x3Aov1.js → TemplatesWorkflowView-BvrjU4RD.js} +7 -7
  91. package/dist/assets/{TriggerPanel-C-c5cPsc.js → TriggerPanel-BFQ6veDz.js} +10 -8
  92. package/dist/assets/{VariablesView-Bh0OeH4s.css → VariablesView-BHcrNXsw.css} +6 -6
  93. package/dist/assets/{VariablesView-C3mX49G9.js → VariablesView-BVzruwEA.js} +17 -14
  94. package/dist/assets/{WorkerView-DYK4TcTw.js → WorkerView-DRM6mgWJ.js} +9 -6
  95. package/dist/assets/{WorkflowActivator-DZIgVvgL.js → WorkflowActivator-BOt1oNlm.js} +4 -3
  96. package/dist/assets/{WorkflowExecutionsInfoAccordion-CivRIQhL.js → WorkflowExecutionsInfoAccordion-BjZUTKcs.js} +3 -2
  97. package/dist/assets/{WorkflowExecutionsLandingPage-kBAMGqy2.js → WorkflowExecutionsLandingPage-ENKxL7Yh.js} +4 -3
  98. package/dist/assets/{WorkflowExecutionsPreview-Bnd5-B-d.js → WorkflowExecutionsPreview-Cdgg29u5.js} +5 -4
  99. package/dist/assets/{WorkflowExecutionsView-CIfisPDk.js → WorkflowExecutionsView-t3W7WuAy.js} +9 -9
  100. package/dist/assets/{WorkflowHistory-JXOUdJnK.js → WorkflowHistory--OLvuBs1.js} +3 -2
  101. package/dist/assets/{WorkflowOnboardingView-Dc1KYhGC.js → WorkflowOnboardingView-C8y96ur1.js} +2 -1
  102. package/dist/assets/{WorkflowPreview-BF9SI0vn.js → WorkflowPreview-C1XHoZmU.js} +2 -1
  103. package/dist/assets/{WorkflowsView-CTnvp65F.js → WorkflowsView-B9rxI0No.js} +272 -62
  104. package/dist/assets/{WorkflowsView-BuvoAeDm.css → WorkflowsView-MF9XcT0u.css} +186 -0
  105. package/dist/assets/{canvas-DbK7UyVG.js → canvas-D2PwiGnN.js} +1 -1
  106. package/dist/assets/{chartjs.utils-DIRvJRrn.js → chartjs.utils-B6sz8yOh.js} +2 -2
  107. package/dist/assets/{core-Br-UFy15.js → core-Be7WBA6o.js} +2 -1
  108. package/dist/assets/{en-DdNgUrpa.js → en-CJyn5rnO.js} +32 -25
  109. package/dist/assets/{global-link-actions--TiC75iP.js → global-link-actions-B9WsUojd.js} +1 -1
  110. package/dist/assets/index-4g2Akj0I.js +13861 -0
  111. package/dist/assets/{index-DXNU_2Fk.css → index-B7wrqKiF.css} +8207 -8184
  112. package/dist/assets/{index--OJ5nhDf.js → index-BJG79OsS.js} +326678 -342011
  113. package/dist/assets/{index-D2apwRup.js → index-LOlKxvn4.js} +2 -1
  114. package/dist/assets/loadDefaultEn-DNiURDi9.js +8 -0
  115. package/dist/assets/{pickBy-BljOBsPy.js → pickBy-BMn768eW.js} +1 -1
  116. package/dist/assets/{readyToRunWorkflows.store-Dhb8bhvk.js → readyToRunWorkflows.store-HSpbq3Bf.js} +2 -1
  117. package/dist/assets/readyToRunWorkflowsV2.store-DcRVIsRt.js +138 -0
  118. package/dist/assets/sqlite3-DBpDb1lf.wasm +0 -0
  119. package/dist/assets/sqlite3-opfs-async-proxy-CYRFPDln.js +579 -0
  120. package/dist/assets/sqlite3-worker1-bundler-friendly-DF3WqBKq.js +11289 -0
  121. package/dist/assets/{templateActions-B4GEcBXU.js → templateActions-DR_XHPc4.js} +1 -1
  122. package/dist/assets/{useBeforeUnload-ZtUpNFCu.js → useBeforeUnload-DmAaB1v5.js} +2 -1
  123. package/dist/assets/{useExecutionDebugging-Bve-aaKO.js → useExecutionDebugging-B8xDxcb6.js} +2 -1
  124. package/dist/assets/{useImportCurlCommand-CAuor9Pu.js → useImportCurlCommand-BaN8fxqM.js} +2 -1
  125. package/dist/assets/{useProjectPages-CH519D2j.js → useProjectPages-B-oTYbCo.js} +2 -1
  126. package/dist/assets/{usePushConnection-Db77V5LR.js → usePushConnection-Bcd2_XWM.js} +36 -22
  127. package/dist/assets/{useWorkflowActivate-7Rw9KyzM.js → useWorkflowActivate-BDE2t3MM.js} +2 -1
  128. package/dist/assets/worker-DZxlyUFA.js +11826 -0
  129. package/dist/index.html +4 -3
  130. package/index.html +1 -1
  131. package/package.json +1 -1
  132. package/vite/i18n-locales-hmr-helpers.ts +19 -0
  133. package/vite.config.mts +33 -6
  134. package/dist/assets/CollectionParameter-CQji5w8u.js +0 -4
  135. package/dist/assets/Tag-BQAJRKFE.js +0 -32
  136. package/dist/assets/Tag-Cg-Hqs2H.css +0 -153
  137. package/dist/assets/dataStore.store-HuymAG46.js +0 -288
@@ -1,10 +1,11 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-iNUuiza-.js","assets/index--OJ5nhDf.js","assets/index-DXNU_2Fk.css","assets/NodeCreation-C4gQlPqI.css","assets/NodeDetailsView-BKEGFeZ7.js","assets/TriggerPanel-C-c5cPsc.js","assets/RunDataParsedAiContent-Byf4f3hM.js","assets/core-Br-UFy15.js","assets/RunDataParsedAiContent-wfIiKsq7.css","assets/ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CSmXlf80.js","assets/InfoAccordion-u7XlbH6a.js","assets/InfoAccordion-dxudNqVC.css","assets/TriggerPanel-DiD8pi0I.css","assets/useWorkflowActivate-7Rw9KyzM.js","assets/global-link-actions--TiC75iP.js","assets/useExecutionDebugging-Bve-aaKO.js","assets/useBeforeUnload-ZtUpNFCu.js","assets/canvas-DbK7UyVG.js","assets/readyToRunWorkflows.store-Dhb8bhvk.js","assets/NodeDetailsView-CjdovDgq.css","assets/NodeDetailsViewV2-XPdbzrLu.js","assets/NodeDetailsViewV2-J_3cfdea.css","assets/SetupWorkflowCredentialsButton-DMIEMB5C.js"])))=>i.map(i=>d[i]);
2
- import { d as defineComponent, aq as createEventBus, as as useCssModule, cx as useVueFlow, b_ as toRef, x as computed, cy as useCanvasMapping, r as ref, cz as refThrottled, h as createElementBlock, g as openBlock, n as normalizeClass, l as unref, j as createBaseVNode, X as renderSlot, e as createBlock, f as createCommentVNode, cA as Canvas, K as mergeProps, _ as _export_sfc, a1 as useWorkflowsStore, cB as useExpressionResolveCtx, p as N8nText, w as withCtx, k as createTextVNode, t as toDisplayString, cC as _sfc_main$b, i as createVNode, aa as _sfc_main$c, bO as provide, cD as ExpressionLocalResolveContextSymbol, ad as useNodeTypesStore, bX as NodeIcon, F as Fragment, cE as _sfc_main$d, aG as useTemplateRef, bL as useNodeHelpers, cF as useFocusPanelStore, cG as useNodeSettingsParameters, cH as useEnvironmentsStore, cI as useExperimentalNdvStore, aY as useNDVStore, cJ as useDeviceSupport, cv as useActiveElement, cK as useTelemetryContext, cL as HTML_NODE_TYPE, cM as isValueExpression, cN as isResourceLocatorValue, cO as AI_TRANSFORM_NODE_TYPE, cP as useResolvedExpression, a7 as watch, cl as useThrottleFn, B as withModifiers, N as N8nIcon, cQ as InfoTip, c as useI18n, cR as __unplugin_components_2, cS as __unplugin_components_3, cT as __unplugin_components_4, cU as __unplugin_components_5, cV as __unplugin_components_6, cW as __unplugin_components_7, cX as __unplugin_components_8, cY as __unplugin_components_9, cZ as N8nInput, O as N8nRadioButtons, ap as normalizeStyle, ch as N8nResizeWrapper, c_ as getParameterTypeOption, c$ as htmlEditorEventBus, d0 as parseFromExpression, d1 as isValidParameterOption, d2 as formatAsExpression, al as useTelemetry, Y as nextTick, d3 as hasFocusOnInput, d4 as isFocusableEl, bB as isChatNode, d5 as truncateBeforeLast, q as N8nButton, ab as I18nT, cg as KeyboardShortcutTooltip, aM as N8nActionDropdown, d6 as reactive, o as onMounted, c7 as onUnmounted, d7 as _sfc_main$e, D as useI18n$1, b as useRouter, a2 as useRoute, a as useToast, ax as useDocumentTitle, az as useWorkflowHelpers, ay as useWorkflowSaving, Q as useUIStore, af as useSourceControlStore, d8 as useNodeCreatorStore, v as useSettingsStore, d9 as useCredentialsStore, da as useExternalSecretsStore, at as useRootStore, aZ as useExecutionsStore, co as useCanvasStore, aw as useNpsSurveyStore, db as useHistoryStore, au as useProjectsStore, u as useUsersStore, ar as useTagsStore, a0 as usePushConnectionStore, bk as useTemplatesStore, dc as useBuilderStore, av as useFoldersStore, dd as usePostHog, de as useAgentRequestStore, bK as useLogsStore, bM as useRunWorkflow, bP as useCanvasOperations, df as useWorkflowExtraction, ca as useClipboard, bn as useKeybindings, bu as ABOUT_MODAL_KEY, a3 as PLACEHOLDER_EMPTY_WORKFLOW_ID, dg as NEW_WORKFLOW_ID, V as VIEWS, dh as NDV_UI_OVERHAUL_EXPERIMENT, bQ as START_NODE_TYPE, di as getNodeViewTab, L as MAIN_HEADER_TABS, dj as VALID_WORKFLOW_IMPORT_URL_REGEX, am as useMessage, an as MODAL_CONFIRM, dk as jsonParse, aB as getResourcePermissions, bH as CHAT_TRIGGER_NODE_TYPE, bG as MANUAL_CHAT_TRIGGER_NODE_TYPE, dl as EVALUATION_TRIGGER_NODE_TYPE, dm as getBounds, dn as onBeforeRouteLeave, b1 as onBeforeMount, ak as WORKFLOW_SETTINGS_MODAL_KEY, bp as useExternalHooks, dp as onActivated, dq as onDeactivated, W as onBeforeUnmount, dr as Suspense, ds as defineAsyncComponent, z as N8nCallout, aU as __vitePreload, aE as EnterpriseEditionFeature, dt as NODE_CREATOR_OPEN_SOURCES, du as EVALUATION_NODE_TYPE, dv as getSampleWorkflowByTemplateId, dw as tryToParseNumber, aO as nodeViewEventBus, bC as NodeConnectionTypes, dx as createCanvasConnectionHandleString, dy as CanvasConnectionMode, dz as isValidNodeConnectionType, dA as sourceControlEventBus, dB as getNodesWithNormalizedPosition, aW as h, dC as CanvasNodeRenderType, dD as shouldIgnoreCanvasShortcut, b0 as STICKY_NODE_TYPE, dE as needsAgentInput, dF as FROM_AI_PARAMETERS_MODAL_KEY, dG as historyBus, dH as DRAG_EVENT_DATA_KEY } from "./index--OJ5nhDf.js";
3
- import { g as globalLinkActionsEventBus } from "./global-link-actions--TiC75iP.js";
4
- import { u as useExecutionDebugging } from "./useExecutionDebugging-Bve-aaKO.js";
5
- import { u as useBeforeUnload } from "./useBeforeUnload-ZtUpNFCu.js";
6
- import { c as canvasEventBus } from "./canvas-DbK7UyVG.js";
7
- import { u as useAITemplatesStarterCollectionStore, a as useReadyToRunWorkflowsStore } from "./readyToRunWorkflows.store-Dhb8bhvk.js";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-DO5k3aK3.js","assets/index-4g2Akj0I.js","assets/index-BJG79OsS.js","assets/index-B7wrqKiF.css","assets/NodeCreation-C4gQlPqI.css","assets/NodeDetailsView-BACft9ex.js","assets/TriggerPanel-BFQ6veDz.js","assets/RunDataParsedAiContent-Cg9vUI0v.js","assets/core-Be7WBA6o.js","assets/RunDataParsedAiContent-wfIiKsq7.css","assets/ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-BG5somV-.js","assets/InfoAccordion-8iWJ2sSU.js","assets/InfoAccordion-dxudNqVC.css","assets/TriggerPanel-DiD8pi0I.css","assets/useWorkflowActivate-BDE2t3MM.js","assets/global-link-actions-B9WsUojd.js","assets/useExecutionDebugging-B8xDxcb6.js","assets/useBeforeUnload-DmAaB1v5.js","assets/canvas-D2PwiGnN.js","assets/readyToRunWorkflows.store-HSpbq3Bf.js","assets/NodeDetailsView-CBYV4Rrz.css","assets/NodeDetailsViewV2--1S2eK5u.js","assets/NodeDetailsViewV2-J_3cfdea.css","assets/SetupWorkflowCredentialsButton-Bjhx_rck.js"])))=>i.map(i=>d[i]);
2
+ import { o as defineComponent, bB as useTemplateRef, br as toRef, a9 as computed, b8 as ref, ac as createElementBlock, b1 as openBlock, aQ as normalizeClass, u as unref, ad as createBaseVNode, bb as renderSlot, aa as createBlock, ab as createCommentVNode, aP as mergeProps, w as watch, bI as withCtx, bo as toDisplayString, F as Fragment, ba as renderList, k as createVNode, ah as createTextVNode, b3 as provide, bT as useI18n, aS as normalizeStyle, n as nextTick, bX as I18nT, b6 as reactive, r as onMounted, s as onUnmounted, aU as onBeforeMount, aT as onActivated, aW as onDeactivated, aV as onBeforeUnmount, a0 as Suspense, aj as defineAsyncComponent, bN as __vitePreload, K as h } from "./index-4g2Akj0I.js";
3
+ import { a1 as createEventBus, a3 as useCssModule, bQ as useVueFlow, bR as useCanvasMapping, bS as refThrottled, bT as Canvas, _ as _export_sfc, C as useWorkflowsStore, bU as useExpressionResolveCtx, bV as useContextMenuItems, au as useNDVStore, d as N8nText, e as N8nButton, bW as N8nKeyboardShortcut, bX as _sfc_main$b, bY as ExpressionLocalResolveContextSymbol, K as useNodeTypesStore, bp as NodeIcon, I as _sfc_main$c, bZ as _sfc_main$d, be as useNodeHelpers, b_ as useFocusPanelStore, b$ as useNodeSettingsParameters, c0 as useEnvironmentsStore, c1 as useExperimentalNdvStore, c2 as useDeviceSupport, bO as useActiveElement, c3 as useTelemetryContext, c4 as CanvasNodeRenderType, c5 as HTML_NODE_TYPE, c6 as isValueExpression, c7 as isResourceLocatorValue, c8 as AI_TRANSFORM_NODE_TYPE, c9 as useResolvedExpression, bG as useThrottleFn, w as withModifiers, N as N8nIcon, ca as InfoTip, cb as __unplugin_components_2, cc as __unplugin_components_3, cd as __unplugin_components_4, ce as __unplugin_components_5, cf as __unplugin_components_6, cg as __unplugin_components_7, ch as __unplugin_components_8, ci as __unplugin_components_9, cj as N8nInput, q as N8nRadioButtons, bC as N8nResizeWrapper, ck as getParameterTypeOption, cl as htmlEditorEventBus, cm as parseFromExpression, cn as isValidParameterOption, co as formatAsExpression, Y as useTelemetry, cp as hasFocusOnInput, cq as isFocusableEl, b4 as isChatNode, cr as truncateBeforeLast, bB as KeyboardShortcutTooltip, am as N8nActionDropdown, cs as _sfc_main$e, k as useI18n$1, b as useRouter, D as useRoute, a as useToast, a8 as useDocumentTitle, aa as useWorkflowHelpers, a9 as useWorkflowSaving, s as useUIStore, O as useSourceControlStore, ct as useNodeCreatorStore, g as useSettingsStore, cu as useCredentialsStore, cv as useExternalSecretsStore, a4 as useRootStore, av as useExecutionsStore, bI as useCanvasStore, a7 as useNpsSurveyStore, cw as useHistoryStore, a5 as useProjectsStore, u as useUsersStore, a2 as useTagsStore, A as usePushConnectionStore, aQ as useTemplatesStore, cx as useBuilderStore, a6 as useFoldersStore, cy as usePostHog, cz as useAgentRequestStore, bd as useLogsStore, bf as useRunWorkflow, bh as useCanvasOperations, cA as useWorkflowExtraction, bv as useClipboard, aT as useKeybindings, aZ as ABOUT_MODAL_KEY, P as PLACEHOLDER_EMPTY_WORKFLOW_ID, cB as NEW_WORKFLOW_ID, V as VIEWS, cC as NDV_UI_OVERHAUL_EXPERIMENT, bi as START_NODE_TYPE, cD as getNodeViewTab, p as MAIN_HEADER_TABS, cE as VALID_WORKFLOW_IMPORT_URL_REGEX, Z as useMessage, $ as MODAL_CONFIRM, cF as jsonParse, ac as getResourcePermissions, ba as CHAT_TRIGGER_NODE_TYPE, b9 as MANUAL_CHAT_TRIGGER_NODE_TYPE, cG as EVALUATION_TRIGGER_NODE_TYPE, cH as getBounds, cI as onBeforeRouteLeave, X as WORKFLOW_SETTINGS_MODAL_KEY, aV as useExternalHooks, i as N8nCallout, af as EnterpriseEditionFeature, cJ as NODE_CREATOR_OPEN_SOURCES, cK as EVALUATION_NODE_TYPE, cL as getSampleWorkflowByTemplateId, cM as tryToParseNumber, ao as nodeViewEventBus, b5 as NodeConnectionTypes, cN as createCanvasConnectionHandleString, cO as CanvasConnectionMode, cP as isValidNodeConnectionType, cQ as sourceControlEventBus, cR as getNodesWithNormalizedPosition, cS as shouldIgnoreCanvasShortcut, ay as STICKY_NODE_TYPE, cT as needsAgentInput, cU as FROM_AI_PARAMETERS_MODAL_KEY, cV as historyBus, cW as DRAG_EVENT_DATA_KEY } from "./index-BJG79OsS.js";
4
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-B9WsUojd.js";
5
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-B8xDxcb6.js";
6
+ import { u as useBeforeUnload } from "./useBeforeUnload-DmAaB1v5.js";
7
+ import { c as canvasEventBus } from "./canvas-D2PwiGnN.js";
8
+ import { u as useAITemplatesStarterCollectionStore, a as useReadyToRunWorkflowsStore } from "./readyToRunWorkflows.store-HSpbq3Bf.js";
8
9
  const _sfc_main$a = /* @__PURE__ */ defineComponent({
9
10
  ...{
10
11
  inheritAttrs: false
@@ -18,10 +19,12 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
18
19
  showFallbackNodes: { type: Boolean, default: true },
19
20
  eventBus: { default: () => createEventBus() },
20
21
  readOnly: { type: Boolean },
21
- executing: { type: Boolean }
22
+ executing: { type: Boolean },
23
+ suppressInteraction: { type: Boolean, default: false }
22
24
  },
23
- setup(__props) {
25
+ setup(__props, { expose: __expose }) {
24
26
  const props = __props;
27
+ const canvasRef = useTemplateRef("canvas");
25
28
  const $style = useCssModule();
26
29
  const { onNodesInitialized } = useVueFlow(props.id);
27
30
  const workflow = toRef(props, "workflow");
@@ -44,6 +47,9 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
44
47
  });
45
48
  const mappedNodesThrottled = refThrottled(mappedNodes, 200);
46
49
  const mappedConnectionsThrottled = refThrottled(mappedConnections, 200);
50
+ __expose({
51
+ executeContextMenuAction: (action, nodeIds) => canvasRef.value?.executeContextMenuAction(action, nodeIds)
52
+ });
47
53
  return (_ctx, _cache) => {
48
54
  return openBlock(), createElementBlock("div", {
49
55
  class: normalizeClass(unref($style).wrapper),
@@ -55,13 +61,15 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
55
61
  }, [
56
62
  workflow.value ? (openBlock(), createBlock(Canvas, mergeProps({
57
63
  key: 0,
64
+ ref: "canvas",
58
65
  id: _ctx.id,
59
66
  nodes: _ctx.executing ? unref(mappedNodesThrottled) : unref(mappedNodes),
60
67
  connections: _ctx.executing ? unref(mappedConnectionsThrottled) : unref(mappedConnections),
61
68
  "event-bus": _ctx.eventBus,
62
69
  "read-only": _ctx.readOnly,
63
- executing: _ctx.executing
64
- }, _ctx.$attrs), null, 16, ["id", "nodes", "connections", "event-bus", "read-only", "executing"])) : createCommentVNode("", true)
70
+ executing: _ctx.executing,
71
+ "suppress-interaction": _ctx.suppressInteraction
72
+ }, _ctx.$attrs), null, 16, ["id", "nodes", "connections", "event-bus", "read-only", "executing", "suppress-interaction"])) : createCommentVNode("", true)
65
73
  ], 2),
66
74
  renderSlot(_ctx.$slots, "default")
67
75
  ], 2);
@@ -109,50 +117,83 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
109
117
  __name: "ExperimentalNodeDetailsDrawer",
110
118
  props: {
111
119
  node: {},
112
- nodes: {}
120
+ nodeIds: {},
121
+ isReadOnly: { type: Boolean }
113
122
  },
114
- emits: ["openNdv"],
123
+ emits: ["openNdv", "contextMenuAction"],
115
124
  setup(__props, { emit: __emit }) {
116
125
  const emit = __emit;
117
126
  const expressionResolveCtx = useExpressionResolveCtx(computed(() => __props.node));
127
+ const contextMenuItems = useContextMenuItems(computed(() => __props.nodeIds));
128
+ const ndvStore = useNDVStore();
129
+ const ndvCloseTimes = ref(0);
130
+ const nodeSettingsViewKey = computed(() => [__props.node.id, ndvCloseTimes.value].join("|"));
131
+ watch(
132
+ () => ndvStore.activeNodeName,
133
+ (name, oldName) => {
134
+ if (name === null && oldName !== null) {
135
+ ndvCloseTimes.value += 1;
136
+ }
137
+ }
138
+ );
118
139
  provide(ExpressionLocalResolveContextSymbol, expressionResolveCtx);
119
140
  return (_ctx, _cache) => {
120
- const _component_N8nIconButton = _sfc_main$c;
121
141
  return openBlock(), createElementBlock("div", {
122
142
  class: normalizeClass(_ctx.$style.component)
123
143
  }, [
124
- _ctx.nodes.length > 1 ? (openBlock(), createBlock(unref(N8nText), {
144
+ _ctx.nodeIds.length > 1 ? (openBlock(), createBlock(unref(N8nText), {
125
145
  key: 0,
126
- color: "text-base"
146
+ tag: "div",
147
+ color: "text-base",
148
+ class: normalizeClass(_ctx.$style.multipleNodes)
127
149
  }, {
128
150
  default: withCtx(() => [
129
- createTextVNode(toDisplayString(_ctx.nodes.length) + " nodes selected ", 1)
130
- ]),
131
- _: 1
132
- })) : _ctx.node ? (openBlock(), createBlock(_sfc_main$b, {
133
- key: _ctx.node.id,
134
- "node-id": _ctx.node.id
135
- }, {
136
- actions: withCtx(() => [
137
- createVNode(_component_N8nIconButton, {
138
- icon: "maximize-2",
139
- type: "secondary",
140
- text: "",
141
- size: "mini",
142
- "icon-size": "large",
143
- "aria-label": "Expand",
144
- onClick: _cache[0] || (_cache[0] = ($event) => emit("openNdv"))
145
- })
151
+ createBaseVNode("div", null, toDisplayString(_ctx.nodeIds.length) + " nodes selected", 1),
152
+ createBaseVNode("ul", {
153
+ class: normalizeClass(_ctx.$style.multipleNodesActions)
154
+ }, [
155
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(contextMenuItems), (action) => {
156
+ return openBlock(), createElementBlock("li", {
157
+ key: action.id,
158
+ class: normalizeClass(_ctx.$style.multipleNodesAction)
159
+ }, [
160
+ createVNode(unref(N8nButton), {
161
+ type: "secondary",
162
+ disabled: action.disabled,
163
+ onClick: ($event) => emit("contextMenuAction", action.id, _ctx.nodeIds)
164
+ }, {
165
+ default: withCtx(() => [
166
+ createTextVNode(toDisplayString(action.label) + " ", 1),
167
+ action.shortcut ? (openBlock(), createBlock(unref(N8nKeyboardShortcut), mergeProps({
168
+ key: 0,
169
+ ref_for: true
170
+ }, action.shortcut), null, 16)) : createCommentVNode("", true)
171
+ ]),
172
+ _: 2
173
+ }, 1032, ["disabled", "onClick"])
174
+ ], 2);
175
+ }), 128))
176
+ ], 2)
146
177
  ]),
147
178
  _: 1
148
- }, 8, ["node-id"])) : createCommentVNode("", true)
179
+ }, 8, ["class"])) : _ctx.node ? (openBlock(), createBlock(_sfc_main$b, {
180
+ key: nodeSettingsViewKey.value,
181
+ "node-id": _ctx.node.id,
182
+ "is-read-only": _ctx.isReadOnly
183
+ }, null, 8, ["node-id", "is-read-only"])) : createCommentVNode("", true)
149
184
  ], 2);
150
185
  };
151
186
  }
152
187
  });
153
- const component$2 = "_component_1u8pj_123";
188
+ const component$2 = "_component_6x5cw_123";
189
+ const multipleNodes = "_multipleNodes_6x5cw_128";
190
+ const multipleNodesActions = "_multipleNodesActions_6x5cw_138";
191
+ const multipleNodesAction = "_multipleNodesAction_6x5cw_138";
154
192
  const style0$5 = {
155
- component: component$2
193
+ component: component$2,
194
+ multipleNodes,
195
+ multipleNodesActions,
196
+ multipleNodesAction
156
197
  };
157
198
  const cssModules$5 = {
158
199
  "$style": style0$5
@@ -172,7 +213,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
172
213
  const emit = __emit;
173
214
  return (_ctx, _cache) => {
174
215
  return openBlock(), createBlock(unref(N8nText), {
175
- tag: "div",
216
+ tag: "header",
176
217
  size: "small",
177
218
  bold: "",
178
219
  class: normalizeClass(_ctx.$style.component)
@@ -219,7 +260,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
219
260
  onClick: _cache[0] || (_cache[0] = ($event) => emit("clearParameter"))
220
261
  })) : (openBlock(), createBlock(unref(_sfc_main$c), {
221
262
  key: 1,
222
- icon: "maximize-2",
263
+ icon: "expand",
223
264
  size: "small",
224
265
  type: "tertiary",
225
266
  text: "",
@@ -230,6 +271,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
230
271
  "data-test-id": "node-execute-button",
231
272
  "node-name": _ctx.node.name,
232
273
  tooltip: `Execute ${_ctx.node.name}`,
274
+ type: "secondary",
233
275
  size: "small",
234
276
  icon: "play",
235
277
  square: true,
@@ -259,7 +301,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
259
301
  props: {
260
302
  isCanvasReadOnly: { type: Boolean }
261
303
  },
262
- emits: ["focus", "saveKeyboardShortcut"],
304
+ emits: ["focus", "saveKeyboardShortcut", "contextMenuAction"],
263
305
  setup(__props, { emit: __emit }) {
264
306
  const props = __props;
265
307
  const emit = __emit;
@@ -307,8 +349,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
307
349
  if (!experimentalNdvStore.isNdvInFocusPanelEnabled || resolvedParameter.value) {
308
350
  return resolvedParameter.value?.node;
309
351
  }
310
- const selected = vueFlow.getSelectedNodes.value[0]?.id;
311
- return selected ? workflowsStore.allNodes.find((n) => n.id === selected) : void 0;
352
+ const selected = vueFlow.getSelectedNodes.value[0];
353
+ return selected?.data?.render.type === CanvasNodeRenderType.Default ? workflowsStore.allNodes.find((n) => n.id === selected.id) : void 0;
312
354
  });
313
355
  const multipleNodesSelected = computed(() => vueFlow.getSelectedNodes.value.length > 1);
314
356
  const isExecutable = computed(() => {
@@ -372,6 +414,13 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
372
414
  };
373
415
  });
374
416
  const isNodeExecuting = computed(() => workflowsStore.isNodeExecuting(node.value?.name ?? ""));
417
+ const selectedNodeIds = computed(() => vueFlow.getSelectedNodes.value.map((n) => n.id));
418
+ const emptyTitle = computed(
419
+ () => experimentalNdvStore.isNdvInFocusPanelEnabled ? locale.baseText("nodeView.focusPanel.v2.noParameters.title") : locale.baseText("nodeView.focusPanel.noParameters.title")
420
+ );
421
+ const emptySubtitle = computed(
422
+ () => experimentalNdvStore.isNdvInFocusPanelEnabled ? locale.baseText("nodeView.focusPanel.v2.noParameters.subtitle") : locale.baseText("nodeView.focusPanel.noParameters.subtitle")
423
+ );
375
424
  const { resolvedExpression } = useResolvedExpression({
376
425
  expression,
377
426
  additionalData: resolvedAdditionalExpressionData,
@@ -549,8 +598,12 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
549
598
  return focusPanelActive.value ? (openBlock(), createElementBlock("div", {
550
599
  key: 0,
551
600
  ref: "wrapper",
552
- class: normalizeClass(_ctx.$style.wrapper),
553
- onKeydown: _cache[9] || (_cache[9] = withModifiers(() => {
601
+ "data-test-id": "focus-panel",
602
+ class: normalizeClass([
603
+ _ctx.$style.wrapper,
604
+ { [_ctx.$style.isNdvInFocusPanelEnabled]: unref(experimentalNdvStore).isNdvInFocusPanelEnabled }
605
+ ]),
606
+ onKeydown: _cache[10] || (_cache[10] = withModifiers(() => {
554
607
  }, ["stop"]))
555
608
  }, [
556
609
  createVNode(unref(N8nResizeWrapper), {
@@ -577,7 +630,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
577
630
  }, null, 8, ["node", "parameter", "is-executable"])) : createCommentVNode("", true),
578
631
  resolvedParameter.value ? (openBlock(), createElementBlock("div", {
579
632
  key: 1,
580
- class: normalizeClass(_ctx.$style.content)
633
+ class: normalizeClass(_ctx.$style.content),
634
+ "data-test-id": "focus-parameter"
581
635
  }, [
582
636
  !unref(experimentalNdvStore).isNdvInFocusPanelEnabled ? (openBlock(), createElementBlock("div", {
583
637
  key: 0,
@@ -794,55 +848,57 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
794
848
  ], 2)) : node.value && unref(experimentalNdvStore).isNdvInFocusPanelEnabled ? (openBlock(), createBlock(ExperimentalNodeDetailsDrawer, {
795
849
  key: 2,
796
850
  node: node.value,
797
- nodes: unref(vueFlow).getSelectedNodes.value,
798
- onOpenNdv
799
- }, null, 8, ["node", "nodes"])) : (openBlock(), createElementBlock("div", {
851
+ "node-ids": selectedNodeIds.value,
852
+ "is-read-only": isReadOnly.value,
853
+ onOpenNdv,
854
+ onContextMenuAction: _cache[9] || (_cache[9] = (action, nodeIds) => emit("contextMenuAction", action, nodeIds))
855
+ }, null, 8, ["node", "node-ids", "is-read-only"])) : (openBlock(), createElementBlock("div", {
800
856
  key: 3,
801
857
  class: normalizeClass([_ctx.$style.content, _ctx.$style.emptyContent])
802
858
  }, [
803
859
  createBaseVNode("div", {
804
- class: normalizeClass(_ctx.$style.emptyText)
860
+ class: normalizeClass(_ctx.$style.focusParameterWrapper)
805
861
  }, [
806
862
  createBaseVNode("div", {
807
- class: normalizeClass(_ctx.$style.focusParameterWrapper)
863
+ class: normalizeClass(_ctx.$style.iconWrapper)
808
864
  }, [
809
- createBaseVNode("div", {
810
- class: normalizeClass(_ctx.$style.iconWrapper)
811
- }, [
812
- createVNode(_component_N8nIcon, {
813
- class: normalizeClass(_ctx.$style.forceHover),
814
- icon: "panel-right",
815
- size: "medium"
816
- }, null, 8, ["class"]),
817
- createVNode(_component_N8nIcon, {
818
- class: normalizeClass(_ctx.$style.pointerIcon),
819
- icon: "mouse-pointer",
820
- color: "text-dark",
821
- size: "large"
822
- }, null, 8, ["class"])
823
- ], 2),
824
865
  createVNode(_component_N8nIcon, {
825
- icon: "ellipsis-vertical",
826
- size: "small",
827
- color: "text-base"
828
- }),
829
- createVNode(_component_N8nRadioButtons, {
830
- size: "small",
831
- "model-value": "expression",
832
- disabled: true,
833
- options: [
834
- { label: unref(locale).baseText("parameterInput.fixed"), value: "fixed" },
835
- { label: unref(locale).baseText("parameterInput.expression"), value: "expression" }
836
- ]
837
- }, null, 8, ["options"])
866
+ class: normalizeClass(_ctx.$style.forceHover),
867
+ icon: "panel-right",
868
+ size: "medium"
869
+ }, null, 8, ["class"]),
870
+ createVNode(_component_N8nIcon, {
871
+ class: normalizeClass(_ctx.$style.pointerIcon),
872
+ icon: "mouse-pointer",
873
+ color: "text-dark",
874
+ size: "large"
875
+ }, null, 8, ["class"])
838
876
  ], 2),
877
+ createVNode(_component_N8nIcon, {
878
+ icon: "ellipsis-vertical",
879
+ size: "small",
880
+ color: "text-base"
881
+ }),
882
+ createVNode(_component_N8nRadioButtons, {
883
+ size: "small",
884
+ "model-value": "expression",
885
+ disabled: true,
886
+ options: [
887
+ { label: unref(locale).baseText("parameterInput.fixed"), value: "fixed" },
888
+ { label: unref(locale).baseText("parameterInput.expression"), value: "expression" }
889
+ ]
890
+ }, null, 8, ["options"])
891
+ ], 2),
892
+ createBaseVNode("div", {
893
+ class: normalizeClass(_ctx.$style.emptyText)
894
+ }, [
839
895
  createVNode(unref(N8nText), {
840
896
  color: "text-base",
841
897
  size: "medium",
842
898
  bold: true
843
899
  }, {
844
900
  default: withCtx(() => [
845
- createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.noParameters.title")), 1)
901
+ createTextVNode(toDisplayString(emptyTitle.value), 1)
846
902
  ]),
847
903
  _: 1
848
904
  }),
@@ -851,7 +907,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
851
907
  size: "small"
852
908
  }, {
853
909
  default: withCtx(() => [
854
- createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.noParameters.subtitle")), 1)
910
+ createTextVNode(toDisplayString(emptySubtitle.value), 1)
855
911
  ]),
856
912
  _: 1
857
913
  })
@@ -865,32 +921,34 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
865
921
  };
866
922
  }
867
923
  });
868
- const wrapper$1 = "_wrapper_1yhze_123";
869
- const container = "_container_1yhze_135";
870
- const content = "_content_1yhze_141";
871
- const emptyContent = "_emptyContent_1yhze_147";
872
- const emptyText = "_emptyText_1yhze_152";
873
- const focusParameterWrapper = "_focusParameterWrapper_1yhze_158";
874
- const iconWrapper$1 = "_iconWrapper_1yhze_165";
875
- const pointerIcon = "_pointerIcon_1yhze_169";
876
- const tabHeader = "_tabHeader_1yhze_179";
877
- const tabHeaderText = "_tabHeaderText_1yhze_186";
878
- const buttonWrapper = "_buttonWrapper_1yhze_191";
879
- const parameterDetailsWrapper = "_parameterDetailsWrapper_1yhze_196";
880
- const parameterOptionsWrapper = "_parameterOptionsWrapper_1yhze_203";
881
- const noExecutionDataTip = "_noExecutionDataTip_1yhze_207";
882
- const editorContainer = "_editorContainer_1yhze_210";
883
- const editor = "_editor_1yhze_210";
884
- const delayedShow = "_delayedShow_1yhze_225";
885
- const triggerShow = "_triggerShow_1yhze_1";
886
- const closeButton = "_closeButton_1yhze_236";
887
- const heightFull = "_heightFull_1yhze_240";
888
- const forceHover = "_forceHover_1yhze_244";
924
+ const wrapper$1 = "_wrapper_1v9yh_123";
925
+ const container = "_container_1v9yh_135";
926
+ const content = "_content_1v9yh_141";
927
+ const emptyContent = "_emptyContent_1v9yh_147";
928
+ const isNdvInFocusPanelEnabled = "_isNdvInFocusPanelEnabled_1v9yh_152";
929
+ const emptyText = "_emptyText_1v9yh_155";
930
+ const focusParameterWrapper = "_focusParameterWrapper_1v9yh_161";
931
+ const iconWrapper$1 = "_iconWrapper_1v9yh_168";
932
+ const pointerIcon = "_pointerIcon_1v9yh_172";
933
+ const tabHeader = "_tabHeader_1v9yh_182";
934
+ const tabHeaderText = "_tabHeaderText_1v9yh_189";
935
+ const buttonWrapper = "_buttonWrapper_1v9yh_194";
936
+ const parameterDetailsWrapper = "_parameterDetailsWrapper_1v9yh_199";
937
+ const parameterOptionsWrapper = "_parameterOptionsWrapper_1v9yh_206";
938
+ const noExecutionDataTip = "_noExecutionDataTip_1v9yh_210";
939
+ const editorContainer = "_editorContainer_1v9yh_213";
940
+ const editor = "_editor_1v9yh_213";
941
+ const delayedShow = "_delayedShow_1v9yh_228";
942
+ const triggerShow = "_triggerShow_1v9yh_1";
943
+ const closeButton = "_closeButton_1v9yh_239";
944
+ const heightFull = "_heightFull_1v9yh_243";
945
+ const forceHover = "_forceHover_1v9yh_247";
889
946
  const style0$3 = {
890
947
  wrapper: wrapper$1,
891
948
  container,
892
949
  content,
893
950
  emptyContent,
951
+ isNdvInFocusPanelEnabled,
894
952
  emptyText,
895
953
  focusParameterWrapper,
896
954
  iconWrapper: iconWrapper$1,
@@ -1312,16 +1370,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1312
1370
  __name: "NodeView",
1313
1371
  setup(__props) {
1314
1372
  const LazyNodeCreation = defineAsyncComponent(
1315
- async () => await __vitePreload(() => import("./NodeCreation-iNUuiza-.js"), true ? __vite__mapDeps([0,1,2,3]) : void 0)
1373
+ async () => await __vitePreload(() => import("./NodeCreation-DO5k3aK3.js"), true ? __vite__mapDeps([0,1,2,3,4]) : void 0)
1316
1374
  );
1317
1375
  const LazyNodeDetailsView = defineAsyncComponent(
1318
- async () => await __vitePreload(() => import("./NodeDetailsView-BKEGFeZ7.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) : void 0)
1376
+ async () => await __vitePreload(() => import("./NodeDetailsView-BACft9ex.js"), true ? __vite__mapDeps([5,2,1,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]) : void 0)
1319
1377
  );
1320
1378
  const LazyNodeDetailsViewV2 = defineAsyncComponent(
1321
- async () => await __vitePreload(() => import("./NodeDetailsViewV2-XPdbzrLu.js"), true ? __vite__mapDeps([20,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,21]) : void 0)
1379
+ async () => await __vitePreload(() => import("./NodeDetailsViewV2--1S2eK5u.js"), true ? __vite__mapDeps([21,2,1,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22]) : void 0)
1322
1380
  );
1323
1381
  const LazySetupWorkflowCredentialsButton = defineAsyncComponent(
1324
- async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-DMIEMB5C.js"), true ? __vite__mapDeps([22,1,2]) : void 0)
1382
+ async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-Bjhx_rck.js"), true ? __vite__mapDeps([23,2,1,3]) : void 0)
1325
1383
  );
1326
1384
  const $style = useCssModule();
1327
1385
  const router = useRouter();
@@ -1417,6 +1475,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1417
1475
  useKeybindings({
1418
1476
  ctrl_alt_o: () => uiStore.openModal(ABOUT_MODAL_KEY)
1419
1477
  });
1478
+ const canvasRef = useTemplateRef("canvas");
1420
1479
  const isLoading = ref(true);
1421
1480
  const isBlankRedirect = ref(false);
1422
1481
  const readOnlyNotification = ref(null);
@@ -1581,7 +1640,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1581
1640
  }
1582
1641
  }
1583
1642
  async function fetchAndSetProject(projectId) {
1584
- if (!projectsStore.currentProject) {
1643
+ if (projectsStore.currentProject?.id !== projectId) {
1585
1644
  const project = await projectsStore.fetchProject(projectId);
1586
1645
  projectsStore.setCurrentProject(project);
1587
1646
  }
@@ -1669,9 +1728,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1669
1728
  isBlankRedirect.value = true;
1670
1729
  const templateId = workflow.meta.templateId;
1671
1730
  const parentFolderId = route.query.parentFolderId;
1731
+ if (projectsStore.currentProjectId) {
1732
+ await fetchAndSetProject(projectsStore.currentProjectId);
1733
+ }
1734
+ await fetchAndSetParentFolder(parentFolderId);
1672
1735
  await router.replace({
1673
1736
  name: VIEWS.NEW_WORKFLOW,
1674
- query: { templateId, parentFolderId }
1737
+ query: { templateId, parentFolderId, projectId: projectsStore.currentProjectId }
1675
1738
  });
1676
1739
  await importTemplate({
1677
1740
  id: templateId,
@@ -1734,8 +1797,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1734
1797
  const disabledTriggerNodes = triggerNodes.value.filter((node) => node.disabled);
1735
1798
  return disabledTriggerNodes.length === triggerNodes.value.length;
1736
1799
  });
1737
- function onTidyUp(event) {
1738
- tidyUp(event);
1800
+ function onTidyUp(event, options) {
1801
+ tidyUp(event, options);
1739
1802
  }
1740
1803
  function onExtractWorkflow(nodeIds) {
1741
1804
  void extractWorkflow(nodeIds);
@@ -1875,6 +1938,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1875
1938
  canvasEventBus.emit("saved:workflow");
1876
1939
  }
1877
1940
  }
1941
+ function onContextMenuAction(action, nodeIds) {
1942
+ canvasRef.value?.executeContextMenuAction(action, nodeIds);
1943
+ }
1878
1944
  function addWorkflowSavedEventBindings() {
1879
1945
  canvasEventBus.on("saved:workflow", npsSurveyStore.fetchPromptsData);
1880
1946
  canvasEventBus.on("saved:workflow", onSaveFromWithinNDV);
@@ -2028,9 +2094,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2028
2094
  }
2029
2095
  async function onImportWorkflowDataEvent(data) {
2030
2096
  const workflowData = data.data;
2097
+ const trackEvents = typeof data.trackEvents === "boolean" ? data.trackEvents : void 0;
2031
2098
  await importWorkflowData(workflowData, "file", {
2032
2099
  viewport: viewportBoundaries.value,
2033
- regenerateIds: data.regenerateIds === true || data.regenerateIds === void 0
2100
+ regenerateIds: data.regenerateIds === true || data.regenerateIds === void 0,
2101
+ trackEvents
2034
2102
  });
2035
2103
  fitView();
2036
2104
  selectNodes(workflowData.nodes?.map((node) => node.id) ?? []);
@@ -2039,7 +2107,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2039
2107
  setTimeout(() => {
2040
2108
  canvasEventBus.emit("tidyUp", {
2041
2109
  source: "import-workflow-data",
2042
- nodeIdsFilter: nodesIdsToTidyUp
2110
+ nodeIdsFilter: nodesIdsToTidyUp,
2111
+ trackEvents
2043
2112
  });
2044
2113
  }, 0);
2045
2114
  }
@@ -2591,7 +2660,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2591
2660
  name: CanvasNodeRenderType.AIPrompt,
2592
2661
  type: CanvasNodeRenderType.AIPrompt,
2593
2662
  typeVersion: 1,
2594
- position: [-690, -15],
2663
+ position: [-300, -100],
2595
2664
  parameters: {},
2596
2665
  draggable: false
2597
2666
  };
@@ -2707,6 +2776,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2707
2776
  }, [
2708
2777
  unref(editableWorkflow) && unref(editableWorkflowObject) && !isLoading.value ? (openBlock(), createBlock(WorkflowCanvas, {
2709
2778
  key: 0,
2779
+ ref: "canvas",
2710
2780
  id: unref(editableWorkflow).id,
2711
2781
  workflow: unref(editableWorkflow),
2712
2782
  "workflow-object": unref(editableWorkflowObject),
@@ -2716,6 +2786,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2716
2786
  "read-only": isCanvasReadOnly.value,
2717
2787
  executing: isWorkflowRunning.value,
2718
2788
  "key-bindings": keyBindingsEnabled.value,
2789
+ "suppress-interaction": unref(canvasStore).suppressInteraction,
2719
2790
  "onUpdate:nodes:position": onUpdateNodesPosition,
2720
2791
  "onUpdate:node:position": onUpdateNodePosition,
2721
2792
  "onUpdate:node:activated": onSetNodeActivated,
@@ -2883,11 +2954,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2883
2954
  }))
2884
2955
  ]),
2885
2956
  _: 1
2886
- }, 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),
2957
+ }, 8, ["id", "workflow", "workflow-object", "fallback-nodes", "show-fallback-nodes", "event-bus", "read-only", "executing", "key-bindings", "suppress-interaction", "onUpdate:logs:inputOpen", "onUpdate:logs:outputOpen", "onUpdate:hasRangeSelection"])) : createCommentVNode("", true),
2887
2958
  !isLoading.value ? (openBlock(), createBlock(FocusPanel, {
2888
2959
  key: 1,
2889
2960
  "is-canvas-read-only": isCanvasReadOnly.value,
2890
- onSaveKeyboardShortcut: onSaveWorkflow
2961
+ onSaveKeyboardShortcut: onSaveWorkflow,
2962
+ onContextMenuAction
2891
2963
  }, null, 8, ["is-canvas-read-only"])) : createCommentVNode("", true)
2892
2964
  ], 2);
2893
2965
  };