@wise/dynamic-flow-client 5.28.0 → 5.29.0-experimental-f7c2300

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 (485) hide show
  1. package/build/main.css +24 -0
  2. package/build/main.js +299 -167
  3. package/build/main.mjs +299 -167
  4. package/build/tsconfig.types.tsbuildinfo +1 -1
  5. package/build/types/domain/components/collectionComponent/CollectionComponent.d.ts +5 -5
  6. package/build/types/domain/components/collectionComponent/CollectionComponent.d.ts.map +1 -1
  7. package/build/types/domain/components/collectionComponent/CollectionState.d.ts +19 -0
  8. package/build/types/domain/components/collectionComponent/CollectionState.d.ts.map +1 -0
  9. package/build/types/domain/components/collectionComponent/mergeSections.d.ts +3 -0
  10. package/build/types/domain/components/collectionComponent/mergeSections.d.ts.map +1 -0
  11. package/build/types/domain/components/collectionComponent/types.d.ts +42 -14
  12. package/build/types/domain/components/collectionComponent/types.d.ts.map +1 -1
  13. package/build/types/domain/features/collection/getPerformCollectionQuery.d.ts +2 -2
  14. package/build/types/domain/features/collection/getPerformCollectionQuery.d.ts.map +1 -1
  15. package/build/types/domain/mappers/layout/collectionLayoutToComponent.d.ts +3 -3
  16. package/build/types/domain/mappers/layout/collectionLayoutToComponent.d.ts.map +1 -1
  17. package/build/types/renderers/mappers/collectionComponentToProps.d.ts.map +1 -1
  18. package/package.json +6 -5
  19. package/build/DynamicFlowCore.js +0 -5
  20. package/build/common/capabilities/getHttpClientWithCapabilities.js +0 -41
  21. package/build/common/capabilities/getHttpClientWithCapabilities.test.js +0 -106
  22. package/build/common/capabilities/index.js +0 -1
  23. package/build/common/errorBoundary/ErrorBoundary.js +0 -26
  24. package/build/common/errorBoundary/ErrorBoundary.test.js +0 -29
  25. package/build/common/errorBoundary/ErrorBoundaryAlert.js +0 -11
  26. package/build/common/makeHttpClient/api-utils.js +0 -3
  27. package/build/common/makeHttpClient/index.js +0 -1
  28. package/build/common/makeHttpClient/makeHttpClient.js +0 -10
  29. package/build/common/makeHttpClient/makeHttpClient.test.js +0 -186
  30. package/build/common/messages/download.messages.js +0 -18
  31. package/build/common/messages/external-confirmation.messages.js +0 -23
  32. package/build/common/messages/file-upload.messages.js +0 -13
  33. package/build/common/messages/generic-error.messages.js +0 -18
  34. package/build/common/messages/help.messages.js +0 -8
  35. package/build/common/messages/multi-file-upload.messages.js +0 -18
  36. package/build/common/messages/multi-select.messages.js +0 -8
  37. package/build/common/messages/paragraph.messages.js +0 -13
  38. package/build/common/messages/repeatable.messages.js +0 -23
  39. package/build/common/messages/search.messages.js +0 -8
  40. package/build/common/messages/validation.array.messages.js +0 -13
  41. package/build/common/messages/validation.messages.js +0 -53
  42. package/build/controller/FlowController.js +0 -400
  43. package/build/controller/executeDownload.js +0 -86
  44. package/build/controller/executePoll.js +0 -65
  45. package/build/controller/executeRefresh.js +0 -45
  46. package/build/controller/executeRequest.js +0 -93
  47. package/build/controller/executeSubflow.js +0 -71
  48. package/build/controller/executeSubmission.js +0 -68
  49. package/build/controller/getErrorMessage.js +0 -7
  50. package/build/controller/getFilenameFromContentDisposition.js +0 -47
  51. package/build/controller/getFilenameFromContentDisposition.test.js +0 -47
  52. package/build/controller/getRequestAbortController.js +0 -13
  53. package/build/controller/getResponseType.js +0 -35
  54. package/build/controller/getSafeHttpClient.js +0 -8
  55. package/build/controller/getStepCounter.js +0 -16
  56. package/build/controller/handleErrorResponse.js +0 -26
  57. package/build/controller/makeSafeHttpClient.js +0 -8
  58. package/build/controller/response-utils.js +0 -72
  59. package/build/controller/response-utils.test.js +0 -52
  60. package/build/domain/components/AlertComponent.js +0 -2
  61. package/build/domain/components/AllOfComponent.js +0 -47
  62. package/build/domain/components/BooleanInputComponent.js +0 -48
  63. package/build/domain/components/BoxComponent.js +0 -12
  64. package/build/domain/components/ButtonComponent.js +0 -2
  65. package/build/domain/components/ColumnsComponent.js +0 -12
  66. package/build/domain/components/ConstComponent.js +0 -20
  67. package/build/domain/components/ContainerComponent.js +0 -12
  68. package/build/domain/components/DateInputComponent.js +0 -73
  69. package/build/domain/components/DecisionComponent.js +0 -2
  70. package/build/domain/components/DividerComponent.js +0 -2
  71. package/build/domain/components/FormComponent.js +0 -12
  72. package/build/domain/components/FormattedValueComponent.js +0 -47
  73. package/build/domain/components/HeadingComponent.js +0 -2
  74. package/build/domain/components/ImageComponent.js +0 -2
  75. package/build/domain/components/InstructionsComponent.js +0 -2
  76. package/build/domain/components/IntegerInputComponent.js +0 -75
  77. package/build/domain/components/ListComponent.js +0 -2
  78. package/build/domain/components/LoadingIndicatorComponent.js +0 -2
  79. package/build/domain/components/MarkdownComponent.js +0 -2
  80. package/build/domain/components/MediaComponent.js +0 -2
  81. package/build/domain/components/ModalComponent.js +0 -20
  82. package/build/domain/components/ModalLayoutComponent.js +0 -12
  83. package/build/domain/components/MoneyInputComponent.js +0 -56
  84. package/build/domain/components/MultiSelectInputComponent.js +0 -86
  85. package/build/domain/components/MultiUploadInputComponent.js +0 -86
  86. package/build/domain/components/NumberInputComponent.js +0 -74
  87. package/build/domain/components/ObjectComponent.js +0 -54
  88. package/build/domain/components/ParagraphComponent.js +0 -2
  89. package/build/domain/components/PersistAsyncComponent.js +0 -96
  90. package/build/domain/components/ProgressComponent.js +0 -2
  91. package/build/domain/components/RepeatableComponent.js +0 -106
  92. package/build/domain/components/ReviewComponent.js +0 -2
  93. package/build/domain/components/RootDomainComponent.js +0 -193
  94. package/build/domain/components/SectionComponent.js +0 -12
  95. package/build/domain/components/SelectInputComponent.js +0 -96
  96. package/build/domain/components/StatusListComponent.js +0 -2
  97. package/build/domain/components/SubflowComponent.js +0 -19
  98. package/build/domain/components/TabsComponent.js +0 -2
  99. package/build/domain/components/TextInputComponent.js +0 -77
  100. package/build/domain/components/TupleComponent.js +0 -48
  101. package/build/domain/components/UpdatableComponent.js +0 -46
  102. package/build/domain/components/UploadInputComponent.js +0 -78
  103. package/build/domain/components/UpsellComponent.js +0 -26
  104. package/build/domain/components/collectionComponent/CollectionComponent.js +0 -174
  105. package/build/domain/components/collectionComponent/CollectionComponent.test.js +0 -286
  106. package/build/domain/components/collectionComponent/types.js +0 -1
  107. package/build/domain/components/searchComponent/SearchComponent.js +0 -91
  108. package/build/domain/components/searchComponent/SearchComponent.test.js +0 -190
  109. package/build/domain/components/step/ExternalConfirmationComponent.js +0 -27
  110. package/build/domain/components/step/StepDomainComponent.js +0 -153
  111. package/build/domain/components/step/ToolbarComponent.js +0 -1
  112. package/build/domain/components/utils/component-utils.js +0 -12
  113. package/build/domain/components/utils/debounce.js +0 -34
  114. package/build/domain/components/utils/debounce.test.js +0 -67
  115. package/build/domain/components/utils/file-utils.js +0 -21
  116. package/build/domain/components/utils/file-utils.test.js +0 -27
  117. package/build/domain/components/utils/getRandomId.js +0 -1
  118. package/build/domain/components/utils/isExactLocalValueMatch.js +0 -14
  119. package/build/domain/components/utils/isOrWasValid.js +0 -5
  120. package/build/domain/components/utils/isPartialModelMatch.js +0 -18
  121. package/build/domain/components/utils/isPartialModelMatch.test.js +0 -74
  122. package/build/domain/features/collection/getPerformCollectionQuery.js +0 -80
  123. package/build/domain/features/collection/getPerformCollectionQuery.test.js +0 -223
  124. package/build/domain/features/delay/getStepDelays.js +0 -37
  125. package/build/domain/features/delay/getStepDelays.test.js +0 -69
  126. package/build/domain/features/domain-event-bus/DomainEventBus.js +0 -24
  127. package/build/domain/features/domain-event-bus/index.js +0 -1
  128. package/build/domain/features/domain-event-bus/types.js +0 -1
  129. package/build/domain/features/eventNames.js +0 -41
  130. package/build/domain/features/events.js +0 -5
  131. package/build/domain/features/persistAsync/getComponentMultiPersistAsync.js +0 -50
  132. package/build/domain/features/persistAsync/getInitialPersistedState.js +0 -7
  133. package/build/domain/features/persistAsync/getPerformPersistAsync.js +0 -43
  134. package/build/domain/features/persistAsync/getPerformPersistAsync.test.js +0 -139
  135. package/build/domain/features/polling/getStepPolling.js +0 -50
  136. package/build/domain/features/polling/getStepPolling.test.js +0 -115
  137. package/build/domain/features/prefetch/getStepPrefetch.js +0 -56
  138. package/build/domain/features/prefetch/request-cache.js +0 -49
  139. package/build/domain/features/prefetch/request-cache.test.js +0 -70
  140. package/build/domain/features/refreshAfter/getStepRefreshAfter.js +0 -24
  141. package/build/domain/features/refreshAfter/getStepRefreshAfter.test.js +0 -40
  142. package/build/domain/features/schema-on-change/getDebouncedSchemaOnChange.js +0 -50
  143. package/build/domain/features/schema-on-change/getSchemaOnChange.js +0 -38
  144. package/build/domain/features/search/getPerformSearchFunction.js +0 -75
  145. package/build/domain/features/search/getPerformSearchFunction.test.js +0 -301
  146. package/build/domain/features/summary/summary-utils.js +0 -37
  147. package/build/domain/features/summary/summary-utils.test.js +0 -125
  148. package/build/domain/features/updatable/getPerformUpdateQuery.js +0 -52
  149. package/build/domain/features/utils/http-utils.js +0 -21
  150. package/build/domain/features/utils/response-utils.js +0 -9
  151. package/build/domain/features/validation/date-availability.js +0 -54
  152. package/build/domain/features/validation/date-availability.test.js +0 -54
  153. package/build/domain/features/validation/getPatternRegExp.js +0 -25
  154. package/build/domain/features/validation/spec-utils.js +0 -23
  155. package/build/domain/features/validation/validation-functions.js +0 -6
  156. package/build/domain/features/validation/validation-functions.test.js +0 -108
  157. package/build/domain/features/validation/value-checks.js +0 -130
  158. package/build/domain/features/validation/value-checks.test.js +0 -297
  159. package/build/domain/features/validationAsync/getComponentValidationAsync.js +0 -57
  160. package/build/domain/features/validationAsync/getComponentValidationAsync.test.js +0 -67
  161. package/build/domain/features/validationAsync/getInitialValidationAsyncState.js +0 -6
  162. package/build/domain/features/validationAsync/getPerformValidationAsync.js +0 -46
  163. package/build/domain/features/validationAsync/getPerformValidationAsync.test.js +0 -162
  164. package/build/domain/handlers/dismissHandler.js +0 -11
  165. package/build/domain/mappers/layout/alertLayoutToComponent.js +0 -18
  166. package/build/domain/mappers/layout/boxLayoutToComponent.js +0 -13
  167. package/build/domain/mappers/layout/buttonLayoutToComponent.js +0 -77
  168. package/build/domain/mappers/layout/collectionLayoutToComponent.js +0 -49
  169. package/build/domain/mappers/layout/columnsLayoutToComponent.js +0 -13
  170. package/build/domain/mappers/layout/decisionLayoutToComponent.js +0 -24
  171. package/build/domain/mappers/layout/deprecatedListLayoutToComponent.js +0 -30
  172. package/build/domain/mappers/layout/dividerLayoutToComponent.js +0 -2
  173. package/build/domain/mappers/layout/formLayoutToComponent.js +0 -19
  174. package/build/domain/mappers/layout/headingLayoutToComponent.js +0 -12
  175. package/build/domain/mappers/layout/imageLayoutToComponent.js +0 -17
  176. package/build/domain/mappers/layout/infoLayoutToComponent.js +0 -12
  177. package/build/domain/mappers/layout/instructionsLayoutToComponent.js +0 -12
  178. package/build/domain/mappers/layout/listLayoutToComponent.js +0 -39
  179. package/build/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +0 -9
  180. package/build/domain/mappers/layout/markdownLayoutToComponent.js +0 -12
  181. package/build/domain/mappers/layout/mediaLayoutToComponent.js +0 -12
  182. package/build/domain/mappers/layout/modalLayoutToComponent.js +0 -17
  183. package/build/domain/mappers/layout/modalToComponent.js +0 -8
  184. package/build/domain/mappers/layout/paragraphLayoutToComponent.js +0 -12
  185. package/build/domain/mappers/layout/progressLayoutToComponent.js +0 -15
  186. package/build/domain/mappers/layout/reviewLayoutToComponent.js +0 -49
  187. package/build/domain/mappers/layout/searchLayoutToComponent.js +0 -44
  188. package/build/domain/mappers/layout/sectionLayoutToComponent.js +0 -16
  189. package/build/domain/mappers/layout/statusListLayoutToComponent.js +0 -15
  190. package/build/domain/mappers/layout/tabsLayoutToComponent.js +0 -16
  191. package/build/domain/mappers/layout/updatableLayoutToComponent.js +0 -39
  192. package/build/domain/mappers/layout/upsellLayoutToComponent.js +0 -18
  193. package/build/domain/mappers/mapLayoutToComponent.js +0 -87
  194. package/build/domain/mappers/mapSchemaToComponent.js +0 -65
  195. package/build/domain/mappers/mapSchemaToComponent.test.js +0 -116
  196. package/build/domain/mappers/mapStepSchemas.js +0 -14
  197. package/build/domain/mappers/mapStepToComponent.js +0 -145
  198. package/build/domain/mappers/mapStepToComponent.test.js +0 -319
  199. package/build/domain/mappers/mapToolbarToComponent.js +0 -15
  200. package/build/domain/mappers/schema/allOfSchemaToComponent.js +0 -17
  201. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +0 -26
  202. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiSelectComponent.js +0 -56
  203. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +0 -66
  204. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +0 -58
  205. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToTupleComponent.js +0 -18
  206. package/build/domain/mappers/schema/blobSchemaToComponent.js +0 -15
  207. package/build/domain/mappers/schema/booleanSchemaToComponent.js +0 -29
  208. package/build/domain/mappers/schema/constSchemaToComponent.js +0 -23
  209. package/build/domain/mappers/schema/dateSchemaToComponent.js +0 -56
  210. package/build/domain/mappers/schema/dateSchemaToComponent.test.js +0 -112
  211. package/build/domain/mappers/schema/integerSchemaToComponent.js +0 -28
  212. package/build/domain/mappers/schema/numberSchemaToComponent.js +0 -26
  213. package/build/domain/mappers/schema/objectSchemaToComponent/assertDisplayOrder.js +0 -23
  214. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToFormattedValueComponent.js +0 -9
  215. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.js +0 -119
  216. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.test.js +0 -97
  217. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.js +0 -32
  218. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.test.js +0 -99
  219. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +0 -67
  220. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.test.js +0 -225
  221. package/build/domain/mappers/schema/persistAsyncSchemaToComponent.js +0 -29
  222. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +0 -18
  223. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.test.js +0 -133
  224. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +0 -38
  225. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +0 -28
  226. package/build/domain/mappers/schema/tests/test-utils.js +0 -16
  227. package/build/domain/mappers/schema/types.js +0 -1
  228. package/build/domain/mappers/schema/utils/getPerformPersistAsyncFn.js +0 -19
  229. package/build/domain/mappers/schema/utils/getValidationAsyncInitialState.js +0 -23
  230. package/build/domain/mappers/schema/utils/mapCommonSchemaProps.js +0 -16
  231. package/build/domain/mappers/types.js +0 -1
  232. package/build/domain/mappers/utils/FeatureFlags.js +0 -22
  233. package/build/domain/mappers/utils/behavior-utils.js +0 -52
  234. package/build/domain/mappers/utils/call-to-action-utils.js +0 -24
  235. package/build/domain/mappers/utils/getAutocompleteString.js +0 -76
  236. package/build/domain/mappers/utils/getAutocompleteString.test.js +0 -21
  237. package/build/domain/mappers/utils/getHrefWithTracking.js +0 -16
  238. package/build/domain/mappers/utils/groupLayoutByPinned.js +0 -38
  239. package/build/domain/mappers/utils/groupLayoutByPinned.test.js +0 -166
  240. package/build/domain/mappers/utils/image.js +0 -6
  241. package/build/domain/mappers/utils/layout-utils.js +0 -11
  242. package/build/domain/mappers/utils/legacy-utils.js +0 -49
  243. package/build/domain/mappers/utils/media-utils.js +0 -14
  244. package/build/domain/mappers/utils/suggestions-utils.js +0 -26
  245. package/build/domain/mappers/utils/suggestions-utils.test.js +0 -36
  246. package/build/domain/mappers/utils/tags-utils.js +0 -1
  247. package/build/domain/mappers/utils/utils.js +0 -45
  248. package/build/domain/types.js +0 -1
  249. package/build/i18n/index.js +0 -40
  250. package/build/index.js +0 -9
  251. package/build/renderers/CoreContainerRenderer.js +0 -5
  252. package/build/renderers/CoreRootRenderer.js +0 -12
  253. package/build/renderers/EmptyLoadingStateRenderer.js +0 -5
  254. package/build/renderers/getRenderFunction.js +0 -24
  255. package/build/renderers/getSchemaErrorMessageFunction.js +0 -111
  256. package/build/renderers/mappers/alertComponentToProps.js +0 -3
  257. package/build/renderers/mappers/allOfComponentToProps.js +0 -6
  258. package/build/renderers/mappers/booleanInputComponentToProps.js +0 -3
  259. package/build/renderers/mappers/boxComponentToProps.js +0 -13
  260. package/build/renderers/mappers/buttonComponentToProps.js +0 -4
  261. package/build/renderers/mappers/collectionComponentToProps.js +0 -11
  262. package/build/renderers/mappers/columnsComponentToProps.js +0 -8
  263. package/build/renderers/mappers/componentToRendererProps.js +0 -168
  264. package/build/renderers/mappers/constComponentToProps.js +0 -5
  265. package/build/renderers/mappers/containerComponentToProps.js +0 -8
  266. package/build/renderers/mappers/dateInputComponentToProps.js +0 -3
  267. package/build/renderers/mappers/decisionComponentToProps.js +0 -16
  268. package/build/renderers/mappers/dividerComponentToProps.js +0 -2
  269. package/build/renderers/mappers/externalComponentToProps.js +0 -4
  270. package/build/renderers/mappers/formComponentToProps.js +0 -8
  271. package/build/renderers/mappers/formattedValueComponentToProps.js +0 -5
  272. package/build/renderers/mappers/headingComponentToProps.js +0 -2
  273. package/build/renderers/mappers/hiddenComponentToProps.js +0 -1
  274. package/build/renderers/mappers/imageComponentToProps.js +0 -2
  275. package/build/renderers/mappers/instructionsComponentToProps.js +0 -2
  276. package/build/renderers/mappers/integerInputComponentToProps.js +0 -3
  277. package/build/renderers/mappers/listComponentToProps.js +0 -3
  278. package/build/renderers/mappers/loadingIndicatorComponentToProps.js +0 -2
  279. package/build/renderers/mappers/markdownComponentToProps.js +0 -2
  280. package/build/renderers/mappers/mediaComponentToProps.js +0 -2
  281. package/build/renderers/mappers/modalComponentToProps.js +0 -8
  282. package/build/renderers/mappers/modalLayoutComponentToProps.js +0 -13
  283. package/build/renderers/mappers/moneyInputComponentToProps.js +0 -36
  284. package/build/renderers/mappers/multiSelectComponentToProps.js +0 -19
  285. package/build/renderers/mappers/multiUploadInputComponentToProps.js +0 -7
  286. package/build/renderers/mappers/numberInputComponentToProps.js +0 -3
  287. package/build/renderers/mappers/objectComponentToProps.js +0 -8
  288. package/build/renderers/mappers/paragraphComponentToProps.js +0 -2
  289. package/build/renderers/mappers/persistAsyncComponentToProps.js +0 -7
  290. package/build/renderers/mappers/progressComponentToProps.js +0 -2
  291. package/build/renderers/mappers/repeatableComponentToProps.js +0 -22
  292. package/build/renderers/mappers/reviewComponentToProps.js +0 -3
  293. package/build/renderers/mappers/rootComponentToProps.js +0 -20
  294. package/build/renderers/mappers/searchComponentToProps.js +0 -45
  295. package/build/renderers/mappers/sectionComponentToProps.js +0 -7
  296. package/build/renderers/mappers/selectInputComponentToProps.js +0 -34
  297. package/build/renderers/mappers/statusListComponentToProps.js +0 -3
  298. package/build/renderers/mappers/subflowComponentToRendererProps.js +0 -26
  299. package/build/renderers/mappers/tabsComponentToProps.js +0 -14
  300. package/build/renderers/mappers/textInputComponentToProps.js +0 -3
  301. package/build/renderers/mappers/tupleComponentToProps.js +0 -8
  302. package/build/renderers/mappers/updatableComponentToProps.js +0 -6
  303. package/build/renderers/mappers/uploadInputComponentToProps.js +0 -5
  304. package/build/renderers/mappers/upsellComponentToProps.js +0 -3
  305. package/build/renderers/mappers/utils/getValidationState.js +0 -12
  306. package/build/renderers/mappers/utils/inputComponentToProps.js +0 -17
  307. package/build/renderers/mappers/utils/mapCallToAction.js +0 -23
  308. package/build/renderers/mappers/utils/mapErrorsToValidationState.js +0 -9
  309. package/build/renderers/mappers/utils/mapRendererLoadingState.js +0 -1
  310. package/build/renderers/mappers/utils/pick.js +0 -8
  311. package/build/renderers/mappers/utils/selectInputOptionsToProps.js +0 -11
  312. package/build/renderers/stepComponentToProps.js +0 -32
  313. package/build/renderers/subflow/getDynamicSubflowRenderer.js +0 -13
  314. package/build/renderers/subflow/getNativeSubflowRenderer.js +0 -26
  315. package/build/renderers/utils.js +0 -72
  316. package/build/renderers/utils.test.js +0 -70
  317. package/build/stories/dev-tools/ContainerQueries.story.js +0 -66
  318. package/build/stories/dev-tools/Debugger.story.js +0 -107
  319. package/build/stories/dev-tools/FixtureSelect.story.js +0 -23
  320. package/build/stories/dev-tools/TestServer.story.js +0 -118
  321. package/build/stories/examples/NativeFlow.story.js +0 -80
  322. package/build/stories/examples/Recipients.story.js +0 -568
  323. package/build/stories/spec/behavior/Copy.story.js +0 -71
  324. package/build/stories/spec/behavior/Download.story.js +0 -254
  325. package/build/stories/spec/behavior/DynamicSubflow.story.js +0 -272
  326. package/build/stories/spec/behavior/Link.story.js +0 -40
  327. package/build/stories/spec/behavior/Modal.story.js +0 -79
  328. package/build/stories/spec/behavior/NativeSubflow.story.js +0 -249
  329. package/build/stories/spec/layouts/Alert.story.js +0 -107
  330. package/build/stories/spec/layouts/Box.Container-Widths.3-sizes.story.js +0 -59
  331. package/build/stories/spec/layouts/Box.Container-Widths.story.js +0 -57
  332. package/build/stories/spec/layouts/Box.Viewport-Widths.story.js +0 -64
  333. package/build/stories/spec/layouts/Collection.story.js +0 -294
  334. package/build/stories/spec/layouts/Decision.story.js +0 -241
  335. package/build/stories/spec/layouts/Image.Illustrations.Animated.story.js +0 -37
  336. package/build/stories/spec/layouts/Image.Sizes.story.js +0 -58
  337. package/build/stories/spec/layouts/Modal.story.js +0 -81
  338. package/build/stories/spec/layouts/Search.story.js +0 -325
  339. package/build/stories/spec/layouts/Updatable.story.js +0 -135
  340. package/build/stories/spec/layouts/Upsell.story.js +0 -55
  341. package/build/stories/spec/layouts/button/Button.story.js +0 -111
  342. package/build/stories/spec/layouts/button/PinnedButton.story.js +0 -81
  343. package/build/stories/spec/response/ActionResponse.story.js +0 -66
  344. package/build/stories/spec/schemas/InlineAlert.story.js +0 -134
  345. package/build/stories/spec/schemas/MultiSelect.story.js +0 -206
  346. package/build/stories/spec/schemas/Upload.story.js +0 -168
  347. package/build/stories/spec/schemas/const/ConstLayout.story.js +0 -159
  348. package/build/stories/spec/schemas/const/ObjectConst.story.js +0 -94
  349. package/build/stories/spec/schemas/date/DateSchema.story.js +0 -59
  350. package/build/stories/spec/schemas/features/PersistAsync.story.js +0 -230
  351. package/build/stories/spec/schemas/features/ValidationAsync.story.js +0 -137
  352. package/build/stories/spec/schemas/object/FormattedValue.story.js +0 -92
  353. package/build/stories/spec/schemas/object/MoneyInput.story.js +0 -240
  354. package/build/stories/spec/schemas/oneOf/OneOfInitialisation.story.js +0 -55
  355. package/build/stories/spec/schemas/oneOf/OneOfWithSingleOption.story.js +0 -114
  356. package/build/stories/spec/step/Controls.story.js +0 -110
  357. package/build/stories/spec/step/DFModal.story.js +0 -58
  358. package/build/stories/spec/step/Footer.story.js +0 -90
  359. package/build/stories/spec/step/Navigation.story.js +0 -46
  360. package/build/stories/spec/step/ScrollToBottom.story.js +0 -103
  361. package/build/stories/spec/step/Tags.story.js +0 -39
  362. package/build/stories/spec/step/ToolBar.story.js +0 -60
  363. package/build/stories/spec/step/features/ErrorHandling.story.js +0 -92
  364. package/build/stories/spec/step/features/External.story.js +0 -91
  365. package/build/stories/spec/step/features/LongFormError.story.js +0 -88
  366. package/build/stories/spec/step/features/Polling.story.js +0 -108
  367. package/build/stories/spec/step/features/RefreshAfter.story.js +0 -92
  368. package/build/stories/spec/step/features/refresh/Refresh.story.js +0 -260
  369. package/build/stories/spec/step/features/refresh/RefreshWithPersistAsync.story.js +0 -958
  370. package/build/stories/types.js +0 -1
  371. package/build/stories/utils/fixtureHttpClient.js +0 -70
  372. package/build/stories/utils/getBasicStep.js +0 -223
  373. package/build/stories/utils/mockSearchHandler.js +0 -71
  374. package/build/stories/utils/render-utils.js +0 -59
  375. package/build/stories/visual-tests/layouts/NotUsingListItem.story.js +0 -17
  376. package/build/test-utils/DynamicFlowWise.js +0 -41
  377. package/build/test-utils/DynamicFlowWiseModal.js +0 -34
  378. package/build/test-utils/NeptuneProviders.js +0 -11
  379. package/build/test-utils/component-utils.js +0 -5
  380. package/build/test-utils/dummy-native-subflows-handlers/dummySubflowHandlers.js +0 -45
  381. package/build/test-utils/dummy-native-subflows-handlers/geolocationSubflowHandler.js +0 -30
  382. package/build/test-utils/dummy-native-subflows-handlers/index.js +0 -9
  383. package/build/test-utils/dummy-native-subflows-handlers/notificationPermissionSubflowHandler.js +0 -17
  384. package/build/test-utils/fetch-utils.js +0 -47
  385. package/build/test-utils/getMergedTestRenderers.js +0 -36
  386. package/build/test-utils/getRandomId.js +0 -1
  387. package/build/test-utils/index.js +0 -3
  388. package/build/test-utils/mockIntersectionObserver.js +0 -23
  389. package/build/test-utils/openLinkInNewTab.js +0 -15
  390. package/build/test-utils/rtl-utils.js +0 -7
  391. package/build/test-utils/step-utils.js +0 -6
  392. package/build/test-utils/useSnackBar.js +0 -4
  393. package/build/test-utils/wait.js +0 -3
  394. package/build/tests/AlertLayout.test.js +0 -228
  395. package/build/tests/ArrayTuple.test.js +0 -118
  396. package/build/tests/ButtonLayout.test.js +0 -356
  397. package/build/tests/CollectionLayout.test.js +0 -516
  398. package/build/tests/ConstLayout.test.js +0 -95
  399. package/build/tests/DateInput.test.js +0 -190
  400. package/build/tests/DateSchema.test.js +0 -84
  401. package/build/tests/DecisionLayout.test.js +0 -146
  402. package/build/tests/DelayBehavior.test.js +0 -186
  403. package/build/tests/Download.test.js +0 -201
  404. package/build/tests/DynamicFlow.test.js +0 -147
  405. package/build/tests/External.test.js +0 -169
  406. package/build/tests/Flow.test.js +0 -328
  407. package/build/tests/FormLayout.test.js +0 -28
  408. package/build/tests/FormattedValue.test.js +0 -107
  409. package/build/tests/ImageRenderer.test.js +0 -78
  410. package/build/tests/InitialAction.test.js +0 -235
  411. package/build/tests/InitialStep.test.js +0 -168
  412. package/build/tests/InstructionsLayout.test.js +0 -45
  413. package/build/tests/ListLayout.test.js +0 -165
  414. package/build/tests/Logging.test.js +0 -53
  415. package/build/tests/ModalBehavior.test.js +0 -149
  416. package/build/tests/MoneyInput.test.js +0 -313
  417. package/build/tests/MultiUpload.test.js +0 -293
  418. package/build/tests/NativeBack.test.js +0 -267
  419. package/build/tests/NoOp.test.js +0 -194
  420. package/build/tests/OnLoad.test.js +0 -153
  421. package/build/tests/OneOfInitialisation.test.js +0 -571
  422. package/build/tests/PersistAsync.test.js +0 -687
  423. package/build/tests/Polling.test.js +0 -708
  424. package/build/tests/Prefetching.test.js +0 -229
  425. package/build/tests/RefreshAfter.test.js +0 -63
  426. package/build/tests/RefreshOnChange.ResponseHandling.test.js +0 -199
  427. package/build/tests/RefreshOnChange.test.js +0 -233
  428. package/build/tests/RefreshOnChange.with.Segmented.test.js +0 -351
  429. package/build/tests/RefreshOnChange.with.Tabs.test.js +0 -359
  430. package/build/tests/RefreshOnChangePreserve.test.js +0 -221
  431. package/build/tests/RendererProps.test.js +0 -372
  432. package/build/tests/Repeatable.test.js +0 -104
  433. package/build/tests/Rerendering.test.js +0 -67
  434. package/build/tests/ReviewLayout.test.js +0 -271
  435. package/build/tests/SchemaOnChange.test.js +0 -133
  436. package/build/tests/SchemaReferences.test.js +0 -88
  437. package/build/tests/ScrollToBottom.test.js +0 -101
  438. package/build/tests/ScrollToError.test.js +0 -359
  439. package/build/tests/ScrollToTop.test.js +0 -95
  440. package/build/tests/SegmentedControl.test.js +0 -49
  441. package/build/tests/SingleFileUpload.test.js +0 -168
  442. package/build/tests/StatusList.test.js +0 -85
  443. package/build/tests/Subflow.dynamic.test.js +0 -887
  444. package/build/tests/Subflow.native.test.js +0 -448
  445. package/build/tests/Submission.Const.test.js +0 -70
  446. package/build/tests/Submission.ResponseHandling.test.js +0 -557
  447. package/build/tests/Submission.merging.test.js +0 -202
  448. package/build/tests/Submission.test.js +0 -821
  449. package/build/tests/Tags.test.js +0 -466
  450. package/build/tests/UpdatableLayout.test.js +0 -343
  451. package/build/tests/Upsell.test.js +0 -154
  452. package/build/tests/ValidationAsync.test.js +0 -295
  453. package/build/tests/behavior/events.test.js +0 -348
  454. package/build/tests/legacy/Actions.test.js +0 -158
  455. package/build/tests/legacy/BackButton.test.js +0 -114
  456. package/build/tests/legacy/HiddenSchemas.test.js +0 -250
  457. package/build/tests/legacy/MultiSelect.test.js +0 -546
  458. package/build/tests/legacy/MultipleFileUploadSchema.test.js +0 -350
  459. package/build/tests/legacy/PersistAsync.blob-schema.test.js +0 -224
  460. package/build/tests/legacy/PersistAsync.string-schema.test.js +0 -211
  461. package/build/tests/legacy/RefreshStepOnChange.debouncing.test.js +0 -209
  462. package/build/tests/legacy/RefreshStepOnChange.test.js +0 -421
  463. package/build/tests/legacy/Search.test.js +0 -439
  464. package/build/tests/renderers/InlineAlertInSchemas.test.js +0 -82
  465. package/build/tests/renderers/MediaRenderer.test.js +0 -74
  466. package/build/tests/renderers/MultiSelectInputRendererProps.test.js +0 -58
  467. package/build/tests/renderers/SelectInputRendererProps.test.js +0 -43
  468. package/build/tests/renderers/TextInputRenderer.test.js +0 -48
  469. package/build/types.js +0 -1
  470. package/build/useDynamicFlow.js +0 -110
  471. package/build/useDynamicFlowModal.js +0 -58
  472. package/build/utils/analyse-step.js +0 -14
  473. package/build/utils/component-utils.js +0 -8
  474. package/build/utils/component-utils.test.js +0 -113
  475. package/build/utils/getScrollToTop.js +0 -12
  476. package/build/utils/normalise-flow-id.js +0 -1
  477. package/build/utils/normalise-flow-id.test.js +0 -24
  478. package/build/utils/recursiveMerge.js +0 -40
  479. package/build/utils/recursiveMerge.test.js +0 -93
  480. package/build/utils/safe-parse-link.js +0 -14
  481. package/build/utils/safe-parse-link.test.js +0 -19
  482. package/build/utils/type-utils.js +0 -22
  483. package/build/utils/type-validators.js +0 -11
  484. package/build/utils/type-validators.test.js +0 -180
  485. package/build/utils/useStableCallback.js +0 -15
