@wise/dynamic-flow-client 5.10.0 → 5.12.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 (418) hide show
  1. package/build/i18n/fr.json +1 -1
  2. package/build/main.css +4 -0
  3. package/build/main.js +32 -17
  4. package/build/main.mjs +32 -17
  5. package/build/types/controller/FlowController.d.ts +0 -1
  6. package/build/types/controller/FlowController.d.ts.map +1 -1
  7. package/build/types/controller/executePoll.d.ts.map +1 -1
  8. package/build/types/domain/components/step/ExternalConfirmationComponent.d.ts +2 -3
  9. package/build/types/domain/components/step/ExternalConfirmationComponent.d.ts.map +1 -1
  10. package/build/types/domain/mappers/mapStepToComponent.d.ts.map +1 -1
  11. package/build/types/domain/mappers/schema/types.d.ts +1 -0
  12. package/build/types/domain/mappers/schema/types.d.ts.map +1 -1
  13. package/build/types/renderers/mappers/externalComponentToProps.d.ts.map +1 -1
  14. package/build/types/test-utils/openLinkInNewTab.d.ts.map +1 -0
  15. package/package.json +7 -7
  16. package/build/DynamicFlowCore.js +0 -5
  17. package/build/common/errorBoundary/ErrorBoundary.js +0 -26
  18. package/build/common/errorBoundary/ErrorBoundary.test.js +0 -29
  19. package/build/common/errorBoundary/ErrorBoundaryAlert.js +0 -11
  20. package/build/common/makeHttpClient/api-utils.js +0 -3
  21. package/build/common/makeHttpClient/index.js +0 -1
  22. package/build/common/makeHttpClient/makeHttpClient.js +0 -10
  23. package/build/common/makeHttpClient/makeHttpClient.test.js +0 -186
  24. package/build/common/messages/external-confirmation.messages.js +0 -23
  25. package/build/common/messages/file-upload.messages.js +0 -13
  26. package/build/common/messages/generic-error.messages.js +0 -18
  27. package/build/common/messages/help.messages.js +0 -8
  28. package/build/common/messages/multi-file-upload.messages.js +0 -18
  29. package/build/common/messages/multi-select.messages.js +0 -8
  30. package/build/common/messages/paragraph.messages.js +0 -13
  31. package/build/common/messages/repeatable.messages.js +0 -23
  32. package/build/common/messages/search.messages.js +0 -8
  33. package/build/common/messages/validation.array.messages.js +0 -13
  34. package/build/common/messages/validation.messages.js +0 -53
  35. package/build/controller/FlowController.js +0 -372
  36. package/build/controller/executePoll.js +0 -49
  37. package/build/controller/executeRefresh.js +0 -45
  38. package/build/controller/executeRequest.js +0 -80
  39. package/build/controller/executeSubmission.js +0 -70
  40. package/build/controller/getErrorMessage.js +0 -7
  41. package/build/controller/getRequestAbortController.js +0 -13
  42. package/build/controller/getResponseType.js +0 -35
  43. package/build/controller/getSafeHttpClient.js +0 -8
  44. package/build/controller/getStepCounter.js +0 -16
  45. package/build/controller/handleErrorResponse.js +0 -26
  46. package/build/controller/makeSafeHttpClient.js +0 -8
  47. package/build/controller/response-utils.js +0 -72
  48. package/build/domain/components/AlertComponent.js +0 -1
  49. package/build/domain/components/AllOfComponent.js +0 -40
  50. package/build/domain/components/BooleanInputComponent.js +0 -50
  51. package/build/domain/components/BoxComponent.js +0 -3
  52. package/build/domain/components/ButtonComponent.js +0 -1
  53. package/build/domain/components/ColumnsComponent.js +0 -3
  54. package/build/domain/components/ConstComponent.js +0 -18
  55. package/build/domain/components/ContainerComponent.js +0 -3
  56. package/build/domain/components/DateInputComponent.js +0 -75
  57. package/build/domain/components/DecisionComponent.js +0 -1
  58. package/build/domain/components/DividerComponent.js +0 -1
  59. package/build/domain/components/FormComponent.js +0 -3
  60. package/build/domain/components/FormattedValueComponent.js +0 -44
  61. package/build/domain/components/HeadingComponent.js +0 -1
  62. package/build/domain/components/ImageComponent.js +0 -1
  63. package/build/domain/components/InstructionsComponent.js +0 -1
  64. package/build/domain/components/IntegerInputComponent.js +0 -74
  65. package/build/domain/components/ListComponent.js +0 -1
  66. package/build/domain/components/LoadingIndicatorComponent.js +0 -1
  67. package/build/domain/components/MarkdownComponent.js +0 -1
  68. package/build/domain/components/MediaComponent.js +0 -1
  69. package/build/domain/components/ModalComponent.js +0 -16
  70. package/build/domain/components/ModalLayoutComponent.js +0 -3
  71. package/build/domain/components/MoneyInputComponent.js +0 -57
  72. package/build/domain/components/MultiSelectInputComponent.js +0 -81
  73. package/build/domain/components/MultiUploadInputComponent.js +0 -88
  74. package/build/domain/components/NumberInputComponent.js +0 -73
  75. package/build/domain/components/ObjectComponent.js +0 -45
  76. package/build/domain/components/ParagraphComponent.js +0 -1
  77. package/build/domain/components/PersistAsyncComponent.js +0 -92
  78. package/build/domain/components/ProgressComponent.js +0 -1
  79. package/build/domain/components/RepeatableComponent.js +0 -103
  80. package/build/domain/components/ReviewComponent.js +0 -1
  81. package/build/domain/components/RootDomainComponent.js +0 -173
  82. package/build/domain/components/SectionComponent.js +0 -5
  83. package/build/domain/components/SelectInputComponent.js +0 -88
  84. package/build/domain/components/StatusListComponent.js +0 -1
  85. package/build/domain/components/SubflowDomainComponent.js +0 -9
  86. package/build/domain/components/TabsComponent.js +0 -1
  87. package/build/domain/components/TextInputComponent.js +0 -76
  88. package/build/domain/components/TupleComponent.js +0 -41
  89. package/build/domain/components/UploadInputComponent.js +0 -83
  90. package/build/domain/components/UpsellComponent.js +0 -25
  91. package/build/domain/components/searchComponent/SearchComponent.js +0 -92
  92. package/build/domain/components/searchComponent/SearchComponent.test.js +0 -190
  93. package/build/domain/components/step/ExternalConfirmationComponent.js +0 -28
  94. package/build/domain/components/step/StepDomainComponent.js +0 -78
  95. package/build/domain/components/step/ToolbarComponent.js +0 -1
  96. package/build/domain/components/utils/WithUpdate.js +0 -1
  97. package/build/domain/components/utils/component-utils.js +0 -12
  98. package/build/domain/components/utils/debounce.js +0 -34
  99. package/build/domain/components/utils/debounce.test.js +0 -67
  100. package/build/domain/components/utils/file-utils.js +0 -21
  101. package/build/domain/components/utils/file-utils.test.js +0 -27
  102. package/build/domain/components/utils/getRandomId.js +0 -1
  103. package/build/domain/components/utils/isExactLocalValueMatch.js +0 -14
  104. package/build/domain/components/utils/isOrWasValid.js +0 -5
  105. package/build/domain/components/utils/isPartialModelMatch.js +0 -18
  106. package/build/domain/components/utils/isPartialModelMatch.test.js +0 -74
  107. package/build/domain/features/eventNames.js +0 -24
  108. package/build/domain/features/events.js +0 -1
  109. package/build/domain/features/persistAsync/getComponentMultiPersistAsync.js +0 -50
  110. package/build/domain/features/persistAsync/getInitialPersistedState.js +0 -7
  111. package/build/domain/features/persistAsync/getPerformPersistAsync.js +0 -43
  112. package/build/domain/features/persistAsync/getPerformPersistAsync.test.js +0 -139
  113. package/build/domain/features/polling/getStepPolling.js +0 -43
  114. package/build/domain/features/polling/getStepPolling.test.js +0 -90
  115. package/build/domain/features/prefetch/getStepPrefetch.js +0 -43
  116. package/build/domain/features/prefetch/request-cache.js +0 -49
  117. package/build/domain/features/prefetch/request-cache.test.js +0 -70
  118. package/build/domain/features/refreshAfter/getStepRefreshAfter.js +0 -24
  119. package/build/domain/features/refreshAfter/getStepRefreshAfter.test.js +0 -40
  120. package/build/domain/features/schema-on-change/getDebouncedSchemaOnChange.js +0 -50
  121. package/build/domain/features/schema-on-change/getSchemaOnChange.js +0 -34
  122. package/build/domain/features/search/getPerformSearchFunction.js +0 -75
  123. package/build/domain/features/search/getPerformSearchFunction.test.js +0 -301
  124. package/build/domain/features/summary/summary-utils.js +0 -40
  125. package/build/domain/features/summary/summary-utils.test.js +0 -125
  126. package/build/domain/features/utils/http-utils.js +0 -21
  127. package/build/domain/features/utils/response-utils.js +0 -9
  128. package/build/domain/features/validation/spec-utils.js +0 -19
  129. package/build/domain/features/validation/validateStringPattern.js +0 -24
  130. package/build/domain/features/validation/validation-functions.js +0 -6
  131. package/build/domain/features/validation/validation-functions.test.js +0 -108
  132. package/build/domain/features/validation/value-checks.js +0 -125
  133. package/build/domain/features/validation/value-checks.test.js +0 -262
  134. package/build/domain/features/validationAsync/getComponentValidationAsync.js +0 -53
  135. package/build/domain/features/validationAsync/getComponentValidationAsync.test.js +0 -67
  136. package/build/domain/features/validationAsync/getInitialValidationAsyncState.js +0 -5
  137. package/build/domain/features/validationAsync/getPerformValidationAsync.js +0 -45
  138. package/build/domain/features/validationAsync/getPerformValidationAsync.test.js +0 -143
  139. package/build/domain/mappers/layout/alertLayoutToComponent.js +0 -16
  140. package/build/domain/mappers/layout/boxLayoutToComponent.js +0 -13
  141. package/build/domain/mappers/layout/buttonLayoutToComponent.js +0 -77
  142. package/build/domain/mappers/layout/columnsLayoutToComponent.js +0 -13
  143. package/build/domain/mappers/layout/decisionLayoutToComponent.js +0 -22
  144. package/build/domain/mappers/layout/deprecatedListLayoutToComponent.js +0 -30
  145. package/build/domain/mappers/layout/dividerLayoutToComponent.js +0 -2
  146. package/build/domain/mappers/layout/formLayoutToComponent.js +0 -19
  147. package/build/domain/mappers/layout/headingLayoutToComponent.js +0 -12
  148. package/build/domain/mappers/layout/imageLayoutToComponent.js +0 -20
  149. package/build/domain/mappers/layout/infoLayoutToComponent.js +0 -12
  150. package/build/domain/mappers/layout/instructionsLayoutToComponent.js +0 -12
  151. package/build/domain/mappers/layout/listLayoutToComponent.js +0 -39
  152. package/build/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +0 -9
  153. package/build/domain/mappers/layout/markdownLayoutToComponent.js +0 -12
  154. package/build/domain/mappers/layout/mediaLayoutToComponent.js +0 -12
  155. package/build/domain/mappers/layout/modalLayoutToComponent.js +0 -17
  156. package/build/domain/mappers/layout/modalToComponent.js +0 -8
  157. package/build/domain/mappers/layout/paragraphLayoutToComponent.js +0 -12
  158. package/build/domain/mappers/layout/progressLayoutToComponent.js +0 -15
  159. package/build/domain/mappers/layout/reviewLayoutToComponent.js +0 -48
  160. package/build/domain/mappers/layout/searchLayoutToComponent.js +0 -44
  161. package/build/domain/mappers/layout/sectionLayoutToComponent.js +0 -15
  162. package/build/domain/mappers/layout/statusListLayoutToComponent.js +0 -15
  163. package/build/domain/mappers/layout/tabsLayoutToComponent.js +0 -16
  164. package/build/domain/mappers/layout/upsellLayoutToComponent.js +0 -25
  165. package/build/domain/mappers/mapLayoutToComponent.js +0 -81
  166. package/build/domain/mappers/mapSchemaToComponent.js +0 -61
  167. package/build/domain/mappers/mapSchemaToComponent.test.js +0 -112
  168. package/build/domain/mappers/mapStepSchemas.js +0 -15
  169. package/build/domain/mappers/mapStepToComponent.js +0 -133
  170. package/build/domain/mappers/mapStepToComponent.test.js +0 -221
  171. package/build/domain/mappers/mapToolbarToComponent.js +0 -15
  172. package/build/domain/mappers/schema/allOfSchemaToComponent.js +0 -16
  173. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +0 -26
  174. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiSelectComponent.js +0 -55
  175. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +0 -67
  176. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +0 -57
  177. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToTupleComponent.js +0 -20
  178. package/build/domain/mappers/schema/blobSchemaToComponent.js +0 -15
  179. package/build/domain/mappers/schema/booleanSchemaToComponent.js +0 -29
  180. package/build/domain/mappers/schema/constSchemaToComponent.js +0 -23
  181. package/build/domain/mappers/schema/integerSchemaToComponent.js +0 -28
  182. package/build/domain/mappers/schema/numberSchemaToComponent.js +0 -26
  183. package/build/domain/mappers/schema/objectSchemaToComponent/assertDisplayOrder.js +0 -23
  184. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToFormattedValueComponent.js +0 -9
  185. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.js +0 -119
  186. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.test.js +0 -96
  187. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.js +0 -31
  188. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.test.js +0 -99
  189. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +0 -66
  190. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.test.js +0 -225
  191. package/build/domain/mappers/schema/persistAsyncSchemaToComponent.js +0 -29
  192. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +0 -18
  193. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.test.js +0 -133
  194. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToDateInputComponent.js +0 -48
  195. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +0 -37
  196. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +0 -28
  197. package/build/domain/mappers/schema/tests/test-utils.js +0 -16
  198. package/build/domain/mappers/schema/types.js +0 -1
  199. package/build/domain/mappers/schema/utils/getPerformPersistAsyncFn.js +0 -19
  200. package/build/domain/mappers/schema/utils/getValidationAsyncInitialState.js +0 -23
  201. package/build/domain/mappers/schema/utils/mapCommonSchemaProps.js +0 -16
  202. package/build/domain/mappers/types.js +0 -1
  203. package/build/domain/mappers/utils/FeatureFlags.js +0 -22
  204. package/build/domain/mappers/utils/behavior-utils.js +0 -44
  205. package/build/domain/mappers/utils/call-to-action-utils.js +0 -21
  206. package/build/domain/mappers/utils/getAutocompleteString.js +0 -76
  207. package/build/domain/mappers/utils/getAutocompleteString.test.js +0 -21
  208. package/build/domain/mappers/utils/groupLayoutByPinned.js +0 -38
  209. package/build/domain/mappers/utils/groupLayoutByPinned.test.js +0 -166
  210. package/build/domain/mappers/utils/image.js +0 -9
  211. package/build/domain/mappers/utils/layout-utils.js +0 -11
  212. package/build/domain/mappers/utils/legacy-utils.js +0 -49
  213. package/build/domain/mappers/utils/media-utils.js +0 -14
  214. package/build/domain/mappers/utils/suggestions-utils.js +0 -26
  215. package/build/domain/mappers/utils/suggestions-utils.test.js +0 -36
  216. package/build/domain/mappers/utils/tags-utils.js +0 -1
  217. package/build/domain/mappers/utils/utils.js +0 -35
  218. package/build/domain/types.js +0 -1
  219. package/build/getSubflowCallbacks.js +0 -38
  220. package/build/i18n/index.js +0 -40
  221. package/build/index.js +0 -8
  222. package/build/renderers/CoreContainerRenderer.js +0 -5
  223. package/build/renderers/CoreRootRenderer.js +0 -12
  224. package/build/renderers/EmptyLoadingStateRenderer.js +0 -5
  225. package/build/renderers/getRenderFunction.js +0 -24
  226. package/build/renderers/getSchemaErrorMessageFunction.js +0 -97
  227. package/build/renderers/mappers/alertComponentToProps.js +0 -2
  228. package/build/renderers/mappers/allOfComponentToProps.js +0 -6
  229. package/build/renderers/mappers/booleanInputComponentToProps.js +0 -5
  230. package/build/renderers/mappers/boxComponentToProps.js +0 -13
  231. package/build/renderers/mappers/buttonComponentToProps.js +0 -4
  232. package/build/renderers/mappers/columnsComponentToProps.js +0 -11
  233. package/build/renderers/mappers/componentToRendererProps.js +0 -164
  234. package/build/renderers/mappers/constComponentToProps.js +0 -5
  235. package/build/renderers/mappers/containerComponentToProps.js +0 -7
  236. package/build/renderers/mappers/dateInputComponentToProps.js +0 -2
  237. package/build/renderers/mappers/decisionComponentToProps.js +0 -16
  238. package/build/renderers/mappers/dividerComponentToProps.js +0 -2
  239. package/build/renderers/mappers/externalComponentToProps.js +0 -3
  240. package/build/renderers/mappers/formComponentToProps.js +0 -12
  241. package/build/renderers/mappers/formattedValueComponentToProps.js +0 -5
  242. package/build/renderers/mappers/headingComponentToProps.js +0 -2
  243. package/build/renderers/mappers/hiddenComponentToProps.js +0 -4
  244. package/build/renderers/mappers/imageComponentToProps.js +0 -2
  245. package/build/renderers/mappers/instructionsComponentToProps.js +0 -2
  246. package/build/renderers/mappers/integerInputComponentToProps.js +0 -2
  247. package/build/renderers/mappers/listComponentToProps.js +0 -2
  248. package/build/renderers/mappers/loadingIndicatorComponentToProps.js +0 -2
  249. package/build/renderers/mappers/markdownComponentToProps.js +0 -2
  250. package/build/renderers/mappers/mediaComponentToProps.js +0 -2
  251. package/build/renderers/mappers/modalComponentToProps.js +0 -11
  252. package/build/renderers/mappers/modalLayoutComponentToProps.js +0 -16
  253. package/build/renderers/mappers/moneyInputComponentToProps.js +0 -36
  254. package/build/renderers/mappers/multiSelectComponentToProps.js +0 -23
  255. package/build/renderers/mappers/multiUploadInputComponentToProps.js +0 -12
  256. package/build/renderers/mappers/numberInputComponentToProps.js +0 -2
  257. package/build/renderers/mappers/objectComponentToProps.js +0 -8
  258. package/build/renderers/mappers/paragraphComponentToProps.js +0 -2
  259. package/build/renderers/mappers/persistAsyncComponentToProps.js +0 -8
  260. package/build/renderers/mappers/progressComponentToProps.js +0 -2
  261. package/build/renderers/mappers/repeatableComponentToProps.js +0 -30
  262. package/build/renderers/mappers/reviewComponentToProps.js +0 -2
  263. package/build/renderers/mappers/rootComponentToProps.js +0 -21
  264. package/build/renderers/mappers/searchComponentToProps.js +0 -57
  265. package/build/renderers/mappers/sectionComponentToProps.js +0 -6
  266. package/build/renderers/mappers/selectInputComponentToProps.js +0 -34
  267. package/build/renderers/mappers/statusListComponentToProps.js +0 -2
  268. package/build/renderers/mappers/subflowComponentToRendererProps.js +0 -4
  269. package/build/renderers/mappers/tabsComponentToProps.js +0 -14
  270. package/build/renderers/mappers/textInputComponentToProps.js +0 -2
  271. package/build/renderers/mappers/tupleComponentToProps.js +0 -8
  272. package/build/renderers/mappers/uploadInputComponentToProps.js +0 -8
  273. package/build/renderers/mappers/upsellComponentToProps.js +0 -2
  274. package/build/renderers/mappers/utils/getValidationState.js +0 -12
  275. package/build/renderers/mappers/utils/inputComponentToProps.js +0 -26
  276. package/build/renderers/mappers/utils/mapErrorsToValidationState.js +0 -9
  277. package/build/renderers/mappers/utils/pick.js +0 -8
  278. package/build/renderers/mappers/utils/selectInputOptionsToProps.js +0 -11
  279. package/build/renderers/stepComponentToProps.js +0 -32
  280. package/build/renderers/utils.js +0 -69
  281. package/build/renderers/utils.test.js +0 -70
  282. package/build/stories/dev-tools/ContainerQueries.story.js +0 -66
  283. package/build/stories/dev-tools/Debugger.story.js +0 -38
  284. package/build/stories/dev-tools/FixtureSelect.story.js +0 -23
  285. package/build/stories/dev-tools/TestServer.story.js +0 -32
  286. package/build/stories/examples/NativeFlow.story.js +0 -80
  287. package/build/stories/examples/Recipients.story.js +0 -568
  288. package/build/stories/spec/behavior/Copy.story.js +0 -71
  289. package/build/stories/spec/behavior/Link.story.js +0 -40
  290. package/build/stories/spec/behavior/Modal.story.js +0 -79
  291. package/build/stories/spec/behavior/Subflow.story.js +0 -267
  292. package/build/stories/spec/layouts/Decision.story.js +0 -241
  293. package/build/stories/spec/layouts/Image.story.js +0 -42
  294. package/build/stories/spec/layouts/Modal.story.js +0 -81
  295. package/build/stories/spec/layouts/Search.story.js +0 -325
  296. package/build/stories/spec/layouts/Upsell.story.js +0 -55
  297. package/build/stories/spec/layouts/button/Button.story.js +0 -100
  298. package/build/stories/spec/layouts/button/PinnedButton.story.js +0 -81
  299. package/build/stories/spec/response/ActionResponse.story.js +0 -66
  300. package/build/stories/spec/schemas/MultiSelect.story.js +0 -148
  301. package/build/stories/spec/schemas/Upload.story.js +0 -168
  302. package/build/stories/spec/schemas/const/ConstLayout.story.js +0 -159
  303. package/build/stories/spec/schemas/const/ObjectConst.story.js +0 -94
  304. package/build/stories/spec/schemas/features/PersistAsync.story.js +0 -211
  305. package/build/stories/spec/schemas/features/ValidationAsync.story.js +0 -103
  306. package/build/stories/spec/schemas/object/FormattedValue.story.js +0 -92
  307. package/build/stories/spec/schemas/object/MoneyInput.story.js +0 -240
  308. package/build/stories/spec/schemas/oneOf/OneOfInitialisation.story.js +0 -55
  309. package/build/stories/spec/schemas/oneOf/OneOfWithSingleOption.story.js +0 -114
  310. package/build/stories/spec/step/Controls.story.js +0 -109
  311. package/build/stories/spec/step/DFModal.story.js +0 -58
  312. package/build/stories/spec/step/Footer.story.js +0 -70
  313. package/build/stories/spec/step/Navigation.story.js +0 -20
  314. package/build/stories/spec/step/Tags.story.js +0 -39
  315. package/build/stories/spec/step/ToolBar.story.js +0 -60
  316. package/build/stories/spec/step/features/ErrorHandling.story.js +0 -92
  317. package/build/stories/spec/step/features/External.story.js +0 -91
  318. package/build/stories/spec/step/features/Polling.story.js +0 -108
  319. package/build/stories/spec/step/features/RefreshAfter.story.js +0 -92
  320. package/build/stories/spec/step/features/refresh/Refresh.story.js +0 -258
  321. package/build/stories/spec/step/features/refresh/RefreshWithPersistAsync.story.js +0 -958
  322. package/build/stories/types.js +0 -1
  323. package/build/stories/utils/fixtureHttpClient.js +0 -70
  324. package/build/stories/utils/getBasicStep.js +0 -223
  325. package/build/stories/utils/mockSearchHandler.js +0 -71
  326. package/build/stories/utils/render-utils.js +0 -41
  327. package/build/stories/visual-tests/layouts/NotUsingListItem.story.js +0 -17
  328. package/build/test-utils/DynamicFlowWise.js +0 -32
  329. package/build/test-utils/DynamicFlowWiseModal.js +0 -34
  330. package/build/test-utils/NeptuneProviders.js +0 -11
  331. package/build/test-utils/component-utils.js +0 -5
  332. package/build/test-utils/fetch-utils.js +0 -45
  333. package/build/test-utils/getMergedTestRenderers.js +0 -34
  334. package/build/test-utils/getRandomId.js +0 -1
  335. package/build/test-utils/index.js +0 -3
  336. package/build/test-utils/rtl-utils.js +0 -7
  337. package/build/test-utils/step-utils.js +0 -6
  338. package/build/test-utils/wait.js +0 -3
  339. package/build/tests/AlertLayout.test.js +0 -78
  340. package/build/tests/ArrayTuple.test.js +0 -118
  341. package/build/tests/ButtonLayout.test.js +0 -308
  342. package/build/tests/ConstLayout.test.js +0 -95
  343. package/build/tests/DateInput.test.js +0 -163
  344. package/build/tests/DecisionLayout.test.js +0 -146
  345. package/build/tests/DynamicFlow.test.js +0 -147
  346. package/build/tests/External.test.js +0 -169
  347. package/build/tests/Flow.test.js +0 -328
  348. package/build/tests/FormLayout.test.js +0 -28
  349. package/build/tests/FormattedValue.test.js +0 -107
  350. package/build/tests/ImageRenderer.test.js +0 -78
  351. package/build/tests/InitialAction.test.js +0 -179
  352. package/build/tests/InitialStep.test.js +0 -168
  353. package/build/tests/InstructionsLayout.test.js +0 -45
  354. package/build/tests/ListLayout.test.js +0 -145
  355. package/build/tests/Logging.test.js +0 -53
  356. package/build/tests/ModalBehavior.test.js +0 -149
  357. package/build/tests/MoneyInput.test.js +0 -316
  358. package/build/tests/MultiUpload.test.js +0 -293
  359. package/build/tests/NativeBack.test.js +0 -267
  360. package/build/tests/NoOp.test.js +0 -194
  361. package/build/tests/OneOfInitialisation.test.js +0 -571
  362. package/build/tests/PersistAsync.test.js +0 -687
  363. package/build/tests/Polling.test.js +0 -617
  364. package/build/tests/Prefetching.test.js +0 -230
  365. package/build/tests/RefreshAfter.test.js +0 -63
  366. package/build/tests/RefreshOnChange.ResponseHandling.test.js +0 -205
  367. package/build/tests/RefreshOnChange.test.js +0 -233
  368. package/build/tests/RefreshOnChange.with.Segmented.test.js +0 -348
  369. package/build/tests/RefreshOnChange.with.Tabs.test.js +0 -358
  370. package/build/tests/RefreshOnChangePreserve.test.js +0 -224
  371. package/build/tests/RendererProps.test.js +0 -342
  372. package/build/tests/Repeatable.test.js +0 -107
  373. package/build/tests/Rerendering.test.js +0 -67
  374. package/build/tests/ReviewLayout.test.js +0 -274
  375. package/build/tests/SchemaOnChange.test.js +0 -133
  376. package/build/tests/SchemaReferences.test.js +0 -88
  377. package/build/tests/ScrollToError.test.js +0 -217
  378. package/build/tests/SegmentedControl.test.js +0 -49
  379. package/build/tests/SingleFileUpload.test.js +0 -88
  380. package/build/tests/StatusList.test.js +0 -85
  381. package/build/tests/Subflow.test.js +0 -710
  382. package/build/tests/Submission.ResponseHandling.test.js +0 -557
  383. package/build/tests/Submission.merging.test.js +0 -202
  384. package/build/tests/Submission.test.js +0 -748
  385. package/build/tests/Tags.test.js +0 -475
  386. package/build/tests/Upsell.test.js +0 -154
  387. package/build/tests/ValidationAsync.test.js +0 -295
  388. package/build/tests/legacy/Actions.test.js +0 -158
  389. package/build/tests/legacy/BackButton.test.js +0 -114
  390. package/build/tests/legacy/HiddenSchemas.test.js +0 -246
  391. package/build/tests/legacy/MultiSelect.test.js +0 -501
  392. package/build/tests/legacy/MultipleFileUploadSchema.test.js +0 -341
  393. package/build/tests/legacy/PersistAsync.blob-schema.test.js +0 -224
  394. package/build/tests/legacy/PersistAsync.string-schema.test.js +0 -211
  395. package/build/tests/legacy/RefreshStepOnChange.debouncing.test.js +0 -209
  396. package/build/tests/legacy/RefreshStepOnChange.test.js +0 -424
  397. package/build/tests/legacy/Search.test.js +0 -437
  398. package/build/tests/renderers/MultiSelectInputRendererProps.test.js +0 -58
  399. package/build/tests/renderers/SelectInputRendererProps.test.js +0 -43
  400. package/build/tests/renderers/TextInputRenderer.test.js +0 -51
  401. package/build/types/utils/openLinkInNewTab.d.ts.map +0 -1
  402. package/build/types.js +0 -1
  403. package/build/useDynamicFlow.js +0 -104
  404. package/build/useDynamicFlowModal.js +0 -58
  405. package/build/utils/analyse-step.js +0 -14
  406. package/build/utils/component-utils.js +0 -8
  407. package/build/utils/component-utils.test.js +0 -113
  408. package/build/utils/getScrollToTop.js +0 -12
  409. package/build/utils/normalise-flow-id.js +0 -1
  410. package/build/utils/normalise-flow-id.test.js +0 -24
  411. package/build/utils/openLinkInNewTab.js +0 -10
  412. package/build/utils/recursiveMerge.js +0 -40
  413. package/build/utils/recursiveMerge.test.js +0 -93
  414. package/build/utils/type-utils.js +0 -21
  415. package/build/utils/type-validators.js +0 -11
  416. package/build/utils/type-validators.test.js +0 -180
  417. package/build/utils/useStableCallback.js +0 -15
  418. /package/build/types/{utils → test-utils}/openLinkInNewTab.d.ts +0 -0
