n8n-editor-ui 1.95.2 → 1.97.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 (119) hide show
  1. package/dist/assets/{AnimatedSpinner-D09KQgNn.js → AnimatedSpinner-BbE6jHOu.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-ChBsrua8.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BZ2GH0iH.js} +1 -1
  3. package/dist/assets/{AuthView-6CzmMUBa.js → AuthView-CrlqfMI5.js} +2 -2
  4. package/dist/assets/{CanvasChatSwitch-DIB31bT-.js → CanvasChatSwitch-C3NWFgk4.js} +8 -8
  5. package/dist/assets/{ChangePasswordView-CFiLUetz.js → ChangePasswordView-DBFF8086.js} +3 -3
  6. package/dist/assets/CollectionParameter-BKrbv9MJ.js +4 -0
  7. package/dist/assets/{CredentialsView-balupUNg.js → CredentialsView-B9s5TscM.js} +7 -7
  8. package/dist/assets/{DemoFooter-DjYHmYtW.js → DemoFooter-DZ9uJIf9.js} +6 -6
  9. package/dist/assets/{ErrorView-Bp0CSaqz.js → ErrorView-B6u3dXpH.js} +1 -1
  10. package/dist/assets/{EvaluationsRootView-DEsxvX2-.js → EvaluationsRootView-C1FnaqZ_.js} +1 -1
  11. package/dist/assets/{EvaluationsView-sNn1fW5k.js → EvaluationsView-CYXSwzgF.js} +3 -3
  12. package/dist/assets/{ExecutionsTime-BuE0lHT6.css → ExecutionsTime--_6xBkkx.css} +6 -6
  13. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-CBWKO-F8.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-Ceq2psmv.js} +3 -3
  14. package/dist/assets/{ExecutionsView-CwEhanCC.js → ExecutionsView-Cc64SfIc.js} +9 -9
  15. package/dist/assets/{ExecutionsView-ByQf9yli.css → ExecutionsView-ChOXAON3.css} +1 -1
  16. package/dist/assets/{FileSaver.min-BXNSdnef.js → FileSaver.min-Disj8eb5.js} +1 -1
  17. package/dist/assets/{FixedCollectionParameter-BATXrzXI.css → FixedCollectionParameter-CgLfAVkQ.css} +18 -18
  18. package/dist/assets/{FixedCollectionParameter-D3k10_sC.js → FixedCollectionParameter-DrqR-CZn.js} +6 -5
  19. package/dist/assets/{ForgotMyPasswordView-DIjgKwbk.js → ForgotMyPasswordView-DnoUd6bs.js} +3 -3
  20. package/dist/assets/{InsightsChartAverageRuntime-BR-ZZhu2.js → InsightsChartAverageRuntime-BaVGCN4s.js} +4 -4
  21. package/dist/assets/{InsightsChartFailed-Bn6t9gYW.js → InsightsChartFailed--Ck66zdr.js} +4 -4
  22. package/dist/assets/{InsightsChartFailureRate-BESq19BT.js → InsightsChartFailureRate-BEnyD778.js} +4 -4
  23. package/dist/assets/{InsightsChartTimeSaved-Mk7RZWZj.js → InsightsChartTimeSaved-Chx9AJ6h.js} +4 -4
  24. package/dist/assets/{InsightsChartTotal-1eD2ZnHA.js → InsightsChartTotal-BNA21_XU.js} +4 -4
  25. package/dist/assets/{InsightsDashboard-804Vx8G8.js → InsightsDashboard-Bsy2cANM.js} +11 -11
  26. package/dist/assets/{InsightsDashboard-BSrakbzr.css → InsightsDashboard-CXbI-Jyg.css} +2 -2
  27. package/dist/assets/{InsightsPaywall-DlHIW8n4.js → InsightsPaywall-GPfXhmE2.js} +1 -1
  28. package/dist/assets/{InsightsSummary-iMjpjBTf.js → InsightsSummary-B5VSOlKK.js} +1 -1
  29. package/dist/assets/{InsightsTableWorkflows-CVdwME8T.js → InsightsTableWorkflows-6-29Fbmj.js} +3 -3
  30. package/dist/assets/{InsightsTableWorkflows-DfTZQkWL.css → InsightsTableWorkflows-DJhX6bQW.css} +3 -3
  31. package/dist/assets/{Logo-AVqgKHpt.js → Logo-Bt_6IpKO.js} +1 -1
  32. package/dist/assets/{LogsPanel-zME_gghi.js → LogsPanel-BOr-dFe3.js} +3 -3
  33. package/dist/assets/{MainHeader-CYSc9eyv.js → MainHeader-C6Jx0rXI.js} +10 -10
  34. package/dist/assets/{MainHeader-Y95RcfHb.css → MainHeader-CGwvFs2B.css} +12 -12
  35. package/dist/assets/{MainSidebar-CFL8ain5.js → MainSidebar-BXXytBar.js} +13 -13
  36. package/dist/assets/{MainSidebar-D1_1YFQZ.css → MainSidebar-DrjvHIqG.css} +22 -23
  37. package/dist/assets/{NodeCreation-Cc0NdFhH.js → NodeCreation-BIfVMPa7.js} +3 -3
  38. package/dist/assets/{NodeCreator-Bci2BsOB.js → NodeCreator-DLiTvqLI.js} +2 -2
  39. package/dist/assets/{NodeDetailsView-BtWGMS7Y.css → NodeDetailsView-6JHPI3t-.css} +34 -34
  40. package/dist/assets/{NodeDetailsView-B9Fh0Dl2.js → NodeDetailsView-BDF0fGMs.js} +11 -11
  41. package/dist/assets/{NodeView-U4YkXSfU.css → NodeView-BdvXMmMp.css} +4 -4
  42. package/dist/assets/{NodeView-CvKozVnV.js → NodeView-DgdMFdhk.js} +51 -18
  43. package/dist/assets/{ProjectCardBadge-bSiwmeA8.js → ProjectCardBadge-CofRlXsk.js} +8 -5
  44. package/dist/assets/{ProjectHeader-CXCEIwvg.js → ProjectHeader-BvA7Wpwr.js} +2 -2
  45. package/dist/assets/{ProjectSettings-BKismuHe.js → ProjectSettings-CrDC-3_3.js} +91 -71
  46. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-BWW4AwS8.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DxNGSSoO.js} +1 -1
  47. package/dist/assets/{ResourcesListLayout-DuNjbsMn.css → ResourcesListLayout-CPwJc792.css} +8 -8
  48. package/dist/assets/{ResourcesListLayout-CITg4uZY.js → ResourcesListLayout-qljecvR-.js} +3 -3
  49. package/dist/assets/{RunData-fnv6lb8C.js → RunData-CYDMlaQ6.js} +29 -29
  50. package/dist/assets/{RunData-CE5FsU6k.css → RunData-XsmLcFYS.css} +2 -2
  51. package/dist/assets/{RunDataAi-CNLso3N1.js → RunDataAi-CxdjuP0A.js} +3 -3
  52. package/dist/assets/{RunDataJson-DZx-k1wX.js → RunDataJson-D5izLqQI.js} +6 -6
  53. package/dist/assets/{RunDataJsonActions-D-3T61BD.js → RunDataJsonActions-DAaYLHZc.js} +1 -1
  54. package/dist/assets/{RunDataParsedAiContent-CW7ypFU2.js → RunDataParsedAiContent-DHxyWJHq.js} +4 -4
  55. package/dist/assets/{RunDataSearch-BjjTiewM.js → RunDataSearch-TEurtb6F.js} +1 -1
  56. package/dist/assets/{RunDataTable-CLptnyhW.js → RunDataTable-s1WZYFih.js} +2 -2
  57. package/dist/assets/{SamlOnboarding-DvgrlSpN.js → SamlOnboarding-DiA_qmVn.js} +3 -3
  58. package/dist/assets/{SettingsApiView-28hAZ8AX.js → SettingsApiView-DeQV4O5K.js} +1 -1
  59. package/dist/assets/{SettingsCommunityNodesView-B4BhERDL.js → SettingsCommunityNodesView-C6qJjOCf.js} +4 -4
  60. package/dist/assets/{SettingsExternalSecrets-wExeq2SD.js → SettingsExternalSecrets-kDlbID-f.js} +1 -1
  61. package/dist/assets/{SettingsLdapView-DQTjIidN.js → SettingsLdapView-C3NEUPyD.js} +1 -1
  62. package/dist/assets/{SettingsLogStreamingView-S2HFXugB.js → SettingsLogStreamingView-BgCKenqc.js} +1 -1
  63. package/dist/assets/{SettingsPersonalView-K4xmPv1e.js → SettingsPersonalView-Dp-2_nD5.js} +1 -1
  64. package/dist/assets/{SettingsSourceControl-DBnFHiuT.js → SettingsSourceControl-BV2_t2Wa.js} +1 -1
  65. package/dist/assets/{SettingsSso-CETLXK4v.js → SettingsSso-D_XFdxcB.js} +1 -1
  66. package/dist/assets/{SettingsUsageAndPlan-PCXLyHHP.js → SettingsUsageAndPlan-BAVUu2N4.js} +2 -2
  67. package/dist/assets/{SettingsUsageAndPlan-b3WY2Ea_.css → SettingsUsageAndPlan-Bc3LLaWe.css} +3 -3
  68. package/dist/assets/{SettingsUsersView-BkFwmQy2.js → SettingsUsersView-CQapkyv7.js} +1 -1
  69. package/dist/assets/{SettingsView-eJwgU7re.js → SettingsView--1XR6uFD.js} +1 -1
  70. package/dist/assets/{SetupView-BGrZbWPZ.js → SetupView-DG1s9QDh.js} +3 -3
  71. package/dist/assets/{SetupWorkflowCredentialsButton-DDCGrXlU.js → SetupWorkflowCredentialsButton-ZIVPumDO.js} +1 -1
  72. package/dist/assets/{SetupWorkflowFromTemplateView-mnJoSkOi.js → SetupWorkflowFromTemplateView-D7uZMweH.js} +3 -3
  73. package/dist/assets/{SigninView-BEMlYSwD.js → SigninView-KCgNlhVY.js} +3 -3
  74. package/dist/assets/{SignoutView-Ck7XUEL0.js → SignoutView-pE0DDq5n.js} +1 -1
  75. package/dist/assets/{SignupView-BNUCUdim.js → SignupView-D2f_BLTD.js} +3 -3
  76. package/dist/assets/{TemplateDetails-CCRZDyX3.js → TemplateDetails-BSsv4B85.js} +1 -1
  77. package/dist/assets/{TemplateList-q5CwO2jW.js → TemplateList-B1Ar74SB.js} +1 -1
  78. package/dist/assets/{TemplatesCollectionView-BwB7WjdW.js → TemplatesCollectionView-BZGuPEOb.js} +5 -5
  79. package/dist/assets/{TemplatesSearchView-LFLxcdyJ.js → TemplatesSearchView-qjVhluXk.js} +3 -3
  80. package/dist/assets/{TemplatesView-DLb7_qKl.js → TemplatesView-ubkT9s02.js} +1 -1
  81. package/dist/assets/{TemplatesWorkflowView-BuQ8AVbV.js → TemplatesWorkflowView-Cyp0osv7.js} +5 -5
  82. package/dist/assets/{VariablesView-ATWfdJsE.css → VariablesView-BrzvF0ZW.css} +8 -8
  83. package/dist/assets/{VariablesView-nl7-bLzd.js → VariablesView-DqqeMAgz.js} +7 -7
  84. package/dist/assets/{WorkerView-C3tVMzJo.js → WorkerView-BupSGWdO.js} +6 -6
  85. package/dist/assets/{WorkflowActivator-DrMTmuTZ.css → WorkflowActivator-CL2wacc7.css} +2 -2
  86. package/dist/assets/{WorkflowActivator-BLSUnRBS.js → WorkflowActivator-D-Hnqidn.js} +3 -3
  87. package/dist/assets/{WorkflowExecutionsInfoAccordion-DGOugxD_.js → WorkflowExecutionsInfoAccordion-DbWLcKUA.js} +1 -1
  88. package/dist/assets/{WorkflowExecutionsLandingPage-5BG_WCTQ.js → WorkflowExecutionsLandingPage-LVa1eb_l.js} +2 -2
  89. package/dist/assets/{WorkflowExecutionsPreview-CpA6P8Yr.js → WorkflowExecutionsPreview-BxTjr1vz.js} +5 -5
  90. package/dist/assets/{WorkflowExecutionsView-BISf8FRD.js → WorkflowExecutionsView-BZSYh9z9.js} +7 -7
  91. package/dist/assets/{WorkflowExecutionsView-BjdRnQOE.css → WorkflowExecutionsView-CZziPgtr.css} +2 -2
  92. package/dist/assets/{WorkflowHistory-BHB0q8xi.js → WorkflowHistory-JVBDHINt.js} +3 -3
  93. package/dist/assets/{WorkflowOnboardingView-B_vEpWHk.js → WorkflowOnboardingView-Dy-1IC0L.js} +1 -1
  94. package/dist/assets/{WorkflowPreview-VAzNZwE4.js → WorkflowPreview-Cigbt4bL.js} +1 -1
  95. package/dist/assets/{WorkflowsView-DfQLvTjD.js → WorkflowsView-CT_wTBkN.js} +110 -26
  96. package/dist/assets/{canvas-ak0Yge56.js → canvas-hESuR4Ii.js} +1 -1
  97. package/dist/assets/{chartjs.utils-BEhsQkbh.js → chartjs.utils-B_2Gs6jF.js} +2 -2
  98. package/dist/assets/{easyAiWorkflowUtils-C-Dw5dJK.js → easyAiWorkflowUtils-Cr-_M_d8.js} +1 -1
  99. package/dist/assets/{global-link-actions-BjgA0KBu.js → global-link-actions-kPS4H23l.js} +1 -1
  100. package/dist/assets/{import-curl-Dlras8xY.js → import-curl-DF3kL2Uq.js} +1 -1
  101. package/dist/assets/{index-DH8MNLw5.css → index-B4xpaMaK.css} +1908 -1735
  102. package/dist/assets/{index-yHq_9MHK.js → index-CYJmC7Ra.js} +129726 -120552
  103. package/dist/assets/{index-DkgqLbzL.js → index-CnOUgoOS.js} +1 -1
  104. package/dist/assets/{pickBy-BygwtxG8.js → pickBy-BJdh6yK0.js} +1 -1
  105. package/dist/assets/{templateActions-D1Jiffto.js → templateActions-k3pgfZxR.js} +1 -1
  106. package/dist/assets/{useBeforeUnload-Bjelqp3f.js → useBeforeUnload-BUo1Q8qu.js} +1 -1
  107. package/dist/assets/{useExecutionDebugging-DeAtI2kq.js → useExecutionDebugging-D7uUVejC.js} +2 -2
  108. package/dist/assets/{useExecutionHelpers-CV0xvJ9R.js → useExecutionHelpers-C3ME9bsC.js} +1 -1
  109. package/dist/assets/{useImportCurlCommand-xECJDM0l.js → useImportCurlCommand-CAgwrnW9.js} +2 -2
  110. package/dist/assets/{useProjectPages-B2uri9MQ.js → useProjectPages-vmgKLBn6.js} +1 -1
  111. package/dist/assets/{usePushConnection-CPQ9WY2r.js → usePushConnection-v75Wib9I.js} +27 -22
  112. package/dist/assets/{useWorkflowActivate-B1fEJW3D.js → useWorkflowActivate-CDImNya8.js} +1 -1
  113. package/dist/assets/{useWorkflowSaving-DvqGBgRP.js → useWorkflowSaving-C8feAx2_.js} +1 -1
  114. package/dist/index.html +3 -3
  115. package/package.json +1 -1
  116. package/tsconfig.json +1 -0
  117. package/vite.config.mts +4 -0
  118. package/dist/assets/CollectionParameter-aAB2XEgJ.js +0 -4
  119. package/dist/assets/{polyfills-J2x06Gdp.js → polyfills-CcXIOoWM.js} +3935 -3935