package/build/main.css CHANGED
@@ -104,6 +104,30 @@
104
104
  flex-wrap: wrap;
105
105
  }
106
106
 
107
+ .df-filter-loader .np-chip {
108
+ background: linear-gradient(
109
+ -45deg,
110
+ var(--color-background-neutral) 40%,
111
+ var(--color-background-elevated) 50%,
112
+ var(--color-background-neutral) 60%
113
+ );
114
+ background-size: 300%;
115
+ background-position-x: 100%;
116
+ animation: shimmer 1s infinite linear;
117
+ transition: background 200ms;
118
+ border-color: var(--color-border-neutral);
119
+ }
120
+
121
+ .df-filter-loader .np-chip > * {
122
+ visibility: hidden;
123
+ }
124
+
125
+ @keyframes shimmer {
126
+ to {
127
+ background-position-x: 0%;
128
+ }
129
+ }
130
+
107
131
  .df-columns-renderer-container {
108
132
  display: flex;
109
133
  gap: var(--size-4);
package/build/main.js CHANGED
@@ -861,6 +861,7 @@ function findRendererPropsByType(root, type, predicate = () => true) {
861
861
  }
862
862
  var isType = (node, type) => node.type === type;
863
863
  var getChildren = (node) => {
864
+ var _a;
864
865
  switch (node.type) {
865
866
  case "root":
866
867
  case "box":
@@ -882,9 +883,16 @@ var getChildren = (node) => {
882
883
  return node.childrenProps ? [node.childrenProps] : [];
883
884
  case "tabs":
884
885
  return node.tabs.flatMap((c) => c.childrenProps);
886
+ case "collection": {
887
+ const { beforeSectionsProps, afterSectionsProps, sections, search } = node.state;
888
+ return [
889
+ ...beforeSectionsProps,
890
+ ...afterSectionsProps,
891
+ ...[...sections, ...(_a = search == null ? void 0 : search.initialSections) != null ? _a : []].filter((section) => section.type === "layout").flatMap((section) => section.childrenProps)
892
+ ];
893
+ }
885
894
  case "alert":
886
895
  case "button":
887
- case "collection":
888
896
  case "input-checkbox":
889
897
  case "input-date":
890
898
  case "decision":
@@ -1713,89 +1721,121 @@ function mergeArrays(valueA, valueB) {
1713
1721
  );
1714
1722
  }
1715
1723
 
1716
- // src/domain/components/collectionComponent/CollectionComponent.ts
1724
+ // src/domain/components/collectionComponent/mergeSections.ts
1725
+ var mergeSections = (existing, incoming) => {
1726
+ const knownIds = new Set(existing.map((section) => section.id));
1727
+ const newSections = incoming.filter((section) => !knownIds.has(section.id));
1728
+ const merged = existing.map((section) => {
1729
+ var _a, _b, _c, _d;
1730
+ const match = incoming.find((s) => s.id === section.id);
1731
+ if (!match) return section;
1732
+ if (section.type !== match.type) return section;
1733
+ const baseProps = {
1734
+ type: section.type,
1735
+ id: match.id,
1736
+ title: (_a = match.title) != null ? _a : section.title,
1737
+ callToAction: (_b = match.callToAction) != null ? _b : section.callToAction,
1738
+ help: (_c = match.help) != null ? _c : section.help,
1739
+ inlineAlert: (_d = match.inlineAlert) != null ? _d : section.inlineAlert
1740
+ };
1741
+ if (section.type === "layout" && match.type === "layout") {
1742
+ return __spreadProps(__spreadValues({}, baseProps), {
1743
+ type: "layout",
1744
+ components: [...section.components, ...match.components]
1745
+ });
1746
+ }
1747
+ if (section.type === "items" && match.type === "items") {
1748
+ return __spreadProps(__spreadValues({}, baseProps), {
1749
+ type: "items",
1750
+ items: [...section.items, ...match.items]
1751
+ });
1752
+ }
1753
+ return section;
1754
+ });
1755
+ return [...merged, ...newSections];
1756
+ };
1757
+
1758
+ // src/domain/components/collectionComponent/CollectionState.ts
1717
1759
  var DEBOUNCE_TIME = 800;
1718
- var createCollectionComponent = (props, onComponentUpdate, queryFunction, trackEvent) => {
1719
- const { uid, analyticsId, control, margin, tags, state } = props;
1720
- const update = getInputUpdateFunction(onComponentUpdate);
1760
+ var createCollectionState = ({
1761
+ id,
1762
+ initialState,
1763
+ searchQuery,
1764
+ onComponentUpdate,
1765
+ queryFunction,
1766
+ trackEvent
1767
+ }) => {
1768
+ const _a = initialState, { search, filters } = _a, response = __objRest(_a, ["search", "filters"]);
1721
1769
  let abortController = new AbortController();
1722
- const trackCollectionEvent = (source, status) => trackEvent(getEventName(source, status), component.state.analytics);
1723
- const query = (mode, source) => {
1724
- var _a, _b;
1770
+ const update = (updateFn) => {
1771
+ updateFn(state);
1772
+ onComponentUpdate();
1773
+ };
1774
+ const getIdleStatus = (nextCursor) => ({
1775
+ type: "idle",
1776
+ loadMore: nextCursor ? () => query("pagination") : void 0
1777
+ });
1778
+ const query = (mode) => {
1779
+ var _a2, _b;
1725
1780
  abortController.abort();
1726
1781
  abortController = new AbortController();
1727
1782
  const { signal } = abortController;
1728
- trackCollectionEvent(source != null ? source : mode, "Triggered");
1783
+ trackEvent(getEventName(mode, "Triggered"), state.analytics);
1729
1784
  queryFunction({
1730
- searchParam: (_a = component.state.search) == null ? void 0 : _a.param,
1731
- query: (_b = component.state.search) == null ? void 0 : _b.query,
1732
- cursor: mode === "pagination" ? component.state.nextCursor : void 0,
1785
+ searchParam: (_a2 = state.search) == null ? void 0 : _a2.param,
1786
+ query: (_b = state.search) == null ? void 0 : _b.query,
1787
+ cursor: mode === "pagination" ? state.nextCursor : void 0,
1733
1788
  signal,
1734
- filters: component.state.filters
1735
- }).then((response) => {
1736
- if (!response) {
1789
+ filters: state.filters
1790
+ }).then((incoming) => {
1791
+ if (!incoming || signal.aborted) {
1737
1792
  return;
1738
1793
  }
1739
- update(component, (draft) => {
1740
- draft.state = mergeState(mode, component.state, response);
1741
- draft.status = {
1742
- type: "idle",
1743
- loadMore: response.nextCursor ? paginate : void 0
1744
- };
1745
- });
1746
- trackCollectionEvent(source != null ? source : mode, "Succeeded");
1794
+ update((draft) => mergeResponse(draft, mode, incoming));
1795
+ trackEvent(getEventName(mode, "Succeeded"), state.analytics);
1747
1796
  }).catch(() => {
1748
1797
  if (!signal.aborted) {
1749
1798
  const retry = () => {
1750
- update(component, (draft) => {
1799
+ update((draft) => {
1751
1800
  draft.status = { type: "loading", reason: mode };
1752
1801
  });
1753
- query(mode, source);
1802
+ query(mode);
1754
1803
  };
1755
- update(component, (draft) => {
1756
- if (mode === "search") {
1757
- draft.state.sections = [];
1804
+ update((draft) => {
1805
+ if (mode === "search" || mode === "filter") {
1806
+ draft.sections = [];
1758
1807
  }
1759
1808
  draft.status = { type: "error", reason: mode, retry };
1760
1809
  });
1761
- trackCollectionEvent(source != null ? source : mode, "Failed");
1810
+ trackEvent(getEventName(mode, "Failed"), state.analytics);
1762
1811
  }
1763
1812
  });
1764
1813
  };
1765
1814
  const debouncedQuery = debounce(query, DEBOUNCE_TIME);
1766
- const search = () => {
1767
- abortController.abort();
1768
- debouncedQuery("search");
1769
- };
1770
- const filter = () => {
1771
- debouncedQuery("search", "filter");
1772
- debouncedQuery.flush();
1773
- };
1774
- const paginate = () => query("pagination");
1775
- const mergeState = (mode, original, incoming) => {
1776
- var _a, _b;
1777
- return {
1778
- sections: mode === "pagination" ? mergeSections(original.sections, incoming.sections) : incoming.sections,
1779
- nextCursor: incoming.nextCursor,
1780
- filters: incoming.filters ? mapFilters(incoming.filters) : original.filters,
1781
- search: incoming.search ? mapSearch(incoming.search) : original.search,
1782
- beforeSections: (_a = incoming.beforeSections) != null ? _a : original.beforeSections,
1783
- afterSections: (_b = incoming.afterSections) != null ? _b : original.afterSections,
1784
- analytics: mode === "pagination" ? recursiveMerge(original.analytics, incoming.analytics) : incoming.analytics
1785
- };
1815
+ const mergeResponse = (draft, mode, incoming) => {
1816
+ var _a2, _b, _c, _d;
1817
+ draft.sections = mode === "pagination" ? mergeSections(draft.sections, incoming.sections) : incoming.sections;
1818
+ draft.nextCursor = incoming.nextCursor;
1819
+ draft.analytics = mode === "pagination" ? recursiveMerge(draft.analytics, incoming.analytics) : incoming.analytics;
1820
+ draft.filters = incoming.filters ? mapFilters(incoming.filters) : draft.filters;
1821
+ draft.search = incoming.search ? mapSearch2(incoming.search, (_b = (_a2 = draft.search) == null ? void 0 : _a2.query) != null ? _b : "") : draft.search;
1822
+ draft.beforeSections = (_c = incoming.beforeSections) != null ? _c : draft.beforeSections;
1823
+ draft.afterSections = (_d = incoming.afterSections) != null ? _d : draft.afterSections;
1824
+ draft.status = getIdleStatus(incoming.nextCursor);
1786
1825
  };
1787
1826
  const selectFilter = (filterIndex, optionIndex) => {
1788
- var _a;
1789
- const selected = (_a = component.state.filters) == null ? void 0 : _a[filterIndex];
1827
+ var _a2;
1828
+ const selected = (_a2 = state.filters) == null ? void 0 : _a2[filterIndex];
1790
1829
  if (!selected) {
1791
1830
  return;
1792
1831
  }
1793
1832
  const currentValue = selected.options[optionIndex].selected;
1794
- update(component, (draft) => {
1795
- if (!draft.state.filters) {
1833
+ update((draft) => {
1834
+ var _a3;
1835
+ const draftFilter = (_a3 = draft.filters) == null ? void 0 : _a3[filterIndex];
1836
+ if (!draftFilter) {
1796
1837
  return;
1797
1838
  }
1798
- const draftFilter = draft.state.filters[filterIndex];
1799
1839
  if (selected.multiSelect) {
1800
1840
  draftFilter.options[optionIndex].selected = !currentValue;
1801
1841
  } else {
@@ -1803,35 +1843,86 @@ var createCollectionComponent = (props, onComponentUpdate, queryFunction, trackE
1803
1843
  draftOption.selected = index === optionIndex ? !currentValue : false;
1804
1844
  });
1805
1845
  }
1806
- draft.status = { type: "loading", reason: "search" };
1846
+ draft.status = { type: "loading", reason: "filter" };
1807
1847
  });
1808
- filter();
1848
+ debouncedQuery("filter");
1849
+ debouncedQuery.flush();
1809
1850
  };
1810
- const mapFilters = (filters) => filters == null ? void 0 : filters.map((f, filterIndex) => {
1811
- var _a;
1851
+ const changeQuery = (value) => {
1852
+ update((draft) => {
1853
+ if (draft.search) {
1854
+ draft.search.query = value;
1855
+ draft.status = { type: "loading", reason: "search" };
1856
+ }
1857
+ });
1858
+ abortController.abort();
1859
+ debouncedQuery("search");
1860
+ };
1861
+ const mapFilters = (filtersToMap) => filtersToMap == null ? void 0 : filtersToMap.map((f, filterIndex) => {
1862
+ var _a2;
1812
1863
  return __spreadProps(__spreadValues({}, f), {
1813
- options: (_a = f.options) == null ? void 0 : _a.map((option, optionIndex) => {
1814
- var _a2;
1864
+ options: (_a2 = f.options) == null ? void 0 : _a2.map((option, optionIndex) => {
1865
+ var _a3;
1815
1866
  return __spreadProps(__spreadValues({}, option), {
1816
- selected: (_a2 = option.selected) != null ? _a2 : false,
1867
+ selected: (_a3 = option.selected) != null ? _a3 : false,
1817
1868
  onSelect: () => selectFilter(filterIndex, optionIndex)
1818
1869
  });
1819
1870
  })
1820
1871
  });
1821
1872
  });
1822
- const mapSearch = (searchConfig) => searchConfig ? __spreadProps(__spreadValues({
1823
- query: ""
1824
- }, searchConfig), {
1825
- onChange(value) {
1826
- update(component, (draft) => {
1827
- if (draft.state.search) {
1828
- draft.state.search.query = value;
1829
- draft.status = { type: "loading", reason: "search" };
1830
- }
1873
+ const mapSearch2 = (searchConfig, value) => searchConfig ? __spreadProps(__spreadValues({}, searchConfig), { query: value, onChange: changeQuery }) : void 0;
1874
+ const state = __spreadProps(__spreadValues({}, response), {
1875
+ id,
1876
+ status: getIdleStatus(response.nextCursor),
1877
+ filters: mapFilters(filters),
1878
+ search: mapSearch2(search, searchQuery),
1879
+ fork(forkedId) {
1880
+ var _a2, _b;
1881
+ return createCollectionState({
1882
+ id: forkedId,
1883
+ initialState: state,
1884
+ searchQuery: (_b = (_a2 = state.search) == null ? void 0 : _a2.query) != null ? _b : "",
1885
+ onComponentUpdate,
1886
+ queryFunction,
1887
+ trackEvent
1831
1888
  });
1832
- search();
1889
+ },
1890
+ cancel() {
1891
+ debouncedQuery.cancel();
1892
+ abortController.abort();
1893
+ },
1894
+ getChildren() {
1895
+ var _a2, _b, _c, _d;
1896
+ return [
1897
+ ...(_a2 = state.beforeSections) != null ? _a2 : [],
1898
+ ...getSectionsChildren(state.sections),
1899
+ ...getSectionsChildren((_c = (_b = state.search) == null ? void 0 : _b.initialSections) != null ? _c : []),
1900
+ ...(_d = state.afterSections) != null ? _d : []
1901
+ ];
1833
1902
  }
1834
- }) : void 0;
1903
+ });
1904
+ return state;
1905
+ };
1906
+ var getSectionsChildren = (sections) => sections.filter((section) => section.type === "layout").flatMap((section) => section.components);
1907
+ var getEventName = (mode, state) => {
1908
+ const getMode = () => {
1909
+ switch (mode) {
1910
+ case "pagination":
1911
+ return "Pagination";
1912
+ case "search":
1913
+ return "Search";
1914
+ case "filter":
1915
+ return "Filter";
1916
+ }
1917
+ };
1918
+ return `Collection ${getMode()} ${state}`;
1919
+ };
1920
+
1921
+ // src/domain/components/collectionComponent/CollectionComponent.ts
1922
+ var createCollectionComponent = (props, onComponentUpdate, queryFunction, trackEvent) => {
1923
+ const { uid, analyticsId, control, margin, tags, state } = props;
1924
+ const update = getInputUpdateFunction(onComponentUpdate);
1925
+ let forkCount = 0;
1835
1926
  const component = {
1836
1927
  type: "collection",
1837
1928
  kind: "layout",
@@ -1840,21 +1931,38 @@ var createCollectionComponent = (props, onComponentUpdate, queryFunction, trackE
1840
1931
  control,
1841
1932
  margin,
1842
1933
  tags,
1843
- getChildren() {
1844
- var _a, _b, _c, _d;
1845
- return [
1846
- ...(_b = (_a = component.state) == null ? void 0 : _a.beforeSections) != null ? _b : [],
1847
- ...(_d = (_c = component.state) == null ? void 0 : _c.afterSections) != null ? _d : []
1848
- ];
1934
+ stack: [
1935
+ createCollectionState({
1936
+ id: `${uid}-state-0`,
1937
+ initialState: state,
1938
+ searchQuery: "",
1939
+ onComponentUpdate,
1940
+ queryFunction,
1941
+ trackEvent
1942
+ })
1943
+ ],
1944
+ fork() {
1945
+ const { stack } = component;
1946
+ forkCount += 1;
1947
+ const forkedState = stack[stack.length - 1].fork(`${uid}-state-${forkCount}`);
1948
+ update(component, (draft) => {
1949
+ draft.stack = [...draft.stack, forkedState];
1950
+ });
1849
1951
  },
1850
- status: {
1851
- type: "idle",
1852
- loadMore: state.nextCursor ? () => query("pagination") : void 0
1952
+ pop() {
1953
+ const [rootState, ...forkedStates] = component.stack;
1954
+ const poppedState = forkedStates.at(-1);
1955
+ if (!poppedState) {
1956
+ return;
1957
+ }
1958
+ poppedState.cancel();
1959
+ update(component, (draft) => {
1960
+ draft.stack = [rootState, ...forkedStates.slice(0, -1)];
1961
+ });
1962
+ },
1963
+ getChildren() {
1964
+ return component.stack[component.stack.length - 1].getChildren();
1853
1965
  },
1854
- state: __spreadProps(__spreadValues({}, state), {
1855
- filters: mapFilters(state.filters),
1856
- search: mapSearch(props.search)
1857
- }),
1858
1966
  start() {
1859
1967
  component.getChildren().forEach((child) => child.start());
1860
1968
  },
@@ -1864,37 +1972,6 @@ var createCollectionComponent = (props, onComponentUpdate, queryFunction, trackE
1864
1972
  };
1865
1973
  return component;
1866
1974
  };
1867
- var mergeSections = (existing, incoming) => {
1868
- const knownIds = new Set(existing.map((section) => section.id));
1869
- const newSections = incoming.filter((section) => !knownIds.has(section.id));
1870
- const merged = existing.map((section) => {
1871
- var _a, _b, _c, _d;
1872
- const match = incoming.find((s) => s.id === section.id);
1873
- if (!match) return section;
1874
- return {
1875
- id: match.id,
1876
- title: (_a = match.title) != null ? _a : section.title,
1877
- callToAction: (_b = match.callToAction) != null ? _b : section.callToAction,
1878
- help: (_c = match.help) != null ? _c : section.help,
1879
- inlineAlert: (_d = match.inlineAlert) != null ? _d : section.inlineAlert,
1880
- items: [...section.items, ...match.items]
1881
- };
1882
- });
1883
- return [...merged, ...newSections];
1884
- };
1885
- var getEventName = (mode, state) => {
1886
- const getMode = () => {
1887
- switch (mode) {
1888
- case "pagination":
1889
- return "Pagination";
1890
- case "search":
1891
- return "Search";
1892
- case "filter":
1893
- return "Filter";
1894
- }
1895
- };
1896
- return `Collection ${getMode()} ${state}`;
1897
- };
1898
1975
 
1899
1976
  // src/domain/features/collection/getPerformCollectionQuery.ts
1900
1977
  var getPerformCollectionQuery = (httpClient, baseRequest, mapState) => {
@@ -1987,9 +2064,19 @@ var hashRequest = ({
1987
2064
  }) => JSON.stringify({ query, cursor, filters: getFilterValues(filters != null ? filters : []) });
1988
2065
 
1989
2066
  // src/domain/mappers/layout/collectionLayoutToComponent.ts
1990
- var collectionLayoutToComponent = (uid, { analyticsId, control, initialState, margin, search, tags, baseRequest }, mapperProps) => {
2067
+ var collectionLayoutToComponent = (uid, { analyticsId, control, initialState, margin, search, tags, baseRequest }, mapperProps, schemaComponents) => {
2068
+ var _a;
1991
2069
  const { httpClient, onComponentUpdate, trackEvent } = mapperProps;
1992
- const mapLayout = (layout, index) => mapLayoutToComponent(`${uid}-collection-response-${index}`, layout, mapperProps, []);
2070
+ let layoutIndex = 0;
2071
+ const mapLayout = (layout) => {
2072
+ layoutIndex += 1;
2073
+ return mapLayoutToComponent(
2074
+ `${uid}-collection-response-${layoutIndex}`,
2075
+ layout,
2076
+ mapperProps,
2077
+ schemaComponents
2078
+ );
2079
+ };
1993
2080
  const mapState = (state) => mapCollectionSpecToDomainState(state, mapperProps, mapLayout);
1994
2081
  const queryFunction = getPerformCollectionQuery(httpClient, baseRequest, mapState);
1995
2082
  const component = createCollectionComponent(
@@ -1999,8 +2086,9 @@ var collectionLayoutToComponent = (uid, { analyticsId, control, initialState, ma
1999
2086
  control,
2000
2087
  margin: margin != null ? margin : "md",
2001
2088
  tags,
2002
- state: mapState(initialState),
2003
- search
2089
+ state: mapState(__spreadProps(__spreadValues({}, initialState), {
2090
+ search: (_a = initialState.search) != null ? _a : search
2091
+ }))
2004
2092
  },
2005
2093
  onComponentUpdate,
2006
2094
  queryFunction,
@@ -2010,6 +2098,7 @@ var collectionLayoutToComponent = (uid, { analyticsId, control, initialState, ma
2010
2098
  };
2011
2099
  var mapCollectionSpecToDomainState = (specState, mapperProps, mapLayout) => {
2012
2100
  const {
2101
+ search,
2013
2102
  sections,
2014
2103
  filters,
2015
2104
  beforeSections,
@@ -2018,29 +2107,8 @@ var mapCollectionSpecToDomainState = (specState, mapperProps, mapLayout) => {
2018
2107
  analytics = {}
2019
2108
  } = specState;
2020
2109
  return {
2021
- sections: sections.map((section) => {
2022
- var _a;
2023
- return __spreadProps(__spreadValues({}, section), {
2024
- callToAction: getDomainLayerCallToAction(section.callToAction, mapperProps),
2025
- help: (_a = section.help) == null ? void 0 : _a.markdown,
2026
- inlineAlert: mapInlineAlert(section.inlineAlert),
2027
- items: section.items.map((item) => {
2028
- const behavior = getDomainLayerBehavior(
2029
- { behavior: item.primaryBehavior },
2030
- [],
2031
- mapperProps.registerSubmissionBehavior
2032
- );
2033
- return __spreadProps(__spreadValues({}, item), {
2034
- id: item.entityId,
2035
- onClick: item.primaryBehavior ? () => {
2036
- void mapperProps.onBehavior(behavior);
2037
- } : void 0,
2038
- callToAction: getDomainLayerCallToAction(item.callToAction, mapperProps),
2039
- inlineAlert: mapInlineAlert(item.inlineAlert)
2040
- });
2041
- })
2042
- });
2043
- }),
2110
+ search: search ? mapSearch(search, mapperProps, mapLayout) : void 0,
2111
+ sections: sections.map((section) => mapSection(section, mapperProps, mapLayout)),
2044
2112
  filters: filters == null ? void 0 : filters.map(mapFilter),
2045
2113
  beforeSections: beforeSections == null ? void 0 : beforeSections.map(mapLayout),
2046
2114
  afterSections: afterSections == null ? void 0 : afterSections.map(mapLayout),
@@ -2048,6 +2116,49 @@ var mapCollectionSpecToDomainState = (specState, mapperProps, mapLayout) => {
2048
2116
  analytics
2049
2117
  };
2050
2118
  };
2119
+ var mapSearch = (search, mapperProps, mapLayout) => {
2120
+ var _a, _b, _c;
2121
+ return search ? __spreadProps(__spreadValues({}, search), {
2122
+ help: (_a = search.help) == null ? void 0 : _a.markdown,
2123
+ hints: (_b = search.hints) != null ? _b : search.hint ? [search.hint] : void 0,
2124
+ initialSections: (_c = search.initialSections) == null ? void 0 : _c.map(
2125
+ (section) => mapSection(section, mapperProps, mapLayout)
2126
+ )
2127
+ }) : void 0;
2128
+ };
2129
+ var mapSection = (section, mapperProps, mapLayout) => {
2130
+ var _a;
2131
+ const baseProps = __spreadProps(__spreadValues({}, section), {
2132
+ callToAction: getDomainLayerCallToAction(section.callToAction, mapperProps),
2133
+ help: (_a = section.help) == null ? void 0 : _a.markdown,
2134
+ inlineAlert: mapInlineAlert(section.inlineAlert)
2135
+ });
2136
+ if (section.type === "layout") {
2137
+ return __spreadProps(__spreadValues({}, baseProps), {
2138
+ type: "layout",
2139
+ components: section.components.map(mapLayout)
2140
+ });
2141
+ }
2142
+ return __spreadProps(__spreadValues({}, baseProps), {
2143
+ type: "items",
2144
+ items: section.items.map((item) => mapResultItem(item, mapperProps))
2145
+ });
2146
+ };
2147
+ var mapResultItem = (item, mapperProps) => {
2148
+ const behavior = getDomainLayerBehavior(
2149
+ { behavior: item.primaryBehavior },
2150
+ [],
2151
+ mapperProps.registerSubmissionBehavior
2152
+ );
2153
+ return __spreadProps(__spreadValues({}, item), {
2154
+ id: item.entityId,
2155
+ onClick: item.primaryBehavior ? () => {
2156
+ void mapperProps.onBehavior(behavior);
2157
+ } : void 0,
2158
+ callToAction: getDomainLayerCallToAction(item.callToAction, mapperProps),
2159
+ inlineAlert: mapInlineAlert(item.inlineAlert)
2160
+ });
2161
+ };
2051
2162
  var mapFilter = (filter) => {
2052
2163
  const anySelected = filter.options.some((option) => option.selected);
2053
2164
  return __spreadProps(__spreadValues({}, filter), {
@@ -3310,7 +3421,7 @@ var mapLayoutToComponent = (uid, layout, mapperProps, schemaComponents) => {
3310
3421
  case "button":
3311
3422
  return buttonLayoutToComponent(uid, layout, mapperProps);
3312
3423
  case "collection":
3313
- return collectionLayoutToComponent(uid, layout, mapperProps);
3424
+ return collectionLayoutToComponent(uid, layout, mapperProps, schemaComponents);
3314
3425
  case "columns":
3315
3426
  return columnsLayoutToComponent(uid, layout, mapperProps, schemaComponents);
3316
3427
  case "decision":
@@ -8971,31 +9082,52 @@ var mapBoxControl = ({
8971
9082
 
8972
9083
  // src/renderers/mappers/collectionComponentToProps.ts
8973
9084
  var collectionComponentToProps = (component, rendererMapperProps) => {
9085
+ const { stack } = component;
9086
+ return __spreadProps(__spreadValues(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "tags", "fork", "pop")), rendererMapperProps), {
9087
+ state: mapCollectionState(stack[stack.length - 1], rendererMapperProps),
9088
+ depth: stack.length - 1
9089
+ });
9090
+ };
9091
+ var mapCollectionState = (state, rendererMapperProps) => {
8974
9092
  var _a, _b, _c, _d, _e;
8975
9093
  const { render } = rendererMapperProps;
8976
- const beforeSectionsProps = (_b = (_a = component.state.beforeSections) == null ? void 0 : _a.map(
8977
- (child) => componentToRendererProps(child, rendererMapperProps)
8978
- )) != null ? _b : [];
8979
- const afterSectionsProps = (_d = (_c = component.state.afterSections) == null ? void 0 : _c.map(
8980
- (child) => componentToRendererProps(child, rendererMapperProps)
8981
- )) != null ? _d : [];
8982
- return __spreadProps(__spreadValues(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "tags")), rendererMapperProps), {
8983
- status: component.status,
8984
- state: __spreadProps(__spreadValues({}, component.state), {
8985
- filters: (_e = component.state.filters) != null ? _e : [],
8986
- sections: component.state.sections.map((section) => __spreadProps(__spreadValues({}, section), {
8987
- callToAction: mapCallToActionOptional(section.callToAction),
8988
- items: section.items.map((item) => __spreadProps(__spreadValues({}, item), {
8989
- callToAction: mapCallToActionOptional(item.callToAction),
8990
- additionalInfo: mapAdditionalInfo2(item.additionalInfo),
8991
- disabled: rendererMapperProps.stepLoadingState !== "idle" || item.disabled
8992
- }))
8993
- })),
8994
- beforeSectionsProps,
8995
- beforeSections: beforeSectionsProps.map(render),
8996
- afterSectionsProps,
8997
- afterSections: afterSectionsProps.map(render)
8998
- })
9094
+ const { search } = state;
9095
+ const beforeSectionsProps = (_b = (_a = state.beforeSections) == null ? void 0 : _a.map((child) => componentToRendererProps(child, rendererMapperProps))) != null ? _b : [];
9096
+ const afterSectionsProps = (_d = (_c = state.afterSections) == null ? void 0 : _c.map((child) => componentToRendererProps(child, rendererMapperProps))) != null ? _d : [];
9097
+ return __spreadProps(__spreadValues({}, pick(state, "id", "status")), {
9098
+ sections: mapSections(state.sections, rendererMapperProps),
9099
+ filters: (_e = state.filters) != null ? _e : [],
9100
+ beforeSectionsProps,
9101
+ beforeSections: beforeSectionsProps.map(render),
9102
+ afterSectionsProps,
9103
+ afterSections: afterSectionsProps.map(render),
9104
+ search: search ? __spreadProps(__spreadValues({}, pick(search, "title", "hint", "hints", "query", "onChange")), {
9105
+ initialSections: search.initialSections ? mapSections(search.initialSections, rendererMapperProps) : void 0
9106
+ }) : void 0
9107
+ });
9108
+ };
9109
+ var mapSections = (sections, rendererMapperProps) => sections.map((section) => mapSection2(section, rendererMapperProps));
9110
+ var mapSection2 = (section, rendererMapperProps) => {
9111
+ const baseProps = __spreadProps(__spreadValues({}, section), {
9112
+ callToAction: mapCallToActionOptional(section.callToAction)
9113
+ });
9114
+ if (section.type === "layout") {
9115
+ const childrenProps = section.components.map(
9116
+ (child) => componentToRendererProps(child, rendererMapperProps)
9117
+ );
9118
+ return __spreadProps(__spreadValues({}, baseProps), {
9119
+ type: "layout",
9120
+ childrenProps,
9121
+ children: childrenProps.map(rendererMapperProps.render)
9122
+ });
9123
+ }
9124
+ return __spreadProps(__spreadValues({}, baseProps), {
9125
+ type: "items",
9126
+ items: section.items.map((item) => __spreadProps(__spreadValues({}, item), {
9127
+ callToAction: mapCallToActionOptional(item.callToAction),
9128
+ additionalInfo: mapAdditionalInfo2(item.additionalInfo),
9129
+ disabled: rendererMapperProps.stepLoadingState !== "idle" || item.disabled
9130
+ }))
8999
9131
  });
9000
9132
  };
9001
9133