@@ -24,7 +24,7 @@
24
24
  "dynamicFlows.ExternalConfirmation.open": "Ouvrir dans un nouvel onglet",
25
25
  "dynamicFlows.ExternalConfirmation.title": "Veuillez confirmer",
26
26
  "dynamicFlows.FileUploadSchema.maxFileSizeError": "Nous sommes désolés, ce fichier est trop volumineux. Veuillez télécharger un fichier plus petit.",
27
- "dynamicFlows.FileUploadSchema.wrongFileTypeError": "Nous sommes désolés, ce format de fichier n'est pas pris en charge. Veuillez en télécharger un autre.",
27
+ "dynamicFlows.FileUploadSchema.wrongFileTypeError": "Désolé, ce format de fichier n'est pas pris en charge. Veuillez en importer un autre.",
28
28
  "dynamicFlows.Help.ariaLabel": "Cliquez ici pour plus d'informations.",
29
29
  "dynamicFlows.MultiSelect.summary": "{first} et {count} de plus",
30
30
  "dynamicFlows.MultipleFileUploadSchema.maxFileSizeError": "Nous sommes désolés, ce fichier est trop volumineux. Veuillez télécharger un fichier plus petit.",
package/build/main.css CHANGED
@@ -212,6 +212,10 @@
212
212
  display: block !important;
