n8n-editor-ui 2.3.3 → 2.4.1

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 (316) hide show
  1. package/data/node-popularity.json +1920 -1916
  2. package/dist/assets/{AddDataTableModal-BYsEOjtf.js → AddDataTableModal-BWxuL_U1.js} +18 -21
  3. package/dist/assets/{AgentEditorModal-CnYw6elM.css → AgentEditorModal-9v5_7c4M.css} +11 -7
  4. package/dist/assets/{AgentEditorModal-CdUKcN7b.js → AgentEditorModal-ClIVB6be.js} +34 -37
  5. package/dist/assets/{Alert-BSiQ7W4W.js → Alert-C0sX2MmC.js} +9 -9
  6. package/dist/assets/AnimatedSpinner-B25lpnvb.js +15 -0
  7. package/dist/assets/{AnnotationTagsDropdown.ee-CPHqM0oA.js → AnnotationTagsDropdown.ee-bqrzcFvD.js} +6 -6
  8. package/dist/assets/{MainHeader-KNrtVK1m.js → AppHeader-Bk2_Gkdr.js} +359 -528
  9. package/dist/assets/{MainHeader-CSaAWCWj.css → AppHeader-CiEVBSe4.css} +42 -160
  10. package/dist/assets/{MainSidebar-BvZcZjNQ.js → AppSidebar-DVQtWhNG.js} +107 -83
  11. package/dist/assets/{MainSidebar-CEsQ8o1Y.css → AppSidebar-qYnACKTG.css} +13 -4
  12. package/dist/assets/{AuthView-DBipI9XX.js → AuthView-B70yKQIj.js} +12 -12
  13. package/dist/assets/{SettingsView-6sirGv9l.css → BottomMenu-CYgiV90C.css} +57 -37
  14. package/dist/assets/{BottomMenu-n6wDMblT.js → BottomMenu-Zsty8SFw.js} +70 -168
  15. package/dist/assets/{useCanvasMapping-BLB5IFnL.js → CanvasRunWorkflowButton-D05EeNT9.js} +268 -262
  16. package/dist/assets/{useCanvasMapping-CyDAqgNV.css → CanvasRunWorkflowButton-D_Rqnskj.css} +203 -203
  17. package/dist/assets/{ChangePasswordView-N8tRCxXS.js → ChangePasswordView-B5SZMMPu.js} +14 -18
  18. package/dist/assets/{ChatAgentAvatar-B68ZZ295.css → ChatAgentAvatar-D94COYC_.css} +10 -13
  19. package/dist/assets/ChatAgentAvatar-lJduQjSM.js +67 -0
  20. package/dist/assets/{ChatFile-B6hcldJk.js → ChatFile-DGN9Z6P_.js} +17 -17
  21. package/dist/assets/{ChatLayout-ZIIWLYox.js → ChatLayout-B3HCEtmF.js} +11 -15
  22. package/dist/assets/{ChatLayout-CxM-3LAt.css → ChatLayout-C5Cltxb6.css} +1 -8
  23. package/dist/assets/{ChatPersonalAgentsView-CHjVJlH9.js → ChatPersonalAgentsView-CfuU16Wx.js} +19 -24
  24. package/dist/assets/{ChatSidebar-DcNxY7Pt.css → ChatSidebar-D-hWKn7w.css} +126 -0
  25. package/dist/assets/{ChatSidebar-D1wzPLte.js → ChatSidebar-DxXP8jvn.js} +56 -71
  26. package/dist/assets/{ChatView-CEdaGOiq.js → ChatView-DGO5M0-j.js} +113 -112
  27. package/dist/assets/{ChatView-DrZ9gYjI.css → ChatView-DjGNW1KJ.css} +58 -50
  28. package/dist/assets/{ChatWorkflowAgentsView-DDoSKFjL.js → ChatWorkflowAgentsView-BDUzYR0a.js} +19 -24
  29. package/dist/assets/CollectionParameter-CX0d0ppe.js +42 -0
  30. package/dist/assets/{CommunityNodeUpdateInfo-D_fpxg7T.js → CommunityNodeUpdateInfo-BzF3To7U.js} +13 -13
  31. package/dist/assets/{CopyInput-CkRSExvb.js → CopyInput-B3eGtGOr.js} +15 -15
  32. package/dist/assets/{CredentialIcon-CsmA8n5q.js → CredentialIcon-Co-DgDkv.js} +6 -6
  33. package/dist/assets/{CredentialPicker-Dc9_fQqB.js → CredentialPicker-xUgsLzd_.js} +8 -8
  34. package/dist/assets/{CredentialSelectorModal-CrHTSX3D.js → CredentialSelectorModal-te4cxLHY.js} +22 -26
  35. package/dist/assets/{CredentialsView-BHjKX7p7.js → CredentialsView-CSMNv5Qi.js} +46 -51
  36. package/dist/assets/{DataTableActions-Baa_gpFk.js → DataTableActions-BkI1G_w4.js} +6 -6
  37. package/dist/assets/{DataTableDetailsView-Csre5EoG.js → DataTableDetailsView-D5XYBEVr.js} +27 -30
  38. package/dist/assets/{DataTableView-DvZt7cVh.js → DataTableView-U-FAWXix.js} +31 -36
  39. package/dist/assets/DemoFooter-uIyuy9UT.js +53 -0
  40. package/dist/assets/{Draggable-wlu-YKYh.js → Draggable-0gyx_CsY.js} +5 -5
  41. package/dist/assets/{EmptySharedSectionActionBox-BoAVktyy.js → EmptySharedSectionActionBox-DtGMtVsp.js} +5 -5
  42. package/dist/assets/{EnterpriseEdition.ee-CvUo0Y3B.js → EnterpriseEdition.ee-UhVkBS4f.js} +2 -2
  43. package/dist/assets/{EntityNotFound-Dk9s3CwF.js → EntityNotFound-qBJJDr9S.js} +9 -12
  44. package/dist/assets/{EntityUnAuthorised-h6YriaK9.js → EntityUnAuthorised-Ci980jH0.js} +8 -11
  45. package/dist/assets/{ErrorView-BGXVjv22.js → ErrorView-CPQg7TDd.js} +13 -16
  46. package/dist/assets/{EvaluationsRootView-CEJYrCEy.js → EvaluationsRootView-CzP9JGh2.js} +34 -36
  47. package/dist/assets/{EvaluationsView-DmaEZ7wK.js → EvaluationsView-ikx3LyQf.js} +28 -33
  48. package/dist/assets/{ExecutionsTime-K-nIEY55.js → ExecutionsTime-D5RuLFMY.js} +16 -15
  49. package/dist/assets/{ExecutionsView-BC4uwKPS.js → ExecutionsView-cMwfmY4W.js} +62 -65
  50. package/dist/assets/{ExternalSecretsProviderConnectionSwitch.ee-DYabADwO.js → ExternalSecretsProviderConnectionSwitch.ee-BglbvOQG.js} +18 -17
  51. package/dist/assets/FixedCollectionParameter-COuGvpZ8.css +642 -0
  52. package/dist/assets/FixedCollectionParameter-rO9blroR.js +1571 -0
  53. package/dist/assets/FolderBreadcrumbs-DegmC04u.js +187 -0
  54. package/dist/assets/{SaveButton-Dc01Y2MA.css → FolderBreadcrumbs-eBFopiOp.css} +7 -14
  55. package/dist/assets/{ForgotMyPasswordView-BxFjt7yf.js → ForgotMyPasswordView-CKDZcZP9.js} +14 -18
  56. package/dist/assets/{InsightsChartAverageRuntime-mcy8IMaN.js → InsightsChartAverageRuntime-69U4sUmH.js} +10 -11
  57. package/dist/assets/{InsightsChartFailed-iXvqlU_7.js → InsightsChartFailed-Ct64T5GJ.js} +8 -9
  58. package/dist/assets/{InsightsChartFailureRate-DzWy07B4.js → InsightsChartFailureRate-BOdV-Q3d.js} +9 -11
  59. package/dist/assets/{InsightsChartTimeSaved-Db1u-o2U.js → InsightsChartTimeSaved-B83s59mL.js} +9 -11
  60. package/dist/assets/{InsightsChartTotal-Bge4JSj-.js → InsightsChartTotal-1A5vqW4E.js} +7 -9
  61. package/dist/assets/{InsightsDashboard-BgxCUZWd.js → InsightsDashboard-Dpwy8q6a.js} +37 -38
  62. package/dist/assets/{InsightsPaywall-DJIAsFUW.js → InsightsPaywall-iaN7Yt1s.js} +15 -18
  63. package/dist/assets/{InsightsSummary-uZyetR3b.js → InsightsSummary-UGkz-k9w.js} +11 -11
  64. package/dist/assets/{InsightsTableWorkflows-9h4pU1WK.js → InsightsTableWorkflows-AP6ddx9D.js} +22 -24
  65. package/dist/assets/{KeyboardShortcutTooltip-Bpb4SkjE.js → KeyboardShortcutTooltip-Dwz4Hv8g.js} +6 -6
  66. package/dist/assets/LogsPanel-Cz9qV0gc.js +40 -0
  67. package/dist/assets/{LogsPanel-BG48JZqa.js → LogsPanel-DuiKN1Na.js} +100 -100
  68. package/dist/assets/{MCPConnectWorkflowsModal-CWg0xros.js → MCPConnectWorkflowsModal-CrhdbX54.js} +36 -41
  69. package/dist/assets/{MigrationRuleDetail-Dj4iZ8em.js → MigrationRuleDetail-BXj7ghDO.js} +23 -26
  70. package/dist/assets/{MigrationRules-CMk4HuMV.js → MigrationRules-CWeHH-jb.js} +21 -24
  71. package/dist/assets/{Modal-BNJXVsfA.js → Modal-CLJXjbTN.js} +27 -26
  72. package/dist/assets/{ModelByIdSelectorModal-BwhmTdU4.js → ModelByIdSelectorModal-_Q2e43WD.js} +18 -22
  73. package/dist/assets/{NDVEmptyState-D9V46oIb.js → NDVEmptyState-CJWa4Aka.js} +15 -12
  74. package/dist/assets/{NodeCreation-DiAqT9SN.js → NodeCreation-BKxsZGAf.js} +30 -52
  75. package/dist/assets/{ItemsRenderer-DkobJF9f.css → NodeCreator-039HRrqJ.css} +1525 -6
  76. package/dist/assets/{NodeCreator-Bjt6BI9v.js → NodeCreator-CRhdWp9N.js} +978 -87
  77. package/dist/assets/{NodeDetailsView-Ct9i-rTh.js → NodeDetailsView-Cm52jG-U.js} +72 -86
  78. package/dist/assets/{NodeDetailsViewV2-Dh4gzwFe.js → NodeDetailsViewV2-CqGBXjHp.js} +69 -85
  79. package/dist/assets/{NodeIcon-t97i3ntx.js → NodeIcon-SaoWBT_U.js} +10 -10
  80. package/dist/assets/{NodeIcon-BDxr0f30.css → NodeIcon-zqTc5h-V.css} +1 -1
  81. package/dist/assets/{NodeSettings-Cz9vhjW-.js → NodeSettings-BWWEo77y.js} +73 -73
  82. package/dist/assets/{NodeView-AuBajxDh.css → NodeView-Xwcu11Wh.css} +11 -11
  83. package/dist/assets/{NodeView-3Y-9RowK.js → NodeView-xEYRJxA0.js} +171 -148
  84. package/dist/assets/{OAuthConsentView-Bg5-jLUL.js → OAuthConsentView-D6mfPIJI.js} +14 -17
  85. package/dist/assets/{ParameterInputList-C1BdtAjc.css → ParameterInputList-BUZ33Aem.css} +717 -208
  86. package/dist/assets/{ParameterInputList-D3pQ9DPD.js → ParameterInputList-Cb2_SQfz.js} +1864 -1039
  87. package/dist/assets/{ProjectBreadcrumb-CwG4u83J.js → ProjectBreadcrumb-2BEX5IDD.js} +8 -8
  88. package/dist/assets/{ProjectCardBadge-DEF5xaop.js → ProjectCardBadge-CTVSam44.js} +10 -10
  89. package/dist/assets/{ProjectHeader-Ftxgilbl.js → ProjectHeader-BagblRFt.js} +14 -14
  90. package/dist/assets/{ProjectIcon-CBV14vRK.js → ProjectIcon-gwTM9uPG.js} +8 -8
  91. package/dist/assets/{ProjectRoleView-DxR_UDnr.js → ProjectRoleView-B5mhpgJj.js} +19 -22
  92. package/dist/assets/{ProjectRolesView-D5UGjI0u.js → ProjectRolesView-CO-fdyVV.js} +18 -21
  93. package/dist/assets/{ProjectSettings-DjmRzWiu.js → ProjectSettings-CpdJ0QXS.js} +31 -33
  94. package/dist/assets/{ProjectSharing-CXtVcK-7.js → ProjectSharing-CgRKQQe4.js} +16 -16
  95. package/dist/assets/{ProjectVariables-xB0qVBxe.js → ProjectVariables-B7LU3SGS.js} +40 -45
  96. package/dist/assets/{ProviderSettingsModal-BqKcWfeR.js → ProviderSettingsModal-RmJC0Qwe.js} +20 -25
  97. package/dist/assets/{PushConnectionTracker-Cwk4a7eu.js → PushConnectionTracker-v1yU_xFk.js} +4 -4
  98. package/dist/assets/{ResolversView-CnNl-Auj.js → ResolversView-OeI_dYci.js} +20 -23
  99. package/dist/assets/{ResourceFiltersDropdown-CRkQSQvs.js → ResourceFiltersDropdown-bH--4wBS.js} +12 -12
  100. package/dist/assets/{ResourcesListLayout-DLAMdJD5.css → ResourcesListLayout-BhnhvHiw.css} +140 -0
  101. package/dist/assets/{ResourcesListLayout-CreZ1Su6.js → ResourcesListLayout-CS0nUJNt.js} +32 -23
  102. package/dist/assets/{RunData-Ti8dstr8.js → RunData-B_Vlvf1V.js} +20367 -28266
  103. package/dist/assets/{RunData-CGWkR8tE.css → RunData-xpRgLK8S.css} +2 -2
  104. package/dist/assets/{RunDataHtml-S_j2pLRX.js → RunDataHtml-BMxc-zRm.js} +5 -5
  105. package/dist/assets/RunDataHtml-wQh8fACG.js +5 -0
  106. package/dist/assets/{RunDataJson-C9RYDf3k.js → RunDataJson-D23jdsWY.js} +31 -31
  107. package/dist/assets/{RunDataJsonActions-CVkDV_4I.js → RunDataJsonActions-DFa7pezf.js} +19 -22
  108. package/dist/assets/{RunDataParsedAiContent-B6PgQw1V.js → RunDataParsedAiContent-BCprT0E8.js} +15 -16
  109. package/dist/assets/RunDataParsedAiContent-o_QkeE0L.js +15 -0
  110. package/dist/assets/{RunDataSearch-DHw36qjO.js → RunDataSearch-BU2qi4nP.js} +10 -13
  111. package/dist/assets/{RunDataTable-Co9VAMrg.js → RunDataTable-BDrFzGfU.js} +32 -35
  112. package/dist/assets/{SamlOnboarding-CpWUC0gl.js → SamlOnboarding-DPYTM0tb.js} +14 -18
  113. package/dist/assets/{SelectedItemsInfo-wq6nTjan.js → SelectedItemsInfo-CKmcAObD.js} +5 -5
  114. package/dist/assets/{SettingsApiView-eiQOdjgq.js → SettingsApiView-BowYRtTk.js} +24 -26
  115. package/dist/assets/{SettingsChatHubView-D4WEo9L3.js → SettingsChatHubView-CObWHU09.js} +18 -23
  116. package/dist/assets/{SettingsCommunityNodesView-C0AaNOEN.js → SettingsCommunityNodesView-wk9JxXqL.js} +38 -41
  117. package/dist/assets/{SettingsExternalSecrets-y47selKn.js → SettingsExternalSecrets-C41eND_Y.js} +18 -21
  118. package/dist/assets/{SettingsLdapView-YMVYMnzw.js → SettingsLdapView-D1L1iyvE.js} +22 -25
  119. package/dist/assets/{SettingsLogStreamingView-BSzLdWpE.js → SettingsLogStreamingView-BqlK3i3Z.js} +21 -23
  120. package/dist/assets/{SettingsMCPView-BU0f3ymz.js → SettingsMCPView-CoTmbtV_.js} +42 -45
  121. package/dist/assets/{SettingsPersonalView-BAfYDXor.js → SettingsPersonalView-BMGG66o5.js} +15 -18
  122. package/dist/assets/SettingsSidebar-RZssT7t8.js +58 -0
  123. package/dist/assets/{useCommandBar-eK4Fv9lH.css → SettingsSidebar-hr5ASDKX.css} +22 -24
  124. package/dist/assets/{SettingsSourceControl-DiTdqVc2.js → SettingsSourceControl-C_XOb728.js} +19 -22
  125. package/dist/assets/{SettingsSso-D9mWYb6m.js → SettingsSso-DkvVZOSA.js} +26 -28
  126. package/dist/assets/{SettingsUsageAndPlan-Bhhz0N_R.js → SettingsUsageAndPlan-Cnxx5J_k.js} +20 -22
  127. package/dist/assets/{SettingsUsersView-Cyv_ZTSa.js → SettingsUsersView-DRFHlEG_.js} +50 -27
  128. package/dist/assets/{SetupTemplateFormStep-B-OXuIEU.js → SetupTemplateFormStep-DTl-SQ5_.js} +15 -15
  129. package/dist/assets/{SetupView-BvYO_h_-.js → SetupView-BfCKw7tL.js} +14 -18
  130. package/dist/assets/{SetupWorkflowCredentialsButton-29sPlZ15.js → SetupWorkflowCredentialsButton-BDNBEpgH.js} +21 -19
  131. package/dist/assets/{SetupWorkflowFromTemplateView-wGZJlu_v.js → SetupWorkflowFromTemplateView-zNitmbxd.js} +21 -24
  132. package/dist/assets/{SeverityTag-DiRdnrHj.js → SeverityTag-R-mbBDWg.js} +6 -6
  133. package/dist/assets/{SigninView-CZmSlJU4.js → SigninView-CspSfYWl.js} +16 -19
  134. package/dist/assets/{SignoutView-BUsJauew.js → SignoutView-CbmvjLhS.js} +10 -10
  135. package/dist/assets/{SignupView-CBmZdEUa.js → SignupView-D088WMnK.js} +27 -26
  136. package/dist/assets/{SkeletonAgentCard-felAhV_j.js → SkeletonAgentCard-DNUy88vs.js} +12 -12
  137. package/dist/assets/{PageViewLayout-Cn6FD0Wt.css → SlideTransition-Bv5Vx35L.css} +6 -17
  138. package/dist/assets/SlideTransition-CWSKQ4XI.js +11 -0
  139. package/dist/assets/{TagsDropdown-B3TllM9L.js → TagsDropdown-998vpfi2.js} +9 -9
  140. package/dist/assets/{TemplateCard-SxL2lAcu.js → TemplateCard-OCtSSObW.js} +9 -9
  141. package/dist/assets/{TemplateDetails-joifuvuq.js → TemplateDetails-CExTaNmN.js} +20 -20
  142. package/dist/assets/{TemplateList-Cr8NzldM.js → TemplateList-CYVIQLBo.js} +44 -44
  143. package/dist/assets/{TemplatesCollectionView-KlTGNZvL.js → TemplatesCollectionView-J4-MsKaR.js} +22 -25
  144. package/dist/assets/{TemplatesSearchView-R9w7J_qa.js → TemplatesSearchView-FeOl_F9u.js} +49 -52
  145. package/dist/assets/{TemplatesView-Cva7ybP0.js → TemplatesView-B2WxZgCT.js} +6 -6
  146. package/dist/assets/{TemplatesWorkflowView-cZBhTHOi.js → TemplatesWorkflowView-pgmIBnml.js} +23 -26
  147. package/dist/assets/{TestRunDetailView-C1Pcw196.js → TestRunDetailView-We9DOF3E.js} +20 -24
  148. package/dist/assets/{TextWithHighlights-CgDEugGZ.js → TextWithHighlights-CH5Zsswa.js} +2 -2
  149. package/dist/assets/{TimeAgo-D971QnHO.js → TimeAgo-DbbBIULe.js} +4 -4
  150. package/dist/assets/{ToolsSelectorModal-D4oxUUCF.js → ToolsSelectorModal-D0fzbH8I.js} +20 -23
  151. package/dist/assets/{TriggerPanel-BkdktrEp.js → TriggerPanel-B3wcn8yr.js} +51 -51
  152. package/dist/assets/VirtualSchema-C4mYgt95.js +28 -0
  153. package/dist/assets/{VirtualSchema-Brq3RG-a.js → VirtualSchema-DTit75Ni.js} +60 -61
  154. package/dist/assets/{VirtualSchema-CwutU4vj.css → VirtualSchema-pdpcVEq9.css} +1 -1
  155. package/dist/assets/{VueMarkdown-BlVr51fL.js → VueMarkdown-D0Ufjusy.js} +3 -3
  156. package/dist/assets/{WorkerView-CT6vkOh0.js → WorkerView-BaJG1lYK.js} +38 -42
  157. package/dist/assets/{WorkflowExecutionsInfoAccordion-DSc_InaM.js → WorkflowExecutionsInfoAccordion-BAgAw-VZ.js} +7 -7
  158. package/dist/assets/{WorkflowExecutionsLandingPage-CuGCweH0.js → WorkflowExecutionsLandingPage-B5M2M_XO.js} +14 -17
  159. package/dist/assets/{WorkflowExecutionsPreview-DWGuXXJq.js → WorkflowExecutionsPreview-CGtRdwNt.js} +44 -46
  160. package/dist/assets/{WorkflowExecutionsView-B4v9ie53.js → WorkflowExecutionsView-R_7zX3VU.js} +60 -61
  161. package/dist/assets/{WorkflowHistory-BLC1cUoO.js → WorkflowHistory-BS71EB0y.js} +198 -196
  162. package/dist/assets/{WorkflowHistory-BBHdNsOb.css → WorkflowHistory-dUpsKg3Z.css} +42 -75
  163. package/dist/assets/{WorkflowLocation-X2ZVBc96.js → WorkflowLocation-CTPWi5M9.js} +18 -18
  164. package/dist/assets/{WorkflowOnboardingView-CmVI0XDf.js → WorkflowOnboardingView-BroupQUz.js} +10 -10
  165. package/dist/assets/{WorkflowPreview-CZAcz1Na.js → WorkflowPreview-DLbWDX-7.js} +9 -9
  166. package/dist/assets/{WorkflowTagsDropdown-DlKqZzjZ.js → WorkflowTagsDropdown-DMBpcKR1.js} +6 -6
  167. package/dist/assets/{WorkflowsView-C-PD10oe.css → WorkflowsView-0_qNZeIx.css} +32 -42
  168. package/dist/assets/{WorkflowsView-BDhK0stx.js → WorkflowsView-Bdslfqgx.js} +128 -238
  169. package/dist/assets/{_MapCache-ficiegRb.js → _MapCache-DkLivSSb.js} +46 -38
  170. package/dist/assets/{_baseOrderBy-DwurmLcj.js → _baseOrderBy-Cy5MGJv_.js} +8 -13
  171. package/dist/assets/{_initCloneObject-DPuE6hiH.js → _initCloneObject-DiO9tORE.js} +2 -2
  172. package/dist/assets/{aiTemplatesStarterCollection.store-B-exu89T.js → aiTemplatesStarterCollection.store-C5UvSRtb.js} +6 -6
  173. package/dist/assets/{apiKeys.store-DW3qN7-W.js → apiKeys.store-tF_8Mh4s.js} +4 -4
  174. package/dist/assets/{assistant.store-BWyMPD4R.js → assistant.store-BsyT2BFh.js} +8 -8
  175. package/dist/assets/{auth.eventBus-BQKtqsAd.js → auth.eventBus-Ce2KL2L4.js} +1 -1
  176. package/dist/assets/{banners.store-NV1mJdSo.js → banners.store-De4swlHn.js} +7 -7
  177. package/dist/assets/{buttons.esm-Euf82NbC.js → buttons.esm-DHCtg4os.js} +0 -5
  178. package/dist/assets/canvas.utils-6yT3qDz5.js +138 -0
  179. package/dist/assets/{chart-BI8B7UPV.js → chart-BpBZvUkM.js} +0 -6
  180. package/dist/assets/{chartjs.utils-CZqhhNLn.js → chartjs.utils-B8F_iMP1.js} +5 -5
  181. package/dist/assets/{chat.store-CIFGQpTZ.js → chat.store-DIrG4eKT.js} +34 -29
  182. package/dist/assets/{chatPanel.store-gj4bbTwF.js → chatPanel.store-XTtvoDW8.js} +6 -6
  183. package/dist/assets/{chunk-6z4oVpB-.js → chunk-r2Y0G7H8.js} +3 -2
  184. package/dist/assets/{col-Cd5kWzv_.js → col-gWKpvp-j.js} +2 -2
  185. package/dist/assets/collaboration.store-DuCY-6U-.js +287 -0
  186. package/dist/assets/{constants-vjryKFt3.js → constants-Bgby4me8.js} +12 -3
  187. package/dist/assets/{constants-B5yiZflE.js → constants-CRdXn3zB.js} +290 -301
  188. package/dist/assets/core-CKLPLCBJ.js +4 -0
  189. package/dist/assets/{core-BMwklDiH.js → core-DDiavqSm.js} +1 -1
  190. package/dist/assets/{dataTable.store-CigyhC-U.js → dataTable.store-DepEpEQf.js} +4 -4
  191. package/dist/assets/{date-picker-BjmPe_fb.js → date-picker-CutzRF4i.js} +13 -4
  192. package/dist/assets/{dateFormatter-DjYPheeb.js → dateFormatter-BiQ9pMrA.js} +4 -4
  193. package/dist/assets/{dateformat-BlfbK1ki.js → dateformat-BeHi9sF4.js} +2 -1
  194. package/dist/assets/{dialog-CFy8vuwh.js → dialog-ZxkAulrV.js} +4 -4
  195. package/dist/assets/{dist-BQ7E1jLN.js → dist-C4hPgTYg.js} +3 -3
  196. package/dist/assets/empty-nq5-pHAR.js +895 -0
  197. package/dist/assets/en-C4tPMX0d.js +2 -0
  198. package/dist/assets/{en-CF30SCh2.js → en-PrU4QUr7.js} +10 -2
  199. package/dist/assets/{es-C2DNxuAa.js → es-347rbIb-.js} +2 -2
  200. package/dist/assets/{evaluation.constants-CaU1Jek8.js → evaluation.constants-COHKT500.js} +12 -15
  201. package/dist/assets/{executions.store-BjQUzT_w.js → executions.store-D1BMCixf.js} +4 -4
  202. package/dist/assets/{exports-C5ncBo9h.js → exports-DwuuoPh-.js} +1 -3
  203. package/dist/assets/{externalSecrets.ee.store-DS-4lnXS.js → externalSecrets.ee.store-CClIdWWb.js} +4 -4
  204. package/dist/assets/{folders.store-BqKf5TBS.js → folders.store-DHmLGEYl.js} +4 -4
  205. package/dist/assets/{index-U6fZiFvz.css → index-BhFfa3xu.css} +3083 -2437
  206. package/dist/assets/{index-BFqYZQt_.js → index-CZ0ShzXs.js} +4327 -1864
  207. package/dist/assets/{insights.constants-D63-x9pu.js → insights.constants-98xWnZQu.js} +3 -3
  208. package/dist/assets/{insights.store-BwsFg9pQ.js → insights.store-B6MSLVpS.js} +7 -7
  209. package/dist/assets/{insights.utils-CWK5jWpE.js → insights.utils-B0txVt0Q.js} +6 -6
  210. package/dist/assets/{languageModules-DDJUl1h8.js → languageModules-DyQaii5v.js} +1 -1
  211. package/dist/assets/{logStreaming.store-BxM1T1ZK.js → logStreaming.store-3rdm0k17.js} +3 -3
  212. package/dist/assets/{mcp.store-ChjN6nuV.js → mcp.store--DVpfZPc.js} +4 -4
  213. package/dist/assets/{merge-DjI8TA-7.js → merge-B0-p153C.js} +2 -2
  214. package/dist/assets/{nodeCreator.store-CXJtK_5o.js → nodeCreator.store-BL_XgPCV.js} +1932 -2216
  215. package/dist/assets/{nodeIcon-CIlNGIQ6.js → nodeIcon-G45tSifH.js} +3 -3
  216. package/dist/assets/{nodeTransforms-yL73Ok-c.js → nodeTransforms-CjgwHZte.js} +2 -2
  217. package/dist/assets/{orderBy-DLgDRKnZ.js → orderBy-CI4ht8Wh.js} +3 -3
  218. package/dist/assets/{personalizedTemplatesV3.store-Bs_2J_OQ.js → personalizedTemplatesV3.store-EQdiv-tM.js} +4 -4
  219. package/dist/assets/{pickBy-DYW-ATsL.js → pickBy-CS854Y6u.js} +3 -3
  220. package/dist/assets/pushConnection.store-Rp8-mZo7.js +496 -0
  221. package/dist/assets/{radio-BeejvdFG.js → radio-I_Y35sEo.js} +2 -2
  222. package/dist/assets/{readyToRun.store-DX00OlhN.js → readyToRun.store-i9gaUDlh.js} +17 -8
  223. package/dist/assets/{readyToRunWorkflows.store-CR7Yn6At.js → readyToRunWorkflows.store-gcTSDf1M.js} +6 -6
  224. package/dist/assets/{roles.store-DeGSYcWL.js → roles.store-ByEYbWMb.js} +4 -4
  225. package/dist/assets/{router-CFnjpqoZ.js → router-CmCiJkA0.js} +316 -304
  226. package/dist/assets/{sanitize-html-BkT1y0bJ.js → sanitize-html-DeDnsMgc.js} +17 -17
  227. package/dist/assets/{semver-CjLBiqOi.js → semver-DkHAUe3T.js} +6 -8
  228. package/dist/assets/{sourceControl.eventBus-BlFJV1yj.js → sourceControl.eventBus-l-XuMGfW.js} +1 -1
  229. package/dist/assets/{sqlite3-worker1-bundler-friendly-BOYmhhGN.js → sqlite3-worker1-bundler-friendly-BvaOkVlV.js} +9 -2
  230. package/dist/assets/{src-CMoPZtHv.css → src-CUiJtOrW.css} +5070 -4059
  231. package/dist/assets/{src-BiuB4CZc.js → src-DpZSuyLC.js} +5805 -2547
  232. package/dist/assets/{sso.store-CgVzmGCn.js → sso.store-B0NxuXiJ.js} +3 -3
  233. package/dist/assets/{table-fp187Rky.js → table-C3aerURh.js} +5 -5
  234. package/dist/assets/{templateActions-Dn6PNjyj.js → templateActions-BGHev3SN.js} +5 -5
  235. package/dist/assets/{templateTransforms-BtbIlupE.js → templateTransforms-B0n1tACx.js} +1 -1
  236. package/dist/assets/{truncate-B1HVeveJ.js → truncate-BrM_9cme.js} +5 -5
  237. package/dist/assets/{typescript.worker-CYqLvLHh.js → typescript.worker-DZR6qltN.js} +224 -176
  238. package/dist/assets/{usage.store-DI2Rilu6.js → usage.store-3GYv6IW-.js} +3 -3
  239. package/dist/assets/{useActions-B3Tgqfk-.js → useActions-Buaifc4L.js} +5 -5
  240. package/dist/assets/useBugReporting-D6SXeO6B.js +130 -0
  241. package/dist/assets/useCalloutHelpers-Cwtyxtsm.js +80 -0
  242. package/dist/assets/{useCanvasOperations-BttAaAbZ.js → useCanvasOperations-DY9_Vcrs.js} +36 -32
  243. package/dist/assets/{useClipboard-CurFa2Dj.js → useClipboard-B8OKhRbY.js} +3 -3
  244. package/dist/assets/{useCredentialResolvers-CJPbKnJV.js → useCredentialResolvers-CCUEZ5V2.js} +5 -5
  245. package/dist/assets/{useCustomAgent-tUoLIUar.css → useCustomAgent-D8Sw5vcC.css} +32 -9
  246. package/dist/assets/useCustomAgent-h_FKujBQ.js +630 -0
  247. package/dist/assets/{useDebounce-BjcMkTu4.js → useDebounce-C4ttil9E.js} +12 -12
  248. package/dist/assets/{useExecutionData-B5c3pMYr.js → useExecutionData-CAzGOYWw.js} +2 -2
  249. package/dist/assets/{useExecutionDebugging-BAm9HytR.js → useExecutionDebugging-DQI5yARq.js} +7 -7
  250. package/dist/assets/{useExecutionHelpers-ClAdmv-B.js → useExecutionHelpers-DWZYR0dg.js} +5 -5
  251. package/dist/assets/useGlobalEntityCreation-BwX8UUSv.js +192 -0
  252. package/dist/assets/{useImportCurlCommand-L4oAG6dd.js → useImportCurlCommand-DRS2-Amm.js} +41 -36
  253. package/dist/assets/{useIntersectionObserver-Bb8gFEHX.js → useIntersectionObserver-CGg561I6.js} +1 -1
  254. package/dist/assets/{useKeybindings-30WRTvmG.js → useKeybindings-MR6cNtmK.js} +5 -5
  255. package/dist/assets/{useLogsTreeExpand-6_x7FouR.js → useLogsTreeExpand-CvDEwlbf.js} +41 -41
  256. package/dist/assets/{useMcp-T0ZvziGl.js → useMcp-BIeH6n02.js} +2 -2
  257. package/dist/assets/{usePageRedirectionHelper-BJH0h6XA.js → usePageRedirectionHelper-DPAtaAXY.js} +3 -3
  258. package/dist/assets/{usePinnedData-B88__knO.js → usePinnedData-BFTyeyJG.js} +6 -6
  259. package/dist/assets/{usePushConnection-O_Sg_NLA.js → usePushConnection-CcijHMYv.js} +12 -16
  260. package/dist/assets/{useRunWorkflow-BK9B9ALV.js → useRunWorkflow-wOjZEWNr.js} +106 -486
  261. package/dist/assets/{useSettingsItems-aqm5JSTf.js → useSettingsItems-CaNtH9v0.js} +5 -5
  262. package/dist/assets/{useTelemetryContext-DoX4HWmg.js → useTelemetryContext-CE5phjaX.js} +4 -4
  263. package/dist/assets/{useWorkflowsCache-CsbESieM.js → useWorkflowsCache-BBhvuqqB.js} +2 -2
  264. package/dist/assets/{userRoleProvisioning.store-CK7bojX8.js → userRoleProvisioning.store-COPddaUL.js} +3 -3
  265. package/dist/assets/{builder.store-CgMqPgnW.js → users.store-KBMG-745.js} +22801 -23949
  266. package/dist/assets/utils-BCX2a8sC.js +133 -0
  267. package/dist/assets/{versions.store-CzvzmERa.js → versions.store-BnGZ_WOG.js} +4 -4
  268. package/dist/assets/{vue-Dd77OcSb.js → vue-atn33zIp.js} +255 -213
  269. package/dist/assets/{vue-json-pretty-DF-vJpHf.js → vue-json-pretty-CTqCbq0T.js} +1 -1
  270. package/dist/assets/{vue.runtime.esm-bundler-tP5dCd7J.js → vue.runtime.esm-bundler-XtMkEjzB.js} +703 -538
  271. package/dist/assets/{worker-CIvWfg3a.js → worker-BnP12nj7.js} +10 -3
  272. package/dist/index.html +116 -119
  273. package/package.json +1 -1
  274. package/tsconfig.json +1 -1
  275. package/dist/assets/AnimatedSpinner-DBPcagVq.js +0 -15
  276. package/dist/assets/BottomMenu-CRVyIu-B.css +0 -474
  277. package/dist/assets/ChatAgentAvatar-DoN0Vr4x.js +0 -67
  278. package/dist/assets/CollectionParameter-ByVUPeYR.js +0 -49
  279. package/dist/assets/DemoFooter-u1dOP76h.js +0 -62
  280. package/dist/assets/FixedCollectionParameter-CkTQ2epJ.js +0 -493
  281. package/dist/assets/FixedCollectionParameter-DT3ELzS9.css +0 -202
  282. package/dist/assets/ItemsRenderer-z7cKER1f.js +0 -922
  283. package/dist/assets/LogsPanel-B9QiohHK.js +0 -49
  284. package/dist/assets/NodeCreator-OSIpRI6S.css +0 -1649
  285. package/dist/assets/PageViewLayout-XiCAnPXE.js +0 -12
  286. package/dist/assets/PrebuiltAgentTemplatesView-B7uXEamJ.js +0 -151
  287. package/dist/assets/PrebuiltAgentTemplatesView-jF7HvWnL.css +0 -166
  288. package/dist/assets/RunDataHtml-CMYh4fix.js +0 -6
  289. package/dist/assets/RunDataParsedAiContent-DI_kumKV.js +0 -23
  290. package/dist/assets/SaveButton-DFMQz4OO.js +0 -89
  291. package/dist/assets/SettingsView-Ccz6LsAi.js +0 -87
  292. package/dist/assets/VirtualSchema-BOm-odEw.js +0 -33
  293. package/dist/assets/WorkflowActivationErrorMessage-CkxW6ZtU.js +0 -17
  294. package/dist/assets/WorkflowActivator-BGcCOUCH.css +0 -391
  295. package/dist/assets/WorkflowActivator-CisdBXpp.js +0 -362
  296. package/dist/assets/core-DeR-PV8K.js +0 -4
  297. package/dist/assets/empty-BUjCyq3U.js +0 -2450
  298. package/dist/assets/en-DyO2pPiC.js +0 -2
  299. package/dist/assets/schemaPreview.store-Bs_OZUsM.js +0 -113
  300. package/dist/assets/uniqBy-6k_SZ3dM.js +0 -10
  301. package/dist/assets/useBeforeUnload-dAltrwFm.js +0 -40
  302. package/dist/assets/useCommandBar-CXSPJjOq.js +0 -2425
  303. package/dist/assets/useCustomAgent-CSvOuB6K.js +0 -471
  304. package/dist/assets/useRecentResources-Dy5vqIyg.js +0 -118
  305. package/dist/assets/useWorkflowActivate-i3WAlo0M.js +0 -152
  306. package/dist/assets/utils-CnShVJFh.js +0 -54
  307. /package/dist/assets/{CalendarDate-zWqgZMlk.js → CalendarDate-CogIFc4_.js} +0 -0
  308. /package/dist/assets/{_plugin-vue_export-helper-BwBpWJRZ.js → _plugin-vue_export-helper-fRq25RGE.js} +0 -0
  309. /package/dist/assets/{fileUtils-Bt1vr1SC.js → fileUtils-C-Bxka0b.js} +0 -0
  310. /package/dist/assets/{mcp.constants-1HQX33wO.js → mcp.constants-Djm5lWYR.js} +0 -0
  311. /package/dist/assets/{preload-helper-CR0ecmWK.js → preload-helper-D8n1yiy9.js} +0 -0
  312. /package/dist/assets/{retry-B-tGcWte.js → retry-BLsJRFf0.js} +0 -0
  313. /package/dist/assets/{smartDecimal-gA9wGEba.js → smartDecimal-D3Shg2YQ.js} +0 -0
  314. /package/dist/assets/{sortByProperty-C6sPingU.js → sortByProperty-Dip6DXbv.js} +0 -0
  315. /package/dist/assets/{sqlite3-opfs-async-proxy-vVtmDGHX.js → sqlite3-opfs-async-proxy-BrtqH9Si.js} +0 -0
  316. /package/dist/assets/{xml-DDfXMqo8.js → xml-Cf0o4TxQ.js} +0 -0
