n8n-editor-ui 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/data/node-popularity.json +1920 -1916
  2. package/dist/assets/{AddDataTableModal-DnW0v2OC.js → AddDataTableModal-Y13E7Akf.js} +18 -22
  3. package/dist/assets/{AgentEditorModal-CnYw6elM.css → AgentEditorModal-9v5_7c4M.css} +11 -7
  4. package/dist/assets/{AgentEditorModal-Djnq_0FY.js → AgentEditorModal-BrMkCIu5.js} +34 -38
  5. package/dist/assets/{Alert-KBN7v2aB.js → Alert-C0sX2MmC.js} +9 -9
  6. package/dist/assets/AnimatedSpinner-B25lpnvb.js +15 -0
  7. package/dist/assets/{AnnotationTagsDropdown.ee-QStDN6Th.js → AnnotationTagsDropdown.ee-D52VzZRF.js} +6 -6
  8. package/dist/assets/{MainHeader-D7esq2FA.js → AppHeader-BMRzlZ88.js} +359 -529
  9. package/dist/assets/{MainHeader-CSaAWCWj.css → AppHeader-CiEVBSe4.css} +42 -160
  10. package/dist/assets/{MainSidebar-BehIhk7J.js → AppSidebar-B88OkpG6.js} +107 -84
  11. package/dist/assets/{MainSidebar-CEsQ8o1Y.css → AppSidebar-qYnACKTG.css} +13 -4
  12. package/dist/assets/{AuthView-8nC1kvaA.js → AuthView-B28bjxIF.js} +12 -12
  13. package/dist/assets/{SettingsView-6sirGv9l.css → BottomMenu-CYgiV90C.css} +57 -37
  14. package/dist/assets/{BottomMenu-B-HQRX4l.js → BottomMenu-CfzAqh6J.js} +70 -168
  15. package/dist/assets/{useCanvasMapping-Cl6iFzZx.js → CanvasRunWorkflowButton-CLV9eJ9R.js} +268 -262
  16. package/dist/assets/{useCanvasMapping-CyDAqgNV.css → CanvasRunWorkflowButton-D_Rqnskj.css} +203 -203
  17. package/dist/assets/{ChangePasswordView-B4U_r0Av.js → ChangePasswordView-CXDHJS_U.js} +14 -19
  18. package/dist/assets/ChatAgentAvatar-BqR7_kd_.js +67 -0
  19. package/dist/assets/{ChatAgentAvatar-B68ZZ295.css → ChatAgentAvatar-D94COYC_.css} +10 -13
  20. package/dist/assets/{ChatFile-Dtf_b24Y.js → ChatFile-DGN9Z6P_.js} +17 -17
  21. package/dist/assets/{ChatLayout-CxM-3LAt.css → ChatLayout-C5Cltxb6.css} +1 -8
  22. package/dist/assets/{ChatLayout-BfWVFhWE.js → ChatLayout-IMyTW2P2.js} +11 -15
  23. package/dist/assets/{ChatPersonalAgentsView-DTF6JtUh.js → ChatPersonalAgentsView-PT_0eEaD.js} +19 -25
  24. package/dist/assets/{ChatSidebar-DU5x3UPL.js → ChatSidebar-CG-7B_hY.js} +56 -72
  25. package/dist/assets/{ChatSidebar-DcNxY7Pt.css → ChatSidebar-D-hWKn7w.css} +126 -0
  26. package/dist/assets/{ChatView-D8ScSRRr.js → ChatView-DaUB9Ecc.js} +113 -113
  27. package/dist/assets/{ChatView-DrZ9gYjI.css → ChatView-DjGNW1KJ.css} +58 -50
  28. package/dist/assets/{ChatWorkflowAgentsView-Kiqxl5Dz.js → ChatWorkflowAgentsView-Dv-lY297.js} +19 -25
  29. package/dist/assets/CollectionParameter-CEz9OjV2.js +42 -0
  30. package/dist/assets/{CommunityNodeUpdateInfo-DsR3DdTu.js → CommunityNodeUpdateInfo-CauvhKGq.js} +13 -13
  31. package/dist/assets/{CopyInput-DJ2yTciL.js → CopyInput-B4eaHdxj.js} +15 -15
  32. package/dist/assets/{CredentialIcon-DJybkA4h.js → CredentialIcon-BtjftPax.js} +6 -6
  33. package/dist/assets/{CredentialPicker-Bao3p-41.js → CredentialPicker-BFTsdquZ.js} +8 -8
  34. package/dist/assets/{CredentialSelectorModal-DaRU1zXR.js → CredentialSelectorModal-y04x0moO.js} +22 -27
  35. package/dist/assets/{CredentialsView-wSH7BheV.js → CredentialsView-CbhjEdy6.js} +46 -52
  36. package/dist/assets/{DataTableActions-BMf3BHPM.js → DataTableActions-V_mGpWNk.js} +6 -6
  37. package/dist/assets/{DataTableDetailsView-CSIqpXLA.js → DataTableDetailsView-BaCljaXy.js} +27 -31
  38. package/dist/assets/{DataTableView-Blgv7Ln8.js → DataTableView-DtSSvuD-.js} +31 -37
  39. package/dist/assets/DemoFooter-2XBpYf-9.js +53 -0
  40. package/dist/assets/{Draggable-DQjeTEFr.js → Draggable-uo-iesAL.js} +5 -5
  41. package/dist/assets/{EmptySharedSectionActionBox-CogY0uW5.js → EmptySharedSectionActionBox-BoSKCX6d.js} +5 -5
  42. package/dist/assets/{EnterpriseEdition.ee-CFcDsU4a.js → EnterpriseEdition.ee-CyI_U9yB.js} +2 -2
  43. package/dist/assets/{EntityNotFound-DmFtFwaH.js → EntityNotFound-qBJJDr9S.js} +9 -13
  44. package/dist/assets/{EntityUnAuthorised-CoFxjgq9.js → EntityUnAuthorised-Ci980jH0.js} +8 -12
  45. package/dist/assets/{ErrorView-fGVmNs6l.js → ErrorView-D33JJAX4.js} +13 -17
  46. package/dist/assets/{EvaluationsRootView-CnsgFQrF.js → EvaluationsRootView-B2SD_0sA.js} +34 -37
  47. package/dist/assets/{EvaluationsView-V0hiFoAc.js → EvaluationsView-D9anu-so.js} +28 -34
  48. package/dist/assets/{ExecutionsTime-SXIffRZe.js → ExecutionsTime-Co23FVKL.js} +16 -15
  49. package/dist/assets/{ExecutionsView-1YV6qmab.js → ExecutionsView-BYR0BCB9.js} +62 -66
  50. package/dist/assets/{ExternalSecretsProviderConnectionSwitch.ee-CwhFUTJx.js → ExternalSecretsProviderConnectionSwitch.ee-DaF1WXYB.js} +18 -17
  51. package/dist/assets/FixedCollectionParameter-COuGvpZ8.css +642 -0
  52. package/dist/assets/FixedCollectionParameter-DDwNWqZ8.js +1571 -0
  53. package/dist/assets/FolderBreadcrumbs-CqjobwTB.js +187 -0
  54. package/dist/assets/{SaveButton-Dc01Y2MA.css → FolderBreadcrumbs-eBFopiOp.css} +7 -14
  55. package/dist/assets/{ForgotMyPasswordView-Bgtqx-Pb.js → ForgotMyPasswordView-CcxGYqHh.js} +14 -19
  56. package/dist/assets/{InsightsChartAverageRuntime-gpxjFP2f.js → InsightsChartAverageRuntime-69U4sUmH.js} +10 -11
  57. package/dist/assets/{InsightsChartFailed-DBcygly6.js → InsightsChartFailed-Ct64T5GJ.js} +8 -9
  58. package/dist/assets/{InsightsChartFailureRate-CY3HP65L.js → InsightsChartFailureRate-BOdV-Q3d.js} +9 -11
  59. package/dist/assets/{InsightsChartTimeSaved-DAfnPiRJ.js → InsightsChartTimeSaved-B83s59mL.js} +9 -11
  60. package/dist/assets/{InsightsChartTotal-CLtcCYXo.js → InsightsChartTotal-1A5vqW4E.js} +7 -9
  61. package/dist/assets/{InsightsDashboard-D3vC4R1n.js → InsightsDashboard-BgxhoT5G.js} +37 -39
  62. package/dist/assets/{InsightsPaywall-0gL3KDRU.js → InsightsPaywall-DlLnPCl2.js} +15 -19
  63. package/dist/assets/{InsightsSummary-CnIu-BEq.js → InsightsSummary-BB8IwI5i.js} +11 -11
  64. package/dist/assets/{InsightsTableWorkflows-BIKybxql.js → InsightsTableWorkflows-Dnldlw-H.js} +22 -25
  65. package/dist/assets/{KeyboardShortcutTooltip-Bg_9TS__.js → KeyboardShortcutTooltip-Dwz4Hv8g.js} +6 -6
  66. package/dist/assets/LogsPanel-C9bshHRi.js +40 -0
  67. package/dist/assets/{LogsPanel-CeaPnpLp.js → LogsPanel-CfaRZWyh.js} +100 -100
  68. package/dist/assets/{MCPConnectWorkflowsModal-Td3mGUN9.js → MCPConnectWorkflowsModal-DgeHxB8D.js} +36 -42
  69. package/dist/assets/{MigrationRuleDetail-ChDD18D8.js → MigrationRuleDetail-CtWwVzUC.js} +23 -27
  70. package/dist/assets/{MigrationRules-Bx-faTM3.js → MigrationRules-Om8sz8NC.js} +21 -25
  71. package/dist/assets/{Modal-DbNRq20p.js → Modal-DDyUIg-j.js} +27 -26
  72. package/dist/assets/{ModelByIdSelectorModal-Zys7oCrF.js → ModelByIdSelectorModal-DOo5k-Da.js} +18 -23
  73. package/dist/assets/{NDVEmptyState-DLSJV_-K.js → NDVEmptyState-CJWa4Aka.js} +15 -12
  74. package/dist/assets/{NodeCreation-D-51ue5r.js → NodeCreation-ClTqHJhs.js} +30 -53
  75. package/dist/assets/{ItemsRenderer-DkobJF9f.css → NodeCreator-039HRrqJ.css} +1525 -6
  76. package/dist/assets/{NodeCreator-DNZlk7YI.js → NodeCreator-BHs8o7J3.js} +978 -88
  77. package/dist/assets/{NodeDetailsView-Bx2kED62.js → NodeDetailsView-Cr9dlkiW.js} +72 -87
  78. package/dist/assets/{NodeDetailsViewV2-Cs-DNkN8.js → NodeDetailsViewV2-D_UwwehT.js} +69 -86
  79. package/dist/assets/{NodeIcon-BbsF7HzQ.js → NodeIcon-CXamMxe5.js} +10 -10
  80. package/dist/assets/{NodeIcon-BDxr0f30.css → NodeIcon-zqTc5h-V.css} +1 -1
  81. package/dist/assets/{NodeSettings-CihRSGnT.js → NodeSettings-DiMGfIPh.js} +73 -73
  82. package/dist/assets/{NodeView-C6e9qYIb.js → NodeView-CqK4OOpZ.js} +171 -149
  83. package/dist/assets/{NodeView-AuBajxDh.css → NodeView-Xwcu11Wh.css} +11 -11
  84. package/dist/assets/{OAuthConsentView-DgEpMzqe.js → OAuthConsentView-D4rD7kPg.js} +14 -18
  85. package/dist/assets/{ParameterInputList-C1BdtAjc.css → ParameterInputList-BUZ33Aem.css} +717 -208
  86. package/dist/assets/{ParameterInputList-BdolYdHT.js → ParameterInputList-DlsnXTOE.js} +1864 -1039
  87. package/dist/assets/{ProjectBreadcrumb-C78U49qA.js → ProjectBreadcrumb-D9hS-MYJ.js} +8 -8
  88. package/dist/assets/{ProjectCardBadge-BJrdwkUy.js → ProjectCardBadge-BE0KUpWh.js} +10 -10
  89. package/dist/assets/{ProjectHeader-BWd_Jpki.js → ProjectHeader-C_C9sbjt.js} +14 -14
  90. package/dist/assets/{ProjectIcon-CNEqHlzp.js → ProjectIcon-gwTM9uPG.js} +8 -8
  91. package/dist/assets/{ProjectRoleView-DgDH-CAz.js → ProjectRoleView-Bf4zP3qm.js} +19 -23
  92. package/dist/assets/{ProjectRolesView-lS6Xs6d0.js → ProjectRolesView-DhAgSeyy.js} +18 -22
  93. package/dist/assets/{ProjectSettings-BBjtsGXK.js → ProjectSettings-C687D50w.js} +31 -34
  94. package/dist/assets/{ProjectSharing-BEcymROT.js → ProjectSharing-C8e9oK7q.js} +16 -16
  95. package/dist/assets/{ProjectVariables-BYbTctFU.js → ProjectVariables-Bjvk3j7l.js} +40 -46
  96. package/dist/assets/{ProviderSettingsModal-COAKwlLh.js → ProviderSettingsModal-D7PL4Ovf.js} +20 -26
  97. package/dist/assets/{PushConnectionTracker-CY-LPI6v.js → PushConnectionTracker-BLfijnvC.js} +4 -4
  98. package/dist/assets/{ResolversView-CxbdIBE2.js → ResolversView-wd5fu-tV.js} +20 -24
  99. package/dist/assets/{ResourceFiltersDropdown-BlSZzGLj.js → ResourceFiltersDropdown-B9N5y-vt.js} +12 -12
  100. package/dist/assets/{ResourcesListLayout-DLAMdJD5.css → ResourcesListLayout-BhnhvHiw.css} +140 -0
  101. package/dist/assets/{ResourcesListLayout-Ej5Hcdb7.js → ResourcesListLayout-O9_3CxcA.js} +32 -23
  102. package/dist/assets/{RunData-CSkVEMJc.js → RunData-BhqFCEeO.js} +20367 -28266
  103. package/dist/assets/{RunData-CGWkR8tE.css → RunData-xpRgLK8S.css} +2 -2
  104. package/dist/assets/{RunDataHtml-CS6G8R8Z.js → RunDataHtml-BMxc-zRm.js} +5 -5
  105. package/dist/assets/RunDataHtml-wQh8fACG.js +5 -0
  106. package/dist/assets/{RunDataJson-BoMj9Y4H.js → RunDataJson-DXh-JzHh.js} +31 -31
  107. package/dist/assets/{RunDataJsonActions-BYw5OJyd.js → RunDataJsonActions-jMhBcnZ4.js} +19 -23
  108. package/dist/assets/{RunDataParsedAiContent-Cci_idnL.js → RunDataParsedAiContent-BbTgNtPy.js} +15 -16
  109. package/dist/assets/RunDataParsedAiContent-CcCTmhG0.js +15 -0
  110. package/dist/assets/{RunDataSearch-Cl17NZ8f.js → RunDataSearch-BVW7uE4N.js} +10 -14
  111. package/dist/assets/{RunDataTable-ldjWmEyj.js → RunDataTable-DUJIxl0f.js} +32 -36
  112. package/dist/assets/{SamlOnboarding-B4udEOGL.js → SamlOnboarding-CxYoa2cp.js} +14 -19
  113. package/dist/assets/{SelectedItemsInfo-0qmaX5TI.js → SelectedItemsInfo-CKmcAObD.js} +5 -5
  114. package/dist/assets/{SettingsApiView-DWWkTI8H.js → SettingsApiView-D3gPC7wS.js} +24 -27
  115. package/dist/assets/{SettingsChatHubView-DdY-v1Oz.js → SettingsChatHubView-Dyl6agLq.js} +18 -24
  116. package/dist/assets/{SettingsCommunityNodesView-Bh_N6Npj.js → SettingsCommunityNodesView-esGDUBkV.js} +38 -42
  117. package/dist/assets/{SettingsExternalSecrets-D1ahXEoY.js → SettingsExternalSecrets-BRP-TFnF.js} +18 -22
  118. package/dist/assets/{SettingsLdapView-BDKazZKJ.js → SettingsLdapView-BiLAMZMp.js} +22 -26
  119. package/dist/assets/{SettingsLogStreamingView-Rq7vLTVL.js → SettingsLogStreamingView-ByUHLila.js} +21 -24
  120. package/dist/assets/{SettingsMCPView-DKx7RcRB.js → SettingsMCPView-ByBI3gAH.js} +42 -46
  121. package/dist/assets/{SettingsPersonalView-5d6_p-hw.js → SettingsPersonalView-PuPbUFF4.js} +15 -19
  122. package/dist/assets/SettingsSidebar-DWKnhzbu.js +58 -0
  123. package/dist/assets/{useCommandBar-eK4Fv9lH.css → SettingsSidebar-hr5ASDKX.css} +22 -24
  124. package/dist/assets/{SettingsSourceControl-CTzXIqE3.js → SettingsSourceControl-e3k-B-T-.js} +19 -23
  125. package/dist/assets/{SettingsSso-CUrz-7l8.js → SettingsSso-ELd6d7Cd.js} +26 -29
  126. package/dist/assets/{SettingsUsageAndPlan-R9q7LfRv.js → SettingsUsageAndPlan-DTbcjDth.js} +20 -23
  127. package/dist/assets/{SettingsUsersView-DcmC9oO-.js → SettingsUsersView-CLdVPGwv.js} +50 -28
  128. package/dist/assets/{SetupTemplateFormStep-C0bRvmcc.js → SetupTemplateFormStep-CRd1UZx9.js} +15 -15
  129. package/dist/assets/{SetupView-Bpj6SVkS.js → SetupView-BWvvVJ_i.js} +14 -19
  130. package/dist/assets/{SetupWorkflowCredentialsButton-CZpFSpx5.js → SetupWorkflowCredentialsButton-Dh4fkO6K.js} +21 -20
  131. package/dist/assets/{SetupWorkflowFromTemplateView-DhK63ZNL.js → SetupWorkflowFromTemplateView-C5i9N-Xc.js} +21 -25
  132. package/dist/assets/{SeverityTag-4JkejesH.js → SeverityTag-CO2h99Dy.js} +6 -6
  133. package/dist/assets/{SigninView-D3PBF8fA.js → SigninView-BU__AvOm.js} +16 -20
  134. package/dist/assets/{SignoutView-DZcfsILm.js → SignoutView-BOMbF2VO.js} +10 -10
  135. package/dist/assets/{SignupView-D2QARHWC.js → SignupView-Cqs9OeBV.js} +27 -27
  136. package/dist/assets/{SkeletonAgentCard-BhJ27v2W.js → SkeletonAgentCard-BKWUxHb9.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-8x1FnXzA.js → TagsDropdown-DGbottaK.js} +9 -9
  140. package/dist/assets/{TemplateCard-DxKAmiWm.js → TemplateCard-XTHKCDKs.js} +9 -9
  141. package/dist/assets/{TemplateDetails-bBAnDzfL.js → TemplateDetails-DSp01RKG.js} +20 -20
  142. package/dist/assets/{TemplateList-DxQ3fBxn.js → TemplateList-rOlAyX39.js} +44 -44
  143. package/dist/assets/{TemplatesCollectionView-DCJk2jwq.js → TemplatesCollectionView-BVfAAgHo.js} +22 -26
  144. package/dist/assets/{TemplatesSearchView-Bh8wuhTx.js → TemplatesSearchView-BRZPm62G.js} +49 -53
  145. package/dist/assets/{TemplatesView-w-y6NvIc.js → TemplatesView-B2WxZgCT.js} +6 -6
  146. package/dist/assets/{TemplatesWorkflowView-eo3ddDao.js → TemplatesWorkflowView-HRwmMyaL.js} +23 -27
  147. package/dist/assets/{TestRunDetailView-DGEhYj5_.js → TestRunDetailView-D5RXX1zN.js} +20 -25
  148. package/dist/assets/{TextWithHighlights-DjzuDrgO.js → TextWithHighlights-CH5Zsswa.js} +2 -2
  149. package/dist/assets/{TimeAgo-0Rdm0Kiq.js → TimeAgo-i_jQQBzo.js} +4 -4
  150. package/dist/assets/{ToolsSelectorModal-SnNw9Jip.js → ToolsSelectorModal-Cr50cu-v.js} +20 -24
  151. package/dist/assets/{TriggerPanel-ChJuzrpN.js → TriggerPanel-DsPiGMWb.js} +51 -51
  152. package/dist/assets/{VirtualSchema-wgdUJECR.js → VirtualSchema-DUQ68BrH.js} +60 -61
  153. package/dist/assets/{VirtualSchema-CwutU4vj.css → VirtualSchema-pdpcVEq9.css} +1 -1
  154. package/dist/assets/VirtualSchema-vD1WN6xC.js +28 -0
  155. package/dist/assets/{VueMarkdown-BRiaIhX9.js → VueMarkdown-D0Ufjusy.js} +3 -3
  156. package/dist/assets/{WorkerView-DPgZMV-u.js → WorkerView-tKUhJ5Dl.js} +38 -43
  157. package/dist/assets/{WorkflowExecutionsInfoAccordion-tLNnztlE.js → WorkflowExecutionsInfoAccordion-hO-vNiAf.js} +7 -7
  158. package/dist/assets/{WorkflowExecutionsLandingPage-DzSdsRSM.js → WorkflowExecutionsLandingPage-DzrSOo1F.js} +14 -18
  159. package/dist/assets/{WorkflowExecutionsPreview-DcRbTjpx.js → WorkflowExecutionsPreview-CizWQG9x.js} +44 -47
  160. package/dist/assets/{WorkflowExecutionsView-BvQhNwyi.js → WorkflowExecutionsView-DJ27bPYq.js} +60 -62
  161. package/dist/assets/{WorkflowHistory-C7k0u5n4.js → WorkflowHistory-CD8N5qTi.js} +198 -197
  162. package/dist/assets/{WorkflowHistory-BBHdNsOb.css → WorkflowHistory-dUpsKg3Z.css} +42 -75
  163. package/dist/assets/{WorkflowLocation-DU_oqOxw.js → WorkflowLocation-ChaEWxVS.js} +18 -18
  164. package/dist/assets/{WorkflowOnboardingView-DsT28Lna.js → WorkflowOnboardingView-COBDyXiZ.js} +10 -10
  165. package/dist/assets/{WorkflowPreview-Cv_yCx4J.js → WorkflowPreview-pbJ_UfWP.js} +9 -9
  166. package/dist/assets/{WorkflowTagsDropdown-BHpackqb.js → WorkflowTagsDropdown-C0g5t367.js} +6 -6
  167. package/dist/assets/{WorkflowsView-C-PD10oe.css → WorkflowsView-0_qNZeIx.css} +32 -42
  168. package/dist/assets/{WorkflowsView-CA_-v3jL.js → WorkflowsView-mroD5hze.js} +128 -239
  169. package/dist/assets/{_MapCache-ficiegRb.js → _MapCache-DkLivSSb.js} +46 -38
  170. package/dist/assets/{_baseOrderBy-UJkFlXQy.js → _baseOrderBy-DvuuRU7J.js} +8 -13
  171. package/dist/assets/{_initCloneObject-C3audwCb.js → _initCloneObject-DiO9tORE.js} +2 -2
  172. package/dist/assets/{aiTemplatesStarterCollection.store-BuNUUCwa.js → aiTemplatesStarterCollection.store-DUkMK-jk.js} +6 -6
  173. package/dist/assets/{apiKeys.store-DpzwcWGM.js → apiKeys.store-C0NHEBJ6.js} +4 -4
  174. package/dist/assets/{assistant.store-CiyiixCh.js → assistant.store-2i2uoZtV.js} +8 -8
  175. package/dist/assets/{auth.eventBus-B77G38R7.js → auth.eventBus-Ce2KL2L4.js} +1 -1
  176. package/dist/assets/{banners.store-D47aZI1r.js → banners.store-CxccIpTM.js} +7 -7
  177. package/dist/assets/{buttons.esm-CT4flsfB.js → buttons.esm-DHCtg4os.js} +0 -5
  178. package/dist/assets/canvas.utils-Dv0fD5Il.js +138 -0
  179. package/dist/assets/{chart-CE3HWIkr.js → chart-BpBZvUkM.js} +0 -6
  180. package/dist/assets/{chartjs.utils-CeXvwL6J.js → chartjs.utils-B8F_iMP1.js} +5 -5
  181. package/dist/assets/{chat.store-D1BqW7ao.js → chat.store-Crdaw-Cp.js} +34 -29
  182. package/dist/assets/{chatPanel.store-ChAzL_xE.js → chatPanel.store-oWfjNSnl.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-BbSwTk_d.js +287 -0
  186. package/dist/assets/{constants-DLTaaipl.js → constants-Bgby4me8.js} +12 -3
  187. package/dist/assets/{constants-DRIItkNt.js → constants-D48cSFnx.js} +921 -931
  188. package/dist/assets/core-CKLPLCBJ.js +4 -0
  189. package/dist/assets/{core-6W4wWNc1.js → core-DDiavqSm.js} +1 -1
  190. package/dist/assets/{dataTable.store-CkhtfeY0.js → dataTable.store-_wAVMcbO.js} +4 -4
  191. package/dist/assets/{date-picker-DsgFTiIp.js → date-picker-CutzRF4i.js} +13 -4
  192. package/dist/assets/{dateFormatter-DDfPHI9I.js → dateFormatter-BiQ9pMrA.js} +4 -4
  193. package/dist/assets/{dateformat-CM9k0--B.js → dateformat-BeHi9sF4.js} +2 -1
  194. package/dist/assets/{dialog-O4ZP7Mjj.js → dialog-D6bnhGrj.js} +4 -4
  195. package/dist/assets/{dist-DP_8je0B.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-DlTgUi2w.js → es-347rbIb-.js} +2 -2
  200. package/dist/assets/{evaluation.constants-DbxnAcTc.js → evaluation.constants-CSD02Lo1.js} +12 -15
  201. package/dist/assets/{executions.store-a5l7sYPn.js → executions.store-SHgwsnWe.js} +4 -4
  202. package/dist/assets/{exports-hpMZaOPT.js → exports-DwuuoPh-.js} +1 -3
  203. package/dist/assets/{externalSecrets.ee.store-HP2ldANj.js → externalSecrets.ee.store-Zyuqq2w2.js} +4 -4
  204. package/dist/assets/{folders.store-j6Xz9xvI.js → folders.store-D8rP_Hdz.js} +4 -4
  205. package/dist/assets/{index-B2rFJ2JV.js → index-BYX1_H81.js} +4327 -1865
  206. package/dist/assets/{index-U6fZiFvz.css → index-BhFfa3xu.css} +3083 -2437
  207. package/dist/assets/{insights.constants-C8GITe6H.js → insights.constants-98xWnZQu.js} +3 -3
  208. package/dist/assets/{insights.store-EBGeDNzp.js → insights.store-BtoZsG-U.js} +7 -7
  209. package/dist/assets/{insights.utils-B7OXsqrQ.js → insights.utils-B0txVt0Q.js} +6 -6
  210. package/dist/assets/{languageModules-D_uyjb6R.js → languageModules-DyQaii5v.js} +1 -1
  211. package/dist/assets/{logStreaming.store-C8IxWNZB.js → logStreaming.store-7BkB5s2r.js} +3 -3
  212. package/dist/assets/{mcp.store-BLq1CDNz.js → mcp.store-G7xff9jI.js} +4 -4
  213. package/dist/assets/{merge-k8vSyyXH.js → merge-B0-p153C.js} +2 -2
  214. package/dist/assets/{nodeCreator.store-DTc1zzIQ.js → nodeCreator.store-Dl91ajnd.js} +1932 -2216
  215. package/dist/assets/{nodeIcon-BWuZ9Qxh.js → nodeIcon-CUi9_d-e.js} +3 -3
  216. package/dist/assets/{nodeTransforms-A9ckRbW1.js → nodeTransforms-D71MPFbn.js} +2 -2
  217. package/dist/assets/{orderBy-BCjtsqzS.js → orderBy-zIIUzfE0.js} +3 -3
  218. package/dist/assets/{personalizedTemplatesV3.store-DBi4yorm.js → personalizedTemplatesV3.store-CwD8voN0.js} +4 -4
  219. package/dist/assets/{pickBy-1X5wiyPT.js → pickBy-BpQ_nS0j.js} +3 -3
  220. package/dist/assets/pushConnection.store-DEMBEciq.js +496 -0
  221. package/dist/assets/{radio-BeejvdFG.js → radio-I_Y35sEo.js} +2 -2
  222. package/dist/assets/{readyToRun.store-DfU30_Nq.js → readyToRun.store-D7MVH-Yc.js} +17 -8
  223. package/dist/assets/{readyToRunWorkflows.store-DgUOIs41.js → readyToRunWorkflows.store-CTCJvvBk.js} +6 -6
  224. package/dist/assets/{roles.store-W8yXuo53.js → roles.store-eBIJuaNR.js} +4 -4
  225. package/dist/assets/{router-RpMr830s.js → router-zEaOc-tq.js} +316 -304
  226. package/dist/assets/{sanitize-html-fRP2gWb9.js → sanitize-html-DeDnsMgc.js} +17 -18
  227. package/dist/assets/{semver-mGRAx708.js → semver-Bz8_abNa.js} +6 -8
  228. package/dist/assets/{sourceControl.eventBus-Bry8gLG7.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-XLGanEOK.js → src-DpZSuyLC.js} +5805 -2547
  232. package/dist/assets/{sso.store-B7JPsojt.js → sso.store-9EWHvrSy.js} +3 -3
  233. package/dist/assets/{table-Dl2CV3mu.js → table-C3aerURh.js} +5 -5
  234. package/dist/assets/{templateActions-CjSRb54_.js → templateActions-qowBM3Zz.js} +5 -5
  235. package/dist/assets/{templateTransforms-Cr1Vxjyo.js → templateTransforms-CU4zdmOp.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-7DVTEzLA.js → usage.store-BDZxETBd.js} +3 -3
  239. package/dist/assets/{useActions-BVMLDnB7.js → useActions-BItklJWS.js} +5 -5
  240. package/dist/assets/useBugReporting-Bi1700UJ.js +130 -0
  241. package/dist/assets/useCalloutHelpers-DSFmB8y4.js +80 -0
  242. package/dist/assets/{useCanvasOperations-DmDkQZsZ.js → useCanvasOperations-DVIzBTSq.js} +36 -32
  243. package/dist/assets/{useClipboard-DAKz3pSk.js → useClipboard-CTTDlv6b.js} +3 -3
  244. package/dist/assets/{useCredentialResolvers-Bib-mabw.js → useCredentialResolvers-0jZuH4WO.js} +5 -5
  245. package/dist/assets/useCustomAgent-CjjqdMoN.js +630 -0
  246. package/dist/assets/{useCustomAgent-tUoLIUar.css → useCustomAgent-D8Sw5vcC.css} +32 -9
  247. package/dist/assets/{useDebounce-Bnb8W2LR.js → useDebounce-C4ttil9E.js} +12 -12
  248. package/dist/assets/{useExecutionData-DWNDlbxK.js → useExecutionData-BLsmVbDx.js} +2 -2
  249. package/dist/assets/{useExecutionDebugging-C3LhPoKB.js → useExecutionDebugging-unzyZJSo.js} +7 -7
  250. package/dist/assets/{useExecutionHelpers-ZH8Lpu7H.js → useExecutionHelpers-VADBx6Yx.js} +5 -5
  251. package/dist/assets/useGlobalEntityCreation-5MrJOTFc.js +192 -0
  252. package/dist/assets/{useImportCurlCommand-UjbNISl9.js → useImportCurlCommand-I3o_giV2.js} +41 -37
  253. package/dist/assets/{useIntersectionObserver-DXKoRNFj.js → useIntersectionObserver-CGg561I6.js} +1 -1
  254. package/dist/assets/{useKeybindings-DDEBPDlo.js → useKeybindings-CKjI_jnI.js} +5 -5
  255. package/dist/assets/{useLogsTreeExpand-DBG-3__y.js → useLogsTreeExpand-BfExNgUz.js} +41 -41
  256. package/dist/assets/{useMcp-zjwReQ-Q.js → useMcp-BL9EJIG9.js} +2 -2
  257. package/dist/assets/{usePageRedirectionHelper-w7WYnki8.js → usePageRedirectionHelper--cm71zDE.js} +3 -3
  258. package/dist/assets/{usePinnedData-FgnIiWSJ.js → usePinnedData-D1DKG6vB.js} +6 -6
  259. package/dist/assets/{usePushConnection-DL83_AN-.js → usePushConnection-DbVAGHmZ.js} +12 -16
  260. package/dist/assets/{useRunWorkflow-DfbxLgl-.js → useRunWorkflow-CBEpMo-i.js} +106 -486
  261. package/dist/assets/{useSettingsItems-CNv2tIdk.js → useSettingsItems-DDLH7vvJ.js} +5 -5
  262. package/dist/assets/{useTelemetryContext-B3sCbxNK.js → useTelemetryContext-s869bjx6.js} +4 -4
  263. package/dist/assets/{useWorkflowsCache-BG2C8qik.js → useWorkflowsCache-Cwc7AaSS.js} +2 -2
  264. package/dist/assets/{userRoleProvisioning.store-6aoaalkv.js → userRoleProvisioning.store-r3gAhXvj.js} +3 -3
  265. package/dist/assets/{builder.store-D6GyopzN.js → users.store-Dh2O3NbU.js} +22801 -23949
  266. package/dist/assets/utils-5SA0VwN3.js +133 -0
  267. package/dist/assets/{versions.store-a3DCEQMP.js → versions.store-BIW6cbdc.js} +4 -4
  268. package/dist/assets/{vue-Dg_43WEg.js → vue-atn33zIp.js} +255 -213
  269. package/dist/assets/{vue-json-pretty-DGKuDe33.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 -120
  273. package/package.json +1 -1
  274. package/tsconfig.json +1 -1
  275. package/dist/assets/AnimatedSpinner-wiGFgffA.js +0 -15
  276. package/dist/assets/BottomMenu-CRVyIu-B.css +0 -474
  277. package/dist/assets/ChatAgentAvatar-DAg-f4vg.js +0 -67
  278. package/dist/assets/CollectionParameter-Y2KojQS6.js +0 -50
  279. package/dist/assets/DemoFooter-CySiu1O2.js +0 -63
  280. package/dist/assets/FixedCollectionParameter-B__avC2s.js +0 -494
  281. package/dist/assets/FixedCollectionParameter-DT3ELzS9.css +0 -202
  282. package/dist/assets/ItemsRenderer-B8E9eO9o.js +0 -922
  283. package/dist/assets/LogsPanel-Cei4fiyW.js +0 -50
  284. package/dist/assets/NodeCreator-OSIpRI6S.css +0 -1649
  285. package/dist/assets/PageViewLayout-BHSzOio1.js +0 -12
  286. package/dist/assets/PrebuiltAgentTemplatesView-C274fvLb.js +0 -152
  287. package/dist/assets/PrebuiltAgentTemplatesView-jF7HvWnL.css +0 -166
  288. package/dist/assets/RunDataHtml-CX8Hqg6s.js +0 -7
  289. package/dist/assets/RunDataParsedAiContent-C3de0i2J.js +0 -24
  290. package/dist/assets/SaveButton-DGuEjyOq.js +0 -89
  291. package/dist/assets/SettingsView-Clf40hKH.js +0 -88
  292. package/dist/assets/VirtualSchema-zUWStOer.js +0 -34
  293. package/dist/assets/WorkflowActivationErrorMessage-v37Lr_Ej.js +0 -17
  294. package/dist/assets/WorkflowActivator-BGcCOUCH.css +0 -391
  295. package/dist/assets/WorkflowActivator-DW5QJWKR.js +0 -362
  296. package/dist/assets/core-BbiIkN91.js +0 -4
  297. package/dist/assets/empty-DUjwPfU3.js +0 -2125
  298. package/dist/assets/en-DyO2pPiC.js +0 -2
  299. package/dist/assets/path-browserify-CJwRhuT8.js +0 -328
  300. package/dist/assets/schemaPreview.store-ngPsbwff.js +0 -113
  301. package/dist/assets/uniqBy-BInks7VO.js +0 -10
  302. package/dist/assets/useBeforeUnload-BNDKBmDK.js +0 -40
  303. package/dist/assets/useCommandBar-Ddao4vJv.js +0 -2425
  304. package/dist/assets/useCustomAgent-DA57piBT.js +0 -471
  305. package/dist/assets/useRecentResources-D-zHnbqB.js +0 -118
  306. package/dist/assets/useWorkflowActivate-Ct_BovMQ.js +0 -152
  307. package/dist/assets/utils-C2GPI2gK.js +0 -54
  308. /package/dist/assets/{CalendarDate-zWqgZMlk.js → CalendarDate-CogIFc4_.js} +0 -0
  309. /package/dist/assets/{_plugin-vue_export-helper-BwBpWJRZ.js → _plugin-vue_export-helper-fRq25RGE.js} +0 -0
  310. /package/dist/assets/{fileUtils-D_SiS8no.js → fileUtils-C-Bxka0b.js} +0 -0
  311. /package/dist/assets/{mcp.constants-DQPD3Ntp.js → mcp.constants-Djm5lWYR.js} +0 -0
  312. /package/dist/assets/{preload-helper-CR0ecmWK.js → preload-helper-D8n1yiy9.js} +0 -0
  313. /package/dist/assets/{retry-dP46utx2.js → retry-BLsJRFf0.js} +0 -0
  314. /package/dist/assets/{smartDecimal-DK6-_VSq.js → smartDecimal-D3Shg2YQ.js} +0 -0
  315. /package/dist/assets/{sortByProperty-CV1aCzkS.js → sortByProperty-Dip6DXbv.js} +0 -0
  316. /package/dist/assets/{sqlite3-opfs-async-proxy-vVtmDGHX.js → sqlite3-opfs-async-proxy-BrtqH9Si.js} +0 -0
  317. /package/dist/assets/{xml-B6veOr9z.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-Dh2O3NbU.js";
9
+ import { N as SectionHeader_default, c as useResolvedExpression, i as require_vuedraggable_umd, r as useCollectionOverhaul, t as ParameterInputList_default } from "./ParameterInputList-DlsnXTOE.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-D48cSFnx.js";
13
+ import "./merge-B0-p153C.js";
14
+ import { A as storeToRefs } from "./_baseOrderBy-DvuuRU7J.js";
15
+ import "./dateformat-BeHi9sF4.js";
16
+ import "./useDebounce-C4ttil9E.js";
17
+ import "./useClipboard-CTTDlv6b.js";
18
+ import "./executions.store-SHgwsnWe.js";
19
+ import "./assistant.store-2i2uoZtV.js";
20
+ import "./chatPanel.store-oWfjNSnl.js";
21
+ import "./RunData-BhqFCEeO.js";
22
+ import "./NDVEmptyState-CJWa4Aka.js";
23
+ import "./externalSecrets.ee.store-Zyuqq2w2.js";
24
+ import "./usePinnedData-D1DKG6vB.js";
25
+ import "./nodeCreator.store-Dl91ajnd.js";
26
+ import "./canvas.utils-Dv0fD5Il.js";
27
+ import "./nodeIcon-CUi9_d-e.js";
28
+ import "./useCanvasOperations-DVIzBTSq.js";
29
+ import "./folders.store-D8rP_Hdz.js";
30
+ import "./pushConnection.store-DEMBEciq.js";
31
+ import "./RunDataHtml-BMxc-zRm.js";
32
+ import "./Draggable-uo-iesAL.js";
33
+ import "./NodeIcon-CXamMxe5.js";
34
+ import "./VirtualSchema-DUQ68BrH.js";
35
+ import "./useTelemetryContext-s869bjx6.js";
36
+ import "./useRunWorkflow-CBEpMo-i.js";
37
+ import "./nodeTransforms-D71MPFbn.js";
38
+ import "./vue-json-pretty-CTqCbq0T.js";
39
+ import "./collaboration.store-BbSwTk_d.js";
40
+ import "./dateFormatter-BiQ9pMrA.js";
41
+ import "./useExecutionHelpers-VADBx6Yx.js";
42
+ import "./vue-atn33zIp.js";
43
+ import "./useCalloutHelpers-DSFmB8y4.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 };