213
213
  /* left-aligned by default */
214
214
  }
215
+ .df-button.circular {
216
+ display: flex;
217
+ justify-content: center;
218
+ }
215
219
  .df-button.small.align-center {
216
220
  display: block !important;
217
221
  margin-left: auto;
package/build/main.js CHANGED
@@ -266,7 +266,7 @@ var fr_default = {
266
266
  "dynamicFlows.ExternalConfirmation.open": "Ouvrir dans un nouvel onglet",
267
267
  "dynamicFlows.ExternalConfirmation.title": "Veuillez confirmer",
268
268
  "dynamicFlows.FileUploadSchema.maxFileSizeError": "Nous sommes d\xE9sol\xE9s, ce fichier est trop volumineux. Veuillez t\xE9l\xE9charger un fichier plus petit.",
269
- "dynamicFlows.FileUploadSchema.wrongFileTypeError": "Nous sommes d\xE9sol\xE9s, ce format de fichier n'est pas pris en charge. Veuillez en t\xE9l\xE9charger un autre.",
269
+ "dynamicFlows.FileUploadSchema.wrongFileTypeError": "D\xE9sol\xE9, ce format de fichier n'est pas pris en charge. Veuillez en importer un autre.",
270
270
  "dynamicFlows.Help.ariaLabel": "Cliquez ici pour plus d'informations.",
271
271
  "dynamicFlows.MultiSelect.summary": "{first} et {count} de plus",
272
272
  "dynamicFlows.MultipleFileUploadSchema.maxFileSizeError": "Nous sommes d\xE9sol\xE9s, ce fichier est trop volumineux. Veuillez t\xE9l\xE9charger un fichier plus petit.",
@@ -2496,7 +2496,7 @@ var modalToComponent = (uid, { content, title }, mapperProps, schemaComponents)
2496
2496
  );
2497
2497
 
2498
2498
  // src/domain/components/step/ExternalConfirmationComponent.ts
2499
- var createExternalConfirmation = (uid, url, onComponentUpdate) => {
2499
+ var createExternalConfirmation = (uid, url, onLink, onComponentUpdate) => {
2500
2500
  const update = getInputUpdateFunction(onComponentUpdate);
2501
2501
  return {
2502
2502
  type: "external-confirmation",
@@ -2504,15 +2504,11 @@ var createExternalConfirmation = (uid, url, onComponentUpdate) => {
2504
2504
  uid,
2505
2505
  url,
2506
2506
  status: "initial",
2507
- onSuccess() {
2508
- update(this, (draft) => {
2509
- draft.status = "success";
2510
- });
2511
- },
2512
- onFailure() {
2513
- if (this.status === "initial") {
2507
+ open() {
2508
+ if (this.status === "initial" || this.status === "failure") {
2509
+ const success = onLink(this.url);
2514
2510
  update(this, (draft) => {
2515
- draft.status = "failure";
2511
+ draft.status = success ? "success" : "failure";
2516
2512
  });
2517
2513
  }
2518
2514
  },
@@ -4445,12 +4441,12 @@ var initialiseBase64Value = async (uploadComponent) => {
4445
4441
 
4446
4442
  // src/domain/mappers/schema/blobSchemaToComponent.ts
4447
4443
  var blobSchemaToComponent = (schemaMapperProps, mapperProps) => {
4448
- const { schema, localValue, required = false, onPersistAsync } = schemaMapperProps;
4444
+ const { schema, localValue, model, required = false, onPersistAsync } = schemaMapperProps;
4449
4445
  const { accepts, cameraConfig, maxSize, source, validationMessages } = schema;
4450
4446
  const { getErrorMessageFunctions, onComponentUpdate, onValueChange } = mapperProps;
4451
4447
  const errorMessageFunctions = getErrorMessageFunctions(validationMessages);
4452
4448
  const validLocalValue = isFile(localValue) ? localValue : null;
4453
- const value = onPersistAsync ? validLocalValue : null;
4449
+ const value = onPersistAsync && model !== null ? validLocalValue : null;
4454
4450
  return createUploadInputComponent(
4455
4451
  __spreadProps(__spreadValues({}, mapCommonSchemaProps(schemaMapperProps)), {
4456
4452
  accepts,
@@ -6295,7 +6291,12 @@ var mapStepToComponent = (_a) => {
6295
6291
  }) : void 0;
6296
6292
  const stepRefreshAfter = refreshAfter ? getStepRefreshAfter({ refreshAfter, logEvent, onBehavior }) : void 0;
6297
6293
  const stepPrefetch = getStepPrefetch(restProps.httpClient, flowRequestCache, submissionBehaviors);
6298
- const externalConfirmation = (external == null ? void 0 : external.url) ? createExternalConfirmation(`${uid}-external-confirmation`, external == null ? void 0 : external.url, onComponentUpdate) : void 0;
6294
+ const externalConfirmation = (external == null ? void 0 : external.url) ? createExternalConfirmation(
6295
+ `${uid}-external-confirmation`,
6296
+ external == null ? void 0 : external.url,
6297
+ restProps.onLink,
6298
+ onComponentUpdate
6299
+ ) : void 0;
6299
6300
  const mapperProps = __spreadProps(__spreadValues({}, restProps), {
6300
6301
  features,
6301
6302
  trackEvent,
@@ -6473,7 +6474,21 @@ var executePoll = async (props) => {
6473
6474
  assertActionResponseBody(body);
6474
6475
  return { type: "behavior", behavior: actionResponseBodyToBehavior(body) };
6475
6476
  }
6476
- default: {
6477
+ case "modal": {
6478
+ assertModalResponseBody(body);
6479
+ return { type: "behavior", behavior: __spreadValues({ type: "modal" }, body) };
6480
+ }
6481
+ case "no-op": {
6482
+ return { type: "behavior", behavior: { type: "none" } };
6483
+ }
6484
+ case "subflow": {
6485
+ assertSubflowResponseBody(body);
6486
+ return {
6487
+ type: "behavior",
6488
+ behavior: normaliseBehavior(__spreadValues({ type: "subflow" }, body), [])
6489
+ };
6490
+ }
6491
+ case void 0: {
6477
6492
  if (isActionResponseBody(body)) {
6478
6493
  return { type: "behavior", behavior: actionResponseBodyToBehavior(body) };
6479
6494
  }
@@ -6649,6 +6664,7 @@ var createFlowController = (props) => {
6649
6664
  features,
6650
6665
  httpClient,
6651
6666
  onBehavior,
6667
+ onLink,
6652
6668
  onPoll,
6653
6669
  onValueChange
6654
6670
  });
@@ -7527,9 +7543,8 @@ var externalComponentToProps = (component, rendererMapperProps) => {
7527
7543
  type: "external-confirmation",
7528
7544
  uid: component.uid,
7529
7545
  url: component.url,
7530
- status: component.status,
7531
- onSuccess: component.onSuccess.bind(component),
7532
- onFailure: component.onFailure.bind(component),
7546
+ visible: component.status === "failure",
7547
+ open: component.open.bind(component),
7533
7548
  onCancel: component.onCancel.bind(component)
7534
7549
  }, rendererMapperProps);
7535
7550
  };
package/build/main.mjs CHANGED
@@ -236,7 +236,7 @@ var fr_default = {
236
236
  "dynamicFlows.ExternalConfirmation.open": "Ouvrir dans un nouvel onglet",
237
237
  "dynamicFlows.ExternalConfirmation.title": "Veuillez confirmer",
238
238
  "dynamicFlows.FileUploadSchema.maxFileSizeError": "Nous sommes d\xE9sol\xE9s, ce fichier est trop volumineux. Veuillez t\xE9l\xE9charger un fichier plus petit.",
239
- "dynamicFlows.FileUploadSchema.wrongFileTypeError": "Nous sommes d\xE9sol\xE9s, ce format de fichier n'est pas pris en charge. Veuillez en t\xE9l\xE9charger un autre.",
239
+ "dynamicFlows.FileUploadSchema.wrongFileTypeError": "D\xE9sol\xE9, ce format de fichier n'est pas pris en charge. Veuillez en importer un autre.",
240
240
  "dynamicFlows.Help.ariaLabel": "Cliquez ici pour plus d'informations.",
241
241
  "dynamicFlows.MultiSelect.summary": "{first} et {count} de plus",
242
242
  "dynamicFlows.MultipleFileUploadSchema.maxFileSizeError": "Nous sommes d\xE9sol\xE9s, ce fichier est trop volumineux. Veuillez t\xE9l\xE9charger un fichier plus petit.",
@@ -2466,7 +2466,7 @@ var modalToComponent = (uid, { content, title }, mapperProps, schemaComponents)
2466
2466
  );
2467
2467
 
2468
2468
  // src/domain/components/step/ExternalConfirmationComponent.ts
2469
- var createExternalConfirmation = (uid, url, onComponentUpdate) => {
2469
+ var createExternalConfirmation = (uid, url, onLink, onComponentUpdate) => {
2470
2470
  const update = getInputUpdateFunction(onComponentUpdate);
2471
2471
  return {
2472
2472
  type: "external-confirmation",
@@ -2474,15 +2474,11 @@ var createExternalConfirmation = (uid, url, onComponentUpdate) => {
2474
2474
  uid,
2475
2475
  url,
2476
2476
  status: "initial",
2477
- onSuccess() {
2478
- update(this, (draft) => {
2479
- draft.status = "success";
2480
- });
2481
- },
2482
- onFailure() {
2483
- if (this.status === "initial") {
2477
+ open() {
2478
+ if (this.status === "initial" || this.status === "failure") {
2479
+ const success = onLink(this.url);
2484
2480
  update(this, (draft) => {
2485
- draft.status = "failure";
2481
+ draft.status = success ? "success" : "failure";
2486
2482
  });
2487
2483
  }
2488
2484
  },
@@ -4415,12 +4411,12 @@ var initialiseBase64Value = async (uploadComponent) => {
4415
4411
 
4416
4412
  // src/domain/mappers/schema/blobSchemaToComponent.ts
4417
4413
  var blobSchemaToComponent = (schemaMapperProps, mapperProps) => {
4418
- const { schema, localValue, required = false, onPersistAsync } = schemaMapperProps;
4414
+ const { schema, localValue, model, required = false, onPersistAsync } = schemaMapperProps;
4419
4415
  const { accepts, cameraConfig, maxSize, source, validationMessages } = schema;
4420
4416
  const { getErrorMessageFunctions, onComponentUpdate, onValueChange } = mapperProps;
4421
4417
  const errorMessageFunctions = getErrorMessageFunctions(validationMessages);
4422
4418
  const validLocalValue = isFile(localValue) ? localValue : null;
4423
- const value = onPersistAsync ? validLocalValue : null;
4419
+ const value = onPersistAsync && model !== null ? validLocalValue : null;
4424
4420
  return createUploadInputComponent(
4425
4421
  __spreadProps(__spreadValues({}, mapCommonSchemaProps(schemaMapperProps)), {
4426
4422
  accepts,
@@ -6265,7 +6261,12 @@ var mapStepToComponent = (_a) => {
6265
6261
  }) : void 0;
6266
6262
  const stepRefreshAfter = refreshAfter ? getStepRefreshAfter({ refreshAfter, logEvent, onBehavior }) : void 0;
6267
6263
  const stepPrefetch = getStepPrefetch(restProps.httpClient, flowRequestCache, submissionBehaviors);
6268
- const externalConfirmation = (external == null ? void 0 : external.url) ? createExternalConfirmation(`${uid}-external-confirmation`, external == null ? void 0 : external.url, onComponentUpdate) : void 0;
6264
+ const externalConfirmation = (external == null ? void 0 : external.url) ? createExternalConfirmation(
6265
+ `${uid}-external-confirmation`,
6266
+ external == null ? void 0 : external.url,
6267
+ restProps.onLink,
6268
+ onComponentUpdate
6269
+ ) : void 0;
6269
6270
  const mapperProps = __spreadProps(__spreadValues({}, restProps), {
6270
6271
  features,
6271
6272
  trackEvent,
@@ -6443,7 +6444,21 @@ var executePoll = async (props) => {
6443
6444
  assertActionResponseBody(body);
6444
6445
  return { type: "behavior", behavior: actionResponseBodyToBehavior(body) };
6445
6446
  }
6446
- default: {
6447
+ case "modal": {
6448
+ assertModalResponseBody(body);
6449
+ return { type: "behavior", behavior: __spreadValues({ type: "modal" }, body) };
6450
+ }
6451
+ case "no-op": {
6452
+ return { type: "behavior", behavior: { type: "none" } };
6453
+ }
6454
+ case "subflow": {
6455
+ assertSubflowResponseBody(body);
6456
+ return {
6457
+ type: "behavior",
6458
+ behavior: normaliseBehavior(__spreadValues({ type: "subflow" }, body), [])
6459
+ };
6460
+ }
6461
+ case void 0: {
6447
6462
  if (isActionResponseBody(body)) {
6448
6463
  return { type: "behavior", behavior: actionResponseBodyToBehavior(body) };
6449
6464
  }
@@ -6619,6 +6634,7 @@ var createFlowController = (props) => {
6619
6634
  features,
6620
6635
  httpClient,
6621
6636
  onBehavior,
6637
+ onLink,
6622
6638
  onPoll,
6623
6639
  onValueChange
6624
6640
  });
@@ -7497,9 +7513,8 @@ var externalComponentToProps = (component, rendererMapperProps) => {
7497
7513
  type: "external-confirmation",
7498
7514
  uid: component.uid,
7499
7515
  url: component.url,
7500
- status: component.status,
7501
- onSuccess: component.onSuccess.bind(component),
7502
- onFailure: component.onFailure.bind(component),
7516
+ visible: component.status === "failure",
7517
+ open: component.open.bind(component),
7503
7518
  onCancel: component.onCancel.bind(component)
7504
7519
  }, rendererMapperProps);
7505
7520
  };
@@ -10,7 +10,6 @@ export type FlowControllerProps = Omit<DynamicFlowCoreProps, 'renderers' | 'feat
10
10
  onChange: () => void;
11
11
  onValueChange: OnValueChange;
12
12
  scrollToTop: ScrollToTop;
13
- onLink: (url: string) => boolean;
14
13
  };
15
14
  export declare const createFlowController: (props: FlowControllerProps) => {
16
15
  rootComponent: import("../domain/components/RootDomainComponent").RootDomainComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"FlowController.d.ts","sourceRoot":"","sources":["../../../src/controller/FlowController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAA6B,MAAM,0CAA0C,CAAC;AAMjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAKL,aAAa,EACb,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAShD,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG;IACvF,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CAClC,CAAC;AAIF,eAAO,MAAM,oBAAoB,GAAI,OAAO,mBAAmB;;;;CAgc9D,CAAC"}
1
+ {"version":3,"file":"FlowController.d.ts","sourceRoot":"","sources":["../../../src/controller/FlowController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAA6B,MAAM,0CAA0C,CAAC;AAMjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAKL,aAAa,EACb,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAShD,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG;IACvF,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAIF,eAAO,MAAM,oBAAoB,GAAI,OAAO,mBAAmB;;;;CAic9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"executePoll.d.ts","sourceRoot":"","sources":["../../../src/controller/executePoll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAS3C,KAAK,OAAO,GACR;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,KAAK,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE7C,eAAO,MAAM,WAAW,GAAU,OAAO;IACvC,UAAU,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,QAAQ,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,wBAAwB,CAAC;CACtC,KAAG,OAAO,CAAC,OAAO,CA4ClB,CAAC"}
1
+ {"version":3,"file":"executePoll.d.ts","sourceRoot":"","sources":["../../../src/controller/executePoll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAW3C,KAAK,OAAO,GACR;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,KAAK,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE7C,eAAO,MAAM,WAAW,GAAU,OAAO;IACvC,UAAU,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,QAAQ,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,wBAAwB,CAAC;CACtC,KAAG,OAAO,CAAC,OAAO,CA0DlB,CAAC"}
@@ -5,9 +5,8 @@ export type ExternalConfirmationComponent = BaseComponent & {
5
5
  uid: string;
6
6
  status: 'initial' | 'success' | 'failure' | 'dismissed';
7
7
  url: string;
8
- onSuccess: () => void;
9
- onFailure: () => void;
8
+ open: () => void;
10
9
  onCancel: () => void;
11
10
  };
12
- export declare const createExternalConfirmation: (uid: string, url: string, onComponentUpdate: OnComponentUpdate) => ExternalConfirmationComponent;
11
+ export declare const createExternalConfirmation: (uid: string, url: string, onLink: (url: string) => boolean, onComponentUpdate: OnComponentUpdate) => ExternalConfirmationComponent;
13
12
  //# sourceMappingURL=ExternalConfirmationComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalConfirmationComponent.d.ts","sourceRoot":"","sources":["../../../../../src/domain/components/step/ExternalConfirmationComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG/D,MAAM,MAAM,6BAA6B,GAAG,aAAa,GAAG;IAC1D,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,KAAK,MAAM,EACX,KAAK,MAAM,EACX,mBAAmB,iBAAiB,KACnC,6BA2BF,CAAC"}
1
+ {"version":3,"file":"ExternalConfirmationComponent.d.ts","sourceRoot":"","sources":["../../../../../src/domain/components/step/ExternalConfirmationComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG/D,MAAM,MAAM,6BAA6B,GAAG,aAAa,GAAG;IAC1D,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,KAAK,MAAM,EACX,KAAK,MAAM,EACX,QAAQ,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,EAChC,mBAAmB,iBAAiB,KACnC,6BAuBF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapStepToComponent.d.ts","sourceRoot":"","sources":["../../../../src/domain/mappers/mapStepToComponent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAY,YAAY,EAAc,MAAM,EAAE,MAAM,UAAU,CAAC;AAI3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,4BAA4B,CAAC,GAAG;IAC7F,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC7C,gBAAgB,EAAE,YAAY,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,wFAQhC,eAAe,yEAgHjB,CAAC"}
1
+ {"version":3,"file":"mapStepToComponent.d.ts","sourceRoot":"","sources":["../../../../src/domain/mappers/mapStepToComponent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAY,YAAY,EAAc,MAAM,EAAE,MAAM,UAAU,CAAC;AAI3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,4BAA4B,CAAC,GAAG;IAC7F,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC7C,gBAAgB,EAAE,YAAY,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,wFAQhC,eAAe,yEAqHjB,CAAC"}
@@ -11,6 +11,7 @@ export type MapperProps = {
11
11
  httpClient: HttpClient;
12
12
  features: FeatureFlags;
13
13
  onBehavior: OnBehavior;
14
+ onLink: (url: string) => boolean;
14
15
  onValueChange: OnValueChange;
15
16
  onComponentUpdate: OnComponentUpdate;
16
17
  trackEvent: AnalyticsEventDispatcher;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/domain/mappers/schema/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,EAAE,UAAU,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,UAAU,EAAE,wBAAwB,CAAC;IACrC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,0BAA0B,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/domain/mappers/schema/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,EAAE,UAAU,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,UAAU,EAAE,wBAAwB,CAAC;IACrC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,0BAA0B,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"externalComponentToProps.d.ts","sourceRoot":"","sources":["../../../../src/renderers/mappers/externalComponentToProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4DAA4D,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,eAAO,MAAM,wBAAwB,GACnC,WAAW,6BAA6B,EACxC,qBAAqB,mBAAmB,KACvC,iCAWF,CAAC"}
1
+ {"version":3,"file":"externalComponentToProps.d.ts","sourceRoot":"","sources":["../../../../src/renderers/mappers/externalComponentToProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4DAA4D,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,eAAO,MAAM,wBAAwB,GACnC,WAAW,6BAA6B,EACxC,qBAAqB,mBAAmB,KACvC,iCAUF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openLinkInNewTab.d.ts","sourceRoot":"","sources":["../../../src/test-utils/openLinkInNewTab.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,OAa9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/dynamic-flow-client",
3
- "version": "5.10.0",
3
+ "version": "5.12.0",
4
4
  "description": "Dynamic Flow web client",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./build/main.js",
@@ -44,7 +44,7 @@
44
44
  "@transferwise/components": "^46.129.0",
45
45
  "@transferwise/formatting": "^2.13.5",
46
46
  "@transferwise/icons": "4.1.0",
47
- "@transferwise/navigation-ui": "4.42.1",
47
+ "@transferwise/navigation-ui": "4.42.3",
48
48
  "@transferwise/neptune-css": "14.26.3",
49
49
  "@types/node": "22.19.13",
50
50
  "@types/react": "18.3.28",
@@ -73,8 +73,8 @@
73
73
  "typescript": "5.9.3",
74
74
  "vitest": "4.0.18",
75
75
  "vitest-fetch-mock": "0.4.5",
76
- "@wise/dynamic-flow-renderers": "0.0.0",
77
- "@wise/dynamic-flow-fixtures": "0.0.1"
76
+ "@wise/dynamic-flow-fixtures": "0.0.1",
77
+ "@wise/dynamic-flow-renderers": "0.0.0"
78
78
  },
79
79
  "peerDependencies": {
80
80
  "@transferwise/components": "^46.104.0",
@@ -87,7 +87,7 @@
87
87
  "react-intl": "^6 || ^7"
88
88
  },
89
89
  "dependencies": {
90
- "@wise/dynamic-flow-types": "4.10.0"
90
+ "@wise/dynamic-flow-types": "4.11.0"
91
91
  },
92
92
  "scripts": {
93
93
  "dev": "EXCLUDE_VISUAL_TESTS=true pnpm storybook dev -p 3003",
@@ -99,8 +99,8 @@
99
99
  "build:messages-source": "formatjs extract 'src/**/{*.messages,messages}.{js,ts}' --out-file src/i18n/en.json --format simple && prettier --find-config-path --write src/i18n/*.json",
100
100
  "build:compiled-messages": "mkdir -p build/i18n && cp src/i18n/*.json build/i18n",
101
101
  "build:visual-tests": "tsx ./scripts/build-visual-tests.mjs",
102
- "test": "npm-run-all test:once",
103
- "test:once": "vitest run",
102
+ "test": "vitest run --no-isolate",
103
+ "test:ci": "vitest run --no-file-parallelism",
104
104
  "test:coverage": "vitest run --coverage",
105
105
  "test:watch": "vitest",
106
106
  "types": "pnpm tsc",
@@ -1,5 +0,0 @@
1
- import { useDynamicFlow } from './useDynamicFlow';
2
- export function DynamicFlowCore(props) {
3
- const df = useDynamicFlow(props);
4
- return df.view;
5
- }
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Component } from 'react';
3
- import { ErrorBoundaryAlert } from './ErrorBoundaryAlert';
4
- const noop = () => { };
5
- class ErrorBoundary extends Component {
6
- static getDerivedStateFromError() {
7
- return { hasError: true, isFatalError: true };
8
- }
9
- constructor(props) {
10
- super(props);
11
- this.handleErrorReset = () => {
12
- this.setState({ hasError: false, isFatalError: false });
13
- };
14
- this.state = { hasError: false, isFatalError: false };
15
- }
16
- componentDidCatch(error) {
17
- const { onError = noop } = this.props;
18
- onError(error);
19
- }
20
- render() {
21
- const { children } = this.props;
22
- const { hasError, isFatalError } = this.state;
23
- return (_jsxs(_Fragment, { children: [hasError && _jsx(ErrorBoundaryAlert, { onDismiss: this.handleErrorReset }), !isFatalError && children] }));
24
- }
25
- }
26
- export default ErrorBoundary;
@@ -1,29 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { screen, waitFor } from '@testing-library/react';
3
- import { vi } from 'vitest';
4
- import { renderWithProviders } from '../../test-utils';
5
- import ErrorBoundary from './ErrorBoundary';
6
- describe('when an error occurs during rendering', () => {
7
- const ThrowError = () => {
8
- throw new Error('Forced error during rendering.');
9
- };
10
- beforeEach(() => {
11
- vi.spyOn(console, 'error').mockImplementation(() => { });
12
- });
13
- afterEach(() => {
14
- vi.restoreAllMocks();
15
- });
16
- it('should render an error message with a retry link', async () => {
17
- const onError = vi.fn();
18
- renderWithProviders(_jsx(ErrorBoundary, { onError: onError, children: _jsx(ThrowError, {}) }));
19
- expect(screen.getByText('Something went wrong.')).toBeInTheDocument();
20
- await waitFor(() => {
21
- expect(screen.getByRole('link', { name: 'Retry' })).toBeInTheDocument();
22
- });
23
- });
24
- it('should trigger the onError callback', () => {
25
- const onError = vi.fn();
26
- renderWithProviders(_jsx(ErrorBoundary, { onError: onError, children: _jsx(ThrowError, {}) }));
27
- expect(onError).toHaveBeenCalledWith(new Error('Forced error during rendering.'));
28
- });
29
- });
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Alert, Sentiment } from '@transferwise/components';
3
- import { useIntl } from 'react-intl';
4
- import messages from '../messages/generic-error.messages';
5
- export function ErrorBoundaryAlert({ onDismiss }) {
6
- const { formatMessage } = useIntl();
7
- return (_jsx(Alert, { action: {
8
- text: formatMessage(messages.retry),
9
- href: window.location.href,
10
- }, message: formatMessage(messages.genericError), type: Sentiment.NEGATIVE, className: "m-b-3", onDismiss: onDismiss }));
11
- }
@@ -1,3 +0,0 @@
1
- export function isRelativePath(url = '') {
2
- return !['https://', 'http://', 'data:'].some((prefix) => url.startsWith(prefix) && url.length > prefix.length);
3
- }
@@ -1 +0,0 @@
1
- export * from './makeHttpClient';
@@ -1,10 +0,0 @@
1
- import { isRelativePath } from './api-utils';
2
- export const makeHttpClient = (baseUrl, additionalHeaders) =>
3
- // eslint-disable-next-line @typescript-eslint/promise-function-async
4
- (input, init) => {
5
- const resource = applyBaseUrl(input, baseUrl || '');
6
- return fetch(resource, mergeRequestInit(init !== null && init !== void 0 ? init : {}, { headers: additionalHeaders }));
7
- };
8
- const applyBaseUrl = (input, baseUrl) => typeof input === 'string' && isRelativePath(input) ? baseUrl + input : input;
9
- export const mergeRequestInit = (init, additionalInit) => (Object.assign(Object.assign(Object.assign({}, init), additionalInit), { headers: mergeHeaders(init === null || init === void 0 ? void 0 : init.headers, additionalInit === null || additionalInit === void 0 ? void 0 : additionalInit.headers) }));
10
- const mergeHeaders = (...headersInits) => headersInits.reduce((acc, headers) => (Object.assign(Object.assign({}, acc), Object.fromEntries(new Headers(headers).entries()))), {});