@@ -0,0 +1,1571 @@
1
+ import { o as __toESM } from "./chunk-r2Y0G7H8.js";
2
+ import { C as computed, Cn as toDisplayString, D as createElementBlock, E as createCommentVNode, G as nextTick, Gt as unref, It as ref, M as createVNode, P as defineComponent, T as createBlock, Ut as toValue, W as mergeProps, _ as Fragment, _t as watch, bt as withCtx, et as openBlock, h as withModifiers, it as renderList, j as createTextVNode, jt as isRef, k as createSlots, mt as useTemplateRef, q as onBeforeMount, vn as normalizeClass, w as createBaseVNode, y as Suspense } from "./vue.runtime.esm-bundler-XtMkEjzB.js";
3
+ import { Z as refDebounced, _t as useI18n } from "./_MapCache-DkLivSSb.js";
4
+ import { $ as N8nOption_default, H as N8nHeaderAction_default, On as N8nText_default, Ot as N8nIconButton_default, Q as N8nSelect_default, St as N8nTooltip_default, U as TOOLTIP_DELAY_MS, Y as N8nDropdown_default, ft as N8nActionDropdown_default, it as N8nInputLabel_default, jn as N8nIcon_default, kn as N8nButton_default, tt as N8nCollapsiblePanel_default } from "./src-DpZSuyLC.js";
5
+ import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-fRq25RGE.js";
6
+ import { r as require_get } from "./truncate-BrM_9cme.js";
7
+ import "./date-picker-CutzRF4i.js";
8
+ import { Dr as v4_default, Ft as useNDVStore, Pt as telemetry, jt as useNodeHelpers, s as useWorkflowsStore } from "./users.store-KBMG-745.js";
9
+ import { N as SectionHeader_default, c as useResolvedExpression, i as require_vuedraggable_umd, r as useCollectionOverhaul, t as ParameterInputList_default } from "./ParameterInputList-Cb2_SQfz.js";
10
+ import "./sanitize-html-DeDnsMgc.js";
11
+ import "./empty-nq5-pHAR.js";
12
+ import { Ta as deepCopy, _a as isINodePropertyCollectionList, go as require_isEqual } from "./constants-CRdXn3zB.js";
13
+ import "./merge-B0-p153C.js";
14
+ import { A as storeToRefs } from "./_baseOrderBy-Cy5MGJv_.js";
15
+ import "./dateformat-BeHi9sF4.js";
16
+ import "./useDebounce-C4ttil9E.js";
17
+ import "./useClipboard-B8OKhRbY.js";
18
+ import "./executions.store-D1BMCixf.js";
19
+ import "./assistant.store-BsyT2BFh.js";
20
+ import "./chatPanel.store-XTtvoDW8.js";
21
+ import "./RunData-B_Vlvf1V.js";
22
+ import "./NDVEmptyState-CJWa4Aka.js";
23
+ import "./externalSecrets.ee.store-CClIdWWb.js";
24
+ import "./usePinnedData-BFTyeyJG.js";
25
+ import "./nodeCreator.store-BL_XgPCV.js";
26
+ import "./canvas.utils-6yT3qDz5.js";
27
+ import "./nodeIcon-G45tSifH.js";
28
+ import "./useCanvasOperations-DY9_Vcrs.js";
29
+ import "./folders.store-DHmLGEYl.js";
30
+ import "./pushConnection.store-Rp8-mZo7.js";
31
+ import "./RunDataHtml-BMxc-zRm.js";
32
+ import "./Draggable-0gyx_CsY.js";
33
+ import "./NodeIcon-SaoWBT_U.js";
34
+ import "./VirtualSchema-DTit75Ni.js";
35
+ import "./useTelemetryContext-CE5phjaX.js";
36
+ import "./useRunWorkflow-wOjZEWNr.js";
37
+ import "./nodeTransforms-CjgwHZte.js";
38
+ import "./vue-json-pretty-CTqCbq0T.js";
39
+ import "./collaboration.store-DuCY-6U-.js";
40
+ import "./dateFormatter-BiQ9pMrA.js";
41
+ import "./useExecutionHelpers-DWZYR0dg.js";
42
+ import "./vue-atn33zIp.js";
43
+ import "./useCalloutHelpers-Cwtyxtsm.js";
44
+ var import_get$1 = /* @__PURE__ */ __toESM(require_get(), 1);
45
+ var import_isEqual$1 = /* @__PURE__ */ __toESM(require_isEqual(), 1);
46
+ var import_vuedraggable_umd$1 = /* @__PURE__ */ __toESM(require_vuedraggable_umd(), 1);
47
+ var _hoisted_1$1 = ["data-test-id"];
48
+ var _hoisted_2 = { key: 1 };
49
+ var _hoisted_3 = { class: "optional-value-item" };
50
+ var _hoisted_4 = { class: "optional-value-item" };
51
+ var FixedCollectionParameterLegacy_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
52
+ __name: "FixedCollectionParameterLegacy",
53
+ props: {
54
+ nodeValues: {},
55
+ parameter: {},
56
+ path: {},
57
+ values: { default: () => ({}) },
58
+ isReadOnly: {
59
+ type: Boolean,
60
+ default: false
61
+ },
62
+ isNested: { type: Boolean },
63
+ hiddenIssuesInputs: { default: () => [] }
64
+ },
65
+ emits: ["valueChanged"],
66
+ setup(__props, { emit: __emit }) {
67
+ const locale = useI18n();
68
+ const nodeHelpers = useNodeHelpers();
69
+ const props = __props;
70
+ const emit = __emit;
71
+ const workflowsStore = useWorkflowsStore();
72
+ const ndvStore = useNDVStore();
73
+ const { activeNode } = storeToRefs(ndvStore);
74
+ const mutableValues = ref({});
75
+ const selectedOption = ref(null);
76
+ const getOptionProperties = (optionName) => {
77
+ if (!isINodePropertyCollectionList(props.parameter.options)) return void 0;
78
+ return props.parameter.options.find((option) => option.name === optionName);
79
+ };
80
+ const getPropertyPath = (name, index) => {
81
+ return `${props.path}.${name}${index !== void 0 ? `[${index}]` : ""}`;
82
+ };
83
+ const multipleValues = computed(() => !!props.parameter.typeOptions?.multipleValues);
84
+ const sortable = computed(() => !!props.parameter.typeOptions?.sortable);
85
+ const getPlaceholderText = computed(() => {
86
+ return locale.nodeText(activeNode.value?.type).placeholder(props.parameter, props.path) || locale.baseText("fixedCollectionParameter.choose");
87
+ });
88
+ const propertyNames = computed(() => new Set(Object.keys(mutableValues.value || {})));
89
+ const getProperties = computed(() => {
90
+ const properties = [];
91
+ for (const name of propertyNames.value) {
92
+ const prop = getOptionProperties(name);
93
+ if (prop) properties.push(prop);
94
+ }
95
+ return properties;
96
+ });
97
+ const addedOptionalValues = ref(/* @__PURE__ */ new Map());
98
+ const parameterOptions = computed(() => {
99
+ if (!isINodePropertyCollectionList(props.parameter.options)) return [];
100
+ if (multipleValues.value) return props.parameter.options;
101
+ return props.parameter.options.filter((option) => !propertyNames.value.has(option.name));
102
+ });
103
+ const hideOptionalFields = computed(() => {
104
+ return !!props.parameter.typeOptions?.hideOptionalFields;
105
+ });
106
+ const addOptionalFieldButtonText = computed(() => {
107
+ if (!props.parameter.typeOptions?.addOptionalFieldButtonText) return locale.baseText("fixedCollectionParameter.addField");
108
+ return locale.nodeText(activeNode.value?.type).addOptionalFieldButtonText(props.parameter);
109
+ });
110
+ const getOptionalValuesKey = (propertyName, index) => {
111
+ return index !== void 0 ? `${propertyName}-${index}` : propertyName;
112
+ };
113
+ const hasNonDefaultValue = (propertyDef, itemValues) => {
114
+ if (!itemValues) return false;
115
+ const value = itemValues[propertyDef.name];
116
+ if (value === void 0 || value === null) return false;
117
+ if (typeof value === "string" && value === "") return false;
118
+ if (typeof value === "object") return !(0, import_isEqual$1.default)(value, propertyDef.default);
119
+ return value !== propertyDef.default;
120
+ };
121
+ const initializeAddedOptionalValues = () => {
122
+ if (!hideOptionalFields.value) return;
123
+ if (!isINodePropertyCollectionList(props.parameter.options)) return;
124
+ addedOptionalValues.value.clear();
125
+ for (const property of props.parameter.options) {
126
+ const propertyPath = `${props.path}.${property.name}`;
127
+ const propertyValues = (0, import_get$1.default)(props.nodeValues, propertyPath);
128
+ if (!propertyValues) continue;
129
+ const optionalValueDefs = property.values.filter((v) => v.required !== true && v.type !== "notice");
130
+ if (multipleValues.value && Array.isArray(propertyValues)) propertyValues.forEach((itemValues, index) => {
131
+ const key = getOptionalValuesKey(property.name, index);
132
+ const addedValues = /* @__PURE__ */ new Set();
133
+ for (const valueDef of optionalValueDefs) if (hasNonDefaultValue(valueDef, itemValues)) addedValues.add(valueDef.name);
134
+ if (addedValues.size > 0) addedOptionalValues.value.set(key, addedValues);
135
+ });
136
+ else if (typeof propertyValues === "object" && !Array.isArray(propertyValues)) {
137
+ const key = getOptionalValuesKey(property.name);
138
+ const addedValues = /* @__PURE__ */ new Set();
139
+ for (const valueDef of optionalValueDefs) if (hasNonDefaultValue(valueDef, propertyValues)) addedValues.add(valueDef.name);
140
+ if (addedValues.size > 0) addedOptionalValues.value.set(key, addedValues);
141
+ }
142
+ }
143
+ };
144
+ const isOptionalValueAdded = (propertyName, valueName, index) => {
145
+ const key = getOptionalValuesKey(propertyName, index);
146
+ return addedOptionalValues.value.get(key)?.has(valueName) ?? false;
147
+ };
148
+ const getVisiblePropertyValues = (property, index) => {
149
+ if (!hideOptionalFields.value) return property.values;
150
+ const key = getOptionalValuesKey(property.name, index);
151
+ const addedValues = addedOptionalValues.value.get(key);
152
+ return property.values.filter((value) => {
153
+ if (value.required === true) return true;
154
+ if (value.type === "notice") return true;
155
+ if (addedValues?.has(value.name)) return true;
156
+ if (value.typeOptions?.showEvenWhenOptional) return true;
157
+ return false;
158
+ });
159
+ };
160
+ const getPickerPropertyValues = (property, index) => {
161
+ if (!hideOptionalFields.value) return [];
162
+ const itemPath = getPropertyPath(property.name, index);
163
+ return property.values.filter((value) => {
164
+ if (value.required === true) return false;
165
+ if (value.type === "notice") return false;
166
+ if (value.typeOptions?.showEvenWhenOptional) return false;
167
+ return nodeHelpers.displayParameter(props.nodeValues, value, itemPath, activeNode.value);
168
+ });
169
+ };
170
+ const toggleOptionalValue = (property, valueName, index) => {
171
+ const key = getOptionalValuesKey(property.name, index);
172
+ let valueSet = addedOptionalValues.value.get(key);
173
+ if (!valueSet) {
174
+ valueSet = /* @__PURE__ */ new Set();
175
+ addedOptionalValues.value.set(key, valueSet);
176
+ }
177
+ const valueDef = property.values.find((v) => v.name === valueName);
178
+ if (!valueDef) return;
179
+ const isCurrentlyAdded = valueSet.has(valueName);
180
+ if (isCurrentlyAdded) valueSet.delete(valueName);
181
+ else valueSet.add(valueName);
182
+ addedOptionalValues.value.set(key, valueSet);
183
+ emit("valueChanged", {
184
+ name: getPropertyPath(property.name, index) + `.${valueName}`,
185
+ value: isCurrentlyAdded ? void 0 : deepCopy(valueDef.default)
186
+ });
187
+ };
188
+ watch(() => props.values, (newValues) => {
189
+ mutableValues.value = deepCopy(newValues);
190
+ }, { deep: true });
191
+ onBeforeMount(() => {
192
+ mutableValues.value = deepCopy(props.values);
193
+ initializeAddedOptionalValues();
194
+ });
195
+ const deleteOption = (optionName, index) => {
196
+ const currentOptionsOfSameType = mutableValues.value[optionName];
197
+ if (!currentOptionsOfSameType || Array.isArray(currentOptionsOfSameType) && currentOptionsOfSameType.length > 1) emit("valueChanged", {
198
+ name: getPropertyPath(optionName, index),
199
+ value: void 0
200
+ });
201
+ else if (!multipleValues.value && props.isNested) {
202
+ const pathParts = props.path.split(".");
203
+ const parentPath = pathParts.slice(0, -1).join(".");
204
+ const parentPropertyName = pathParts[pathParts.length - 1];
205
+ emit("valueChanged", {
206
+ name: parentPath ? `${parentPath}.${parentPropertyName}` : parentPropertyName,
207
+ value: void 0
208
+ });
209
+ } else emit("valueChanged", {
210
+ name: getPropertyPath(optionName),
211
+ value: void 0
212
+ });
213
+ };
214
+ const initializeParameterValue = (optionParameter) => {
215
+ if (!(optionParameter.typeOptions?.multipleValues === true)) return deepCopy(optionParameter.default);
216
+ if (optionParameter.type === "fixedCollection") return {};
217
+ const existingArray = (0, import_get$1.default)(props.nodeValues, [props.path, optionParameter.name], []);
218
+ const defaultValue = optionParameter.default;
219
+ const newItems = Array.isArray(defaultValue) ? deepCopy(defaultValue) : defaultValue !== "" && typeof defaultValue !== "object" ? [deepCopy(defaultValue)] : [];
220
+ return existingArray.concat(newItems);
221
+ };
222
+ const optionSelected = async (optionName) => {
223
+ const option = getOptionProperties(optionName);
224
+ if (!option) return;
225
+ const name = `${props.path}.${option.name}`;
226
+ const newParameterValue = option.values.reduce((acc, optionParameter) => {
227
+ acc[optionParameter.name] = initializeParameterValue(optionParameter);
228
+ return acc;
229
+ }, {});
230
+ const existingValues = (0, import_get$1.default)(props.nodeValues, name, []);
231
+ emit("valueChanged", {
232
+ name,
233
+ value: multipleValues.value ? [...existingValues, newParameterValue] : newParameterValue
234
+ });
235
+ selectedOption.value = void 0;
236
+ };
237
+ const onAddButtonClick = async (optionName) => {
238
+ await optionSelected(optionName);
239
+ if (props.parameter.name === "workflowInputs") trackWorkflowInputFieldAdded();
240
+ };
241
+ const valueChanged = (parameterData) => {
242
+ emit("valueChanged", parameterData);
243
+ if (props.parameter.name === "workflowInputs") trackWorkflowInputFieldTypeChange(parameterData);
244
+ };
245
+ const onDragChange = (optionName) => {
246
+ emit("valueChanged", {
247
+ name: getPropertyPath(optionName),
248
+ value: mutableValues.value[optionName],
249
+ type: "optionsOrderChanged"
250
+ });
251
+ };
252
+ const trackWorkflowInputFieldTypeChange = (parameterData) => {
253
+ telemetry.track("User changed workflow input field type", {
254
+ type: parameterData.value,
255
+ workflow_id: workflowsStore.workflow.id,
256
+ node_id: ndvStore.activeNode?.id
257
+ });
258
+ };
259
+ const trackWorkflowInputFieldAdded = () => {
260
+ telemetry.track("User added workflow input field", {
261
+ workflow_id: workflowsStore.workflow.id,
262
+ node_id: ndvStore.activeNode?.id
263
+ });
264
+ };
265
+ function getItemKey(_item, index) {
266
+ return index;
267
+ }
268
+ return (_ctx, _cache) => {
269
+ return openBlock(), createElementBlock("div", {
270
+ class: normalizeClass(_ctx.$style.fixedCollectionParameter),
271
+ "data-test-id": `fixed-collection-${props.parameter?.name}`,
272
+ onKeydown: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"]))
273
+ }, [
274
+ getProperties.value.length === 0 ? (openBlock(), createElementBlock("div", {
275
+ key: 0,
276
+ class: normalizeClass(_ctx.$style.noItemsExist)
277
+ }, [createVNode(unref(N8nText_default), { size: "small" }, {
278
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("fixedCollectionParameter.currentlyNoItemsExist")), 1)]),
279
+ _: 1
280
+ })], 2)) : createCommentVNode("", true),
281
+ (openBlock(true), createElementBlock(Fragment, null, renderList(getProperties.value, (property) => {
282
+ return openBlock(), createElementBlock("div", {
283
+ key: property.name,
284
+ class: normalizeClass(_ctx.$style.fixedCollectionParameterProperty)
285
+ }, [property.displayName !== "" && __props.parameter.options && __props.parameter.options.length !== 1 ? (openBlock(), createBlock(unref(N8nInputLabel_default), {
286
+ key: 0,
287
+ label: unref(locale).nodeText(unref(activeNode)?.type).inputLabelDisplayName(property, __props.path),
288
+ underline: true,
289
+ size: "small",
290
+ color: "text-dark"
291
+ }, null, 8, ["label"])) : createCommentVNode("", true), multipleValues.value ? (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(import_vuedraggable_umd$1.default), {
292
+ modelValue: mutableValues.value[property.name],
293
+ "onUpdate:modelValue": ($event) => mutableValues.value[property.name] = $event,
294
+ handle: ".drag-handle",
295
+ "item-key": getItemKey,
296
+ "drag-class": _ctx.$style.dragging,
297
+ "ghost-class": _ctx.$style.ghost,
298
+ "chosen-class": _ctx.$style.chosen,
299
+ onChange: ($event) => onDragChange(property.name)
300
+ }, {
301
+ item: withCtx(({ index }) => [(openBlock(), createElementBlock("div", {
302
+ key: property.name + "-" + index,
303
+ class: normalizeClass(_ctx.$style.parameterItem)
304
+ }, [createBaseVNode("div", { class: normalizeClass([_ctx.$style.parameterItemWrapper, { [_ctx.$style.borderTopDashed]: index }]) }, [
305
+ !__props.isReadOnly ? (openBlock(), createElementBlock("div", {
306
+ key: 0,
307
+ class: normalizeClass([_ctx.$style.iconButton, _ctx.$style.defaultTopPadding])
308
+ }, [sortable.value ? (openBlock(), createBlock(unref(N8nIconButton_default), {
309
+ key: 0,
310
+ type: "tertiary",
311
+ text: "",
312
+ size: "small",
313
+ icon: "grip-vertical",
314
+ title: unref(locale).baseText("fixedCollectionParameter.dragItem"),
315
+ class: "drag-handle"
316
+ }, null, 8, ["title"])) : createCommentVNode("", true)], 2)) : createCommentVNode("", true),
317
+ !__props.isReadOnly ? (openBlock(), createElementBlock("div", {
318
+ key: 1,
319
+ class: normalizeClass([_ctx.$style.iconButton, _ctx.$style.extraTopPadding])
320
+ }, [createVNode(unref(N8nIconButton_default), {
321
+ type: "tertiary",
322
+ text: "",
323
+ size: "small",
324
+ icon: "trash-2",
325
+ "data-test-id": "fixed-collection-delete",
326
+ title: unref(locale).baseText("fixedCollectionParameter.deleteItem"),
327
+ onClick: ($event) => deleteOption(property.name, index)
328
+ }, null, 8, ["title", "onClick"])], 2)) : createCommentVNode("", true),
329
+ (openBlock(), createBlock(Suspense, null, {
330
+ default: withCtx(() => [createVNode(ParameterInputList_default, {
331
+ parameters: getVisiblePropertyValues(property, index),
332
+ "node-values": __props.nodeValues,
333
+ path: getPropertyPath(property.name, index),
334
+ "is-read-only": __props.isReadOnly,
335
+ "is-nested": __props.isNested,
336
+ "hide-delete": true,
337
+ "hidden-issues-inputs": __props.hiddenIssuesInputs,
338
+ onValueChanged: valueChanged
339
+ }, null, 8, [
340
+ "parameters",
341
+ "node-values",
342
+ "path",
343
+ "is-read-only",
344
+ "is-nested",
345
+ "hidden-issues-inputs"
346
+ ])]),
347
+ _: 2
348
+ }, 1024)),
349
+ getPickerPropertyValues(property, index).length > 0 && !__props.isReadOnly ? (openBlock(), createElementBlock("div", {
350
+ key: 2,
351
+ class: normalizeClass(_ctx.$style.addOption),
352
+ "data-test-id": "fixed-collection-add-property"
353
+ }, [createVNode(unref(N8nSelect_default), {
354
+ placeholder: addOptionalFieldButtonText.value,
355
+ size: "small",
356
+ filterable: "",
357
+ "model-value": null,
358
+ "onUpdate:modelValue": (valueName) => toggleOptionalValue(property, valueName, index)
359
+ }, {
360
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(getPickerPropertyValues(property, index), (value) => {
361
+ return openBlock(), createBlock(unref(N8nOption_default), {
362
+ key: value.name,
363
+ label: value.displayName || value.name,
364
+ value: value.name
365
+ }, {
366
+ default: withCtx(() => [createBaseVNode("div", _hoisted_3, [createBaseVNode("span", null, toDisplayString(value.displayName || value.name), 1), isOptionalValueAdded(property.name, value.name, index) ? (openBlock(), createBlock(unref(N8nIcon_default), {
367
+ key: 0,
368
+ icon: "check",
369
+ size: "medium"
370
+ })) : createCommentVNode("", true)])]),
371
+ _: 2
372
+ }, 1032, ["label", "value"]);
373
+ }), 128))]),
374
+ _: 2
375
+ }, 1032, ["placeholder", "onUpdate:modelValue"])], 2)) : createCommentVNode("", true)
376
+ ], 2)], 2))]),
377
+ _: 2
378
+ }, 1032, [
379
+ "modelValue",
380
+ "onUpdate:modelValue",
381
+ "drag-class",
382
+ "ghost-class",
383
+ "chosen-class",
384
+ "onChange"
385
+ ])])) : (openBlock(), createElementBlock("div", {
386
+ key: 2,
387
+ class: normalizeClass(_ctx.$style.parameterItem)
388
+ }, [createBaseVNode("div", { class: normalizeClass(_ctx.$style.parameterItemWrapper) }, [
389
+ !__props.isReadOnly ? (openBlock(), createElementBlock("div", {
390
+ key: 0,
391
+ class: normalizeClass(_ctx.$style.iconButton)
392
+ }, [createVNode(unref(N8nIconButton_default), {
393
+ type: "tertiary",
394
+ text: "",
395
+ size: "small",
396
+ icon: "trash-2",
397
+ "data-test-id": "fixed-collection-delete",
398
+ title: unref(locale).baseText("fixedCollectionParameter.deleteItem"),
399
+ onClick: ($event) => deleteOption(property.name)
400
+ }, null, 8, ["title", "onClick"])], 2)) : createCommentVNode("", true),
401
+ createVNode(ParameterInputList_default, {
402
+ parameters: getVisiblePropertyValues(property),
403
+ "node-values": __props.nodeValues,
404
+ path: getPropertyPath(property.name),
405
+ "is-read-only": __props.isReadOnly,
406
+ "is-nested": __props.isNested,
407
+ "hide-delete": true,
408
+ class: normalizeClass(_ctx.$style.parameterItem),
409
+ "hidden-issues-inputs": __props.hiddenIssuesInputs,
410
+ onValueChanged: valueChanged
411
+ }, null, 8, [
412
+ "parameters",
413
+ "node-values",
414
+ "path",
415
+ "is-read-only",
416
+ "is-nested",
417
+ "class",
418
+ "hidden-issues-inputs"
419
+ ]),
420
+ getPickerPropertyValues(property).length > 0 && !__props.isReadOnly ? (openBlock(), createElementBlock("div", {
421
+ key: 1,
422
+ class: normalizeClass(_ctx.$style.addOption),
423
+ "data-test-id": "fixed-collection-add-property"
424
+ }, [createVNode(unref(N8nSelect_default), {
425
+ placeholder: addOptionalFieldButtonText.value,
426
+ size: "small",
427
+ filterable: "",
428
+ "model-value": null,
429
+ "onUpdate:modelValue": (valueName) => toggleOptionalValue(property, valueName)
430
+ }, {
431
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(getPickerPropertyValues(property), (value) => {
432
+ return openBlock(), createBlock(unref(N8nOption_default), {
433
+ key: value.name,
434
+ label: value.displayName || value.name,
435
+ value: value.name
436
+ }, {
437
+ default: withCtx(() => [createBaseVNode("div", _hoisted_4, [createBaseVNode("span", null, toDisplayString(value.displayName || value.name), 1), isOptionalValueAdded(property.name, value.name) ? (openBlock(), createBlock(unref(N8nIcon_default), {
438
+ key: 0,
439
+ icon: "check",
440
+ size: "medium"
441
+ })) : createCommentVNode("", true)])]),
442
+ _: 2
443
+ }, 1032, ["label", "value"]);
444
+ }), 128))]),
445
+ _: 2
446
+ }, 1032, ["placeholder", "onUpdate:modelValue"])], 2)) : createCommentVNode("", true)
447
+ ], 2)], 2))], 2);
448
+ }), 128)),
449
+ parameterOptions.value.length > 0 && !__props.isReadOnly ? (openBlock(), createElementBlock("div", {
450
+ key: 1,
451
+ class: normalizeClass(_ctx.$style.controls)
452
+ }, [__props.parameter.options && __props.parameter.options.length === 1 ? (openBlock(), createBlock(unref(N8nButton_default), {
453
+ key: 0,
454
+ type: "tertiary",
455
+ block: "",
456
+ "data-test-id": "fixed-collection-add",
457
+ label: getPlaceholderText.value,
458
+ onClick: _cache[0] || (_cache[0] = ($event) => onAddButtonClick(__props.parameter.options[0].name))
459
+ }, null, 8, ["label"])) : (openBlock(), createElementBlock("div", {
460
+ key: 1,
461
+ class: normalizeClass(_ctx.$style.addOption)
462
+ }, [createVNode(unref(N8nSelect_default), {
463
+ modelValue: selectedOption.value,
464
+ "onUpdate:modelValue": [_cache[1] || (_cache[1] = ($event) => selectedOption.value = $event), optionSelected],
465
+ placeholder: getPlaceholderText.value,
466
+ size: "small",
467
+ filterable: ""
468
+ }, {
469
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(parameterOptions.value, (item) => {
470
+ return openBlock(), createBlock(unref(N8nOption_default), {
471
+ key: item.name,
472
+ label: unref(locale).nodeText(unref(activeNode)?.type).collectionOptionDisplayName(__props.parameter, item, __props.path),
473
+ value: item.name
474
+ }, null, 8, ["label", "value"]);
475
+ }), 128))]),
476
+ _: 1
477
+ }, 8, ["modelValue", "placeholder"])], 2))], 2)) : createCommentVNode("", true)
478
+ ], 42, _hoisted_1$1);
479
+ };
480
+ }
481
+ });
482
+ var FixedCollectionParameterLegacy_vue_vue_type_style_index_0_lang_module_default = {
483
+ fixedCollectionParameter: "_fixedCollectionParameter_1kixa_123",
484
+ ghost: "_ghost_1kixa_126",
485
+ dragging: "_dragging_1kixa_127",
486
+ parameterItemWrapper: "_parameterItemWrapper_1kixa_139",
487
+ controls: "_controls_1kixa_142",
488
+ active: "_active_1kixa_157",
489
+ fixedCollectionParameterProperty: "_fixedCollectionParameterProperty_1kixa_161",
490
+ iconButton: "_iconButton_1kixa_166",
491
+ parameterItem: "_parameterItem_1kixa_139",
492
+ defaultTopPadding: "_defaultTopPadding_1kixa_183",
493
+ extraTopPadding: "_extraTopPadding_1kixa_186",
494
+ borderTopDashed: "_borderTopDashed_1kixa_196",
495
+ noItemsExist: "_noItemsExist_1kixa_200",
496
+ addOption: "_addOption_1kixa_204"
497
+ };
498
+ var FixedCollectionParameterLegacy_default = /* @__PURE__ */ __plugin_vue_export_helper_default(FixedCollectionParameterLegacy_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": FixedCollectionParameterLegacy_vue_vue_type_style_index_0_lang_module_default }]]);
499
+ function useFixedCollectionItemState(key, { defaultWrapperExpanded = false } = {}) {
500
+ const storageKey = toValue(key);
501
+ const expandedStorageKey = `n8n-fixed-collection-expanded-${storageKey}`;
502
+ const wrapperStorageKey = `n8n-fixed-collection-wrapper-${storageKey}`;
503
+ const stableIndexesStorageKey = `n8n-fixed-collection-stable-indexes-${storageKey}`;
504
+ const itemMetadata = ref({});
505
+ const loadStableIndexes = () => {
506
+ const stored = sessionStorage.getItem(stableIndexesStorageKey);
507
+ if (!stored) return {};
508
+ try {
509
+ return JSON.parse(stored);
510
+ } catch {
511
+ return {};
512
+ }
513
+ };
514
+ const saveStableIndexes = (indexes) => {
515
+ sessionStorage.setItem(stableIndexesStorageKey, JSON.stringify(indexes));
516
+ };
517
+ const loadExpandedStableIndexes = () => {
518
+ const stored = sessionStorage.getItem(expandedStorageKey);
519
+ if (!stored) return /* @__PURE__ */ new Set();
520
+ return new Set(stored.split(",").filter(Boolean));
521
+ };
522
+ const saveExpandedStableIndexes = (expandedKeys) => {
523
+ sessionStorage.setItem(expandedStorageKey, Array.from(expandedKeys).join(","));
524
+ };
525
+ const expandedStableIndexes = ref(loadExpandedStableIndexes());
526
+ const loadWrapperExpanded = () => {
527
+ const stored = sessionStorage.getItem(wrapperStorageKey);
528
+ return stored !== null ? stored === "true" : defaultWrapperExpanded;
529
+ };
530
+ const saveWrapperExpanded = (value) => {
531
+ sessionStorage.setItem(wrapperStorageKey, String(value));
532
+ };
533
+ const wrapperExpanded = ref(loadWrapperExpanded());
534
+ const getItemId = (propertyName, index) => {
535
+ if (!itemMetadata.value[propertyName]) itemMetadata.value[propertyName] = [];
536
+ if (!itemMetadata.value[propertyName][index]) {
537
+ const propertyStableIndexes = loadStableIndexes()[propertyName] || [];
538
+ let stableIndex;
539
+ let isNewItem = false;
540
+ if (propertyStableIndexes[index] !== void 0) stableIndex = propertyStableIndexes[index];
541
+ else {
542
+ const existingIndexes = itemMetadata.value[propertyName].map((item) => item?.stableIndex).filter((idx) => idx !== void 0);
543
+ stableIndex = (existingIndexes.length > 0 ? Math.max(...existingIndexes) : -1) + 1;
544
+ isNewItem = true;
545
+ }
546
+ itemMetadata.value[propertyName][index] = {
547
+ id: v4_default(),
548
+ stableIndex
549
+ };
550
+ if (isNewItem) {
551
+ const allStableIndexes = loadStableIndexes();
552
+ allStableIndexes[propertyName] = itemMetadata.value[propertyName].map((m) => m.stableIndex);
553
+ saveStableIndexes(allStableIndexes);
554
+ }
555
+ }
556
+ return itemMetadata.value[propertyName][index].id;
557
+ };
558
+ const getItemStableIndex = (propertyName, index) => {
559
+ if (!itemMetadata.value[propertyName]?.[index]) getItemId(propertyName, index);
560
+ return itemMetadata.value[propertyName][index].stableIndex;
561
+ };
562
+ const getExpandedState = (propertyName, index) => {
563
+ const expandedKey = `${propertyName}:${getItemStableIndex(propertyName, index)}`;
564
+ return expandedStableIndexes.value.has(expandedKey);
565
+ };
566
+ const setExpandedState = (propertyName, index, value) => {
567
+ const expandedKey = `${propertyName}:${getItemStableIndex(propertyName, index)}`;
568
+ if (value) expandedStableIndexes.value.add(expandedKey);
569
+ else expandedStableIndexes.value.delete(expandedKey);
570
+ saveExpandedStableIndexes(expandedStableIndexes.value);
571
+ };
572
+ const initExpandedState = (propertyName, items, multipleValues) => {
573
+ if (!itemMetadata.value[propertyName]) itemMetadata.value[propertyName] = [];
574
+ if (multipleValues) items.forEach((_, index) => {
575
+ getItemId(propertyName, index);
576
+ });
577
+ };
578
+ const cleanupItem = (propertyName, index) => {
579
+ if (itemMetadata.value[propertyName]) {
580
+ const metadata = itemMetadata.value[propertyName][index];
581
+ itemMetadata.value[propertyName].splice(index, 1);
582
+ if (metadata?.stableIndex !== void 0) {
583
+ const expandedKey = `${propertyName}:${metadata.stableIndex}`;
584
+ expandedStableIndexes.value.delete(expandedKey);
585
+ saveExpandedStableIndexes(expandedStableIndexes.value);
586
+ }
587
+ const allStableIndexes = loadStableIndexes();
588
+ allStableIndexes[propertyName] = itemMetadata.value[propertyName].map((m) => m.stableIndex);
589
+ saveStableIndexes(allStableIndexes);
590
+ }
591
+ };
592
+ const cleanupProperty = (propertyName) => {
593
+ if (itemMetadata.value[propertyName]) {
594
+ itemMetadata.value[propertyName].map((item) => item.stableIndex).forEach((stableIndex) => {
595
+ const expandedKey = `${propertyName}:${stableIndex}`;
596
+ expandedStableIndexes.value.delete(expandedKey);
597
+ });
598
+ delete itemMetadata.value[propertyName];
599
+ }
600
+ const allStableIndexes = loadStableIndexes();
601
+ delete allStableIndexes[propertyName];
602
+ saveStableIndexes(allStableIndexes);
603
+ saveExpandedStableIndexes(expandedStableIndexes.value);
604
+ };
605
+ const trimArrays = (propertyName, targetLength) => {
606
+ if (itemMetadata.value[propertyName] && itemMetadata.value[propertyName].length > targetLength) {
607
+ itemMetadata.value[propertyName] = itemMetadata.value[propertyName].slice(0, targetLength);
608
+ const allStableIndexes = loadStableIndexes();
609
+ allStableIndexes[propertyName] = itemMetadata.value[propertyName].map((m) => m.stableIndex);
610
+ saveStableIndexes(allStableIndexes);
611
+ }
612
+ };
613
+ const reorderItems = (propertyName, oldIndex, newIndex) => {
614
+ if (itemMetadata.value[propertyName]) {
615
+ const metadata = [...itemMetadata.value[propertyName]];
616
+ const [movedMetadata] = metadata.splice(oldIndex, 1);
617
+ metadata.splice(newIndex, 0, movedMetadata);
618
+ itemMetadata.value[propertyName] = metadata;
619
+ const allStableIndexes = loadStableIndexes();
620
+ allStableIndexes[propertyName] = metadata.map((m) => m.stableIndex);
621
+ saveStableIndexes(allStableIndexes);
622
+ }
623
+ };
624
+ watch(wrapperExpanded, (newValue) => {
625
+ saveWrapperExpanded(newValue);
626
+ });
627
+ return {
628
+ getItemId,
629
+ getItemStableIndex,
630
+ getExpandedState,
631
+ setExpandedState,
632
+ initExpandedState,
633
+ cleanupItem,
634
+ cleanupProperty,
635
+ trimArrays,
636
+ reorderItems,
637
+ wrapperExpanded
638
+ };
639
+ }
640
+ var FixedCollectionItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
641
+ __name: "FixedCollectionItem",
642
+ props: {
643
+ itemId: {},
644
+ property: {},
645
+ itemData: {},
646
+ itemIndex: {},
647
+ stableIndex: {},
648
+ nodeValues: {},
649
+ propertyPath: {},
650
+ isReadOnly: { type: Boolean },
651
+ isExpanded: { type: Boolean },
652
+ sortable: { type: Boolean },
653
+ disableAnimation: { type: Boolean },
654
+ isDragging: { type: Boolean },
655
+ titleTemplate: {},
656
+ visiblePropertyValues: {},
657
+ pickerPropertyValues: {},
658
+ isOptionalValueAdded: { type: Function },
659
+ addOptionalFieldButtonText: {}
660
+ },
661
+ emits: [
662
+ "update:isExpanded",
663
+ "valueChanged",
664
+ "delete",
665
+ "toggleOptionalValue"
666
+ ],
667
+ setup(__props, { emit: __emit }) {
668
+ const locale = useI18n();
669
+ const { isEnabled: isCollectionOverhaulEnabled } = useCollectionOverhaul();
670
+ const props = __props;
671
+ const emit = __emit;
672
+ const hasOptionalFieldsToAdd = computed(() => props.pickerPropertyValues.length > 0 && !props.isReadOnly);
673
+ const pickerDropdownItems = computed(() => props.pickerPropertyValues.map((value) => ({
674
+ id: value.name,
675
+ label: value.displayName || value.name,
676
+ checked: props.isOptionalValueAdded(value.name)
677
+ })));
678
+ const defaultTitle = computed(() => `${props.property.displayName} ${props.stableIndex + 1}`);
679
+ const { resolvedExpression } = useResolvedExpression({
680
+ expression: () => props.titleTemplate ?? "",
681
+ additionalData: () => ({ $collection: { item: {
682
+ value: props.itemData,
683
+ index: props.stableIndex,
684
+ properties: props.property.values
685
+ } } })
686
+ });
687
+ const isValidResolvedTitle = (resolved) => !!resolved && resolved !== "undefined" && resolved !== "null" && typeof resolved === "string";
688
+ const itemTitle = computed(() => {
689
+ if (!props.titleTemplate) return defaultTitle.value;
690
+ const resolved = resolvedExpression.value;
691
+ return isValidResolvedTitle(resolved) ? resolved : defaultTitle.value;
692
+ });
693
+ const handleValueChanged = (parameterData) => emit("valueChanged", parameterData);
694
+ return (_ctx, _cache) => {
695
+ return openBlock(), createBlock(unref(N8nCollapsiblePanel_default), {
696
+ key: __props.itemId,
697
+ "model-value": __props.isExpanded,
698
+ title: itemTitle.value,
699
+ "data-item-key": __props.itemId,
700
+ "disable-animation": __props.disableAnimation,
701
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => emit("update:isExpanded", $event))
702
+ }, createSlots({
703
+ default: withCtx(() => [createVNode(ParameterInputList_default, {
704
+ "hide-delete": "",
705
+ "is-nested": "",
706
+ parameters: __props.visiblePropertyValues,
707
+ "node-values": __props.nodeValues,
708
+ path: __props.propertyPath,
709
+ "is-read-only": __props.isReadOnly,
710
+ "remove-first-parameter-margin": unref(isCollectionOverhaulEnabled),
711
+ "remove-last-parameter-margin": unref(isCollectionOverhaulEnabled),
712
+ onValueChanged: handleValueChanged
713
+ }, null, 8, [
714
+ "parameters",
715
+ "node-values",
716
+ "path",
717
+ "is-read-only",
718
+ "remove-first-parameter-margin",
719
+ "remove-last-parameter-margin"
720
+ ]), hasOptionalFieldsToAdd.value ? (openBlock(), createElementBlock("div", {
721
+ key: 0,
722
+ class: normalizeClass(_ctx.$style.addOption),
723
+ "data-test-id": "fixed-collection-add-property"
724
+ }, [createVNode(unref(N8nActionDropdown_default), {
725
+ items: pickerDropdownItems.value,
726
+ onSelect: _cache[1] || (_cache[1] = ($event) => emit("toggleOptionalValue", $event))
727
+ }, {
728
+ activator: withCtx(() => [createVNode(unref(N8nButton_default), {
729
+ type: "highlightFill",
730
+ icon: "plus",
731
+ label: __props.addOptionalFieldButtonText
732
+ }, null, 8, ["label"])]),
733
+ _: 1
734
+ }, 8, ["items"])], 2)) : createCommentVNode("", true)]),
735
+ _: 2
736
+ }, [!__props.isReadOnly ? {
737
+ name: "actions",
738
+ fn: withCtx(() => [createVNode(unref(N8nHeaderAction_default), {
739
+ icon: "trash-2",
740
+ label: unref(locale).baseText("fixedCollectionParameter.deleteItem"),
741
+ tooltip: unref(locale).baseText("fixedCollectionParameter.deleteParameter", { interpolate: { parameter: itemTitle.value } }),
742
+ danger: "",
743
+ "test-id": "fixed-collection-item-delete",
744
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("delete"))
745
+ }, null, 8, ["label", "tooltip"]), __props.sortable ? (openBlock(), createBlock(unref(N8nHeaderAction_default), {
746
+ key: 0,
747
+ icon: "grip-vertical",
748
+ label: unref(locale).baseText("fixedCollectionParameter.dragItem"),
749
+ class: normalizeClass([
750
+ "drag-handle",
751
+ _ctx.$style.dragHandle,
752
+ { [_ctx.$style.dragging]: __props.isDragging }
753
+ ]),
754
+ "test-id": "fixed-collection-item-drag"
755
+ }, null, 8, ["label", "class"])) : createCommentVNode("", true)]),
756
+ key: "0"
757
+ } : void 0]), 1032, [
758
+ "model-value",
759
+ "title",
760
+ "data-item-key",
761
+ "disable-animation"
762
+ ]);
763
+ };
764
+ }
765
+ });
766
+ var FixedCollectionItem_vue_vue_type_style_index_0_lang_module_default = {
767
+ dragHandle: "_dragHandle_iapu3_123",
768
+ dragging: "_dragging_iapu3_127",
769
+ addOption: "_addOption_iapu3_131"
770
+ };
771
+ var FixedCollectionItem_default = /* @__PURE__ */ __plugin_vue_export_helper_default(FixedCollectionItem_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": FixedCollectionItem_vue_vue_type_style_index_0_lang_module_default }]]);
772
+ var import_vuedraggable_umd = /* @__PURE__ */ __toESM(require_vuedraggable_umd(), 1);
773
+ var DRAG_DEBOUNCE_MS = 400;
774
+ var FixedCollectionItemList_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
775
+ __name: "FixedCollectionItemList",
776
+ props: {
777
+ property: {},
778
+ values: {},
779
+ nodeValues: {},
780
+ getPropertyPath: { type: Function },
781
+ itemState: {},
782
+ isReadOnly: { type: Boolean },
783
+ sortable: { type: Boolean },
784
+ titleTemplate: {},
785
+ getVisiblePropertyValues: { type: Function },
786
+ getPickerPropertyValues: { type: Function },
787
+ isOptionalValueAdded: { type: Function },
788
+ addOptionalFieldButtonText: {}
789
+ },
790
+ emits: [
791
+ "valueChanged",
792
+ "delete",
793
+ "dragChange",
794
+ "toggleOptionalValue"
795
+ ],
796
+ setup(__props, { emit: __emit }) {
797
+ const props = __props;
798
+ const emit = __emit;
799
+ const isDragging = ref(false);
800
+ const disableAnimation = refDebounced(isDragging, computed(() => isDragging.value ? 0 : DRAG_DEBOUNCE_MS));
801
+ const getItemKey = (item) => props.itemState.getItemId(props.property.name, props.values.findIndex((v) => v === item));
802
+ const setDragging = (value) => {
803
+ isDragging.value = value;
804
+ };
805
+ const onDragChange = (event) => emit("dragChange", props.property.name, event);
806
+ const onValueChanged = (parameterData) => emit("valueChanged", parameterData);
807
+ const onDelete = (index) => emit("delete", props.property.name, index);
808
+ const onToggleOptionalValue = (index, valueName) => emit("toggleOptionalValue", props.property.name, valueName, index);
809
+ const getIsOptionalValueAdded = (index) => (valueName) => props.isOptionalValueAdded(props.property.name, valueName, index);
810
+ return (_ctx, _cache) => {
811
+ return openBlock(), createBlock(unref(import_vuedraggable_umd.default), {
812
+ "model-value": __props.values,
813
+ "item-key": getItemKey,
814
+ handle: ".drag-handle",
815
+ "drag-class": _ctx.$style.dragging,
816
+ "ghost-class": _ctx.$style.ghost,
817
+ onStart: _cache[0] || (_cache[0] = ($event) => setDragging(true)),
818
+ onEnd: _cache[1] || (_cache[1] = ($event) => setDragging(false)),
819
+ onChange: onDragChange
820
+ }, {
821
+ item: withCtx(({ index }) => [(openBlock(), createBlock(FixedCollectionItem_default, {
822
+ key: __props.itemState.getItemId(__props.property.name, index),
823
+ "item-id": __props.itemState.getItemId(__props.property.name, index),
824
+ property: __props.property,
825
+ "item-data": __props.values[index],
826
+ "item-index": index,
827
+ "stable-index": __props.itemState.getItemStableIndex(__props.property.name, index),
828
+ "node-values": __props.nodeValues,
829
+ "property-path": __props.getPropertyPath(__props.property.name, index),
830
+ "is-read-only": __props.isReadOnly,
831
+ "is-expanded": __props.itemState.getExpandedState(__props.property.name, index),
832
+ "is-dragging": isDragging.value,
833
+ sortable: __props.sortable,
834
+ "disable-animation": unref(disableAnimation),
835
+ "title-template": __props.titleTemplate,
836
+ "visible-property-values": __props.getVisiblePropertyValues(__props.property, index),
837
+ "picker-property-values": __props.getPickerPropertyValues(__props.property, index),
838
+ "add-optional-field-button-text": __props.addOptionalFieldButtonText,
839
+ "is-optional-value-added": getIsOptionalValueAdded(index),
840
+ "onUpdate:isExpanded": ($event) => __props.itemState.setExpandedState(__props.property.name, index, $event),
841
+ onValueChanged,
842
+ onDelete: ($event) => onDelete(index),
843
+ onToggleOptionalValue: ($event) => onToggleOptionalValue(index, $event)
844
+ }, null, 8, [
845
+ "item-id",
846
+ "property",
847
+ "item-data",
848
+ "item-index",
849
+ "stable-index",
850
+ "node-values",
851
+ "property-path",
852
+ "is-read-only",
853
+ "is-expanded",
854
+ "is-dragging",
855
+ "sortable",
856
+ "disable-animation",
857
+ "title-template",
858
+ "visible-property-values",
859
+ "picker-property-values",
860
+ "add-optional-field-button-text",
861
+ "is-optional-value-added",
862
+ "onUpdate:isExpanded",
863
+ "onDelete",
864
+ "onToggleOptionalValue"
865
+ ]))]),
866
+ _: 1
867
+ }, 8, [
868
+ "model-value",
869
+ "drag-class",
870
+ "ghost-class"
871
+ ]);
872
+ };
873
+ }
874
+ });
875
+ var FixedCollectionItemList_vue_vue_type_style_index_0_lang_module_default = {
876
+ ghost: "_ghost_1nyri_123",
877
+ dragging: "_dragging_1nyri_124"
878
+ };
879
+ var FixedCollectionItemList_default = /* @__PURE__ */ __plugin_vue_export_helper_default(FixedCollectionItemList_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": FixedCollectionItemList_vue_vue_type_style_index_0_lang_module_default }]]);
880
+ var import_get = /* @__PURE__ */ __toESM(require_get(), 1);
881
+ var import_isEqual = /* @__PURE__ */ __toESM(require_isEqual(), 1);
882
+ var _hoisted_1 = ["data-test-id"];
883
+ var FixedCollectionParameterNew_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
884
+ __name: "FixedCollectionParameterNew",
885
+ props: {
886
+ nodeValues: {},
887
+ parameter: {},
888
+ path: {},
889
+ values: { default: () => ({}) },
890
+ isReadOnly: {
891
+ type: Boolean,
892
+ default: false
893
+ },
894
+ isNested: { type: Boolean },
895
+ isNewlyAdded: {
896
+ type: Boolean,
897
+ default: false
898
+ },
899
+ canDelete: {
900
+ type: Boolean,
901
+ default: false
902
+ },
903
+ hiddenIssuesInputs: { default: () => [] }
904
+ },
905
+ emits: ["valueChanged", "delete"],
906
+ setup(__props, { emit: __emit }) {
907
+ const locale = useI18n();
908
+ const ndvStore = useNDVStore();
909
+ const workflowsStore = useWorkflowsStore();
910
+ const nodeHelpers = useNodeHelpers();
911
+ const { activeNode } = storeToRefs(ndvStore);
912
+ const props = __props;
913
+ const emit = __emit;
914
+ const mutableValues = ref({});
915
+ const rootEl = useTemplateRef("rootEl");
916
+ const isDropdownOpen = ref(false);
917
+ const addedOptionalValues = ref(/* @__PURE__ */ new Map());
918
+ const storageKey = computed(() => `${activeNode.value?.id ?? "unknown"}-${props.path}`);
919
+ const hasSingleItem = computed(() => {
920
+ const entries = Object.entries(props.values);
921
+ if (entries.length !== 1) return false;
922
+ const [, items] = entries[0];
923
+ if (Array.isArray(items)) return items.length === 1;
924
+ return Object.keys(items).length > 0;
925
+ });
926
+ const itemState = useFixedCollectionItemState(storageKey, { defaultWrapperExpanded: props.isNewlyAdded || hasSingleItem.value });
927
+ const isWrapperExpanded = itemState.wrapperExpanded;
928
+ const getOptionProperties = (optionName) => {
929
+ if (!isINodePropertyCollectionList(props.parameter.options)) return void 0;
930
+ return props.parameter.options.find((option) => option.name === optionName);
931
+ };
932
+ const getPropertyPath = (name, index) => {
933
+ return `${props.path}.${name}${index !== void 0 ? `[${index}]` : ""}`;
934
+ };
935
+ const isArrayValue = (propertyName) => {
936
+ return Array.isArray(mutableValues.value[propertyName]);
937
+ };
938
+ const getArrayValues = (propertyName) => {
939
+ const value = mutableValues.value[propertyName];
940
+ return Array.isArray(value) ? value : [];
941
+ };
942
+ const multipleValues = computed(() => !!props.parameter.typeOptions?.multipleValues);
943
+ const sortable = computed(() => !!props.parameter.typeOptions?.sortable);
944
+ const propertyNames = computed(() => new Set(Object.keys(mutableValues.value ?? {})));
945
+ const properties = computed(() => Array.from(propertyNames.value).map(getOptionProperties).filter((prop) => prop !== void 0));
946
+ const parameterOptions = computed(() => {
947
+ if (!isINodePropertyCollectionList(props.parameter.options)) return [];
948
+ if (multipleValues.value) return props.parameter.options;
949
+ return props.parameter.options.filter((option) => !propertyNames.value.has(option.name));
950
+ });
951
+ const hideOptionalFields = computed(() => {
952
+ return !!props.parameter.typeOptions?.hideOptionalFields;
953
+ });
954
+ const addOptionalFieldButtonText = computed(() => {
955
+ if (!props.parameter.typeOptions?.addOptionalFieldButtonText) return locale.baseText("fixedCollectionParameter.addField");
956
+ return locale.nodeText(activeNode.value?.type).addOptionalFieldButtonText(props.parameter);
957
+ });
958
+ const getOptionalValuesKey = (propertyName, index) => {
959
+ return index !== void 0 ? `${propertyName}-${index}` : propertyName;
960
+ };
961
+ const hasNonDefaultValue = (propertyDef, itemValues) => {
962
+ if (!itemValues) return false;
963
+ const value = itemValues[propertyDef.name];
964
+ if (value === void 0 || value === null) return false;
965
+ if (typeof value === "string" && value === "") return false;
966
+ if (typeof value === "object") return !(0, import_isEqual.default)(value, propertyDef.default);
967
+ return value !== propertyDef.default;
968
+ };
969
+ const initializeAddedOptionalValues = () => {
970
+ if (!hideOptionalFields.value) return;
971
+ if (!isINodePropertyCollectionList(props.parameter.options)) return;
972
+ addedOptionalValues.value.clear();
973
+ for (const property of props.parameter.options) {
974
+ const propertyPath = `${props.path}.${property.name}`;
975
+ const propertyValues = (0, import_get.default)(props.nodeValues, propertyPath);
976
+ if (!propertyValues) continue;
977
+ const optionalValueDefs = property.values.filter((v) => v.required !== true && v.type !== "notice");
978
+ if (multipleValues.value && Array.isArray(propertyValues)) propertyValues.forEach((itemValues, index) => {
979
+ const key = getOptionalValuesKey(property.name, index);
980
+ const addedValues = /* @__PURE__ */ new Set();
981
+ for (const valueDef of optionalValueDefs) if (hasNonDefaultValue(valueDef, itemValues)) addedValues.add(valueDef.name);
982
+ if (addedValues.size > 0) addedOptionalValues.value.set(key, addedValues);
983
+ });
984
+ else if (typeof propertyValues === "object" && !Array.isArray(propertyValues)) {
985
+ const key = getOptionalValuesKey(property.name);
986
+ const addedValues = /* @__PURE__ */ new Set();
987
+ for (const valueDef of optionalValueDefs) if (hasNonDefaultValue(valueDef, propertyValues)) addedValues.add(valueDef.name);
988
+ if (addedValues.size > 0) addedOptionalValues.value.set(key, addedValues);
989
+ }
990
+ }
991
+ };
992
+ const isOptionalValueAdded = (propertyName, valueName, index) => {
993
+ const key = getOptionalValuesKey(propertyName, index);
994
+ return addedOptionalValues.value.get(key)?.has(valueName) ?? false;
995
+ };
996
+ const getVisiblePropertyValues = (property, index) => {
997
+ if (!hideOptionalFields.value) return property.values;
998
+ const key = getOptionalValuesKey(property.name, index);
999
+ const addedValues = addedOptionalValues.value.get(key);
1000
+ return property.values.filter((value) => {
1001
+ if (value.required === true) return true;
1002
+ if (value.type === "notice") return true;
1003
+ if (addedValues?.has(value.name)) return true;
1004
+ if (value.typeOptions?.showEvenWhenOptional) return true;
1005
+ return false;
1006
+ });
1007
+ };
1008
+ const getPickerPropertyValues = (property, index) => {
1009
+ if (!hideOptionalFields.value) return [];
1010
+ const itemPath = getPropertyPath(property.name, index);
1011
+ return property.values.filter((value) => {
1012
+ if (value.required === true) return false;
1013
+ if (value.type === "notice") return false;
1014
+ if (value.typeOptions?.showEvenWhenOptional) return false;
1015
+ return nodeHelpers.displayParameter(props.nodeValues, value, itemPath, activeNode.value);
1016
+ });
1017
+ };
1018
+ const toggleOptionalValue = (property, valueName, index) => {
1019
+ const key = getOptionalValuesKey(property.name, index);
1020
+ let valueSet = addedOptionalValues.value.get(key);
1021
+ if (!valueSet) {
1022
+ valueSet = /* @__PURE__ */ new Set();
1023
+ addedOptionalValues.value.set(key, valueSet);
1024
+ }
1025
+ const valueDef = property.values.find((v) => v.name === valueName);
1026
+ if (!valueDef) return;
1027
+ const isCurrentlyAdded = valueSet.has(valueName);
1028
+ if (isCurrentlyAdded) valueSet.delete(valueName);
1029
+ else valueSet.add(valueName);
1030
+ addedOptionalValues.value.set(key, valueSet);
1031
+ emit("valueChanged", {
1032
+ name: getPropertyPath(property.name, index) + `.${valueName}`,
1033
+ value: isCurrentlyAdded ? void 0 : deepCopy(valueDef.default)
1034
+ });
1035
+ };
1036
+ const onToggleOptionalValue = (propertyName, valueName, index) => {
1037
+ const property = getOptionProperties(propertyName);
1038
+ if (property) toggleOptionalValue(property, valueName, index);
1039
+ };
1040
+ const displayName = computed(() => locale.nodeText(activeNode.value?.type).inputLabelDisplayName(props.parameter, props.path));
1041
+ const isAddDisabled = computed(() => parameterOptions.value.length === 0);
1042
+ const placeholder = computed(() => locale.nodeText(activeNode.value?.type).placeholder(props.parameter, props.path) || locale.baseText("fixedCollectionParameter.addItem"));
1043
+ const addTooltipText = computed(() => isAddDisabled.value ? locale.baseText("fixedCollectionParameter.allOptionsAdded") : locale.baseText("fixedCollectionParameter.addParameter", { interpolate: { parameter: displayName.value } }));
1044
+ const dropdownOptions = computed(() => parameterOptions.value.map((option) => ({
1045
+ label: locale.nodeText(activeNode.value?.type).collectionOptionDisplayName(props.parameter, option, props.path),
1046
+ value: option.name
1047
+ })));
1048
+ const shouldShowSectionHeader = computed(() => !props.isNested && props.parameter.displayName !== "");
1049
+ const shouldWrapInCollapsible = computed(() => props.isNested);
1050
+ const shouldShowAddControl = computed(() => parameterOptions.value.length > 0 && !props.isReadOnly);
1051
+ const shouldShowAddInHeader = computed(() => shouldShowSectionHeader.value && !props.isReadOnly);
1052
+ const shouldShowAddAtBottom = computed(() => shouldShowAddControl.value && (shouldShowSectionHeader.value || shouldWrapInCollapsible.value && multipleValues.value));
1053
+ const shouldShowAddInCollapsibleActions = computed(() => shouldWrapInCollapsible.value && shouldShowAddControl.value);
1054
+ const isEmpty = computed(() => Object.values(mutableValues.value).every((value) => {
1055
+ if (Array.isArray(value)) return value.length === 0;
1056
+ return Object.keys(value).length === 0;
1057
+ }));
1058
+ const hasSingleOption = computed(() => dropdownOptions.value.length === 1);
1059
+ const hasMultipleOptions = computed(() => dropdownOptions.value.length > 1);
1060
+ const shouldDeleteEntireCollection = (optionName, index) => {
1061
+ if (index !== void 0) return false;
1062
+ const items = mutableValues.value[optionName];
1063
+ return !items || !Array.isArray(items) || items.length <= 1;
1064
+ };
1065
+ const getParentPath = () => {
1066
+ const pathParts = props.path.split(".");
1067
+ const parentPropertyName = pathParts.at(-1) ?? "";
1068
+ const parentPath = pathParts.slice(0, -1).join(".");
1069
+ return parentPath ? `${parentPath}.${parentPropertyName}` : parentPropertyName;
1070
+ };
1071
+ const getDeletionPath = (optionName, index) => {
1072
+ if (index !== void 0) return getPropertyPath(optionName, index);
1073
+ if (!multipleValues.value && props.isNested) return getParentPath();
1074
+ return getPropertyPath(optionName);
1075
+ };
1076
+ const handleDelete = (optionName, index) => {
1077
+ if (index !== void 0) itemState.cleanupItem(optionName, index);
1078
+ else if (shouldDeleteEntireCollection(optionName, index)) itemState.cleanupProperty(optionName);
1079
+ emit("valueChanged", {
1080
+ name: getDeletionPath(optionName, index),
1081
+ value: void 0
1082
+ });
1083
+ };
1084
+ const trackFieldAdded = () => {
1085
+ telemetry.track("User added workflow input field", {
1086
+ workflow_id: workflowsStore.workflow.id,
1087
+ node_id: ndvStore.activeNode?.id
1088
+ });
1089
+ };
1090
+ const trackFieldTypeChange = (parameterData) => {
1091
+ telemetry.track("User changed workflow input field type", {
1092
+ type: parameterData.value,
1093
+ workflow_id: workflowsStore.workflow.id,
1094
+ node_id: ndvStore.activeNode?.id
1095
+ });
1096
+ };
1097
+ const normalizeToArray = (items) => Array.isArray(items) ? items : [items];
1098
+ const initExpandedState = () => {
1099
+ Object.entries(mutableValues.value).forEach(([propertyName, items]) => itemState.initExpandedState(propertyName, normalizeToArray(items), multipleValues.value));
1100
+ };
1101
+ watch(() => props.values, (newValues) => {
1102
+ mutableValues.value = deepCopy(newValues);
1103
+ Object.entries(mutableValues.value).forEach(([propertyName, items]) => itemState.trimArrays(propertyName, normalizeToArray(items).length));
1104
+ initExpandedState();
1105
+ }, { deep: true });
1106
+ onBeforeMount(() => {
1107
+ mutableValues.value = deepCopy(props.values);
1108
+ initExpandedState();
1109
+ initializeAddedOptionalValues();
1110
+ if (hasSingleItem.value) {
1111
+ const firstProperty = properties.value[0];
1112
+ if (firstProperty && multipleValues.value) {
1113
+ const items = mutableValues.value[firstProperty.name];
1114
+ if (Array.isArray(items) && items.length > 0) itemState.setExpandedState(firstProperty.name, 0, true);
1115
+ }
1116
+ }
1117
+ });
1118
+ const initializeParameterValue = (optionParameter) => {
1119
+ if (!(optionParameter.typeOptions?.multipleValues === true)) return deepCopy(optionParameter.default);
1120
+ if (optionParameter.type === "fixedCollection") return {};
1121
+ const existingArray = (0, import_get.default)(props.nodeValues, [props.path, optionParameter.name], []);
1122
+ const defaultValue = optionParameter.default;
1123
+ const normalizeDefault = (value) => {
1124
+ if (Array.isArray(value)) return deepCopy(value);
1125
+ if (value !== "" && typeof value !== "object") return [deepCopy(value)];
1126
+ return [];
1127
+ };
1128
+ return [...existingArray, ...normalizeDefault(defaultValue)];
1129
+ };
1130
+ const scrollToNewItem = async (optionName, itemIndex) => {
1131
+ await nextTick();
1132
+ const itemId = itemState.getItemId(optionName, itemIndex);
1133
+ (rootEl.value?.querySelector(`[data-item-key="${itemId}"]`))?.scrollIntoView({
1134
+ behavior: "smooth",
1135
+ block: "nearest"
1136
+ });
1137
+ };
1138
+ const optionSelected = (optionName) => {
1139
+ const option = getOptionProperties(optionName);
1140
+ if (!option) return;
1141
+ const name = `${props.path}.${option.name}`;
1142
+ const newParameterValue = Object.fromEntries(option.values.map((optionParameter) => [optionParameter.name, initializeParameterValue(optionParameter)]));
1143
+ const existingValues = (0, import_get.default)(props.nodeValues, name, []);
1144
+ emit("valueChanged", {
1145
+ name,
1146
+ value: multipleValues.value ? [...existingValues, newParameterValue] : newParameterValue
1147
+ });
1148
+ const newItemIndex = existingValues.length;
1149
+ itemState.setExpandedState(option.name, newItemIndex, true);
1150
+ if (multipleValues.value) scrollToNewItem(option.name, newItemIndex);
1151
+ if (props.parameter.name === "workflowInputs") trackFieldAdded();
1152
+ };
1153
+ const valueChanged = (parameterData) => {
1154
+ emit("valueChanged", parameterData);
1155
+ if (props.parameter.name === "workflowInputs") trackFieldTypeChange(parameterData);
1156
+ };
1157
+ const onDragChange = (optionName, event) => {
1158
+ if (event.moved) {
1159
+ itemState.reorderItems(optionName, event.moved.oldIndex, event.moved.newIndex);
1160
+ const items = mutableValues.value[optionName];
1161
+ if (Array.isArray(items)) {
1162
+ const reorderedItems = [...items];
1163
+ const [movedItem] = reorderedItems.splice(event.moved.oldIndex, 1);
1164
+ reorderedItems.splice(event.moved.newIndex, 0, movedItem);
1165
+ mutableValues.value[optionName] = reorderedItems;
1166
+ }
1167
+ emit("valueChanged", {
1168
+ name: getPropertyPath(optionName),
1169
+ value: mutableValues.value[optionName],
1170
+ type: "optionsOrderChanged"
1171
+ });
1172
+ }
1173
+ };
1174
+ const onHeaderAddClick = async () => {
1175
+ if (!isWrapperExpanded.value) {
1176
+ isWrapperExpanded.value = true;
1177
+ await nextTick();
1178
+ }
1179
+ if (hasSingleOption.value && dropdownOptions.value[0]) optionSelected(dropdownOptions.value[0].value);
1180
+ };
1181
+ const onAddButtonClick = () => {
1182
+ if (hasSingleOption.value && dropdownOptions.value[0]) optionSelected(dropdownOptions.value[0].value);
1183
+ };
1184
+ return (_ctx, _cache) => {
1185
+ return openBlock(), createElementBlock("div", {
1186
+ ref_key: "rootEl",
1187
+ ref: rootEl,
1188
+ class: normalizeClass([_ctx.$style.fixedCollectionParameter, { [_ctx.$style.empty]: properties.value.length === 0 }]),
1189
+ "data-test-id": `fixed-collection-${props.parameter?.name}`,
1190
+ onKeydown: _cache[4] || (_cache[4] = withModifiers(() => {}, ["stop"]))
1191
+ }, [shouldShowSectionHeader.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1192
+ createVNode(unref(SectionHeader_default), {
1193
+ title: displayName.value,
1194
+ bordered: isEmpty.value,
1195
+ class: normalizeClass(_ctx.$style.sectionHeader)
1196
+ }, createSlots({ _: 2 }, [shouldShowAddInHeader.value ? {
1197
+ name: "actions",
1198
+ fn: withCtx(() => [createVNode(unref(N8nTooltip_default), {
1199
+ disabled: !isAddDisabled.value,
1200
+ "show-after": unref(500)
1201
+ }, {
1202
+ content: withCtx(() => [createTextVNode(toDisplayString(addTooltipText.value), 1)]),
1203
+ default: withCtx(() => [hasMultipleOptions.value ? (openBlock(), createBlock(unref(N8nDropdown_default), {
1204
+ key: 0,
1205
+ options: dropdownOptions.value,
1206
+ disabled: isAddDisabled.value,
1207
+ "data-test-id": "fixed-collection-add-header",
1208
+ onSelect: optionSelected
1209
+ }, {
1210
+ trigger: withCtx(() => [createVNode(unref(N8nHeaderAction_default), {
1211
+ icon: "plus",
1212
+ label: placeholder.value,
1213
+ disabled: isAddDisabled.value
1214
+ }, null, 8, ["label", "disabled"])]),
1215
+ _: 1
1216
+ }, 8, ["options", "disabled"])) : (openBlock(), createBlock(unref(N8nHeaderAction_default), {
1217
+ key: 1,
1218
+ icon: "plus",
1219
+ label: placeholder.value,
1220
+ disabled: isAddDisabled.value,
1221
+ "data-test-id": "fixed-collection-add-header",
1222
+ onClick: onHeaderAddClick
1223
+ }, null, 8, ["label", "disabled"]))]),
1224
+ _: 1
1225
+ }, 8, ["disabled", "show-after"])]),
1226
+ key: "0"
1227
+ } : void 0]), 1032, [
1228
+ "title",
1229
+ "bordered",
1230
+ "class"
1231
+ ]),
1232
+ (openBlock(true), createElementBlock(Fragment, null, renderList(properties.value, (property) => {
1233
+ return openBlock(), createElementBlock("div", {
1234
+ key: property.name,
1235
+ class: normalizeClass(_ctx.$style.propertySection)
1236
+ }, [multipleValues.value && isArrayValue(property.name) ? (openBlock(), createBlock(FixedCollectionItemList_default, {
1237
+ key: 0,
1238
+ property,
1239
+ values: getArrayValues(property.name),
1240
+ "node-values": __props.nodeValues,
1241
+ "get-property-path": getPropertyPath,
1242
+ "item-state": unref(itemState),
1243
+ "is-read-only": !!__props.isReadOnly,
1244
+ sortable: sortable.value,
1245
+ "title-template": __props.parameter.typeOptions?.fixedCollection?.itemTitle,
1246
+ "get-visible-property-values": getVisiblePropertyValues,
1247
+ "get-picker-property-values": getPickerPropertyValues,
1248
+ "is-optional-value-added": isOptionalValueAdded,
1249
+ "add-optional-field-button-text": addOptionalFieldButtonText.value,
1250
+ onValueChanged: valueChanged,
1251
+ onDelete: handleDelete,
1252
+ onDragChange,
1253
+ onToggleOptionalValue
1254
+ }, null, 8, [
1255
+ "property",
1256
+ "values",
1257
+ "node-values",
1258
+ "item-state",
1259
+ "is-read-only",
1260
+ "sortable",
1261
+ "title-template",
1262
+ "add-optional-field-button-text"
1263
+ ])) : (openBlock(), createBlock(unref(N8nCollapsiblePanel_default), {
1264
+ key: 1,
1265
+ "model-value": unref(itemState).getExpandedState(property.name, 0),
1266
+ title: property.displayName,
1267
+ "data-item-key": property.name,
1268
+ "onUpdate:modelValue": ($event) => unref(itemState).setExpandedState(property.name, 0, $event)
1269
+ }, createSlots({
1270
+ default: withCtx(() => [createVNode(ParameterInputList_default, {
1271
+ "hide-delete": "",
1272
+ parameters: getVisiblePropertyValues(property),
1273
+ "node-values": __props.nodeValues,
1274
+ path: getPropertyPath(property.name, 0),
1275
+ "is-read-only": !!__props.isReadOnly,
1276
+ "is-nested": false,
1277
+ "remove-first-parameter-margin": true,
1278
+ "remove-last-parameter-margin": true,
1279
+ "hidden-issues-inputs": __props.hiddenIssuesInputs,
1280
+ onValueChanged: valueChanged
1281
+ }, null, 8, [
1282
+ "parameters",
1283
+ "node-values",
1284
+ "path",
1285
+ "is-read-only",
1286
+ "hidden-issues-inputs"
1287
+ ])]),
1288
+ _: 2
1289
+ }, [!__props.isReadOnly ? {
1290
+ name: "actions",
1291
+ fn: withCtx(() => [createVNode(unref(N8nHeaderAction_default), {
1292
+ icon: "trash-2",
1293
+ label: unref(locale).baseText("fixedCollectionParameter.deleteItem"),
1294
+ danger: "",
1295
+ onClick: ($event) => handleDelete(property.name)
1296
+ }, null, 8, ["label", "onClick"])]),
1297
+ key: "0"
1298
+ } : void 0]), 1032, [
1299
+ "model-value",
1300
+ "title",
1301
+ "data-item-key",
1302
+ "onUpdate:modelValue"
1303
+ ]))], 2);
1304
+ }), 128)),
1305
+ shouldShowAddAtBottom.value ? (openBlock(), createElementBlock("div", {
1306
+ key: 0,
1307
+ class: normalizeClass(_ctx.$style.controls)
1308
+ }, [hasSingleOption.value ? (openBlock(), createBlock(unref(N8nButton_default), {
1309
+ key: 0,
1310
+ type: "highlightFill",
1311
+ icon: "plus",
1312
+ "data-test-id": `fixed-collection-add-top-level-button`,
1313
+ label: placeholder.value,
1314
+ disabled: isAddDisabled.value,
1315
+ onClick: onAddButtonClick
1316
+ }, null, 8, ["label", "disabled"])) : hasMultipleOptions.value ? (openBlock(), createBlock(unref(N8nDropdown_default), {
1317
+ key: 1,
1318
+ options: dropdownOptions.value,
1319
+ class: normalizeClass(_ctx.$style.dropdown),
1320
+ "data-test-id": `fixed-collection-add-top-level-dropdown`,
1321
+ disabled: isAddDisabled.value,
1322
+ onSelect: optionSelected
1323
+ }, {
1324
+ trigger: withCtx(() => [createVNode(unref(N8nButton_default), {
1325
+ type: "highlightFill",
1326
+ icon: "plus",
1327
+ label: placeholder.value,
1328
+ disabled: isAddDisabled.value
1329
+ }, null, 8, ["label", "disabled"])]),
1330
+ _: 1
1331
+ }, 8, [
1332
+ "options",
1333
+ "class",
1334
+ "disabled"
1335
+ ])) : createCommentVNode("", true)], 2)) : createCommentVNode("", true)
1336
+ ], 64)) : shouldWrapInCollapsible.value ? (openBlock(), createBlock(unref(N8nCollapsiblePanel_default), {
1337
+ key: 1,
1338
+ modelValue: unref(isWrapperExpanded),
1339
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => isRef(isWrapperExpanded) ? isWrapperExpanded.value = $event : null),
1340
+ title: displayName.value,
1341
+ "show-actions-on-hover": !isDropdownOpen.value
1342
+ }, {
1343
+ actions: withCtx(() => [shouldShowAddInCollapsibleActions.value ? (openBlock(), createBlock(unref(N8nTooltip_default), {
1344
+ key: 0,
1345
+ "show-after": unref(500)
1346
+ }, {
1347
+ content: withCtx(() => [createTextVNode(toDisplayString(addTooltipText.value), 1)]),
1348
+ default: withCtx(() => [hasMultipleOptions.value ? (openBlock(), createBlock(unref(N8nDropdown_default), {
1349
+ key: 0,
1350
+ options: dropdownOptions.value,
1351
+ disabled: isAddDisabled.value,
1352
+ "data-test-id": "fixed-collection-add-header",
1353
+ onSelect: optionSelected,
1354
+ "onUpdate:open": _cache[0] || (_cache[0] = ($event) => isDropdownOpen.value = $event)
1355
+ }, {
1356
+ trigger: withCtx(() => [createVNode(unref(N8nHeaderAction_default), {
1357
+ icon: "plus",
1358
+ label: placeholder.value,
1359
+ disabled: isAddDisabled.value
1360
+ }, null, 8, ["label", "disabled"])]),
1361
+ _: 1
1362
+ }, 8, ["options", "disabled"])) : (openBlock(), createBlock(unref(N8nHeaderAction_default), {
1363
+ key: 1,
1364
+ icon: "plus",
1365
+ label: placeholder.value,
1366
+ disabled: isAddDisabled.value,
1367
+ "data-test-id": "fixed-collection-add-header-nested",
1368
+ onClick: onHeaderAddClick
1369
+ }, null, 8, ["label", "disabled"]))]),
1370
+ _: 1
1371
+ }, 8, ["show-after"])) : createCommentVNode("", true), __props.canDelete && !__props.isReadOnly ? (openBlock(), createBlock(unref(N8nHeaderAction_default), {
1372
+ key: 1,
1373
+ icon: "trash-2",
1374
+ label: unref(locale).baseText("fixedCollectionParameter.deleteItem"),
1375
+ danger: "",
1376
+ "data-test-id": "fixed-collection-delete-nested",
1377
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("delete"))
1378
+ }, null, 8, ["label"])) : createCommentVNode("", true)]),
1379
+ default: withCtx(() => [createBaseVNode("div", null, [multipleValues.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [(openBlock(true), createElementBlock(Fragment, null, renderList(properties.value, (property) => {
1380
+ return openBlock(), createElementBlock("div", {
1381
+ key: property.name,
1382
+ class: normalizeClass(_ctx.$style.propertySection)
1383
+ }, [mutableValues.value[property.name] ? (openBlock(), createBlock(FixedCollectionItemList_default, {
1384
+ key: 0,
1385
+ property,
1386
+ values: mutableValues.value[property.name],
1387
+ "node-values": __props.nodeValues,
1388
+ "get-property-path": getPropertyPath,
1389
+ "item-state": unref(itemState),
1390
+ "is-read-only": !!__props.isReadOnly,
1391
+ sortable: sortable.value,
1392
+ "title-template": __props.parameter.typeOptions?.fixedCollection?.itemTitle,
1393
+ "get-visible-property-values": getVisiblePropertyValues,
1394
+ "get-picker-property-values": getPickerPropertyValues,
1395
+ "is-optional-value-added": isOptionalValueAdded,
1396
+ "add-optional-field-button-text": addOptionalFieldButtonText.value,
1397
+ onValueChanged: valueChanged,
1398
+ onDelete: handleDelete,
1399
+ onDragChange,
1400
+ onToggleOptionalValue: _cache[2] || (_cache[2] = (propertyName, valueName, index) => toggleOptionalValue(getOptionProperties(propertyName), valueName, index))
1401
+ }, null, 8, [
1402
+ "property",
1403
+ "values",
1404
+ "node-values",
1405
+ "item-state",
1406
+ "is-read-only",
1407
+ "sortable",
1408
+ "title-template",
1409
+ "add-optional-field-button-text"
1410
+ ])) : createCommentVNode("", true)], 2);
1411
+ }), 128)), shouldShowAddAtBottom.value ? (openBlock(), createElementBlock("div", {
1412
+ key: 0,
1413
+ class: normalizeClass(_ctx.$style.controls)
1414
+ }, [hasSingleOption.value ? (openBlock(), createBlock(unref(N8nButton_default), {
1415
+ key: 0,
1416
+ type: "highlightFill",
1417
+ icon: "plus",
1418
+ "data-test-id": `fixed-collection-add-nested-button`,
1419
+ label: placeholder.value,
1420
+ onClick: onAddButtonClick
1421
+ }, null, 8, ["label"])) : hasMultipleOptions.value ? (openBlock(), createBlock(unref(N8nDropdown_default), {
1422
+ key: 1,
1423
+ options: dropdownOptions.value,
1424
+ class: normalizeClass(_ctx.$style.dropdown),
1425
+ "data-test-id": `fixed-collection-add-nested-dropdown`,
1426
+ onSelect: optionSelected
1427
+ }, {
1428
+ trigger: withCtx(() => [createVNode(unref(N8nButton_default), {
1429
+ type: "highlightFill",
1430
+ icon: "plus",
1431
+ label: placeholder.value
1432
+ }, null, 8, ["label"])]),
1433
+ _: 1
1434
+ }, 8, ["options", "class"])) : createCommentVNode("", true)], 2)) : createCommentVNode("", true)], 64)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(properties.value, (property) => {
1435
+ return openBlock(), createElementBlock("div", {
1436
+ key: property.name,
1437
+ class: normalizeClass(_ctx.$style.propertySection)
1438
+ }, [createVNode(ParameterInputList_default, {
1439
+ "hide-delete": "",
1440
+ parameters: getVisiblePropertyValues(property),
1441
+ "node-values": __props.nodeValues,
1442
+ path: getPropertyPath(property.name),
1443
+ "is-read-only": !!__props.isReadOnly,
1444
+ "is-nested": true,
1445
+ "remove-first-parameter-margin": true,
1446
+ "remove-last-parameter-margin": true,
1447
+ "hidden-issues-inputs": __props.hiddenIssuesInputs,
1448
+ onValueChanged: valueChanged
1449
+ }, null, 8, [
1450
+ "parameters",
1451
+ "node-values",
1452
+ "path",
1453
+ "is-read-only",
1454
+ "hidden-issues-inputs"
1455
+ ])], 2);
1456
+ }), 128))])]),
1457
+ _: 1
1458
+ }, 8, [
1459
+ "modelValue",
1460
+ "title",
1461
+ "show-actions-on-hover"
1462
+ ])) : (openBlock(true), createElementBlock(Fragment, { key: 2 }, renderList(properties.value, (property) => {
1463
+ return openBlock(), createElementBlock("div", {
1464
+ key: property.name,
1465
+ class: normalizeClass(_ctx.$style.propertySection)
1466
+ }, [multipleValues.value && isArrayValue(property.name) ? (openBlock(), createBlock(FixedCollectionItemList_default, {
1467
+ key: 0,
1468
+ property,
1469
+ values: getArrayValues(property.name),
1470
+ "node-values": __props.nodeValues,
1471
+ "get-property-path": getPropertyPath,
1472
+ "item-state": unref(itemState),
1473
+ "is-read-only": !!__props.isReadOnly,
1474
+ sortable: sortable.value,
1475
+ "title-template": __props.parameter.typeOptions?.fixedCollection?.itemTitle,
1476
+ "get-visible-property-values": getVisiblePropertyValues,
1477
+ "get-picker-property-values": getPickerPropertyValues,
1478
+ "is-optional-value-added": isOptionalValueAdded,
1479
+ "add-optional-field-button-text": addOptionalFieldButtonText.value,
1480
+ onValueChanged: valueChanged,
1481
+ onDelete: handleDelete,
1482
+ onDragChange,
1483
+ onToggleOptionalValue
1484
+ }, null, 8, [
1485
+ "property",
1486
+ "values",
1487
+ "node-values",
1488
+ "item-state",
1489
+ "is-read-only",
1490
+ "sortable",
1491
+ "title-template",
1492
+ "add-optional-field-button-text"
1493
+ ])) : (openBlock(), createBlock(unref(N8nCollapsiblePanel_default), {
1494
+ key: 1,
1495
+ "model-value": unref(itemState).getExpandedState(property.name, 0),
1496
+ title: property.displayName,
1497
+ "data-item-key": property.name,
1498
+ "onUpdate:modelValue": ($event) => unref(itemState).setExpandedState(property.name, 0, $event)
1499
+ }, createSlots({
1500
+ default: withCtx(() => [createVNode(ParameterInputList_default, {
1501
+ "hide-delete": "",
1502
+ parameters: getVisiblePropertyValues(property),
1503
+ "node-values": __props.nodeValues,
1504
+ path: getPropertyPath(property.name, 0),
1505
+ "is-read-only": !!__props.isReadOnly,
1506
+ "is-nested": false,
1507
+ "remove-first-parameter-margin": true,
1508
+ "remove-last-parameter-margin": true,
1509
+ "hidden-issues-inputs": __props.hiddenIssuesInputs,
1510
+ onValueChanged: valueChanged
1511
+ }, null, 8, [
1512
+ "parameters",
1513
+ "node-values",
1514
+ "path",
1515
+ "is-read-only",
1516
+ "hidden-issues-inputs"
1517
+ ])]),
1518
+ _: 2
1519
+ }, [!__props.isReadOnly ? {
1520
+ name: "actions",
1521
+ fn: withCtx(() => [createVNode(unref(N8nHeaderAction_default), {
1522
+ icon: "trash-2",
1523
+ label: unref(locale).baseText("fixedCollectionParameter.deleteItem"),
1524
+ danger: "",
1525
+ onClick: ($event) => handleDelete(property.name)
1526
+ }, null, 8, ["label", "onClick"])]),
1527
+ key: "0"
1528
+ } : void 0]), 1032, [
1529
+ "model-value",
1530
+ "title",
1531
+ "data-item-key",
1532
+ "onUpdate:modelValue"
1533
+ ]))], 2);
1534
+ }), 128))], 42, _hoisted_1);
1535
+ };
1536
+ }
1537
+ });
1538
+ var FixedCollectionParameterNew_vue_vue_type_style_index_0_lang_module_default = {
1539
+ fixedCollectionParameter: "_fixedCollectionParameter_xh4we_123",
1540
+ propertySection: "_propertySection_xh4we_127",
1541
+ sectionHeader: "_sectionHeader_xh4we_138",
1542
+ controls: "_controls_xh4we_142",
1543
+ dropdown: "_dropdown_xh4we_146"
1544
+ };
1545
+ var FixedCollectionParameterNew_default = /* @__PURE__ */ __plugin_vue_export_helper_default(FixedCollectionParameterNew_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": FixedCollectionParameterNew_vue_vue_type_style_index_0_lang_module_default }]]);
1546
+ var FixedCollectionParameter_default = /* @__PURE__ */ defineComponent({
1547
+ __name: "FixedCollectionParameter",
1548
+ props: {
1549
+ nodeValues: {},
1550
+ parameter: {},
1551
+ path: {},
1552
+ values: { default: void 0 },
1553
+ isReadOnly: { type: Boolean },
1554
+ isNested: { type: Boolean },
1555
+ isNewlyAdded: { type: Boolean },
1556
+ canDelete: { type: Boolean },
1557
+ hiddenIssuesInputs: { default: () => [] }
1558
+ },
1559
+ emits: ["valueChanged", "delete"],
1560
+ setup(__props, { emit: __emit }) {
1561
+ const { isEnabled: isCollectionOverhaulEnabled } = useCollectionOverhaul();
1562
+ const emit = __emit;
1563
+ return (_ctx, _cache) => {
1564
+ return !unref(isCollectionOverhaulEnabled) ? (openBlock(), createBlock(FixedCollectionParameterLegacy_default, mergeProps({ key: 0 }, _ctx.$props, { onValueChanged: _cache[0] || (_cache[0] = ($event) => emit("valueChanged", $event)) }), null, 16)) : (openBlock(), createBlock(FixedCollectionParameterNew_default, mergeProps({ key: 1 }, _ctx.$props, {
1565
+ onValueChanged: _cache[1] || (_cache[1] = ($event) => emit("valueChanged", $event)),
1566
+ onDelete: _cache[2] || (_cache[2] = ($event) => emit("delete"))
1567
+ }), null, 16));
1568
+ };
1569
+ }
1570
+ });
1571
+ export { FixedCollectionParameter_default as default };