@@ -1,11 +1,11 @@
1
- import { d as defineComponent, r as ref, q as computed, h as resolveComponent, i as createElementBlock, g as openBlock, n as normalizeClass, k as createBaseVNode, j as createVNode, bH as _sfc_main$g, w as withCtx, be as withKeys, b3 as withModifiers, l as createTextVNode, t as toDisplayString, m as unref, c as useI18n, e as createBlock, f as createCommentVNode, z as nextTick, _ as _export_sfc, as as useNDVStore, Q as useWorkflowsStore, eO as isCommunityPackageName, dX as NPM_PACKAGE_DOCS_BASE_URL, h7 as BUILTIN_NODES_DOCS_URL, dZ as COMMUNITY_NODES_INSTALLATION_DOCS_URL, aP as useExternalHooks, ag as useTelemetry, by as NodeConnectionTypes, b as useRouter, bg as useClipboard, a5 as useWorkflowHelpers, a as useToast, h8 as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, h9 as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, ha as MCP_TRIGGER_NODE_TYPE, hb as FORM_TRIGGER_NODE_TYPE, cH as CHAT_TRIGGER_NODE_TYPE, X as watch, F as Fragment, D as renderList, aQ as onClickOutside, aq as h, hc as toRef, hd as tryOnScopeDispose, he as toValue, hf as isIOS, hg as noop, hh as isObject, hi as isClient, bz as useNodeTypesStore, bA as useNodeHelpers, G as useDebounce, B as normalizeStyle, cv as TitledList, bv as getNodeInputs, hj as SWITCH_NODE_TYPE, cK as isEqual, hk as captureException, p as useSettingsStore, au as usePostHog, d3 as useCredentialsStore, u as useUsersStore, a1 as useProjectsStore, eT as OPEN_AI_API_CREDENTIAL_TYPE, hl as AI_CREDITS_EXPERIMENT, d6 as useHistoryStore, ab as ProjectTypes, bw as getConnectionTypes, o as onMounted, bW as ndvEventBus, y as onBeforeUnmount, hm as _sfc_main$h, hn as CUSTOM_NODES_DOCS_URL, aA as withDirectives, aB as vShow, gA as _sfc_main$i, ho as NodeCredentials, gC as get, hp as getNodeParameters, dz as deepCopy, hq as set, hr as unset, hs as getUpdatedToolDescription, ht as RenameNodeCommand, gz as isINodePropertyCollectionList, hu as isINodePropertiesList, hv as isINodePropertyOptionsList, hw as displayParameter, ge as Draggable, bU as useThrottleFn, H as useUIStore, cl as useSlots, hx as MAIN_NODE_PANEL_WIDTH, aJ as useStorage, hy as LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH, x as renderSlot, hz as convertToDisplayDateComponents, bN as resolveDirective, eA as InfoTip, e0 as storeToRefs, cP as useNodeDirtiness, f9 as useNodeType, bl as usePinnedData, cw as CanvasNodeDirtiness, aV as createSlots, bf as N8nText, bO as waitingNodeTooltip, bM as N8nRadioButtons, c6 as isPresent, hA as truncate, g3 as createStaticVNode, d9 as START_NODE_TYPE, gQ as MANUAL_TRIGGER_NODE_TYPE, hB as CRON_NODE_TYPE, hC as INTERVAL_NODE_TYPE, bx as getNodeOutputs, hD as uniqBy, b7 as resolveDynamicComponent, aR as N8nTooltip, bJ as N8nIcon, hE as isTriggerPanelObject, cS as getTriggerNodeServiceName, gW as WEBHOOK_NODE_TYPE, eD as CopyInput, C as createEventBus, cE as Transition, V as VIEWS, ak as WORKFLOW_SETTINGS_MODAL_KEY, ch as useDeviceSupport, hF as EXECUTABLE_TRIGGER_NODE_TYPES, ay as STICKY_NODE_TYPE, hG as BASE_NODE_SURVEY_URL, aa as EnterpriseEditionFeature, fg as dataPinningEventBus, bR as useStyles, hH as APP_MODALS_ELEMENT_ID, ai as useMessage, aj as MODAL_CONFIRM, dc as jsonParse } from "./index-yHq_9MHK.js";
2
- import { i as importCurlEventBus } from "./import-curl-Dlras8xY.js";
3
- import { R as RunData } from "./RunData-fnv6lb8C.js";
4
- import { R as RunDataAi } from "./RunDataAi-CNLso3N1.js";
5
- import { u as useWorkflowActivate } from "./useWorkflowActivate-B1fEJW3D.js";
6
- import "./FileSaver.min-BXNSdnef.js";
7
- import "./useExecutionHelpers-CV0xvJ9R.js";
8
- import "./RunDataParsedAiContent-CW7ypFU2.js";
1
+ import { A as defineComponent, r as ref, c as computed, C as resolveComponent, G as createElementBlock, H as openBlock, aF as normalizeClass, L as createBaseVNode, J as createVNode, d9 as _sfc_main$g, K as withCtx, eM as withKeys, aH as withModifiers, N as createTextVNode, O as toDisplayString, Q as unref, b as useI18n, $ as createBlock, an as createCommentVNode, cv as nextTick, av as _export_sfc, b0 as useNDVStore, e as useWorkflowsStore, eK as isCommunityPackageName, cy as NPM_PACKAGE_DOCS_BASE_URL, fO as BUILTIN_NODES_DOCS_URL, cA as COMMUNITY_NODES_INSTALLATION_DOCS_URL, U as useExternalHooks, o as useTelemetry, S as NodeConnectionTypes, j as useRouter, aS as useClipboard, f as useWorkflowHelpers, k as useToast, fP as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, fQ as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, fR as MCP_TRIGGER_NODE_TYPE, fS as FORM_TRIGGER_NODE_TYPE, bW as CHAT_TRIGGER_NODE_TYPE, ae as watch, aN as Fragment, aO as renderList, eu as onClickOutside, n as h, fT as toRef, fU as tryOnScopeDispose, fV as toValue, fW as isIOS, fX as noop, fY as isObject, fZ as isClient, aq as useNodeTypesStore, cY as useNodeHelpers, be as useDebounce, bg as normalizeStyle, f_ as TitledList, f$ as getNodeInputs, g0 as SWITCH_NODE_TYPE, fN as isEqual, g1 as captureException, l as useSettingsStore, dq as usePostHog, bm as useCredentialsStore, al as useUsersStore, cK as useProjectsStore, eP as OPEN_AI_API_CREDENTIAL_TYPE, g2 as AI_CREDITS_EXPERIMENT, g3 as useHistoryStore, bx as ProjectTypes, fz as getConnectionTypes, ac as onMounted, fu as ndvEventBus, ad as onBeforeUnmount, g4 as _sfc_main$h, g5 as CUSTOM_NODES_DOCS_URL, R as withDirectives, aY as vShow, b7 as _sfc_main$i, g6 as NodeCredentials, bc as get, g7 as getNodeParameters, aG as deepCopy, g8 as set, g9 as unset, ga as getUpdatedToolDescription, gb as RenameNodeCommand, b2 as isINodePropertyCollectionList, gc as isINodePropertiesList, gd as isINodePropertyOptionsList, ge as displayParameter, bG as Draggable, cb as useThrottleFn, u as useUIStore, ea as useSlots, gf as MAIN_NODE_PANEL_WIDTH, W as useStorage, gg as LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH, I as renderSlot, gh as convertToDisplayDateComponents, F as resolveDirective, bv as InfoTip, b1 as storeToRefs, gi as useNodeDirtiness, fp as useNodeType, cZ as usePinnedData, gj as CanvasNodeDirtiness, aW as createSlots, b4 as N8nText, gk as waitingNodeTooltip, dG as N8nRadioButtons, fJ as isPresent, gl as truncate, aw as createStaticVNode, ar as START_NODE_TYPE, bU as MANUAL_TRIGGER_NODE_TYPE, gm as CRON_NODE_TYPE, gn as INTERVAL_NODE_TYPE, fK as getNodeOutputs, go as uniqBy, dj as resolveDynamicComponent, bj as N8nTooltip, e2 as N8nIcon, gp as isTriggerPanelObject, eC as getTriggerNodeServiceName, b$ as WEBHOOK_NODE_TYPE, aX as CopyInput, T as createEventBus, gq as Transition, V as VIEWS, aI as WORKFLOW_SETTINGS_MODAL_KEY, gr as useDeviceSupport, gs as EXECUTABLE_TRIGGER_NODE_TYPES, c7 as STICKY_NODE_TYPE, gt as BASE_NODE_SURVEY_URL, E as EnterpriseEditionFeature, fw as dataPinningEventBus, gu as useStyles, gv as APP_MODALS_ELEMENT_ID, g as useMessage, i as MODAL_CONFIRM, fo as jsonParse } from "./index-CYJmC7Ra.js";
2
+ import { i as importCurlEventBus } from "./import-curl-DF3kL2Uq.js";
3
+ import { R as RunData } from "./RunData-CYDMlaQ6.js";
4
+ import { R as RunDataAi } from "./RunDataAi-CxdjuP0A.js";
5
+ import { u as useWorkflowActivate } from "./useWorkflowActivate-CDImNya8.js";
6
+ import "./FileSaver.min-Disj8eb5.js";
7
+ import "./useExecutionHelpers-C3ME9bsC.js";
8
+ import "./RunDataParsedAiContent-DHxyWJHq.js";
9
9
  const _sfc_main$f = /* @__PURE__ */ defineComponent({
10
10
  __name: "NodeTitle",
11
11
  props: {
@@ -529,7 +529,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
529
529
  };
530
530
  }
531
531
  });
532
- const NodeWebhooks = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-56323fca"]]);
532
+ const NodeWebhooks = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-906699cc"]]);
533
533
  const OnClickOutside = /* @__PURE__ */ defineComponent({
534
534
  name: "OnClickOutside",
535
535
  props: ["as", "options"],
@@ -2157,7 +2157,7 @@ const style0$8 = {
2157
2157
  const cssModules$9 = {
2158
2158
  "$style": style0$8
2159
2159
  };
2160
- const NodeSettings = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$9], ["__scopeId", "data-v-e2263c2a"]]);
2160
+ const NodeSettings = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$9], ["__scopeId", "data-v-f247a28e"]]);
2161
2161
  const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2162
2162
  __name: "PanelDragButton",
2163
2163
  props: {
@@ -4442,7 +4442,7 @@ const style0 = {
4442
4442
  const cssModules$1 = {
4443
4443
  "$style": style0
4444
4444
  };
4445
- const TriggerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1], ["__scopeId", "data-v-d43aa3b1"]]);
4445
+ const TriggerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1], ["__scopeId", "data-v-bf6d9e5c"]]);
4446
4446
  const _hoisted_1 = {
4447
4447
  key: 0,
4448
4448
  ref: "container",
@@ -4497,12 +4497,12 @@ body:not([data-theme]) .canvas-edge-toolbar-button {
4497
4497
  -------------------------- */
4498
4498
  /* BEM
4499
4499
  -------------------------- */
4500
- .minimap-enter-active[data-v-e5ff5571],
4501
- .minimap-leave-active[data-v-e5ff5571] {
4500
+ .minimap-enter-active[data-v-ff688b7e],
4501
+ .minimap-leave-active[data-v-ff688b7e] {
4502
4502
  transition: opacity 0.3s ease;
4503
4503
  }
4504
- .minimap-enter-from[data-v-e5ff5571],
4505
- .minimap-leave-to[data-v-e5ff5571] {
4504
+ .minimap-enter-from[data-v-ff688b7e],
4505
+ .minimap-leave-to[data-v-ff688b7e] {
4506
4506
  opacity: 0;
4507
4507
  }/* BEM support Func
4508
4508
  -------------------------- */
@@ -1,11 +1,11 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-Cc0NdFhH.js","assets/index-yHq_9MHK.js","assets/index-DH8MNLw5.css","assets/NodeCreation-RKvezEeg.css","assets/NodeDetailsView-B9Fh0Dl2.js","assets/import-curl-Dlras8xY.js","assets/RunData-fnv6lb8C.js","assets/FileSaver.min-BXNSdnef.js","assets/useExecutionHelpers-CV0xvJ9R.js","assets/RunData-CE5FsU6k.css","assets/RunDataAi-CNLso3N1.js","assets/RunDataParsedAiContent-CW7ypFU2.js","assets/RunDataParsedAiContent-9EEUzCKp.css","assets/RunDataAi-D9VLFXIf.css","assets/useWorkflowActivate-B1fEJW3D.js","assets/NodeDetailsView-BtWGMS7Y.css","assets/SetupWorkflowCredentialsButton-DDCGrXlU.js"])))=>i.map(i=>d[i]);
2
- import { d as defineComponent, h as resolveComponent, e as createBlock, g as openBlock, _ as _export_sfc$1, i as createElementBlock, k as createBaseVNode, bX as PanelPosition, bY as useVueFlow, bL as toRef, w as withCtx, x as renderSlot, f as createCommentVNode, F as Fragment, j as createVNode, b7 as resolveDynamicComponent, m as unref, bZ as _sfc_main$H, q as computed, c as useI18n, bQ as KeyboardShortcutTooltip, n as normalizeClass, by as NodeConnectionTypes, b_ as getBezierPath, b$ as getSmoothStepPath, c0 as Position, b1 as inject, c1 as CanvasKey, Y as useCssModule, c2 as parseCanvasConnectionHandleString, r as ref, o as onMounted, D as renderList, c3 as _sfc_main$d$1, B as normalizeStyle, H as useUIStore, bz as useNodeTypesStore, Q as useWorkflowsStore, a0 as useSourceControlStore, a7 as getResourcePermissions, c4 as isNodeWithWorkflowSelector, c5 as getSubworkflowId, c6 as isPresent, X as watch, c7 as getMousePosition, ay as STICKY_NODE_TYPE, bl as usePinnedData, c8 as NOT_DUPLICATABLE_NODE_TYPES, c9 as isExecutable, ca as Teleport, bR as useStyles, bS as N8nActionDropdown, cb as getDefaultExportFromCjs, cc as NODE_SIZE, cd as CanvasNodeRenderType, ce as GRID_SIZE, bU as useThrottleFn, cf as getRectOfNodes, bc as onUnmounted, cg as useActiveElement, ch as useDeviceSupport, ci as useEventListener, cj as onKeyDown, ck as onKeyUp, cl as useSlots, cm as useAttrs, cn as getBoundsofRects, a$ as watchEffect, t as toDisplayString, co as getConnectedEdges, b5 as normalizeProps, b8 as mergeProps, bi as provide, aq as h, aV as createSlots, cp as isValidNodeConnectionType, cq as _sfc_main$3$1, cr as CanvasNodeKey, cs as CanvasConnectionMode, ct as mergeModels, cu as useModel, y as onBeforeUnmount, bA as useNodeHelpers, cv as TitledList, aR as N8nTooltip, l as createTextVNode, cw as CanvasNodeDirtiness, bH as _sfc_main$I, b3 as withModifiers, cx as NodeId, cy as useGetPointerPosition, cz as clamp, cA as useNodeCreatorStore, ah as nodeViewEventBus, cB as NODE_CREATOR_OPEN_SOURCES, cC as useBuilderStore, be as withKeys, cD as CanvasNodeHandleKey, aA as withDirectives, aB as vShow, cE as Transition$1, cF as _sfc_main$f$1, b as useRouter, aY as useLogsStore, bB as useRunWorkflow, cG as useCanvasOperations, cH as CHAT_TRIGGER_NODE_TYPE, bh as N8nButton, cI as insertSpacersBetweenEndpoints, cJ as createCanvasConnectionHandleString, C as createEventBus, cK as isEqual, p as useSettingsStore, z as nextTick, cL as _sfc_main$1$4, cM as MarkerType, cN as Suspense, b6 as guardReactiveProps, cO as updateViewportToContainNodes, cP as useNodeDirtiness, cQ as CUSTOM_API_CALL_KEY, cR as mapLegacyEndpointsToCanvasConnectionPort, bv as getNodeInputs, bx as getNodeOutputs, cS as getTriggerNodeServiceName, cT as sanitizeHtml, cU as WAIT_NODE_TYPE, cV as SEND_AND_WAIT_OPERATION, cW as FORM_NODE_TYPE, cX as WAIT_INDEFINITELY, cY as checkOverlap, cZ as SIMULATE_NODE_TYPE, c_ as SIMULATE_TRIGGER_NODE_TYPE, c$ as mapLegacyConnectionsToCanvasConnections, d0 as getNodeIconSource, d1 as refThrottled, d2 as reactive, R as useRoute, a as useToast, a4 as useDocumentTitle, a5 as useWorkflowHelpers, d3 as useCredentialsStore, d4 as useEnvironmentsStore, d5 as useExternalSecretsStore, Z as useRootStore, at as useExecutionsStore, $ as useCanvasStore, a3 as useNpsSurveyStore, d6 as useHistoryStore, a1 as useProjectsStore, u as useUsersStore, E as useTagsStore, P as usePushConnectionStore, as as useNDVStore, aN as useTemplatesStore, a2 as useFoldersStore, d7 as useAgentRequestStore, bg as useClipboard, S as PLACEHOLDER_EMPTY_WORKFLOW_ID, d8 as NEW_WORKFLOW_ID, V as VIEWS, d9 as START_NODE_TYPE, da as getNodeViewTab, s as MAIN_HEADER_TABS, db as VALID_WORKFLOW_IMPORT_URL_REGEX, ai as useMessage, aj as MODAL_CONFIRM, dc as jsonParse, dd as MANUAL_CHAT_TRIGGER_NODE_TYPE, de as EVALUATION_TRIGGER_NODE_TYPE, df as getBounds, dg as onBeforeRouteLeave, az as onBeforeMount, ak as WORKFLOW_SETTINGS_MODAL_KEY, aP as useExternalHooks, dh as onActivated, di as onDeactivated, dj as defineAsyncComponent, dk as N8nCallout, ao as __vitePreload, aa as EnterpriseEditionFeature, dl as EVALUATION_NODE_TYPE, ag as useTelemetry, dm as tryToParseNumber, aF as sourceControlEventBus, dn as getNodesWithNormalizedPosition, dp as needsAgentInput, dq as FROM_AI_PARAMETERS_MODAL_KEY, dr as historyBus, ds as DRAG_EVENT_DATA_KEY } from "./index-yHq_9MHK.js";
3
- import { g as globalLinkActionsEventBus } from "./global-link-actions-BjgA0KBu.js";
4
- import { u as useExecutionDebugging } from "./useExecutionDebugging-DeAtI2kq.js";
5
- import { u as useBeforeUnload } from "./useBeforeUnload-Bjelqp3f.js";
6
- import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-C-Dw5dJK.js";
7
- import { u as useClearExecutionButtonVisible, c as canvasEventBus } from "./canvas-ak0Yge56.js";
8
- import { u as useWorkflowSaving } from "./useWorkflowSaving-DvqGBgRP.js";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-BIfVMPa7.js","assets/index-CYJmC7Ra.js","assets/index-B4xpaMaK.css","assets/NodeCreation-RKvezEeg.css","assets/NodeDetailsView-BDF0fGMs.js","assets/import-curl-DF3kL2Uq.js","assets/RunData-CYDMlaQ6.js","assets/FileSaver.min-Disj8eb5.js","assets/useExecutionHelpers-C3ME9bsC.js","assets/RunData-XsmLcFYS.css","assets/RunDataAi-CxdjuP0A.js","assets/RunDataParsedAiContent-DHxyWJHq.js","assets/RunDataParsedAiContent-9EEUzCKp.css","assets/RunDataAi-D9VLFXIf.css","assets/useWorkflowActivate-CDImNya8.js","assets/NodeDetailsView-6JHPI3t-.css","assets/SetupWorkflowCredentialsButton-ZIVPumDO.js"])))=>i.map(i=>d[i]);
2
+ import { A as defineComponent, C as resolveComponent, $ as createBlock, H as openBlock, av as _export_sfc$1, G as createElementBlock, L as createBaseVNode, ho as PanelPosition, hp as useVueFlow, cp as toRef, K as withCtx, I as renderSlot, an as createCommentVNode, aN as Fragment, J as createVNode, dj as resolveDynamicComponent, Q as unref, hq as _sfc_main$H, c as computed, b as useI18n, cc as KeyboardShortcutTooltip, aF as normalizeClass, S as NodeConnectionTypes, hr as getBezierPath, hs as getSmoothStepPath, ht as Position, h0 as inject, hu as CanvasKey, bC as useCssModule, hv as parseCanvasConnectionHandleString, r as ref, ac as onMounted, aO as renderList, hw as _sfc_main$d$1, bg as normalizeStyle, u as useUIStore, aq as useNodeTypesStore, e as useWorkflowsStore, ao as useSourceControlStore, bt as getResourcePermissions, hx as isNodeWithWorkflowSelector, hy as getSubworkflowId, fJ as isPresent, ae as watch, hz as getMousePosition, c7 as STICKY_NODE_TYPE, cZ as usePinnedData, hA as NOT_DUPLICATABLE_NODE_TYPES, hB as isExecutable, hC as Teleport, gu as useStyles, hm as N8nActionDropdown, cX as getDefaultExportFromCjs, gF as NODE_SIZE, hD as CanvasNodeRenderType, hE as GRID_SIZE, cb as useThrottleFn, hF as getRectOfNodes, bf as onUnmounted, hG as useActiveElement, gr as useDeviceSupport, hH as useEventListener, hI as onKeyDown, hJ as onKeyUp, ea as useSlots, hK as useAttrs, hL as getBoundsofRects, dn as watchEffect, O as toDisplayString, hM as getConnectedEdges, dB as normalizeProps, bA as mergeProps, h5 as provide, n as h, aW as createSlots, hN as isValidNodeConnectionType, hO as _sfc_main$3$1, hP as CanvasConnectionMode, hQ as CanvasNodeKey, bh as mergeModels, bi as useModel, ad as onBeforeUnmount, cY as useNodeHelpers, f_ as TitledList, bj as N8nTooltip, N as createTextVNode, gj as CanvasNodeDirtiness, d9 as _sfc_main$I, aH as withModifiers, hR as useGetPointerPosition, hS as clamp, hT as NodeId, bT as useNodeCreatorStore, f1 as nodeViewEventBus, ca as NODE_CREATOR_OPEN_SOURCES, gZ as useBuilderStore, eM as withKeys, hU as CanvasNodeHandleKey, R as withDirectives, aY as vShow, gq as Transition$1, hV as _sfc_main$f$1, j as useRouter, dl as useLogsStore, eG as useRunWorkflow, ap as useCanvasOperations, bW as CHAT_TRIGGER_NODE_TYPE, b9 as N8nButton, hW as insertSpacersBetweenEndpoints, hX as createCanvasConnectionHandleString, T as createEventBus, fN as isEqual, l as useSettingsStore, cv as nextTick, hY as _sfc_main$1$4, hZ as MarkerType, b6 as Suspense, ed as guardReactiveProps, h_ as updateViewportToContainNodes, gi as useNodeDirtiness, gI as CUSTOM_API_CALL_KEY, h$ as mapLegacyEndpointsToCanvasConnectionPort, f$ as getNodeInputs, fK as getNodeOutputs, eC as getTriggerNodeServiceName, s as sanitizeHtml, i0 as WAIT_NODE_TYPE, gU as SEND_AND_WAIT_OPERATION, i1 as FORM_NODE_TYPE, e4 as WAIT_INDEFINITELY, i2 as checkOverlap, i3 as SIMULATE_NODE_TYPE, i4 as SIMULATE_TRIGGER_NODE_TYPE, i5 as mapLegacyConnectionsToCanvasConnections, gO as getNodeIconSource, i6 as refThrottled, a7 as reactive, a6 as useRoute, k as useToast, aJ as useDocumentTitle, f as useWorkflowHelpers, bm as useCredentialsStore, cT as useEnvironmentsStore, co as useExternalSecretsStore, p as useRootStore, a$ as useExecutionsStore, a as useCanvasStore, d as useNpsSurveyStore, g3 as useHistoryStore, cK as useProjectsStore, al as useUsersStore, dZ as useTagsStore, B as usePushConnectionStore, b0 as useNDVStore, au as useTemplatesStore, dS as useFoldersStore, i7 as useAgentRequestStore, i8 as useWorkflowExtraction, aS as useClipboard, P as PLACEHOLDER_EMPTY_WORKFLOW_ID, dP as NEW_WORKFLOW_ID, V as VIEWS, ar as START_NODE_TYPE, dN as getNodeViewTab, dO as MAIN_HEADER_TABS, i9 as VALID_WORKFLOW_IMPORT_URL_REGEX, g as useMessage, i as MODAL_CONFIRM, fo as jsonParse, ia as MANUAL_CHAT_TRIGGER_NODE_TYPE, eF as EVALUATION_TRIGGER_NODE_TYPE, ib as getBounds, dM as onBeforeRouteLeave, b3 as onBeforeMount, aI as WORKFLOW_SETTINGS_MODAL_KEY, U as useExternalHooks, ic as onActivated, id as onDeactivated, bP as defineAsyncComponent, ej as N8nCallout, bQ as __vitePreload, E as EnterpriseEditionFeature, ie as EVALUATION_NODE_TYPE, o as useTelemetry, w as tryToParseNumber, eo as sourceControlEventBus, z as getNodesWithNormalizedPosition, ig as historyBus, ih as needsAgentInput, ii as FROM_AI_PARAMETERS_MODAL_KEY, gC as DRAG_EVENT_DATA_KEY } from "./index-CYJmC7Ra.js";
3
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-kPS4H23l.js";
4
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-D7uUVejC.js";
5
+ import { u as useBeforeUnload } from "./useBeforeUnload-BUo1Q8qu.js";
6
+ import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-Cr-_M_d8.js";
7
+ import { u as useClearExecutionButtonVisible, c as canvasEventBus } from "./canvas-hESuR4Ii.js";
8
+ import { u as useWorkflowSaving } from "./useWorkflowSaving-C8feAx2_.js";
9
9
  const _sfc_main$G = /* @__PURE__ */ defineComponent({
10
10
  __name: "CanvasChatButton",
11
11
  props: {
@@ -594,6 +594,15 @@ const useContextMenu = (onAction = () => {
594
594
  disabled: nodes.length === 0
595
595
  }
596
596
  ];
597
+ const extractionActions = [
598
+ {
599
+ id: "extract_sub_workflow",
600
+ divided: true,
601
+ label: i18n.baseText("contextMenu.extract", { adjustToNumber: nodes.length }),
602
+ shortcut: { altKey: true, keys: ["X"] },
603
+ disabled: isReadOnly.value
604
+ }
605
+ ];
597
606
  const layoutActions = [
598
607
  {
599
608
  id: "tidy_up",
@@ -647,6 +656,7 @@ const useContextMenu = (onAction = () => {
647
656
  disabled: isReadOnly.value || !nodes.every(canDuplicateNode)
648
657
  },
649
658
  ...layoutActions,
659
+ ...extractionActions,
650
660
  ...selectionActions,
651
661
  {
652
662
  id: "delete",
@@ -11618,7 +11628,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
11618
11628
  keyBindings: { type: Boolean, default: true },
11619
11629
  loading: { type: Boolean, default: false }
11620
11630
  },
11621
- emits: ["update:modelValue", "update:node:position", "update:nodes:position", "update:node:activated", "update:node:deactivated", "update:node:enabled", "update:node:selected", "update:node:name", "update:node:parameters", "update:node:inputs", "update:node:outputs", "update:logs-open", "update:logs:input-open", "update:logs:output-open", "update:has-range-selection", "click:node", "click:node:add", "run:node", "delete:node", "create:node", "create:sticky", "delete:nodes", "update:nodes:enabled", "copy:nodes", "duplicate:nodes", "update:nodes:pin", "cut:nodes", "delete:connection", "create:connection:start", "create:connection", "create:connection:end", "create:connection:cancelled", "click:connection:add", "click:pane", "run:workflow", "save:workflow", "create:workflow", "drag-and-drop", "tidy-up", "viewport:change", "selection:end", "open:sub-workflow", "start-chat"],
11631
+ emits: ["update:modelValue", "update:node:position", "update:nodes:position", "update:node:activated", "update:node:deactivated", "update:node:enabled", "update:node:selected", "update:node:name", "update:node:parameters", "update:node:inputs", "update:node:outputs", "update:logs-open", "update:logs:input-open", "update:logs:output-open", "update:has-range-selection", "click:node", "click:node:add", "run:node", "delete:node", "create:node", "create:sticky", "delete:nodes", "update:nodes:enabled", "copy:nodes", "duplicate:nodes", "update:nodes:pin", "cut:nodes", "delete:connection", "create:connection:start", "create:connection", "create:connection:end", "create:connection:cancelled", "click:connection:add", "click:pane", "run:workflow", "save:workflow", "create:workflow", "drag-and-drop", "tidy-up", "viewport:change", "selection:end", "open:sub-workflow", "start-chat", "extract-workflow"],
11622
11632
  setup(__props, { emit: __emit }) {
11623
11633
  const $style = useCssModule();
11624
11634
  const emit = __emit;
@@ -11770,6 +11780,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
11770
11780
  ctrl_enter: () => emit("run:workflow"),
11771
11781
  ctrl_s: () => emit("save:workflow"),
11772
11782
  shift_alt_t: async () => await onTidyUp({ source: "keyboard-shortcut" }),
11783
+ alt_x: emitWithSelectedNodes((ids) => emit("extract-workflow", ids)),
11773
11784
  c: () => emit("start-chat")
11774
11785
  };
11775
11786
  return fullKeymap;
@@ -12045,6 +12056,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
12045
12056
  return props.eventBus.emit("nodes:action", { ids: nodeIds, action: "update:sticky:color" });
12046
12057
  case "tidy_up":
12047
12058
  return await onTidyUp({ source: "context-menu" });
12059
+ case "extract_sub_workflow":
12060
+ return emit("extract-workflow", nodeIds);
12048
12061
  case "open_sub_workflow": {
12049
12062
  return emit("open:sub-workflow", nodeIds[0]);
12050
12063
  }
@@ -12277,7 +12290,7 @@ const style0$2 = {
12277
12290
  const cssModules$2 = {
12278
12291
  "$style": style0$2
12279
12292
  };
12280
- const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModules", cssModules$2], ["__scopeId", "data-v-e5ff5571"]]);
12293
+ const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModules", cssModules$2], ["__scopeId", "data-v-ff688b7e"]]);
12281
12294
  function useCanvasMapping({
12282
12295
  nodes,
12283
12296
  connections,
@@ -12471,7 +12484,7 @@ function useCanvasMapping({
12471
12484
  if ("eventTriggerDescription" in nodeTypeDescription) {
12472
12485
  const nodeName = i18n.shortNodeType(nodeTypeDescription.name);
12473
12486
  const { eventTriggerDescription } = nodeTypeDescription;
12474
- acc[node2.id] = i18n.nodeText().eventTriggerDescription(nodeName, eventTriggerDescription ?? "");
12487
+ acc[node2.id] = i18n.nodeText(nodeTypeDescription.name).eventTriggerDescription(nodeName, eventTriggerDescription ?? "");
12475
12488
  } else {
12476
12489
  acc[node2.id] = i18n.baseText("node.waitingForYouToCreateAnEventIn", {
12477
12490
  interpolate: {
@@ -12491,7 +12504,8 @@ function useCanvasMapping({
12491
12504
  );
12492
12505
  const nodeExecutionStatusById = computed(
12493
12506
  () => nodes.value.reduce((acc, node2) => {
12494
- acc[node2.id] = workflowsStore.getWorkflowRunData?.[node2.name]?.filter(Boolean)[0]?.executionStatus ?? "new";
12507
+ const tasks = workflowsStore.getWorkflowRunData?.[node2.name] ?? [];
12508
+ acc[node2.id] = tasks.at(-1)?.executionStatus ?? "new";
12495
12509
  return acc;
12496
12510
  }, {})
12497
12511
  );
@@ -12551,8 +12565,11 @@ function useCanvasMapping({
12551
12565
  acc[node2.id] = true;
12552
12566
  } else if (nodePinnedDataById.value[node2.id]) {
12553
12567
  acc[node2.id] = false;
12568
+ } else if (node2.issues && nodeHelpers.nodeIssuesToString(node2.issues, node2).length) {
12569
+ acc[node2.id] = true;
12554
12570
  } else {
12555
- acc[node2.id] = nodeIssuesById.value[node2.id].length > 0;
12571
+ const tasks = workflowsStore.getWorkflowRunData?.[node2.name] ?? [];
12572
+ acc[node2.id] = Boolean(tasks.at(-1)?.error);
12556
12573
  }
12557
12574
  return acc;
12558
12575
  }, {})
@@ -12878,7 +12895,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
12878
12895
  const _component_N8nButton = resolveComponent("N8nButton");
12879
12896
  return openBlock(), createBlock(KeyboardShortcutTooltip, {
12880
12897
  label: label2.value,
12881
- shortcut: { metaKey: true, keys: ["↵"] }
12898
+ shortcut: { metaKey: true, keys: ["↵"] },
12899
+ disabled: _ctx.executing
12882
12900
  }, {
12883
12901
  default: withCtx(() => [
12884
12902
  createVNode(_component_N8nButton, {
@@ -12895,7 +12913,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
12895
12913
  }, null, 8, ["loading", "label", "disabled"])
12896
12914
  ]),
12897
12915
  _: 1
12898
- }, 8, ["label"]);
12916
+ }, 8, ["label", "disabled"]);
12899
12917
  };
12900
12918
  }
12901
12919
  });
@@ -13041,13 +13059,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13041
13059
  __name: "NodeView",
13042
13060
  setup(__props) {
13043
13061
  const LazyNodeCreation = defineAsyncComponent(
13044
- async () => await __vitePreload(() => import("./NodeCreation-Cc0NdFhH.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
13062
+ async () => await __vitePreload(() => import("./NodeCreation-BIfVMPa7.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
13045
13063
  );
13046
13064
  const LazyNodeDetailsView = defineAsyncComponent(
13047
- async () => await __vitePreload(() => import("./NodeDetailsView-B9Fh0Dl2.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15]) : void 0)
13065
+ async () => await __vitePreload(() => import("./NodeDetailsView-BDF0fGMs.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15]) : void 0)
13048
13066
  );
13049
13067
  const LazySetupWorkflowCredentialsButton = defineAsyncComponent(
13050
- async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-DDCGrXlU.js"), true ? __vite__mapDeps([16,1,2]) : void 0)
13068
+ async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-ZIVPumDO.js"), true ? __vite__mapDeps([16,1,2]) : void 0)
13051
13069
  );
13052
13070
  const $style = useCssModule();
13053
13071
  const router = useRouter();
@@ -13096,6 +13114,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13096
13114
  revertUpdateNodePosition,
13097
13115
  renameNode,
13098
13116
  revertRenameNode,
13117
+ revertReplaceNodeParameters,
13099
13118
  setNodeActive,
13100
13119
  setNodeSelected,
13101
13120
  toggleNodesDisabled,
@@ -13131,6 +13150,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13131
13150
  lastClickPosition,
13132
13151
  startChat
13133
13152
  } = useCanvasOperations({ router });
13153
+ const { extractWorkflow } = useWorkflowExtraction();
13134
13154
  const { applyExecutionData } = useExecutionDebugging();
13135
13155
  useClipboard({ onPaste: onClipboardPaste });
13136
13156
  const isLoading = ref(true);
@@ -13418,6 +13438,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13418
13438
  function onTidyUp(event) {
13419
13439
  tidyUp(event);
13420
13440
  }
13441
+ function onExtractWorkflow(nodeIds) {
13442
+ void extractWorkflow(nodeIds);
13443
+ }
13421
13444
  function onUpdateNodesPosition(events) {
13422
13445
  updateNodesPosition(events, { trackHistory: true });
13423
13446
  }
@@ -13616,6 +13639,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13616
13639
  }) {
13617
13640
  await revertRenameNode(currentName, newName);
13618
13641
  }
13642
+ async function onRevertReplaceNodeParameters({
13643
+ nodeId,
13644
+ currentProperties,
13645
+ newProperties
13646
+ }) {
13647
+ await revertReplaceNodeParameters(nodeId, currentProperties, newProperties);
13648
+ }
13619
13649
  function onUpdateNodeParameters(id2, parameters) {
13620
13650
  setNodeParameters(id2, parameters);
13621
13651
  }
@@ -13979,6 +14009,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13979
14009
  historyBus.on("revertAddConnection", onRevertCreateConnection);
13980
14010
  historyBus.on("revertRemoveConnection", onRevertDeleteConnection);
13981
14011
  historyBus.on("revertRenameNode", onRevertRenameNode);
14012
+ historyBus.on("revertReplaceNodeParameters", onRevertReplaceNodeParameters);
13982
14013
  historyBus.on("enableNodeToggle", onRevertToggleNodeDisabled);
13983
14014
  }
13984
14015
  function removeUndoRedoEventBindings() {
@@ -13988,6 +14019,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13988
14019
  historyBus.off("revertAddConnection", onRevertCreateConnection);
13989
14020
  historyBus.off("revertRemoveConnection", onRevertDeleteConnection);
13990
14021
  historyBus.off("revertRenameNode", onRevertRenameNode);
14022
+ historyBus.off("revertReplaceNodeParameters", onRevertReplaceNodeParameters);
13991
14023
  historyBus.off("enableNodeToggle", onRevertToggleNodeDisabled);
13992
14024
  }
13993
14025
  async function onSourceControlPull() {
@@ -14409,6 +14441,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14409
14441
  "onSelection:end": onSelectionEnd,
14410
14442
  onDragAndDrop,
14411
14443
  onTidyUp,
14444
+ onExtractWorkflow,
14412
14445
  onStartChat: _cache[4] || (_cache[4] = ($event) => unref(startChat)())
14413
14446
  }, {
14414
14447
  default: withCtx(() => [
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, b as useRouter, q as computed, c as useI18n, h as resolveComponent, e as createBlock, g as openBlock, m as unref, V as VIEWS, ab as ProjectTypes, gg as splitName, g4 as ResourceType, bN as resolveDirective, i as createElementBlock, b8 as mergeProps, j as createVNode, x as renderSlot, w as withCtx, f as createCommentVNode, n as normalizeClass, aA as withDirectives, eQ as ProjectIcon, k as createBaseVNode, l as createTextVNode, t as toDisplayString, _ as _export_sfc } from "./index-yHq_9MHK.js";
1
+ import { A as defineComponent, j as useRouter, c as computed, b as useI18n, C as resolveComponent, $ as createBlock, H as openBlock, Q as unref, V as VIEWS, bx as ProjectTypes, by as splitName, bz as ResourceType, F as resolveDirective, G as createElementBlock, bA as mergeProps, J as createVNode, I as renderSlot, K as withCtx, an as createCommentVNode, aF as normalizeClass, R as withDirectives, bB as ProjectIcon, L as createBaseVNode, N as createTextVNode, O as toDisplayString, av as _export_sfc } from "./index-CYJmC7Ra.js";
2
2
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
3
3
  __name: "EmptySharedSectionActionBox",
4
4
  props: {
@@ -47,19 +47,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
47
47
  setup(__props) {
48
48
  const props = __props;
49
49
  const i18n = useI18n();
50
+ const isShared = computed(() => {
51
+ return "sharedWithProjects" in props.resource && props.resource.sharedWithProjects?.length;
52
+ });
50
53
  const projectState = computed(() => {
51
54
  if (props.resource.homeProject && props.personalProject && props.resource.homeProject.id === props.personalProject.id || !props.resource.homeProject) {
52
- if (props.resource.sharedWithProjects?.length) {
55
+ if (isShared.value) {
53
56
  return "shared-owned";
54
57
  }
55
58
  return "owned";
56
59
  } else if (props.resource.homeProject?.type !== ProjectTypes.Team) {
57
- if (props.resource.sharedWithProjects?.length) {
60
+ if (isShared.value) {
58
61
  return "shared-personal";
59
62
  }
60
63
  return "personal";
61
64
  } else if (props.resource.homeProject?.type === ProjectTypes.Team) {
62
- if (props.resource.sharedWithProjects?.length) {
65
+ if (isShared.value) {
63
66
  return "shared-team";
64
67
  }
65
68
  return "team";
@@ -67,7 +70,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
67
70
  return "unknown";
68
71
  });
69
72
  const numberOfMembersInHomeTeamProject = computed(
70
- () => props.resource.sharedWithProjects?.length ?? 0
73
+ () => "sharedWithProjects" in props.resource ? props.resource.sharedWithProjects?.length ?? 0 : 0
71
74
  );
72
75
  const badgeText = computed(() => {
73
76
  if (projectState.value === "owned" || projectState.value === "shared-owned") {
@@ -1,5 +1,5 @@
1
- import { d as defineComponent, R as useRoute, r as ref, q as computed, V as VIEWS, c as useI18n, X as watch, h as resolveComponent, e as createBlock, g as openBlock, i as createElementBlock, n as normalizeClass, x as renderSlot, j as createVNode, m as unref, gh as N8nActionToggle, w as withCtx, aT as _sfc_main$3, _ as _export_sfc, b as useRouter, a1 as useProjectsStore, a0 as useSourceControlStore, p as useSettingsStore, ab as ProjectTypes, a7 as getResourcePermissions, k as createBaseVNode, f as createCommentVNode, eQ as ProjectIcon, l as createTextVNode, t as toDisplayString, bh as N8nButton, b8 as mergeProps, aR as N8nTooltip } from "./index-yHq_9MHK.js";
2
- import { u as useProjectPages } from "./useProjectPages-B2uri9MQ.js";
1
+ import { A as defineComponent, a6 as useRoute, r as ref, c as computed, V as VIEWS, b as useI18n, ae as watch, C as resolveComponent, $ as createBlock, H as openBlock, G as createElementBlock, aF as normalizeClass, I as renderSlot, J as createVNode, Q as unref, dc as N8nActionToggle, K as withCtx, a_ as _sfc_main$3, av as _export_sfc, j as useRouter, cK as useProjectsStore, ao as useSourceControlStore, l as useSettingsStore, bx as ProjectTypes, bt as getResourcePermissions, L as createBaseVNode, an as createCommentVNode, bB as ProjectIcon, N as createTextVNode, O as toDisplayString, b9 as N8nButton, bA as mergeProps, bj as N8nTooltip } from "./index-CYJmC7Ra.js";
2
+ import { u as useProjectPages } from "./useProjectPages-vmgKLBn6.js";
3
3
  const _sfc_main$2 = /* @__PURE__ */ defineComponent({
4
4
  __name: "ProjectTabs",
5
5
  props: {
@@ -1,12 +1,14 @@
1
- import { d as defineComponent, ct as mergeModels, cu as useModel, r as ref, q as computed, c as useI18n, h as resolveComponent, e as createBlock, g as openBlock, w as withCtx, j as createVNode, k as createBaseVNode, l as createTextVNode, t as toDisplayString, m as unref, i as createElementBlock, f as createCommentVNode, n as normalizeClass, fG as ProjectSharing, b3 as withModifiers, _ as _export_sfc, a6 as usePageRedirectionHelper, u as useUsersStore, a1 as useProjectsStore, gr as useRolesStore, aI as useCloudPlanStore, a as useToast, b as useRouter, a4 as useDocumentTitle, gs as getAllIconNames, X as watch, az as onBeforeMount, o as onMounted, er as N8nFormInput, F as Fragment, D as renderList, dz as deepCopy, V as VIEWS, ag as useTelemetry, z as nextTick } from "./index-yHq_9MHK.js";
2
- import { P as ProjectHeader } from "./ProjectHeader-CXCEIwvg.js";
3
- import "./useProjectPages-B2uri9MQ.js";
4
- const _hoisted_1$2 = { class: "pt-l" };
1
+ import { A as defineComponent, bh as mergeModels, bi as useModel, r as ref, c as computed, b as useI18n, C as resolveComponent, $ as createBlock, H as openBlock, K as withCtx, G as createElementBlock, N as createTextVNode, O as toDisplayString, Q as unref, J as createVNode, L as createBaseVNode, an as createCommentVNode, aF as normalizeClass, dd as ProjectSharing, aH as withModifiers, av as _export_sfc, m as usePageRedirectionHelper, al as useUsersStore, cK as useProjectsStore, de as useRolesStore, ck as useCloudPlanStore, k as useToast, j as useRouter, aJ as useDocumentTitle, df as getAllIconNames, ae as watch, b3 as onBeforeMount, ac as onMounted, dg as N8nFormInput, aN as Fragment, aO as renderList, aG as deepCopy, o as useTelemetry, cv as nextTick, V as VIEWS } from "./index-CYJmC7Ra.js";
2
+ import { P as ProjectHeader } from "./ProjectHeader-BvA7Wpwr.js";
3
+ import "./useProjectPages-vmgKLBn6.js";
4
+ const _hoisted_1$2 = { key: 1 };
5
+ const _hoisted_2$1 = { class: "pt-l" };
5
6
  const _sfc_main$2 = /* @__PURE__ */ defineComponent({
6
7
  __name: "ProjectDeleteDialog",
7
8
  props: /* @__PURE__ */ mergeModels({
8
9
  currentProject: {},
9
- projects: {}
10
+ projects: {},
11
+ isCurrentProjectEmpty: { type: Boolean }
10
12
  }, {
11
13
  "modelValue": { type: Boolean },
12
14
  "modelModifiers": {}
@@ -21,13 +23,10 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
21
23
  const operation2 = ref(null);
22
24
  const wipeConfirmText = ref("");
23
25
  const isValid = computed(() => {
24
- if (operation2.value === "transfer") {
25
- return !!selectedProject.value;
26
- }
27
- if (operation2.value === "wipe") {
28
- return wipeConfirmText.value === locale.baseText("projects.settings.delete.question.wipe.placeholder");
29
- }
30
- return false;
26
+ const expectedWipeConfirmation = locale.baseText(
27
+ "projects.settings.delete.question.wipe.placeholder"
28
+ );
29
+ return props.isCurrentProjectEmpty || operation2.value === "transfer" && !!selectedProject.value || operation2.value === "wipe" && wipeConfirmText.value === expectedWipeConfirmation;
31
30
  });
32
31
  const onDelete = () => {
33
32
  if (!isValid.value) {
@@ -68,81 +67,92 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
68
67
  }, 8, ["disabled"])
69
68
  ]),
70
69
  default: withCtx(() => [
71
- createVNode(_component_n8n_text, { color: "text-base" }, {
70
+ _ctx.isCurrentProjectEmpty ? (openBlock(), createBlock(_component_n8n_text, {
71
+ key: 0,
72
+ color: "text-base"
73
+ }, {
72
74
  default: withCtx(() => [
73
- createTextVNode(toDisplayString(unref(locale).baseText("projects.settings.delete.message")), 1)
75
+ createTextVNode(toDisplayString(unref(locale).baseText("projects.settings.delete.message.empty")), 1)
74
76
  ]),
75
77
  _: 1
76
- }),
77
- createBaseVNode("div", _hoisted_1$2, [
78
- createVNode(_component_el_radio, {
79
- "model-value": operation2.value,
80
- label: "transfer",
81
- class: "mb-s",
82
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => operation2.value = "transfer")
83
- }, {
78
+ })) : (openBlock(), createElementBlock("div", _hoisted_1$2, [
79
+ createVNode(_component_n8n_text, { color: "text-base" }, {
84
80
  default: withCtx(() => [
85
- createVNode(_component_n8n_text, { color: "text-dark" }, {
86
- default: withCtx(() => [
87
- createTextVNode(toDisplayString(unref(locale).baseText("projects.settings.delete.question.transfer.label")), 1)
88
- ]),
89
- _: 1
90
- })
81
+ createTextVNode(toDisplayString(unref(locale).baseText("projects.settings.delete.message")), 1)
91
82
  ]),
92
83
  _: 1
93
- }, 8, ["model-value"]),
94
- operation2.value === "transfer" ? (openBlock(), createElementBlock("div", {
95
- key: 0,
96
- class: normalizeClass(_ctx.$style.operation)
97
- }, [
98
- createVNode(_component_n8n_text, { color: "text-dark" }, {
84
+ }),
85
+ createBaseVNode("div", _hoisted_2$1, [
86
+ createVNode(_component_el_radio, {
87
+ "model-value": operation2.value,
88
+ label: "transfer",
89
+ class: "mb-s",
90
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => operation2.value = "transfer")
91
+ }, {
99
92
  default: withCtx(() => [
100
- createTextVNode(toDisplayString(unref(locale).baseText("projects.settings.delete.question.transfer.title")), 1)
93
+ createVNode(_component_n8n_text, { color: "text-dark" }, {
94
+ default: withCtx(() => [
95
+ createTextVNode(toDisplayString(unref(locale).baseText("projects.settings.delete.question.transfer.label")), 1)
96
+ ]),
97
+ _: 1
98
+ })
101
99
  ]),
102
100
  _: 1
103
- }),
104
- createVNode(ProjectSharing, {
105
- modelValue: selectedProject.value,
106
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => selectedProject.value = $event),
107
- class: "pt-2xs",
108
- projects: props.projects,
109
- "empty-options-text": unref(locale).baseText("projects.sharing.noMatchingProjects")
110
- }, null, 8, ["modelValue", "projects", "empty-options-text"])
111
- ], 2)) : createCommentVNode("", true),
112
- createVNode(_component_el_radio, {
113
- "model-value": operation2.value,
114
- label: "wipe",
115
- class: "mb-s",
116
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => operation2.value = "wipe")
117
- }, {
118
- default: withCtx(() => [
101
+ }, 8, ["model-value"]),
102
+ operation2.value === "transfer" ? (openBlock(), createElementBlock("div", {
103
+ key: 0,
104
+ class: normalizeClass(_ctx.$style.operation)
105
+ }, [
119
106
  createVNode(_component_n8n_text, { color: "text-dark" }, {
120
107
  default: withCtx(() => [
121
- createTextVNode(toDisplayString(unref(locale).baseText("projects.settings.delete.question.wipe.label")), 1)
108
+ createTextVNode(toDisplayString(unref(locale).baseText("projects.settings.delete.question.transfer.title")), 1)
122
109
  ]),
123
110
  _: 1
124
- })
125
- ]),
126
- _: 1
127
- }, 8, ["model-value"]),
128
- operation2.value === "wipe" ? (openBlock(), createElementBlock("div", {
129
- key: 1,
130
- class: normalizeClass(_ctx.$style.operation)
131
- }, [
132
- createVNode(_component_n8n_input_label, {
133
- label: unref(locale).baseText("projects.settings.delete.question.wipe.title")
111
+ }),
112
+ createVNode(ProjectSharing, {
113
+ modelValue: selectedProject.value,
114
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => selectedProject.value = $event),
115
+ class: "pt-2xs",
116
+ projects: props.projects,
117
+ "empty-options-text": unref(locale).baseText("projects.sharing.noMatchingProjects")
118
+ }, null, 8, ["modelValue", "projects", "empty-options-text"])
119
+ ], 2)) : createCommentVNode("", true),
120
+ createVNode(_component_el_radio, {
121
+ "model-value": operation2.value,
122
+ label: "wipe",
123
+ class: "mb-s",
124
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => operation2.value = "wipe")
134
125
  }, {
135
126
  default: withCtx(() => [
136
- createVNode(_component_n8n_input, {
137
- modelValue: wipeConfirmText.value,
138
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => wipeConfirmText.value = $event),
139
- placeholder: unref(locale).baseText("projects.settings.delete.question.wipe.placeholder")
140
- }, null, 8, ["modelValue", "placeholder"])
127
+ createVNode(_component_n8n_text, { color: "text-dark" }, {
128
+ default: withCtx(() => [
129
+ createTextVNode(toDisplayString(unref(locale).baseText("projects.settings.delete.question.wipe.label")), 1)
130
+ ]),
131
+ _: 1
132
+ })
141
133
  ]),
142
134
  _: 1
143
- }, 8, ["label"])
144
- ], 2)) : createCommentVNode("", true)
145
- ])
135
+ }, 8, ["model-value"]),
136
+ operation2.value === "wipe" ? (openBlock(), createElementBlock("div", {
137
+ key: 1,
138
+ class: normalizeClass(_ctx.$style.operation)
139
+ }, [
140
+ createVNode(_component_n8n_input_label, {
141
+ label: unref(locale).baseText("projects.settings.delete.question.wipe.title")
142
+ }, {
143
+ default: withCtx(() => [
144
+ createVNode(_component_n8n_input, {
145
+ modelValue: wipeConfirmText.value,
146
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => wipeConfirmText.value = $event),
147
+ "data-test-id": "project-delete-confirm-input",
148
+ placeholder: unref(locale).baseText("projects.settings.delete.question.wipe.placeholder")
149
+ }, null, 8, ["modelValue", "placeholder"])
150
+ ]),
151
+ _: 1
152
+ }, 8, ["label"])
153
+ ], 2)) : createCommentVNode("", true)
154
+ ])
155
+ ]))
146
156
  ]),
147
157
  _: 1
148
158
  }, 8, ["modelValue", "title"]);
@@ -253,6 +263,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
253
263
  const upgradeDialogVisible = ref(false);
254
264
  const isDirty = ref(false);
255
265
  const isValid = ref(false);
266
+ const isCurrentProjectEmpty = ref(true);
256
267
  const formData = ref({
257
268
  name: "",
258
269
  relations: []
@@ -377,6 +388,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
377
388
  return;
378
389
  }
379
390
  try {
391
+ if (formData.value.relations.some((r) => r.role === "project:personalOwner")) {
392
+ throw new Error("Invalid role selected for this project.");
393
+ }
380
394
  await projectsStore.updateProject(projectsStore.currentProject.id, {
381
395
  name: formData.value.name,
382
396
  icon: projectIcon.value,
@@ -406,6 +420,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
406
420
  };
407
421
  const onDelete = async () => {
408
422
  await projectsStore.getAvailableProjects();
423
+ if (projectsStore.currentProjectId) {
424
+ isCurrentProjectEmpty.value = await projectsStore.isProjectEmpty(
425
+ projectsStore.currentProjectId
426
+ );
427
+ }
409
428
  dialogVisible.value = true;
410
429
  };
411
430
  const onConfirmDelete = async (transferId) => {
@@ -642,9 +661,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
642
661
  modelValue: dialogVisible.value,
643
662
  "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => dialogVisible.value = $event),
644
663
  "current-project": unref(projectsStore).currentProject,
664
+ "is-current-project-empty": isCurrentProjectEmpty.value,
645
665
  projects: projects.value,
646
666
  onConfirmDelete
647
- }, null, 8, ["modelValue", "current-project", "projects"]),
667
+ }, null, 8, ["modelValue", "current-project", "is-current-project-empty", "projects"]),
648
668
  createVNode(_sfc_main$1, {
649
669
  modelValue: upgradeDialogVisible.value,
650
670
  "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => upgradeDialogVisible.value = $event),
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, P as usePushConnectionStore, q as computed, h as resolveComponent, bN as resolveDirective, i as createElementBlock, g as openBlock, x as renderSlot, j as createVNode, w as withCtx, k as createBaseVNode, l as createTextVNode, t as toDisplayString, m as unref, c as useI18n, aA as withDirectives } from "./index-yHq_9MHK.js";
1
+ import { A as defineComponent, B as usePushConnectionStore, c as computed, C as resolveComponent, F as resolveDirective, G as createElementBlock, H as openBlock, I as renderSlot, J as createVNode, K as withCtx, L as createBaseVNode, N as createTextVNode, O as toDisplayString, Q as unref, b as useI18n, R as withDirectives } from "./index-CYJmC7Ra.js";
2
2
  const _hoisted_1 = {
3
3
  key: 0,
4
4
  class: "push-connection-lost primary-color"