@wise/dynamic-flow-client 5.15.1 → 5.17.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 (186) hide show
  1. package/build/i18n/cs.json +3 -0
  2. package/build/i18n/de.json +3 -0
  3. package/build/i18n/en.json +3 -0
  4. package/build/i18n/es.json +3 -0
  5. package/build/i18n/fr.json +3 -0
  6. package/build/i18n/hu.json +3 -0
  7. package/build/i18n/id.json +3 -0
  8. package/build/i18n/it.json +3 -0
  9. package/build/i18n/ja.json +3 -0
  10. package/build/i18n/nl.json +3 -0
  11. package/build/i18n/pl.json +3 -0
  12. package/build/i18n/pt.json +3 -0
  13. package/build/i18n/ro.json +3 -0
  14. package/build/i18n/ru.json +3 -0
  15. package/build/i18n/th.json +3 -0
  16. package/build/i18n/tr.json +3 -0
  17. package/build/i18n/uk.json +3 -0
  18. package/build/i18n/zh_CN.json +5 -2
  19. package/build/i18n/zh_HK.json +3 -0
  20. package/build/main.js +1058 -857
  21. package/build/main.mjs +1057 -856
  22. package/build/tsconfig.types.tsbuildinfo +1 -1
  23. package/build/types/common/messages/download.messages.d.ts +19 -0
  24. package/build/types/common/messages/download.messages.d.ts.map +1 -0
  25. package/build/types/controller/FlowController.d.ts +32 -3
  26. package/build/types/controller/FlowController.d.ts.map +1 -1
  27. package/build/types/controller/executeDownload.d.ts +11 -0
  28. package/build/types/controller/executeDownload.d.ts.map +1 -0
  29. package/build/types/controller/executeRequest.d.ts.map +1 -1
  30. package/build/types/controller/getFilenameFromContentDisposition.d.ts +2 -0
  31. package/build/types/controller/getFilenameFromContentDisposition.d.ts.map +1 -0
  32. package/build/types/domain/components/AlertComponent.d.ts +1 -1
  33. package/build/types/domain/components/AlertComponent.d.ts.map +1 -1
  34. package/build/types/domain/components/AllOfComponent.d.ts +1 -1
  35. package/build/types/domain/components/AllOfComponent.d.ts.map +1 -1
  36. package/build/types/domain/components/BooleanInputComponent.d.ts +2 -2
  37. package/build/types/domain/components/BooleanInputComponent.d.ts.map +1 -1
  38. package/build/types/domain/components/BoxComponent.d.ts +1 -1
  39. package/build/types/domain/components/BoxComponent.d.ts.map +1 -1
  40. package/build/types/domain/components/ButtonComponent.d.ts +1 -1
  41. package/build/types/domain/components/ButtonComponent.d.ts.map +1 -1
  42. package/build/types/domain/components/ColumnsComponent.d.ts +1 -1
  43. package/build/types/domain/components/ColumnsComponent.d.ts.map +1 -1
  44. package/build/types/domain/components/ConstComponent.d.ts +1 -1
  45. package/build/types/domain/components/ConstComponent.d.ts.map +1 -1
  46. package/build/types/domain/components/ContainerComponent.d.ts +1 -1
  47. package/build/types/domain/components/ContainerComponent.d.ts.map +1 -1
  48. package/build/types/domain/components/DateInputComponent.d.ts +4 -3
  49. package/build/types/domain/components/DateInputComponent.d.ts.map +1 -1
  50. package/build/types/domain/components/DecisionComponent.d.ts +3 -2
  51. package/build/types/domain/components/DecisionComponent.d.ts.map +1 -1
  52. package/build/types/domain/components/FormComponent.d.ts +1 -1
  53. package/build/types/domain/components/FormComponent.d.ts.map +1 -1
  54. package/build/types/domain/components/FormattedValueComponent.d.ts +1 -1
  55. package/build/types/domain/components/FormattedValueComponent.d.ts.map +1 -1
  56. package/build/types/domain/components/HeadingComponent.d.ts +1 -1
  57. package/build/types/domain/components/HeadingComponent.d.ts.map +1 -1
  58. package/build/types/domain/components/ImageComponent.d.ts +1 -1
  59. package/build/types/domain/components/ImageComponent.d.ts.map +1 -1
  60. package/build/types/domain/components/InstructionsComponent.d.ts +1 -1
  61. package/build/types/domain/components/InstructionsComponent.d.ts.map +1 -1
  62. package/build/types/domain/components/IntegerInputComponent.d.ts +4 -3
  63. package/build/types/domain/components/IntegerInputComponent.d.ts.map +1 -1
  64. package/build/types/domain/components/ListComponent.d.ts +1 -1
  65. package/build/types/domain/components/ListComponent.d.ts.map +1 -1
  66. package/build/types/domain/components/LoadingIndicatorComponent.d.ts +1 -1
  67. package/build/types/domain/components/LoadingIndicatorComponent.d.ts.map +1 -1
  68. package/build/types/domain/components/MarkdownComponent.d.ts +1 -1
  69. package/build/types/domain/components/MarkdownComponent.d.ts.map +1 -1
  70. package/build/types/domain/components/ModalComponent.d.ts +1 -1
  71. package/build/types/domain/components/ModalComponent.d.ts.map +1 -1
  72. package/build/types/domain/components/ModalLayoutComponent.d.ts +1 -1
  73. package/build/types/domain/components/ModalLayoutComponent.d.ts.map +1 -1
  74. package/build/types/domain/components/MoneyInputComponent.d.ts +1 -1
  75. package/build/types/domain/components/MoneyInputComponent.d.ts.map +1 -1
  76. package/build/types/domain/components/MultiSelectInputComponent.d.ts +2 -2
  77. package/build/types/domain/components/MultiSelectInputComponent.d.ts.map +1 -1
  78. package/build/types/domain/components/MultiUploadInputComponent.d.ts +3 -3
  79. package/build/types/domain/components/MultiUploadInputComponent.d.ts.map +1 -1
  80. package/build/types/domain/components/NumberInputComponent.d.ts +4 -3
  81. package/build/types/domain/components/NumberInputComponent.d.ts.map +1 -1
  82. package/build/types/domain/components/ObjectComponent.d.ts +1 -1
  83. package/build/types/domain/components/ObjectComponent.d.ts.map +1 -1
  84. package/build/types/domain/components/ParagraphComponent.d.ts +1 -1
  85. package/build/types/domain/components/ParagraphComponent.d.ts.map +1 -1
  86. package/build/types/domain/components/PersistAsyncComponent.d.ts +1 -0
  87. package/build/types/domain/components/PersistAsyncComponent.d.ts.map +1 -1
  88. package/build/types/domain/components/ProgressComponent.d.ts +1 -1
  89. package/build/types/domain/components/ProgressComponent.d.ts.map +1 -1
  90. package/build/types/domain/components/RepeatableComponent.d.ts +5 -5
  91. package/build/types/domain/components/RepeatableComponent.d.ts.map +1 -1
  92. package/build/types/domain/components/ReviewComponent.d.ts +1 -1
  93. package/build/types/domain/components/ReviewComponent.d.ts.map +1 -1
  94. package/build/types/domain/components/RootDomainComponent.d.ts.map +1 -1
  95. package/build/types/domain/components/SectionComponent.d.ts.map +1 -1
  96. package/build/types/domain/components/SelectInputComponent.d.ts +2 -2
  97. package/build/types/domain/components/SelectInputComponent.d.ts.map +1 -1
  98. package/build/types/domain/components/StatusListComponent.d.ts +1 -1
  99. package/build/types/domain/components/StatusListComponent.d.ts.map +1 -1
  100. package/build/types/domain/components/SubflowComponent.d.ts +1 -1
  101. package/build/types/domain/components/SubflowComponent.d.ts.map +1 -1
  102. package/build/types/domain/components/TabsComponent.d.ts +1 -1
  103. package/build/types/domain/components/TabsComponent.d.ts.map +1 -1
  104. package/build/types/domain/components/TextInputComponent.d.ts +4 -3
  105. package/build/types/domain/components/TextInputComponent.d.ts.map +1 -1
  106. package/build/types/domain/components/TupleComponent.d.ts +1 -1
  107. package/build/types/domain/components/TupleComponent.d.ts.map +1 -1
  108. package/build/types/domain/components/UploadInputComponent.d.ts +2 -2
  109. package/build/types/domain/components/UploadInputComponent.d.ts.map +1 -1
  110. package/build/types/domain/components/UpsellComponent.d.ts +2 -2
  111. package/build/types/domain/components/UpsellComponent.d.ts.map +1 -1
  112. package/build/types/domain/components/searchComponent/SearchComponent.d.ts +3 -3
  113. package/build/types/domain/components/searchComponent/SearchComponent.d.ts.map +1 -1
  114. package/build/types/domain/components/step/ExternalConfirmationComponent.d.ts.map +1 -1
  115. package/build/types/domain/components/step/StepDomainComponent.d.ts +7 -2
  116. package/build/types/domain/components/step/StepDomainComponent.d.ts.map +1 -1
  117. package/build/types/domain/features/eventNames.d.ts +1 -1
  118. package/build/types/domain/features/eventNames.d.ts.map +1 -1
  119. package/build/types/domain/features/events.d.ts +2 -0
  120. package/build/types/domain/features/events.d.ts.map +1 -1
  121. package/build/types/domain/features/validation/spec-utils.d.ts.map +1 -1
  122. package/build/types/domain/features/validationAsync/getComponentValidationAsync.d.ts.map +1 -1
  123. package/build/types/domain/features/validationAsync/getInitialValidationAsyncState.d.ts.map +1 -1
  124. package/build/types/domain/features/validationAsync/getPerformValidationAsync.d.ts.map +1 -1
  125. package/build/types/domain/mappers/layout/decisionLayoutToComponent.d.ts.map +1 -1
  126. package/build/types/domain/mappers/layout/reviewLayoutToComponent.d.ts.map +1 -1
  127. package/build/types/domain/mappers/mapStepToComponent.d.ts.map +1 -1
  128. package/build/types/domain/mappers/schema/persistAsyncSchemaToComponent.d.ts +29 -15
  129. package/build/types/domain/mappers/schema/persistAsyncSchemaToComponent.d.ts.map +1 -1
  130. package/build/types/domain/mappers/schema/utils/mapCommonSchemaProps.d.ts +1 -0
  131. package/build/types/domain/mappers/schema/utils/mapCommonSchemaProps.d.ts.map +1 -1
  132. package/build/types/domain/mappers/types.d.ts +3 -0
  133. package/build/types/domain/mappers/types.d.ts.map +1 -1
  134. package/build/types/domain/mappers/utils/FeatureFlags.d.ts +1 -1
  135. package/build/types/domain/mappers/utils/FeatureFlags.d.ts.map +1 -1
  136. package/build/types/domain/mappers/utils/behavior-utils.d.ts.map +1 -1
  137. package/build/types/domain/mappers/utils/call-to-action-utils.d.ts.map +1 -1
  138. package/build/types/domain/mappers/utils/getHrefWithTracking.d.ts +8 -0
  139. package/build/types/domain/mappers/utils/getHrefWithTracking.d.ts.map +1 -0
  140. package/build/types/domain/mappers/utils/utils.d.ts.map +1 -1
  141. package/build/types/domain/types.d.ts +17 -2
  142. package/build/types/domain/types.d.ts.map +1 -1
  143. package/build/types/renderers/getSchemaErrorMessageFunction.d.ts.map +1 -1
  144. package/build/types/renderers/mappers/alertComponentToProps.d.ts.map +1 -1
  145. package/build/types/renderers/mappers/booleanInputComponentToProps.d.ts.map +1 -1
  146. package/build/types/renderers/mappers/columnsComponentToProps.d.ts +1 -1
  147. package/build/types/renderers/mappers/columnsComponentToProps.d.ts.map +1 -1
  148. package/build/types/renderers/mappers/containerComponentToProps.d.ts.map +1 -1
  149. package/build/types/renderers/mappers/dateInputComponentToProps.d.ts.map +1 -1
  150. package/build/types/renderers/mappers/decisionComponentToProps.d.ts.map +1 -1
  151. package/build/types/renderers/mappers/externalComponentToProps.d.ts.map +1 -1
  152. package/build/types/renderers/mappers/formComponentToProps.d.ts.map +1 -1
  153. package/build/types/renderers/mappers/integerInputComponentToProps.d.ts.map +1 -1
  154. package/build/types/renderers/mappers/listComponentToProps.d.ts.map +1 -1
  155. package/build/types/renderers/mappers/modalComponentToProps.d.ts.map +1 -1
  156. package/build/types/renderers/mappers/modalLayoutComponentToProps.d.ts.map +1 -1
  157. package/build/types/renderers/mappers/multiSelectComponentToProps.d.ts.map +1 -1
  158. package/build/types/renderers/mappers/multiUploadInputComponentToProps.d.ts.map +1 -1
  159. package/build/types/renderers/mappers/numberInputComponentToProps.d.ts.map +1 -1
  160. package/build/types/renderers/mappers/persistAsyncComponentToProps.d.ts +2 -1
  161. package/build/types/renderers/mappers/persistAsyncComponentToProps.d.ts.map +1 -1
  162. package/build/types/renderers/mappers/repeatableComponentToProps.d.ts.map +1 -1
  163. package/build/types/renderers/mappers/reviewComponentToProps.d.ts.map +1 -1
  164. package/build/types/renderers/mappers/searchComponentToProps.d.ts.map +1 -1
  165. package/build/types/renderers/mappers/sectionComponentToProps.d.ts.map +1 -1
  166. package/build/types/renderers/mappers/selectInputComponentToProps.d.ts.map +1 -1
  167. package/build/types/renderers/mappers/statusListComponentToProps.d.ts.map +1 -1
  168. package/build/types/renderers/mappers/textInputComponentToProps.d.ts.map +1 -1
  169. package/build/types/renderers/mappers/uploadInputComponentToProps.d.ts.map +1 -1
  170. package/build/types/renderers/mappers/upsellComponentToProps.d.ts.map +1 -1
  171. package/build/types/renderers/mappers/utils/inputComponentToProps.d.ts +14 -12
  172. package/build/types/renderers/mappers/utils/inputComponentToProps.d.ts.map +1 -1
  173. package/build/types/renderers/mappers/utils/mapCallToAction.d.ts +6 -0
  174. package/build/types/renderers/mappers/utils/mapCallToAction.d.ts.map +1 -0
  175. package/build/types/renderers/subflow/getDynamicSubflowRenderer.d.ts +1 -0
  176. package/build/types/renderers/subflow/getDynamicSubflowRenderer.d.ts.map +1 -1
  177. package/build/types/stories/utils/render-utils.d.ts.map +1 -1
  178. package/build/types/test-utils/DynamicFlowWise.d.ts.map +1 -1
  179. package/build/types/test-utils/useSnackBar.d.ts +9 -0
  180. package/build/types/test-utils/useSnackBar.d.ts.map +1 -0
  181. package/build/types/types.d.ts +3 -29
  182. package/build/types/types.d.ts.map +1 -1
  183. package/build/types/useDynamicFlow.d.ts.map +1 -1
  184. package/package.json +25 -25
  185. package/build/types/domain/components/utils/WithUpdate.d.ts +0 -5
  186. package/build/types/domain/components/utils/WithUpdate.d.ts.map +0 -1
package/build/main.mjs CHANGED
@@ -79,6 +79,9 @@ var cs_default = {
79
79
  "dynamicFlows.ControlFeedback.patternDate": "Zadejte pros\xEDm datum ve spr\xE1vn\xE9m form\xE1tu.",
80
80
  "dynamicFlows.ControlFeedback.required": "Vypl\u0148te pros\xEDm toto pole.",
81
81
  "dynamicFlows.ControlFeedback.type": "Nespr\xE1vn\xFD typ",
82
+ "dynamicFlows.DownloadFeedback.failed": "Stahov\xE1n\xED se nezda\u0159ilo",
83
+ "dynamicFlows.DownloadFeedback.started": "Stahov\xE1n\xED...",
84
+ "dynamicFlows.DownloadFeedback.successful": "Stahov\xE1n\xED prob\u011Bhlo \xFAsp\u011B\u0161n\u011B",
82
85
  "dynamicFlows.DynamicParagraph.copied": "Zkop\xEDrov\xE1no do schr\xE1nky",
83
86
  "dynamicFlows.DynamicParagraph.copy": "Kop\xEDrovat",
84
87
  "dynamicFlows.ErrorBoundary.errorAlert": "N\u011Bco se pokazilo.",
@@ -116,6 +119,9 @@ var de_default = {
116
119
  "dynamicFlows.ControlFeedback.patternDate": "Bitte gib ein Datum im richtigen Format ein.",
117
120
  "dynamicFlows.ControlFeedback.required": "Bitte f\xFClle dieses Feld aus.",
118
121
  "dynamicFlows.ControlFeedback.type": "Falscher Typ",
122
+ "dynamicFlows.DownloadFeedback.failed": "Download fehlgeschlagenen",
123
+ "dynamicFlows.DownloadFeedback.started": "Wird heruntergeladen...",
124
+ "dynamicFlows.DownloadFeedback.successful": "Erfolgreich heruntergeladen",
119
125
  "dynamicFlows.DynamicParagraph.copied": "In Zwischenablage kopiert",
120
126
  "dynamicFlows.DynamicParagraph.copy": "Kopieren",
121
127
  "dynamicFlows.ErrorBoundary.errorAlert": "Da ist etwas schiefgegangen.",
@@ -153,6 +159,9 @@ var en_default = {
153
159
  "dynamicFlows.ControlFeedback.patternDate": "Please enter a date in the corrrect format.",
154
160
  "dynamicFlows.ControlFeedback.required": "Please fill out this field.",
155
161
  "dynamicFlows.ControlFeedback.type": "Incorrect type",
162
+ "dynamicFlows.DownloadFeedback.failed": "Download failed",
163
+ "dynamicFlows.DownloadFeedback.started": "Downloading...",
164
+ "dynamicFlows.DownloadFeedback.successful": "Download successful",
156
165
  "dynamicFlows.DynamicParagraph.copied": "Copied to clipboard",
157
166
  "dynamicFlows.DynamicParagraph.copy": "Copy",
158
167
  "dynamicFlows.ErrorBoundary.errorAlert": "Something went wrong.",
@@ -190,6 +199,9 @@ var es_default = {
190
199
  "dynamicFlows.ControlFeedback.patternDate": "Introduce la fecha en un formato correcto.",
191
200
  "dynamicFlows.ControlFeedback.required": "Completa este campo.",
192
201
  "dynamicFlows.ControlFeedback.type": "Tipo incorrecto",
202
+ "dynamicFlows.DownloadFeedback.failed": "Descarga fallida",
203
+ "dynamicFlows.DownloadFeedback.started": "Descargando...",
204
+ "dynamicFlows.DownloadFeedback.successful": "Descarga correcta",
193
205
  "dynamicFlows.DynamicParagraph.copied": "Copiado al portapapeles",
194
206
  "dynamicFlows.DynamicParagraph.copy": "Copiar",
195
207
  "dynamicFlows.ErrorBoundary.errorAlert": "Ha habido un error.",
@@ -227,6 +239,9 @@ var fr_default = {
227
239
  "dynamicFlows.ControlFeedback.patternDate": "Veuillez saisir une date au format correct.",
228
240
  "dynamicFlows.ControlFeedback.required": "Champ obligatoire.",
229
241
  "dynamicFlows.ControlFeedback.type": "Type incorrect",
242
+ "dynamicFlows.DownloadFeedback.failed": "\xC9chec du t\xE9l\xE9chargement",
243
+ "dynamicFlows.DownloadFeedback.started": "T\xE9l\xE9chargement...",
244
+ "dynamicFlows.DownloadFeedback.successful": "T\xE9l\xE9chargement r\xE9ussi",
230
245
  "dynamicFlows.DynamicParagraph.copied": "Copi\xE9 dans le presse-papier",
231
246
  "dynamicFlows.DynamicParagraph.copy": "Copier",
232
247
  "dynamicFlows.ErrorBoundary.errorAlert": "Une erreur s'est produite.",
@@ -264,6 +279,9 @@ var hu_default = {
264
279
  "dynamicFlows.ControlFeedback.patternDate": "K\xE9r\xFCnk, hogy a d\xE1tumot helyes form\xE1tumban add meg.",
265
280
  "dynamicFlows.ControlFeedback.required": "K\xE9r\xFCnk, t\xF6ltsd ki ezt a mez\u0151t.",
266
281
  "dynamicFlows.ControlFeedback.type": "Helytelen t\xEDpus",
282
+ "dynamicFlows.DownloadFeedback.failed": "Sikertelen let\xF6lt\xE9s",
283
+ "dynamicFlows.DownloadFeedback.started": "Let\xF6lt\xE9s...",
284
+ "dynamicFlows.DownloadFeedback.successful": "Let\xF6lt\xE9s sikeres",
267
285
  "dynamicFlows.DynamicParagraph.copied": "V\xE1g\xF3lapra m\xE1solva",
268
286
  "dynamicFlows.DynamicParagraph.copy": "M\xE1sol\xE1s",
269
287
  "dynamicFlows.ErrorBoundary.errorAlert": "Valami hiba t\xF6rt\xE9nt.",
@@ -301,6 +319,9 @@ var id_default = {
301
319
  "dynamicFlows.ControlFeedback.patternDate": "Harap masukkan tanggal dalam format yang benar.",
302
320
  "dynamicFlows.ControlFeedback.required": "Harap isi kolom ini.",
303
321
  "dynamicFlows.ControlFeedback.type": "Tipe salah",
322
+ "dynamicFlows.DownloadFeedback.failed": "Pengunduhan gagal",
323
+ "dynamicFlows.DownloadFeedback.started": "Mengunduh...",
324
+ "dynamicFlows.DownloadFeedback.successful": "Pengunduhan berhasil",
304
325
  "dynamicFlows.DynamicParagraph.copied": "Disalin ke clipboard",
305
326
  "dynamicFlows.DynamicParagraph.copy": "Salin",
306
327
  "dynamicFlows.ErrorBoundary.errorAlert": "Terjadi kesalahan.",
@@ -338,6 +359,9 @@ var it_default = {
338
359
  "dynamicFlows.ControlFeedback.patternDate": "Inserisci la data in un formato corretto.",
339
360
  "dynamicFlows.ControlFeedback.required": "Compila questo campo.",
340
361
  "dynamicFlows.ControlFeedback.type": "Tipo errato",
362
+ "dynamicFlows.DownloadFeedback.failed": "Download non riuscito",
363
+ "dynamicFlows.DownloadFeedback.started": "Download in corso...",
364
+ "dynamicFlows.DownloadFeedback.successful": "Download completato",
341
365
  "dynamicFlows.DynamicParagraph.copied": "Copiato negli appunti",
342
366
  "dynamicFlows.DynamicParagraph.copy": "Copia",
343
367
  "dynamicFlows.ErrorBoundary.errorAlert": "Qualcosa non ha funzionato.",
@@ -375,6 +399,9 @@ var ja_default = {
375
399
  "dynamicFlows.ControlFeedback.patternDate": "\u6B63\u3057\u3044\u5F62\u5F0F\u3067\u65E5\u4ED8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
376
400
  "dynamicFlows.ControlFeedback.required": "\u3053\u306E\u9805\u76EE\u306F\u5165\u529B\u5FC5\u9808\u3067\u3059\u3002",
377
401
  "dynamicFlows.ControlFeedback.type": "\u4E0D\u6B63\u306A\u30BF\u30A4\u30D7",
402
+ "dynamicFlows.DownloadFeedback.failed": "\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
403
+ "dynamicFlows.DownloadFeedback.started": "\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D...",
404
+ "dynamicFlows.DownloadFeedback.successful": "\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F",
378
405
  "dynamicFlows.DynamicParagraph.copied": "\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3078\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
379
406
  "dynamicFlows.DynamicParagraph.copy": "\u30B3\u30D4\u30FC\u3059\u308B",
380
407
  "dynamicFlows.ErrorBoundary.errorAlert": "\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002",
@@ -412,6 +439,9 @@ var nl_default = {
412
439
  "dynamicFlows.ControlFeedback.patternDate": "Voer een datum in de juiste indeling in.",
413
440
  "dynamicFlows.ControlFeedback.required": "Vul dit veld in.",
414
441
  "dynamicFlows.ControlFeedback.type": "Onjuist type",
442
+ "dynamicFlows.DownloadFeedback.failed": "Downloaden mislukt",
443
+ "dynamicFlows.DownloadFeedback.started": "Downloaden...",
444
+ "dynamicFlows.DownloadFeedback.successful": "Downloaden gelukt",
415
445
  "dynamicFlows.DynamicParagraph.copied": "Naar klembord gekopieerd",
416
446
  "dynamicFlows.DynamicParagraph.copy": "Kopi\xEBren",
417
447
  "dynamicFlows.ErrorBoundary.errorAlert": "Er is iets misgegaan.",
@@ -449,6 +479,9 @@ var pl_default = {
449
479
  "dynamicFlows.ControlFeedback.patternDate": "Wprowad\u017A dat\u0119 w prawid\u0142owym formacie.",
450
480
  "dynamicFlows.ControlFeedback.required": "Prosz\u0119 wype\u0142ni\u0107 to pole.",
451
481
  "dynamicFlows.ControlFeedback.type": "Nieprawid\u0142owy typ",
482
+ "dynamicFlows.DownloadFeedback.failed": "Pobieranie nieudane",
483
+ "dynamicFlows.DownloadFeedback.started": "Pobieranie...",
484
+ "dynamicFlows.DownloadFeedback.successful": "Pobieranie zako\u0144czone powodzeniem",
452
485
  "dynamicFlows.DynamicParagraph.copied": "Skopiowano do schowka",
453
486
  "dynamicFlows.DynamicParagraph.copy": "Kopiuj",
454
487
  "dynamicFlows.ErrorBoundary.errorAlert": "Co\u015B posz\u0142o nie tak.",
@@ -486,6 +519,9 @@ var pt_default = {
486
519
  "dynamicFlows.ControlFeedback.patternDate": "Por favor, insira a data no formato correto.",
487
520
  "dynamicFlows.ControlFeedback.required": "Por favor, preencha o campo.",
488
521
  "dynamicFlows.ControlFeedback.type": "Tipo incorreto",
522
+ "dynamicFlows.DownloadFeedback.failed": "Falha no envio",
523
+ "dynamicFlows.DownloadFeedback.started": "Baixando...",
524
+ "dynamicFlows.DownloadFeedback.successful": "Download realizado",
489
525
  "dynamicFlows.DynamicParagraph.copied": "Copiado",
490
526
  "dynamicFlows.DynamicParagraph.copy": "Copiar",
491
527
  "dynamicFlows.ErrorBoundary.errorAlert": "Algo deu errado.",
@@ -523,6 +559,9 @@ var ro_default = {
523
559
  "dynamicFlows.ControlFeedback.patternDate": "Te rug\u0103m s\u0103 introduci o dat\u0103 \xEEn formatul corect.",
524
560
  "dynamicFlows.ControlFeedback.required": "Te rug\u0103m s\u0103 completezi acest spa\u021Biu.",
525
561
  "dynamicFlows.ControlFeedback.type": "Tip incorect",
562
+ "dynamicFlows.DownloadFeedback.failed": "Desc\u0103rcare e\u0219uat\u0103",
563
+ "dynamicFlows.DownloadFeedback.started": "Se descarc\u0103...",
564
+ "dynamicFlows.DownloadFeedback.successful": "Desc\u0103rcare reu\u0219it\u0103",
526
565
  "dynamicFlows.DynamicParagraph.copied": "Copiat \xEEn clipboard",
527
566
  "dynamicFlows.DynamicParagraph.copy": "Copiaz\u0103",
528
567
  "dynamicFlows.ErrorBoundary.errorAlert": "Ceva nu a mers bine.",
@@ -560,6 +599,9 @@ var ru_default = {
560
599
  "dynamicFlows.ControlFeedback.patternDate": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0430\u0442\u0443 \u0432 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435.",
561
600
  "dynamicFlows.ControlFeedback.required": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0434\u0430\u043D\u043D\u043E\u0435 \u043F\u043E\u043B\u0435.",
562
601
  "dynamicFlows.ControlFeedback.type": "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0442\u0438\u043F",
602
+ "dynamicFlows.DownloadFeedback.failed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043A\u0430\u0447\u0430\u0442\u044C",
603
+ "dynamicFlows.DownloadFeedback.started": "\u0421\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435...",
604
+ "dynamicFlows.DownloadFeedback.successful": "\u0421\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",
563
605
  "dynamicFlows.DynamicParagraph.copied": "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430",
564
606
  "dynamicFlows.DynamicParagraph.copy": "\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C",
565
607
  "dynamicFlows.ErrorBoundary.errorAlert": "\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A.",
@@ -597,6 +639,9 @@ var th_default = {
597
639
  "dynamicFlows.ControlFeedback.patternDate": "\u0E42\u0E1B\u0E23\u0E14\u0E1B\u0E49\u0E2D\u0E19\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E43\u0E19\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",
598
640
  "dynamicFlows.ControlFeedback.required": "\u0E42\u0E1B\u0E23\u0E14\u0E43\u0E2A\u0E48\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E43\u0E19\u0E0A\u0E48\u0E2D\u0E07\u0E19\u0E35\u0E49",
599
641
  "dynamicFlows.ControlFeedback.type": "\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",
642
+ "dynamicFlows.DownloadFeedback.failed": "\u0E14\u0E32\u0E27\u0E19\u0E4C\u0E42\u0E2B\u0E25\u0E14\u0E25\u0E49\u0E21\u0E40\u0E2B\u0E25\u0E27",
643
+ "dynamicFlows.DownloadFeedback.started": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E14\u0E32\u0E27\u0E19\u0E4C\u0E42\u0E2B\u0E25\u0E14...",
644
+ "dynamicFlows.DownloadFeedback.successful": "\u0E14\u0E32\u0E27\u0E19\u0E4C\u0E42\u0E2B\u0E25\u0E14\u0E40\u0E23\u0E35\u0E22\u0E1A\u0E23\u0E49\u0E2D\u0E22\u0E41\u0E25\u0E49\u0E27",
600
645
  "dynamicFlows.DynamicParagraph.copied": "\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E44\u0E1B\u0E22\u0E31\u0E07\u0E04\u0E25\u0E34\u0E1B\u0E1A\u0E2D\u0E23\u0E4C\u0E14",
601
646
  "dynamicFlows.DynamicParagraph.copy": "\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01",
602
647
  "dynamicFlows.ErrorBoundary.errorAlert": "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E1A\u0E32\u0E07\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E02\u0E36\u0E49\u0E19",
@@ -634,6 +679,9 @@ var tr_default = {
634
679
  "dynamicFlows.ControlFeedback.patternDate": "L\xFCtfen tarihi do\u011Fru bi\xE7imde girin.",
635
680
  "dynamicFlows.ControlFeedback.required": "L\xFCtfen bu alan\u0131 doldurun.",
636
681
  "dynamicFlows.ControlFeedback.type": "Ge\xE7ersiz se\xE7im",
682
+ "dynamicFlows.DownloadFeedback.failed": "\u0130ndirme ba\u015Far\u0131s\u0131z",
683
+ "dynamicFlows.DownloadFeedback.started": "\u0130ndiriliyor...",
684
+ "dynamicFlows.DownloadFeedback.successful": "\u0130ndirme ba\u015Far\u0131l\u0131",
637
685
  "dynamicFlows.DynamicParagraph.copied": "Panoya kopyaland\u0131",
638
686
  "dynamicFlows.DynamicParagraph.copy": "Kopyala",
639
687
  "dynamicFlows.ErrorBoundary.errorAlert": "Bir sorun olu\u015Ftu.",
@@ -671,6 +719,9 @@ var zh_CN_default = {
671
719
  "dynamicFlows.ControlFeedback.patternDate": "\u8BF7\u4EE5\u6B63\u786E\u7684\u683C\u5F0F\u8F93\u5165\u65E5\u671F",
672
720
  "dynamicFlows.ControlFeedback.required": "\u8BF7\u586B\u5199\u6B64\u5B57\u6BB5\u3002",
673
721
  "dynamicFlows.ControlFeedback.type": "\u7C7B\u578B\u9519\u8BEF",
722
+ "dynamicFlows.DownloadFeedback.failed": "\u4E0B\u8F7D\u5931\u8D25",
723
+ "dynamicFlows.DownloadFeedback.started": "\u6B63\u5728\u4E0B\u8F7D\u2026\u2026",
724
+ "dynamicFlows.DownloadFeedback.successful": "\u4E0B\u8F7D\u6210\u529F",
674
725
  "dynamicFlows.DynamicParagraph.copied": "\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F",
675
726
  "dynamicFlows.DynamicParagraph.copy": "\u590D\u5236",
676
727
  "dynamicFlows.ErrorBoundary.errorAlert": "\u51FA\u9519\u4E86\u3002",
@@ -680,14 +731,14 @@ var zh_CN_default = {
680
731
  "dynamicFlows.ExternalConfirmation.open": "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00",
681
732
  "dynamicFlows.ExternalConfirmation.title": "\u8BF7\u786E\u8BA4",
682
733
  "dynamicFlows.FileUploadSchema.maxFileSizeError": "\u62B1\u6B49\uFF0C\u8BE5\u6587\u4EF6\u592A\u5927\u3002\u8BF7\u4E0A\u4F20\u4E00\u4E2A\u66F4\u5C0F\u7684\u6587\u4EF6\u3002",
683
- "dynamicFlows.FileUploadSchema.wrongFileTypeError": "\u62B1\u6B49\uFF0C\u4E0D\u652F\u6301\u8BE5\u6587\u4EF6\u683C\u5F0F\u3002\u8BF7\u4E0A\u4F20\u5176\u4ED6\u6587\u4EF6\u3002",
734
+ "dynamicFlows.FileUploadSchema.wrongFileTypeError": "\u62B1\u6B49\uFF0C\u7CFB\u7EDF\u6682\u4E0D\u652F\u6301\u8BE5\u6587\u4EF6\u683C\u5F0F\u3002\u8BF7\u4E0A\u4F20\u5176\u4ED6\u6587\u4EF6\u3002",
684
735
  "dynamicFlows.Help.ariaLabel": "\u70B9\u51FB\u6B64\u5904\u83B7\u53D6\u66F4\u591A\u4FE1\u606F\u3002",
685
736
  "dynamicFlows.MultiSelect.summary": "{first} \u548C\u5176\u4ED6 {count} \u4E2A",
686
737
  "dynamicFlows.MultipleFileUploadSchema.maxFileSizeError": "\u62B1\u6B49\uFF0C\u8BE5\u6587\u4EF6\u592A\u5927\u3002\u8BF7\u4E0A\u4F20\u4E00\u4E2A\u66F4\u5C0F\u7684\u6587\u4EF6\u3002",
687
738
  "dynamicFlows.MultipleFileUploadSchema.maxItemsError": "\u8BF7\u4E0A\u4F20\u4E0D\u8D85\u8FC7 {maxItems} \u4E2A\u6587\u4EF6\u3002",
688
739
  "dynamicFlows.MultipleFileUploadSchema.minItemsError": "\u8BF7\u4E0A\u4F20\u81F3\u5C11 {minItems} \u4E2A\u6587\u4EF6\u3002",
689
740
  "dynamicFlows.PersistAsyncSchema.genericError": "\u51FA\u9519\u4E86\uFF0C\u8BF7\u91CD\u8BD5\u3002",
690
- "dynamicFlows.SearchLayout.loading": "\u6B63\u5728\u52A0\u8F7D\u2026"
741
+ "dynamicFlows.SearchLayout.loading": "\u6B63\u5728\u52A0\u8F7D\u2026\u2026"
691
742
  };
692
743
 
693
744
  // src/i18n/zh_HK.json
@@ -708,6 +759,9 @@ var zh_HK_default = {
708
759
  "dynamicFlows.ControlFeedback.patternDate": "\u8ACB\u4EE5\u6B63\u78BA\u683C\u5F0F\u8F38\u5165\u65E5\u671F\u3002",
709
760
  "dynamicFlows.ControlFeedback.required": "\u8ACB\u586B\u5BEB\u6B64\u6B04\u4F4D\u3002",
710
761
  "dynamicFlows.ControlFeedback.type": "\u932F\u8AA4\u7684\u985E\u578B",
762
+ "dynamicFlows.DownloadFeedback.failed": "\u4E0B\u8F09\u5931\u6557",
763
+ "dynamicFlows.DownloadFeedback.started": "\u4E0B\u8F09\u4E2D...",
764
+ "dynamicFlows.DownloadFeedback.successful": "\u4E0B\u8F09\u6210\u529F",
711
765
  "dynamicFlows.DynamicParagraph.copied": "\u8907\u88FD\u5230\u526A\u8CBC\u677F",
712
766
  "dynamicFlows.DynamicParagraph.copy": "\u8907\u88FD",
713
767
  "dynamicFlows.ErrorBoundary.errorAlert": "\u51FA\u4E86\u4E9B\u554F\u984C\u3002",
@@ -964,7 +1018,7 @@ var getInputUpdateFunction = (onComponentUpdate) => {
964
1018
  // src/domain/components/RootDomainComponent.ts
965
1019
  var createRootDomainComponent = (onComponentUpdate, scrollToTop, backConfig, requestCache) => {
966
1020
  const update = getInputUpdateFunction(onComponentUpdate);
967
- const rootComponent = {
1021
+ const component = {
968
1022
  type: "root",
969
1023
  kind: "step",
970
1024
  uid: "root",
@@ -972,107 +1026,104 @@ var createRootDomainComponent = (onComponentUpdate, scrollToTop, backConfig, req
972
1026
  stepStack: [],
973
1027
  backConfig,
974
1028
  requestCache,
975
- _update(updateFn) {
976
- update(this, updateFn);
977
- },
978
1029
  dismissAllModals() {
979
1030
  var _a;
980
- (_a = this.getStep()) == null ? void 0 : _a.dismissAllModals();
1031
+ (_a = component.getStep()) == null ? void 0 : _a.dismissAllModals();
981
1032
  },
982
1033
  dismissModal() {
983
1034
  var _a;
984
- (_a = this.getStep()) == null ? void 0 : _a.dismissModal();
1035
+ (_a = component.getStep()) == null ? void 0 : _a.dismissModal();
985
1036
  },
986
1037
  showModal(modal) {
987
1038
  var _a;
988
- (_a = this.getStep()) == null ? void 0 : _a.showModal(modal);
1039
+ (_a = component.getStep()) == null ? void 0 : _a.showModal(modal);
989
1040
  },
990
1041
  getChildren() {
991
- const step = this.getStep();
1042
+ const step = component.getStep();
992
1043
  return step ? [step, ...step.getModals()] : [];
993
1044
  },
994
1045
  getLocalValue() {
995
1046
  var _a, _b;
996
- return (_b = (_a = this.getStep()) == null ? void 0 : _a.getLocalValue()) != null ? _b : null;
1047
+ return (_b = (_a = component.getStep()) == null ? void 0 : _a.getLocalValue()) != null ? _b : null;
997
1048
  },
998
1049
  async getSubmittableValue() {
999
1050
  var _a, _b;
1000
- return (_b = (_a = this.getStep()) == null ? void 0 : _a.getSubmittableValue()) != null ? _b : null;
1051
+ return (_b = (_a = component.getStep()) == null ? void 0 : _a.getSubmittableValue()) != null ? _b : null;
1001
1052
  },
1002
1053
  getSubmittableValueSync() {
1003
1054
  var _a, _b;
1004
- return (_b = (_a = this.getStep()) == null ? void 0 : _a.getSubmittableValueSync()) != null ? _b : null;
1055
+ return (_b = (_a = component.getStep()) == null ? void 0 : _a.getSubmittableValueSync()) != null ? _b : null;
1005
1056
  },
1006
1057
  validate() {
1007
1058
  var _a, _b;
1008
- return (_b = (_a = this.getStep()) == null ? void 0 : _a.validate()) != null ? _b : false;
1059
+ return (_b = (_a = component.getStep()) == null ? void 0 : _a.validate()) != null ? _b : false;
1009
1060
  },
1010
1061
  setLoadingState(loadingState) {
1011
1062
  var _a;
1012
- (_a = this.getStep()) == null ? void 0 : _a.setLoadingState(loadingState);
1063
+ (_a = component.getStep()) == null ? void 0 : _a.setLoadingState(loadingState);
1013
1064
  },
1014
1065
  getLoadingState() {
1015
1066
  var _a, _b;
1016
- return (_b = (_a = this.getStep()) == null ? void 0 : _a.loadingState) != null ? _b : "initial";
1067
+ return (_b = (_a = component.getStep()) == null ? void 0 : _a.loadingState) != null ? _b : "initial";
1017
1068
  },
1018
1069
  getSchemaComponents() {
1019
1070
  var _a, _b;
1020
- return (_b = (_a = this.getStep()) == null ? void 0 : _a.schemaComponents) != null ? _b : [];
1071
+ return (_b = (_a = component.getStep()) == null ? void 0 : _a.schemaComponents) != null ? _b : [];
1021
1072
  },
1022
1073
  getTrackEvent() {
1023
1074
  var _a, _b;
1024
- return (_b = (_a = this.getStep()) == null ? void 0 : _a.trackEvent) != null ? _b : null;
1075
+ return (_b = (_a = component.getStep()) == null ? void 0 : _a.trackEvent) != null ? _b : null;
1025
1076
  },
1026
1077
  isBusy() {
1027
- const loadingState = this.getLoadingState();
1078
+ const loadingState = component.getLoadingState();
1028
1079
  return loadingState === "submitting" || loadingState === "refreshing";
1029
1080
  },
1030
1081
  hasStep() {
1031
- return Boolean(this.stepStack.length > 0);
1082
+ return Boolean(component.stepStack.length > 0);
1032
1083
  },
1033
1084
  getStep() {
1034
1085
  var _a;
1035
- return (_a = this.stepStack[this.stepStack.length - 1]) != null ? _a : null;
1086
+ return (_a = component.stepStack[component.stepStack.length - 1]) != null ? _a : null;
1036
1087
  },
1037
1088
  addSubflow(subflow) {
1038
1089
  var _a;
1039
- (_a = this.getStep()) == null ? void 0 : _a.addSubflow(subflow);
1090
+ (_a = component.getStep()) == null ? void 0 : _a.addSubflow(subflow);
1040
1091
  },
1041
1092
  closeSubflow() {
1042
1093
  var _a;
1043
- (_a = this.getStep()) == null ? void 0 : _a.closeSubflow();
1094
+ (_a = component.getStep()) == null ? void 0 : _a.closeSubflow();
1044
1095
  },
1045
1096
  getSubflow() {
1046
1097
  var _a, _b;
1047
- return (_b = (_a = this.getStep()) == null ? void 0 : _a.subflow) != null ? _b : null;
1098
+ return (_b = (_a = component.getStep()) == null ? void 0 : _a.subflow) != null ? _b : null;
1048
1099
  },
1049
1100
  start() {
1050
1101
  var _a;
1051
- (_a = this.getStep()) == null ? void 0 : _a.start();
1102
+ (_a = component.getStep()) == null ? void 0 : _a.start();
1052
1103
  },
1053
1104
  stop() {
1054
1105
  var _a;
1055
- (_a = this.getStep()) == null ? void 0 : _a.stop();
1106
+ (_a = component.getStep()) == null ? void 0 : _a.stop();
1056
1107
  },
1057
1108
  updateStep(stepComponent) {
1058
1109
  var _a;
1059
- this.closeSubflow();
1060
- const shouldScroll = shouldScrollOnStepUpdate(stepComponent, this.getStep());
1061
- this._update((draft) => {
1110
+ component.closeSubflow();
1111
+ const shouldScroll = shouldScrollOnStepUpdate(stepComponent, component.getStep());
1112
+ update(component, (draft) => {
1062
1113
  draft.stepStack = draft.stepStack.slice(0, -1);
1063
1114
  draft.stepStack.push(stepComponent);
1064
1115
  });
1065
1116
  if (shouldScroll) {
1066
1117
  scrollToTop == null ? void 0 : scrollToTop("smooth");
1067
1118
  }
1068
- (_a = this.getStep()) == null ? void 0 : _a.start();
1119
+ (_a = component.getStep()) == null ? void 0 : _a.start();
1069
1120
  },
1070
1121
  pushStep(stepComponent) {
1071
1122
  var _a;
1072
- this.closeSubflow();
1073
- const previousStep = this.getStep();
1123
+ component.closeSubflow();
1124
+ const previousStep = component.getStep();
1074
1125
  const previousStepHasPolling = previousStep == null ? void 0 : previousStep.step.polling;
1075
- this._update((draft) => {
1126
+ update(component, (draft) => {
1076
1127
  switch (stepComponent.stackBehavior) {
1077
1128
  case "remove-previous":
1078
1129
  case "replace-current":
@@ -1089,41 +1140,41 @@ var createRootDomainComponent = (onComponentUpdate, scrollToTop, backConfig, req
1089
1140
  }
1090
1141
  });
1091
1142
  if (previousStep != null) {
1092
- (_a = this.getStep()) == null ? void 0 : _a.start();
1143
+ (_a = component.getStep()) == null ? void 0 : _a.start();
1093
1144
  scrollToTop == null ? void 0 : scrollToTop("instant");
1094
1145
  }
1095
1146
  },
1096
1147
  clearStack() {
1097
- const currentStep = this.getStep();
1148
+ const currentStep = component.getStep();
1098
1149
  if (currentStep) {
1099
- this._update((draft) => {
1150
+ update(component, (draft) => {
1100
1151
  draft.stepStack = [currentStep];
1101
1152
  });
1102
1153
  }
1103
1154
  },
1104
1155
  getRefreshUrl() {
1105
1156
  var _a, _b, _c, _d;
1106
- return (_d = (_c = (_a = this.getStep()) == null ? void 0 : _a.step.refreshUrl) != null ? _c : (_b = this.getStep()) == null ? void 0 : _b.step.refreshFormUrl) != null ? _d : null;
1157
+ return (_d = (_c = (_a = component.getStep()) == null ? void 0 : _a.step.refreshUrl) != null ? _c : (_b = component.getStep()) == null ? void 0 : _b.step.refreshFormUrl) != null ? _d : null;
1107
1158
  },
1108
1159
  navigateBack() {
1109
1160
  var _a;
1110
- this.closeSubflow();
1111
- if (this.stepStack.length === 1) {
1161
+ component.closeSubflow();
1162
+ if (component.stepStack.length === 1) {
1112
1163
  return;
1113
1164
  }
1114
- this._update((draft) => {
1165
+ update(component, (draft) => {
1115
1166
  draft.stepStack = draft.stepStack.slice(0, -1);
1116
1167
  });
1117
- (_a = this.getStep()) == null ? void 0 : _a.start();
1168
+ (_a = component.getStep()) == null ? void 0 : _a.start();
1118
1169
  },
1119
1170
  canPerformBack() {
1120
1171
  var _a, _b;
1121
- const navigation = (_a = this.getStep()) == null ? void 0 : _a.step.navigation;
1172
+ const navigation = (_a = component.getStep()) == null ? void 0 : _a.step.navigation;
1122
1173
  const stepHasBehavior = Boolean((_b = navigation == null ? void 0 : navigation.back) != null ? _b : navigation == null ? void 0 : navigation.backButton);
1123
- return this.backConfig.isFlowCancellable || this.stepStack.length > 1 && this.backConfig.isNativeBackEnabled || stepHasBehavior;
1174
+ return component.backConfig.isFlowCancellable || component.stepStack.length > 1 && component.backConfig.isNativeBackEnabled || stepHasBehavior;
1124
1175
  }
1125
1176
  };
1126
- return rootComponent;
1177
+ return component;
1127
1178
  };
1128
1179
  var shouldScrollOnStepUpdate = (newStep, currentStep) => {
1129
1180
  if (!currentStep) {
@@ -1132,6 +1183,15 @@ var shouldScrollOnStepUpdate = (newStep, currentStep) => {
1132
1183
  return newStep.error != null && newStep.error !== currentStep.error;
1133
1184
  };
1134
1185
 
1186
+ // src/domain/features/events.ts
1187
+ var trackBehaviorTriggered = (trackEvent, behavior) => {
1188
+ if (behavior.track) {
1189
+ trackEvent("Behavior Triggered", __spreadProps(__spreadValues({}, behavior.analytics), {
1190
+ behaviorType: behavior.type
1191
+ }));
1192
+ }
1193
+ };
1194
+
1135
1195
  // src/domain/features/prefetch/request-cache.ts
1136
1196
  var makeRequestCacheWithParent = (parent) => {
1137
1197
  const map = /* @__PURE__ */ new Map();
@@ -1182,36 +1242,33 @@ var makeRequestCacheKey = (requestParams) => {
1182
1242
  };
1183
1243
 
1184
1244
  // src/domain/components/ModalComponent.ts
1185
- var createModalContentComponent = (modalProps, onComponentUpdate) => {
1245
+ var createModalContentComponent = (props, onComponentUpdate) => {
1186
1246
  const update = getInputUpdateFunction(onComponentUpdate);
1187
- const modalContentComponent = __spreadProps(__spreadValues({
1247
+ const component = __spreadProps(__spreadValues({
1188
1248
  type: "modal",
1189
1249
  kind: "layout",
1190
1250
  open: true
1191
- }, modalProps), {
1192
- _update(updateFn) {
1193
- update(this, updateFn);
1194
- },
1251
+ }, props), {
1195
1252
  getChildren() {
1196
- return this.components;
1253
+ return component.components;
1197
1254
  },
1198
1255
  close() {
1199
- update(this, (draft) => {
1256
+ update(component, (draft) => {
1200
1257
  draft.open = false;
1201
1258
  });
1202
1259
  }
1203
1260
  });
1204
- return modalContentComponent;
1261
+ return component;
1205
1262
  };
1206
1263
 
1207
1264
  // src/domain/components/utils/getRandomId.ts
1208
1265
  var getRandomId = () => Math.random().toString(36).substring(2);
1209
1266
 
1210
1267
  // src/domain/components/AlertComponent.ts
1211
- var createAlertComponent = (alertProps) => __spreadValues({
1268
+ var createAlertComponent = (props) => __spreadValues({
1212
1269
  type: "alert",
1213
1270
  kind: "layout"
1214
- }, alertProps);
1271
+ }, props);
1215
1272
 
1216
1273
  // src/domain/mappers/utils/behavior-utils.ts
1217
1274
  var getDomainLayerBehavior = ({ action, behavior: specBehavior }, stepActions, registerSubmissionBehavior) => {
@@ -1225,29 +1282,31 @@ var getDomainLayerBehavior = ({ action, behavior: specBehavior }, stepActions, r
1225
1282
  registerSubmissionBehavior == null ? void 0 : registerSubmissionBehavior(behavior);
1226
1283
  return behavior;
1227
1284
  }
1228
- return { type: "none" };
1285
+ return { type: "none", track: false };
1229
1286
  };
1230
1287
  var normaliseBehavior = (behavior, stepActions) => {
1231
1288
  if ("type" in behavior) {
1232
1289
  if (behavior.type === "subflow") {
1233
1290
  return __spreadProps(__spreadValues({}, behavior), {
1291
+ track: true,
1234
1292
  onCompletion: behavior.onCompletion ? normaliseBehavior(behavior.onCompletion, stepActions) : void 0,
1235
1293
  onError: behavior.onError ? normaliseBehavior(behavior.onError, stepActions) : void 0
1236
1294
  });
1237
1295
  }
1238
- return behavior;
1296
+ return __spreadProps(__spreadValues({}, behavior), { track: true });
1239
1297
  }
1240
1298
  if ("action" in behavior && behavior.action) {
1241
1299
  return actionToBehavior(behavior.action, stepActions);
1242
1300
  }
1243
1301
  if ("link" in behavior && behavior.link) {
1244
- return { type: "link", url: behavior.link.url };
1302
+ return { type: "link", url: behavior.link.url, track: true };
1245
1303
  }
1246
- return { type: "none" };
1304
+ return { type: "none", track: false };
1247
1305
  };
1248
1306
  var actionToBehavior = (action, stepActions) => ({
1249
1307
  type: "action",
1250
- action: inlineAction(action, stepActions)
1308
+ action: inlineAction(action, stepActions),
1309
+ track: false
1251
1310
  });
1252
1311
  var inlineAction = (action, stepActions = []) => action.$ref ? __spreadValues(__spreadValues({}, getActionByReference(action.$ref, stepActions)), action) : action;
1253
1312
  var getActionByReference = ($ref, actions = []) => {
@@ -1258,6 +1317,30 @@ var getActionByReference = ($ref, actions = []) => {
1258
1317
  return action;
1259
1318
  };
1260
1319
 
1320
+ // src/domain/mappers/utils/getHrefWithTracking.ts
1321
+ var getHrefWithTracking = ({
1322
+ behavior,
1323
+ onBehavior,
1324
+ trackEvent
1325
+ }) => {
1326
+ if (behavior.type === "link" && behavior.url) {
1327
+ return () => ({
1328
+ href: behavior.url,
1329
+ target: "_blank",
1330
+ onClick: () => {
1331
+ trackEvent("Behavior Triggered", __spreadProps(__spreadValues({}, behavior.analytics), {
1332
+ behaviorType: behavior.type
1333
+ }));
1334
+ }
1335
+ });
1336
+ }
1337
+ return () => ({
1338
+ onClick: () => {
1339
+ void onBehavior(behavior);
1340
+ }
1341
+ });
1342
+ };
1343
+
1261
1344
  // src/domain/mappers/utils/legacy-utils.ts
1262
1345
  var mapLegacyContext = (context) => {
1263
1346
  switch (context) {
@@ -1315,15 +1398,17 @@ function getDomainLayerCallToAction(cta, mapperProps) {
1315
1398
  if (!cta) {
1316
1399
  return void 0;
1317
1400
  }
1318
- const { step, onBehavior, registerSubmissionBehavior } = mapperProps;
1401
+ const { step, onBehavior, trackEvent, registerSubmissionBehavior } = mapperProps;
1319
1402
  const stepActions = (_a = step.actions) != null ? _a : [];
1320
1403
  const behavior = getDomainLayerBehavior(cta, stepActions, registerSubmissionBehavior);
1404
+ const isLink = behavior.type === "link";
1321
1405
  return {
1322
1406
  type: behavior.type,
1323
1407
  title: (_b = cta.title) != null ? _b : "",
1324
1408
  context: cta.context ? mapLegacyContext(cta.context) : void 0,
1325
1409
  accessibilityDescription: cta.accessibilityDescription,
1326
- href: behavior.type === "link" ? behavior.url : void 0,
1410
+ href: isLink ? behavior.url : void 0,
1411
+ hrefWithTracking: getHrefWithTracking({ behavior, onBehavior, trackEvent }),
1327
1412
  onClick: () => {
1328
1413
  void onBehavior(behavior);
1329
1414
  }
@@ -1354,11 +1439,11 @@ var alertLayoutToComponent = (uid, {
1354
1439
  };
1355
1440
 
1356
1441
  // src/domain/components/BoxComponent.ts
1357
- var createBoxComponent = (boxProps) => __spreadProps(__spreadValues({}, boxProps), {
1442
+ var createBoxComponent = (props) => __spreadProps(__spreadValues({}, props), {
1358
1443
  type: "box",
1359
1444
  kind: "layout",
1360
1445
  getChildren() {
1361
- return this.components;
1446
+ return props.components;
1362
1447
  }
1363
1448
  });
1364
1449
 
@@ -1385,10 +1470,10 @@ var boxLayoutToComponent = (uid, { border = false, components, control, margin,
1385
1470
  });
1386
1471
 
1387
1472
  // src/domain/components/ButtonComponent.ts
1388
- var createButtonComponent = (buttonProps) => __spreadValues({
1473
+ var createButtonComponent = (props) => __spreadValues({
1389
1474
  type: "button",
1390
1475
  kind: "layout"
1391
- }, buttonProps);
1476
+ }, props);
1392
1477
 
1393
1478
  // src/domain/mappers/utils/image.ts
1394
1479
  var mapSpecImage = (image) => {
@@ -1472,7 +1557,7 @@ var buttonLayoutToComponentWithAction = (uid, button, mapperProps) => {
1472
1557
  const { action } = button;
1473
1558
  const inlinedAction = action ? inlineAction(action, step == null ? void 0 : step.actions) : {};
1474
1559
  const onClick = () => {
1475
- void onBehavior({ type: "action", action: inlinedAction });
1560
+ void onBehavior({ type: "action", action: inlinedAction, track: false });
1476
1561
  };
1477
1562
  return createButtonComponent({
1478
1563
  uid,
@@ -1514,11 +1599,11 @@ var getButtonContext = ({ context, action }) => {
1514
1599
  };
1515
1600
 
1516
1601
  // src/domain/components/ColumnsComponent.ts
1517
- var createColumnsComponent = (columnsProps) => __spreadProps(__spreadValues({}, columnsProps), {
1602
+ var createColumnsComponent = (props) => __spreadProps(__spreadValues({}, props), {
1518
1603
  type: "columns",
1519
1604
  kind: "layout",
1520
1605
  getChildren() {
1521
- return [...this.startComponents, ...this.endComponents];
1606
+ return [...props.startComponents, ...props.endComponents];
1522
1607
  }
1523
1608
  });
1524
1609
 
@@ -1544,10 +1629,10 @@ var columnsLayoutToComponent = (uid, { control, left, right, bias, margin, analy
1544
1629
  });
1545
1630
 
1546
1631
  // src/domain/components/DecisionComponent.ts
1547
- var createDecisionComponent = (decisionProps) => __spreadValues({
1632
+ var createDecisionComponent = (props) => __spreadValues({
1548
1633
  type: "decision",
1549
1634
  kind: "layout"
1550
- }, decisionProps);
1635
+ }, props);
1551
1636
 
1552
1637
  // src/domain/mappers/utils/tags-utils.ts
1553
1638
  var mapTags = ({ tag, tags }) => tags != null ? tags : tag != null ? [tag] : void 0;
@@ -1560,12 +1645,18 @@ var mapInlineAlert = (alert) => {
1560
1645
  } : void 0;
1561
1646
  };
1562
1647
  var mapAdditionalInfo = (info, mapperProps) => {
1563
- const { onBehavior, registerSubmissionBehavior } = mapperProps;
1648
+ const { onBehavior, trackEvent, registerSubmissionBehavior } = mapperProps;
1564
1649
  if (info) {
1565
1650
  const behavior = getDomainLayerBehavior(info, [], registerSubmissionBehavior);
1651
+ const isLink = behavior.type === "link";
1566
1652
  return {
1567
1653
  text: info.text,
1568
- href: behavior.type === "link" ? behavior.url : void 0,
1654
+ href: isLink ? behavior.url : void 0,
1655
+ hrefWithTracking: getHrefWithTracking({
1656
+ behavior,
1657
+ onBehavior,
1658
+ trackEvent
1659
+ }),
1569
1660
  accessibilityDescription: info.accessibilityDescription,
1570
1661
  onClick: behavior.type === "none" ? void 0 : () => {
1571
1662
  void onBehavior(behavior);
@@ -1600,14 +1691,16 @@ var decisionLayoutToComponent = (uid, {
1600
1691
  });
1601
1692
  var mapOption = (option, mapperProps) => {
1602
1693
  var _a, _b;
1603
- const { step, onBehavior, registerSubmissionBehavior } = mapperProps;
1694
+ const { step, onBehavior, trackEvent, registerSubmissionBehavior } = mapperProps;
1604
1695
  const behavior = getDomainLayerBehavior(option, (_a = step.actions) != null ? _a : [], registerSubmissionBehavior);
1696
+ const isLink = behavior.type === "link";
1605
1697
  return __spreadProps(__spreadValues({}, option), {
1606
1698
  disabled: (_b = option.disabled) != null ? _b : false,
1607
- href: behavior.type === "link" ? behavior.url : void 0,
1699
+ href: isLink ? behavior.url : void 0,
1608
1700
  media: getDomainLayerMedia(option),
1609
1701
  inlineAlert: mapInlineAlert(option.inlineAlert),
1610
1702
  tags: mapTags(option),
1703
+ hrefWithTracking: getHrefWithTracking({ behavior, onBehavior, trackEvent }),
1611
1704
  onClick: () => {
1612
1705
  void onBehavior(behavior);
1613
1706
  }
@@ -1615,10 +1708,10 @@ var mapOption = (option, mapperProps) => {
1615
1708
  };
1616
1709
 
1617
1710
  // src/domain/components/StatusListComponent.ts
1618
- var createStatusListComponent = (statusListProps) => __spreadValues({
1711
+ var createStatusListComponent = (props) => __spreadValues({
1619
1712
  type: "status-list",
1620
1713
  kind: "layout"
1621
- }, statusListProps);
1714
+ }, props);
1622
1715
 
1623
1716
  // src/domain/mappers/layout/deprecatedListLayoutToComponent.ts
1624
1717
  var isDeprecatedListLayout = (layout) => {
@@ -1661,11 +1754,11 @@ var createDividerComponent = (props) => __spreadValues({
1661
1754
  var dividerLayoutToComponent = (uid, { control, margin, analyticsId, tags }) => createDividerComponent({ uid, analyticsId, control, margin: margin != null ? margin : "md", tags });
1662
1755
 
1663
1756
  // src/domain/components/FormComponent.ts
1664
- var createFormComponent = (formProps) => __spreadProps(__spreadValues({}, formProps), {
1757
+ var createFormComponent = (props) => __spreadProps(__spreadValues({}, props), {
1665
1758
  type: "form",
1666
1759
  kind: "layout",
1667
1760
  getChildren() {
1668
- return [this.schemaComponent];
1761
+ return [props.schemaComponent];
1669
1762
  }
1670
1763
  });
1671
1764
 
@@ -1694,10 +1787,10 @@ var formLayoutToComponent = (uid, { analyticsId, schemaId, schema: schemaRef, co
1694
1787
  };
1695
1788
 
1696
1789
  // src/domain/components/HeadingComponent.ts
1697
- var createHeadingComponent = (headingProps) => __spreadValues({
1790
+ var createHeadingComponent = (props) => __spreadValues({
1698
1791
  type: "heading",
1699
1792
  kind: "layout"
1700
- }, headingProps);
1793
+ }, props);
1701
1794
 
1702
1795
  // src/domain/mappers/layout/headingLayoutToComponent.ts
1703
1796
  var headingLayoutToComponent = (uid, { analyticsId, align, margin, size, control, tags, text }) => createHeadingComponent({
@@ -1712,10 +1805,10 @@ var headingLayoutToComponent = (uid, { analyticsId, align, margin, size, control
1712
1805
  });
1713
1806
 
1714
1807
  // src/domain/components/ImageComponent.ts
1715
- var createImageComponent = (imageProps) => __spreadValues({
1808
+ var createImageComponent = (props) => __spreadValues({
1716
1809
  type: "image",
1717
1810
  kind: "layout"
1718
- }, imageProps);
1811
+ }, props);
1719
1812
 
1720
1813
  // src/domain/mappers/layout/imageLayoutToComponent.ts
1721
1814
  var imageLayoutToComponent = (uid, {
@@ -1747,10 +1840,10 @@ var imageLayoutToComponent = (uid, {
1747
1840
  };
1748
1841
 
1749
1842
  // src/domain/components/MarkdownComponent.ts
1750
- var createMarkdownComponent = (markdownProps) => __spreadValues({
1843
+ var createMarkdownComponent = (props) => __spreadValues({
1751
1844
  type: "markdown",
1752
1845
  kind: "layout"
1753
- }, markdownProps);
1846
+ }, props);
1754
1847
 
1755
1848
  // src/domain/mappers/layout/infoLayoutToComponent.ts
1756
1849
  var infoLayoutToComponent = (uid, { analyticsId, align, control, margin, markdown: content, tags }) => createMarkdownComponent({
@@ -1765,10 +1858,10 @@ var infoLayoutToComponent = (uid, { analyticsId, align, control, margin, markdow
1765
1858
  });
1766
1859
 
1767
1860
  // src/domain/components/InstructionsComponent.ts
1768
- var createInstructionsComponent = (instructionsProps) => __spreadValues({
1861
+ var createInstructionsComponent = (props) => __spreadValues({
1769
1862
  type: "instructions",
1770
1863
  kind: "layout"
1771
- }, instructionsProps);
1864
+ }, props);
1772
1865
 
1773
1866
  // src/domain/mappers/layout/instructionsLayoutToComponent.ts
1774
1867
  var instructionsLayoutToComponent = (uid, { analyticsId, control, items, margin, tags, title }) => createInstructionsComponent({
@@ -1785,10 +1878,10 @@ var instructionsLayoutToComponent = (uid, { analyticsId, control, items, margin,
1785
1878
  });
1786
1879
 
1787
1880
  // src/domain/components/ListComponent.ts
1788
- var createListComponent = (listProps) => __spreadValues({
1881
+ var createListComponent = (props) => __spreadValues({
1789
1882
  type: "list",
1790
1883
  kind: "layout"
1791
- }, listProps);
1884
+ }, props);
1792
1885
 
1793
1886
  // src/domain/mappers/layout/listLayoutToComponent.ts
1794
1887
  var listLayoutToComponent = (uid, { analyticsId, callToAction, control, items, margin, tags, title }, mapperProps) => {
@@ -1846,10 +1939,10 @@ var mapSupportingValues = (item) => {
1846
1939
  };
1847
1940
 
1848
1941
  // src/domain/components/LoadingIndicatorComponent.ts
1849
- var createLoadingIndicatorComponent = (loadingIndicatorProps) => __spreadValues({
1942
+ var createLoadingIndicatorComponent = (props) => __spreadValues({
1850
1943
  type: "loading-indicator",
1851
1944
  kind: "layout"
1852
- }, loadingIndicatorProps);
1945
+ }, props);
1853
1946
 
1854
1947
  // src/domain/mappers/layout/loadingIndicatorLayoutToComponent.ts
1855
1948
  var loadingIndicatorLayoutToComponent = (uid, { analyticsId, control, margin, size, tags }) => createLoadingIndicatorComponent({
@@ -1900,12 +1993,12 @@ var mediaLayoutToComponent = (uid, { analyticsId, align, control, margin, media,
1900
1993
  });
1901
1994
 
1902
1995
  // src/domain/components/ModalLayoutComponent.ts
1903
- var createModalComponent = (modalProps) => __spreadProps(__spreadValues({
1996
+ var createModalComponent = (props) => __spreadProps(__spreadValues({
1904
1997
  type: "modal-layout",
1905
1998
  kind: "layout"
1906
- }, modalProps), {
1999
+ }, props), {
1907
2000
  getChildren() {
1908
- return this.content.components;
2001
+ return props.content.components;
1909
2002
  }
1910
2003
  });
1911
2004
 
@@ -1929,10 +2022,10 @@ var modalLayoutToComponent = (uid, { analyticsId, content, control, margin, tags
1929
2022
  };
1930
2023
 
1931
2024
  // src/domain/components/ParagraphComponent.ts
1932
- var createParagraphComponent = (paragraphProps) => __spreadValues({
2025
+ var createParagraphComponent = (props) => __spreadValues({
1933
2026
  type: "paragraph",
1934
2027
  kind: "layout"
1935
- }, paragraphProps);
2028
+ }, props);
1936
2029
 
1937
2030
  // src/domain/mappers/layout/paragraphLayoutToComponent.ts
1938
2031
  var paragraphLayoutToComponent = (uid, { analyticsId, align, control, margin, size, tags, text }) => createParagraphComponent({
@@ -1947,10 +2040,10 @@ var paragraphLayoutToComponent = (uid, { analyticsId, align, control, margin, si
1947
2040
  });
1948
2041
 
1949
2042
  // src/domain/components/ProgressComponent.ts
1950
- var createProgressComponent = (progressProps) => __spreadValues({
2043
+ var createProgressComponent = (props) => __spreadValues({
1951
2044
  type: "progress",
1952
2045
  kind: "layout"
1953
- }, progressProps);
2046
+ }, props);
1954
2047
 
1955
2048
  // src/domain/mappers/layout/progressLayoutToComponent.ts
1956
2049
  var progressLayoutToComponent = (uid, {
@@ -1979,10 +2072,10 @@ var progressLayoutToComponent = (uid, {
1979
2072
  });
1980
2073
 
1981
2074
  // src/domain/components/ReviewComponent.ts
1982
- var createReviewComponent = (reviewProps) => __spreadValues({
2075
+ var createReviewComponent = (props) => __spreadValues({
1983
2076
  type: "review",
1984
2077
  kind: "layout"
1985
- }, reviewProps);
2078
+ }, props);
1986
2079
 
1987
2080
  // src/domain/mappers/layout/reviewLayoutToComponent.ts
1988
2081
  var reviewLayoutToComponent = (uid, {
@@ -2014,12 +2107,15 @@ var getCallToAction = ({
2014
2107
  return getDomainLayerCallToAction(callToAction, mapperProps);
2015
2108
  }
2016
2109
  if (action == null ? void 0 : action.title) {
2110
+ const behavior = { type: "action", action, track: true };
2111
+ const { onBehavior, trackEvent } = mapperProps;
2017
2112
  return {
2018
2113
  type: "action",
2019
2114
  title: action.title,
2020
2115
  onClick: () => {
2021
- void mapperProps.onBehavior({ type: "action", action });
2022
- }
2116
+ void onBehavior(behavior);
2117
+ },
2118
+ hrefWithTracking: getHrefWithTracking({ behavior, onBehavior, trackEvent })
2023
2119
  };
2024
2120
  }
2025
2121
  return void 0;
@@ -2089,8 +2185,8 @@ var debounce = (callback, waitMs) => {
2089
2185
 
2090
2186
  // src/domain/components/searchComponent/SearchComponent.ts
2091
2187
  var DEBOUNCE_TIME = 400;
2092
- var createSearchComponent = (searchProps, performSearch, onBehavior, onComponentUpdate) => {
2093
- const { uid, analyticsId, control, emptyMessage, initialState, hint, margin, tags, title } = searchProps;
2188
+ var createSearchComponent = (props, performSearch, onBehavior, onComponentUpdate) => {
2189
+ const { uid, analyticsId, control, emptyMessage, initialState, hint, margin, tags, title } = props;
2094
2190
  const update = getInputUpdateFunction(onComponentUpdate);
2095
2191
  let abortController = new AbortController();
2096
2192
  const search = (component2, query, searchConfig) => {
@@ -2134,16 +2230,13 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
2134
2230
  title,
2135
2231
  isLoading: false,
2136
2232
  query: "",
2137
- _update(updateFn) {
2138
- update(this, updateFn);
2139
- },
2140
- onChange(query) {
2233
+ setQuery(query) {
2141
2234
  if (query.trim()) {
2142
- this._update((draft) => {
2235
+ update(component, (draft) => {
2143
2236
  draft.query = query;
2144
2237
  draft.isLoading = true;
2145
2238
  });
2146
- debouncedSearch(this, query.trim());
2239
+ debouncedSearch(component, query.trim());
2147
2240
  } else {
2148
2241
  abortController.abort();
2149
2242
  debouncedSearch.cancel();
@@ -2155,15 +2248,15 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
2155
2248
  });
2156
2249
  }
2157
2250
  },
2158
- onSelect({ type, value }) {
2251
+ selectResult({ type, value }) {
2159
2252
  if (type === "action") {
2160
- void onBehavior({ type: "action", action: value });
2253
+ void onBehavior({ type: "action", action: value, track: false });
2161
2254
  } else {
2162
- this._update((draft) => {
2255
+ update(component, (draft) => {
2163
2256
  draft.query = value.query;
2164
2257
  draft.isLoading = true;
2165
2258
  });
2166
- search(this, value.query, {
2259
+ search(component, value.query, {
2167
2260
  method: value.method,
2168
2261
  param: value.param,
2169
2262
  url: value.url
@@ -2314,15 +2407,13 @@ var emptyInitialState = {
2314
2407
  };
2315
2408
 
2316
2409
  // src/domain/components/SectionComponent.ts
2317
- var createSectionComponent = (props) => {
2318
- return __spreadProps(__spreadValues({}, props), {
2319
- type: "section",
2320
- kind: "layout",
2321
- getChildren() {
2322
- return this.components;
2323
- }
2324
- });
2325
- };
2410
+ var createSectionComponent = (props) => __spreadProps(__spreadValues({}, props), {
2411
+ type: "section",
2412
+ kind: "layout",
2413
+ getChildren() {
2414
+ return props.components;
2415
+ }
2416
+ });
2326
2417
 
2327
2418
  // src/domain/mappers/layout/sectionLayoutToComponent.ts
2328
2419
  var sectionLayoutToComponent = (uid, { analyticsId, control, title, components, callToAction, margin, tags }, mapperProps, schemaComponents) => {
@@ -2355,7 +2446,7 @@ var statusListLayoutToComponent = (uid, { analyticsId, control, items, margin, t
2355
2446
  });
2356
2447
 
2357
2448
  // src/domain/components/TabsComponent.ts
2358
- var createTabsComponent = (tabsProps) => __spreadProps(__spreadValues({}, tabsProps), {
2449
+ var createTabsComponent = (props) => __spreadProps(__spreadValues({}, props), {
2359
2450
  type: "tabs",
2360
2451
  kind: "layout"
2361
2452
  });
@@ -2383,19 +2474,19 @@ var mapTabs = (tabs, uid, mapperProps, schemaComponents) => tabs.map(({ componen
2383
2474
  }));
2384
2475
 
2385
2476
  // src/domain/components/UpsellComponent.ts
2386
- var createUpsellComponent = (upsellProps, onComponentUpdate) => {
2477
+ var createUpsellComponent = (props, onComponentUpdate) => {
2387
2478
  const update = getInputUpdateFunction(onComponentUpdate);
2388
- const _a = upsellProps, { onDismiss: propsOnDismiss } = _a, restProps = __objRest(_a, ["onDismiss"]);
2479
+ const _a = props, { dismiss } = _a, restProps = __objRest(_a, ["dismiss"]);
2389
2480
  const component = __spreadProps(__spreadValues({
2390
2481
  type: "upsell",
2391
2482
  kind: "layout"
2392
2483
  }, restProps), {
2393
2484
  visible: true,
2394
- onDismiss: propsOnDismiss ? () => {
2485
+ dismiss: dismiss ? () => {
2395
2486
  update(component, (draft) => {
2396
2487
  draft.visible = false;
2397
2488
  });
2398
- propsOnDismiss();
2489
+ dismiss();
2399
2490
  } : void 0
2400
2491
  });
2401
2492
  return component;
@@ -2414,7 +2505,7 @@ var upsellLayoutToComponent = (uid, { analyticsId, callToAction, control, margin
2414
2505
  media: getDomainLayerMedia({ media }),
2415
2506
  tags,
2416
2507
  text,
2417
- onDismiss: onDismiss ? () => {
2508
+ dismiss: onDismiss ? () => {
2418
2509
  const { url, method } = onDismiss;
2419
2510
  const body = method === "GET" ? void 0 : JSON.stringify(onDismiss.body);
2420
2511
  void mapperProps.httpClient(url, { method, body }).catch(() => {
@@ -2496,26 +2587,27 @@ var modalToComponent = (uid, { content, title }, mapperProps, schemaComponents)
2496
2587
  // src/domain/components/step/ExternalConfirmationComponent.ts
2497
2588
  var createExternalConfirmation = (uid, url, onLink, onComponentUpdate) => {
2498
2589
  const update = getInputUpdateFunction(onComponentUpdate);
2499
- return {
2590
+ const component = {
2500
2591
  type: "external-confirmation",
2501
2592
  kind: "layout",
2502
2593
  uid,
2503
2594
  url,
2504
2595
  status: "initial",
2505
2596
  open() {
2506
- if (this.status === "initial" || this.status === "failure") {
2507
- const success = onLink(this.url);
2508
- update(this, (draft) => {
2597
+ if (component.status === "initial" || component.status === "failure") {
2598
+ const success = onLink(component.url);
2599
+ update(component, (draft) => {
2509
2600
  draft.status = success ? "success" : "failure";
2510
2601
  });
2511
2602
  }
2512
2603
  },
2513
2604
  onCancel() {
2514
- update(this, (draft) => {
2605
+ update(component, (draft) => {
2515
2606
  draft.status = "dismissed";
2516
2607
  });
2517
2608
  }
2518
2609
  };
2610
+ return component;
2519
2611
  };
2520
2612
 
2521
2613
  // src/utils/recursiveMerge.ts
@@ -2565,91 +2657,128 @@ var getSubmittableDataSync = (components) => components.map((component) => compo
2565
2657
  var getLocalValues = (components) => components.map((component) => component.getLocalValue()).reduce((acc, value) => recursiveMerge(acc, value), null);
2566
2658
 
2567
2659
  // src/domain/components/step/StepDomainComponent.ts
2568
- var createStepComponent = (stepProps) => {
2569
- const _a = stepProps, { uid, stepPolling, stepRefreshAfter, stepPrefetch, onComponentUpdate } = _a, rest = __objRest(_a, ["uid", "stepPolling", "stepRefreshAfter", "stepPrefetch", "onComponentUpdate"]);
2660
+ var createStepComponent = (props) => {
2661
+ const _a = props, {
2662
+ uid,
2663
+ stepPolling,
2664
+ stepRefreshAfter,
2665
+ stepPrefetch,
2666
+ features,
2667
+ logEvent,
2668
+ onComponentUpdate,
2669
+ onLoad
2670
+ } = _a, rest = __objRest(_a, [
2671
+ "uid",
2672
+ "stepPolling",
2673
+ "stepRefreshAfter",
2674
+ "stepPrefetch",
2675
+ "features",
2676
+ "logEvent",
2677
+ "onComponentUpdate",
2678
+ "onLoad"
2679
+ ]);
2570
2680
  const update = getInputUpdateFunction(onComponentUpdate);
2571
2681
  const component = __spreadProps(__spreadValues({
2572
2682
  uid
2573
2683
  }, rest), {
2574
2684
  type: "step",
2575
2685
  kind: "step",
2686
+ state: "initial",
2576
2687
  modals: [],
2577
2688
  requestCache: stepPrefetch.requestCache,
2578
2689
  subflow: null,
2579
2690
  dismissModal() {
2580
2691
  var _a2;
2581
- (_a2 = this.modals.at(-1)) == null ? void 0 : _a2.close();
2692
+ (_a2 = component.modals.at(-1)) == null ? void 0 : _a2.close();
2582
2693
  },
2583
2694
  dismissAllModals() {
2584
- this._update((draft) => {
2695
+ update(component, (draft) => {
2585
2696
  draft.modals = draft.modals.map((m) => __spreadProps(__spreadValues({}, m), { open: false }));
2586
2697
  });
2587
2698
  },
2588
2699
  showModal(modal) {
2589
- this._update((draft) => {
2700
+ update(component, (draft) => {
2590
2701
  draft.modals = [...draft.modals, modal];
2591
2702
  });
2592
2703
  },
2593
- _update(updateFn) {
2594
- update(this, updateFn);
2595
- },
2596
2704
  getChildren() {
2597
- return this.externalConfirmation ? [...this.layoutComponents, this.externalConfirmation] : this.layoutComponents;
2705
+ return component.externalConfirmation ? [...component.layoutComponents, component.externalConfirmation] : component.layoutComponents;
2598
2706
  },
2599
2707
  getModals() {
2600
- return this.modals;
2708
+ return component.modals;
2601
2709
  },
2602
2710
  async getSubmittableValue() {
2603
- return getSubmittableData(this.schemaComponents);
2711
+ return getSubmittableData(component.schemaComponents);
2604
2712
  },
2605
2713
  getSubmittableValueSync() {
2606
- return getSubmittableDataSync(this.schemaComponents);
2714
+ return getSubmittableDataSync(component.schemaComponents);
2607
2715
  },
2608
2716
  getLocalValue() {
2609
- return getLocalValues(this.schemaComponents);
2717
+ return getLocalValues(component.schemaComponents);
2610
2718
  },
2611
2719
  validate() {
2612
- return this.schemaComponents.every(
2613
- (inputComponent) => {
2614
- var _a2;
2615
- return this.referencedSchemaIds.includes((_a2 = inputComponent.schemaId) != null ? _a2 : "") ? inputComponent.validate() : true;
2616
- }
2617
- );
2720
+ const isStrict = features.isEnabled("validateUnreferencedSchemas");
2721
+ return component.schemaComponents.map(
2722
+ (inputComponent) => validateInputComponent(component, inputComponent, isStrict, logEvent)
2723
+ ).every(Boolean);
2618
2724
  },
2619
2725
  setLoadingState(loadingState) {
2620
- this._update((draft) => {
2726
+ update(component, (draft) => {
2621
2727
  draft.loadingState = loadingState;
2622
2728
  });
2623
2729
  },
2624
2730
  addSubflow(subflow) {
2625
- this._update((draft) => {
2731
+ update(component, (draft) => {
2626
2732
  draft.subflow = subflow;
2627
2733
  });
2628
2734
  },
2629
2735
  closeSubflow() {
2630
- if (!this.subflow) {
2736
+ if (!component.subflow) {
2631
2737
  return;
2632
2738
  }
2633
- this._update((draft) => {
2739
+ update(component, (draft) => {
2634
2740
  draft.subflow = null;
2635
2741
  });
2636
2742
  },
2637
2743
  start() {
2744
+ if (component.state === "initial") {
2745
+ onLoad == null ? void 0 : onLoad();
2746
+ }
2747
+ update(component, (draft) => {
2748
+ draft.state = "started";
2749
+ });
2638
2750
  stepPolling == null ? void 0 : stepPolling.start();
2639
2751
  stepRefreshAfter == null ? void 0 : stepRefreshAfter.start();
2640
- stepPrefetch.start(this.getSubmittableValueSync());
2752
+ stepPrefetch.start(component.getSubmittableValueSync());
2641
2753
  },
2642
2754
  stop() {
2643
2755
  stepPolling == null ? void 0 : stepPolling.stop();
2644
2756
  stepRefreshAfter == null ? void 0 : stepRefreshAfter.stop();
2645
2757
  stepPrefetch.stop();
2646
- this._update((draft) => {
2758
+ update(component, (draft) => {
2759
+ draft.state = "stopped";
2647
2760
  draft.modals = [];
2648
2761
  });
2649
2762
  }
2650
2763
  });
2651
2764
  return component;
2652
2765
  };
2766
+ var validateInputComponent = (component, inputComponent, isStrict, logEvent) => {
2767
+ var _a;
2768
+ const isSchemaReferenced = component.referencedSchemaIds.includes((_a = inputComponent.schemaId) != null ? _a : "");
2769
+ const isValid = inputComponent.validate();
2770
+ if (!isSchemaReferenced && !isValid) {
2771
+ logEvent(
2772
+ isStrict ? "error" : "warning",
2773
+ isStrict ? "Unreferenced schema does not pass validation. This blocks submission. You must fix your step." : "Unreferenced schema does not pass validation. This blocks submission on iOS and Android, and soon it will on web. You should fix your step.",
2774
+ {
2775
+ unreferencedSchemaId: inputComponent.schemaId,
2776
+ componentUid: component.uid
2777
+ }
2778
+ );
2779
+ }
2780
+ return isSchemaReferenced || isStrict ? isValid : true;
2781
+ };
2653
2782
 
2654
2783
  // src/domain/features/polling/getStepPolling.ts
2655
2784
  var getStepPolling = ({
@@ -2888,7 +3017,8 @@ var executeRequest = async (props) => {
2888
3017
  type: "behavior",
2889
3018
  behavior: {
2890
3019
  type: "action",
2891
- action: responseBody.action
3020
+ action: responseBody.action,
3021
+ track: false
2892
3022
  }
2893
3023
  };
2894
3024
  }
@@ -2899,7 +3029,8 @@ var executeRequest = async (props) => {
2899
3029
  behavior: __spreadProps(__spreadValues({}, responseBody), {
2900
3030
  type: "subflow",
2901
3031
  onCompletion: responseBody.onCompletion ? normaliseBehavior(responseBody.onCompletion, []) : void 0,
2902
- onError: responseBody.onError ? normaliseBehavior(responseBody.onError, []) : void 0
3032
+ onError: responseBody.onError ? normaliseBehavior(responseBody.onError, []) : void 0,
3033
+ track: false
2903
3034
  })
2904
3035
  } : {
2905
3036
  type: "error",
@@ -2908,7 +3039,7 @@ var executeRequest = async (props) => {
2908
3039
  }
2909
3040
  case "modal": {
2910
3041
  assertModalResponseBody(responseBody);
2911
- return !isInitial ? { type: "behavior", behavior: __spreadProps(__spreadValues({}, responseBody), { type: "modal" }) } : {
3042
+ return !isInitial ? { type: "behavior", behavior: __spreadProps(__spreadValues({}, responseBody), { type: "modal", track: false }) } : {
2912
3043
  type: "error",
2913
3044
  body: { errors: { error: "Cannot show modal without a current step" } }
2914
3045
  };
@@ -3070,7 +3201,7 @@ var getStepRefreshAfter = ({
3070
3201
  const start = () => {
3071
3202
  const timeLeft = Math.max(targetTime - Date.now(), ONE_SECOND);
3072
3203
  timeout = setTimeout(() => {
3073
- void onBehavior({ type: "refresh", analytics: { schema: "refreshAfter" } });
3204
+ void onBehavior({ type: "refresh", analytics: { schema: "refreshAfter" }, track: false });
3074
3205
  }, timeLeft);
3075
3206
  };
3076
3207
  return {
@@ -3185,7 +3316,8 @@ var getComponentValidationAsync = (update, performValidationAsync) => (
3185
3316
  draft.validationAsyncState = {
3186
3317
  abortController: newAbortController,
3187
3318
  lastSubmitted: currentValue,
3188
- messages: {}
3319
+ messages: {},
3320
+ loadingState: "idle"
3189
3321
  };
3190
3322
  });
3191
3323
  return;
@@ -3196,6 +3328,7 @@ var getComponentValidationAsync = (update, performValidationAsync) => (
3196
3328
  if (message) {
3197
3329
  draft.validationAsyncState.messages.success = message;
3198
3330
  }
3331
+ draft.validationAsyncState.loadingState = "idle";
3199
3332
  });
3200
3333
  return message;
3201
3334
  }).catch((error) => {
@@ -3204,13 +3337,15 @@ var getComponentValidationAsync = (update, performValidationAsync) => (
3204
3337
  }
3205
3338
  update(component, (draft) => {
3206
3339
  draft.validationAsyncState.messages.error = error.message;
3340
+ draft.validationAsyncState.loadingState = "idle";
3207
3341
  });
3208
3342
  });
3209
3343
  update(component, (draft) => {
3210
3344
  draft.validationAsyncState = {
3211
3345
  abortController: newAbortController,
3212
3346
  lastSubmitted: currentValue,
3213
- messages: {}
3347
+ messages: {},
3348
+ loadingState: "pending"
3214
3349
  };
3215
3350
  });
3216
3351
  return newSubmission;
@@ -3219,8 +3354,8 @@ var getComponentValidationAsync = (update, performValidationAsync) => (
3219
3354
  var getDebouncedComponentValidationAsync = (update, performValidationAsync) => debounce(getComponentValidationAsync(update, performValidationAsync), 1e3);
3220
3355
 
3221
3356
  // src/domain/components/NumberInputComponent.ts
3222
- var createNumberInputComponent = (numberInputProps, onComponentUpdate) => {
3223
- const _a = numberInputProps, {
3357
+ var createNumberInputComponent = (props, onComponentUpdate) => {
3358
+ const _a = props, {
3224
3359
  uid,
3225
3360
  id,
3226
3361
  checks,
@@ -3243,16 +3378,13 @@ var createNumberInputComponent = (numberInputProps, onComponentUpdate) => {
3243
3378
  const getValidationErrors = getLocalValueValidator(checks);
3244
3379
  const performOnChange = getDebouncedSchemaOnChange(schemaOnChange, getValidationErrors);
3245
3380
  const validateAsync = performValidationAsync ? getDebouncedComponentValidationAsync(update, performValidationAsync) : void 0;
3246
- const numberComponent = __spreadValues({
3381
+ const component = __spreadValues({
3247
3382
  type: "number",
3248
3383
  kind: "input",
3249
3384
  uid,
3250
3385
  id,
3251
- _update(updateFn) {
3252
- update(this, updateFn);
3253
- },
3254
3386
  onBlur() {
3255
- const isValid = this.validate();
3387
+ const isValid = component.validate();
3256
3388
  performOnChange == null ? void 0 : performOnChange.flush();
3257
3389
  if (isValid) {
3258
3390
  void (onPersistAsync == null ? void 0 : onPersistAsync().catch(() => {
@@ -3263,9 +3395,9 @@ var createNumberInputComponent = (numberInputProps, onComponentUpdate) => {
3263
3395
  onFocus() {
3264
3396
  },
3265
3397
  // Noop
3266
- onChange(updatedValue) {
3267
- const prevValue = this.value;
3268
- this._update((draft) => {
3398
+ setValue(updatedValue) {
3399
+ const prevValue = component.value;
3400
+ update(component, (draft) => {
3269
3401
  draft.errors = [];
3270
3402
  draft.validationAsyncState.messages = {};
3271
3403
  draft.value = updatedValue;
@@ -3273,32 +3405,32 @@ var createNumberInputComponent = (numberInputProps, onComponentUpdate) => {
3273
3405
  performOnChange == null ? void 0 : performOnChange(prevValue, updatedValue);
3274
3406
  const isValid = getValidationErrors(updatedValue).length === 0;
3275
3407
  if (isValid) {
3276
- validateAsync == null ? void 0 : validateAsync(this, updatedValue);
3408
+ validateAsync == null ? void 0 : validateAsync(component, updatedValue);
3277
3409
  }
3278
3410
  onValueChange();
3279
3411
  },
3280
3412
  async getSubmittableValue() {
3281
- return this.getSubmittableValueSync();
3413
+ return component.getSubmittableValueSync();
3282
3414
  },
3283
3415
  getSubmittableValueSync() {
3284
3416
  var _a2;
3285
- return (_a2 = this.getLocalValue()) != null ? _a2 : null;
3417
+ return (_a2 = component.getLocalValue()) != null ? _a2 : null;
3286
3418
  },
3287
3419
  getSummary() {
3288
- return summariser(this.getLocalValue());
3420
+ return summariser(component.getLocalValue());
3289
3421
  },
3290
3422
  getLocalValue() {
3291
- return this.value;
3423
+ return component.value;
3292
3424
  },
3293
3425
  validate() {
3294
- const errors = getValidationErrors(this.getLocalValue());
3295
- this._update((draft) => {
3426
+ const errors = getValidationErrors(component.getLocalValue());
3427
+ update(component, (draft) => {
3296
3428
  draft.errors = errors;
3297
3429
  });
3298
3430
  return errors.length === 0;
3299
3431
  }
3300
3432
  }, rest);
3301
- return numberComponent;
3433
+ return component;
3302
3434
  };
3303
3435
 
3304
3436
  // src/domain/features/schema-on-change/getSchemaOnChange.ts
@@ -3313,23 +3445,25 @@ var getSchemaOnChange = (schema, onBehavior) => {
3313
3445
  return void 0;
3314
3446
  };
3315
3447
  var getBehaviorFromSchemaOnChange = (schema) => {
3448
+ var _a;
3316
3449
  if ("onChange" in schema && schema.onChange) {
3317
3450
  const { $id, analyticsId, onChange } = schema;
3318
3451
  const behavior = __spreadProps(__spreadValues({}, normaliseBehavior(onChange, [])), {
3319
- analytics: { schema: analyticsId != null ? analyticsId : $id }
3452
+ analytics: { schema: (_a = analyticsId != null ? analyticsId : $id) != null ? _a : "" }
3320
3453
  });
3321
3454
  return behavior;
3322
3455
  }
3323
3456
  return void 0;
3324
3457
  };
3325
3458
  var getBehaviorFromSchemaRefreshStepOnChange = (schema) => {
3326
- var _a, _b;
3459
+ var _a, _b, _c;
3327
3460
  if ("refreshStepOnChange" in schema && ((_a = schema.refreshStepOnChange) != null ? _a : false) || "refreshFormOnChange" in schema && ((_b = schema.refreshFormOnChange) != null ? _b : false)) {
3328
3461
  const { $id, analyticsId, refreshUrl, refreshFormUrl } = schema;
3329
3462
  const behavior = {
3330
3463
  type: "refresh",
3331
- analytics: { schema: analyticsId != null ? analyticsId : $id },
3332
- url: refreshUrl != null ? refreshUrl : refreshFormUrl
3464
+ analytics: { schema: (_c = analyticsId != null ? analyticsId : $id) != null ? _c : "" },
3465
+ url: refreshUrl != null ? refreshUrl : refreshFormUrl,
3466
+ track: false
3333
3467
  };
3334
3468
  return behavior;
3335
3469
  }
@@ -3560,7 +3694,8 @@ var autocompleteTokenMap = {
3560
3694
  var getInitialValidationAsyncState = () => ({
3561
3695
  abortController: new AbortController(),
3562
3696
  lastSubmitted: null,
3563
- messages: {}
3697
+ messages: {},
3698
+ loadingState: "idle"
3564
3699
  });
3565
3700
 
3566
3701
  // src/domain/features/utils/response-utils.ts
@@ -3580,10 +3715,9 @@ var getPerformValidationAsync = ({
3580
3715
  trackEvent
3581
3716
  }) => {
3582
3717
  const { method, param, url } = validationAsyncConfig;
3583
- const trackFailureAndReturn = (json) => {
3718
+ const trackFailure = (json) => {
3584
3719
  const analytics = getAnalyticsFromErrorResponse(json);
3585
3720
  trackEvent("ValidationAsync Failed", __spreadValues({ schema: schemaId }, analytics));
3586
- return null;
3587
3721
  };
3588
3722
  return async function performValidationAsync({ value, signal }) {
3589
3723
  let response;
@@ -3593,8 +3727,9 @@ var getPerformValidationAsync = ({
3593
3727
  url,
3594
3728
  constructPayload({ value, signal, requestConfig: { method, param } })
3595
3729
  );
3596
- } catch (e) {
3597
- return trackFailureAndReturn();
3730
+ } catch (error) {
3731
+ trackFailure();
3732
+ throw error;
3598
3733
  }
3599
3734
  const json = await response.json().catch(() => null);
3600
3735
  const message = getValidationMessage(json);
@@ -3608,7 +3743,8 @@ var getPerformValidationAsync = ({
3608
3743
  throw new Error(message);
3609
3744
  }
3610
3745
  }
3611
- return trackFailureAndReturn(json);
3746
+ trackFailure(json);
3747
+ return null;
3612
3748
  };
3613
3749
  };
3614
3750
  var getValidationMessage = (json) => {
@@ -3705,7 +3841,7 @@ var mapCommonSchemaProps = (schemaMapperProps) => {
3705
3841
  title,
3706
3842
  hidden
3707
3843
  } = schema;
3708
- return __spreadValues(__spreadValues(__spreadValues({
3844
+ return __spreadValues(__spreadValues(__spreadValues(__spreadValues({
3709
3845
  uid,
3710
3846
  id: $id != null ? $id : uid,
3711
3847
  schemaId,
@@ -3722,7 +3858,7 @@ var mapCommonSchemaProps = (schemaMapperProps) => {
3722
3858
  title,
3723
3859
  onPersistAsync,
3724
3860
  summariser: getSummariser(schema)
3725
- }, schemaHasHelp(schema) ? { help: schema.help.markdown } : {}), schemaHasPlaceholder(schema) ? { placeholder: schema.placeholder } : {}), schema.alert ? { alert: mapSchemaAlert(schema.alert) } : {});
3861
+ }, schemaHasHelp(schema) ? { help: schema.help.markdown } : {}), schemaHasPlaceholder(schema) ? { placeholder: schema.placeholder } : {}), schema.alert ? { alert: mapSchemaAlert(schema.alert) } : {}), schema.inlineAlert ? { inlineAlert: mapInlineAlert(schema.inlineAlert) } : {});
3726
3862
  };
3727
3863
  var schemaHasDisabled = (schema) => Boolean("disabled" in schema && schema.disabled !== void 0);
3728
3864
  var schemaHasHelp = (schema) => Boolean("help" in schema && schema.help);
@@ -3783,7 +3919,7 @@ var isStringSchemaWithUpload = (schema) => isStringSchema(schema) && schema.form
3783
3919
  var isSchemaWithPersistAsync = (schema) => "persistAsync" in schema && !isNullish(schema.persistAsync);
3784
3920
 
3785
3921
  // src/domain/components/AllOfComponent.ts
3786
- var createAllOfComponent = (allOfProps) => {
3922
+ var createAllOfComponent = (props) => {
3787
3923
  const {
3788
3924
  uid,
3789
3925
  schemaId,
@@ -3797,8 +3933,8 @@ var createAllOfComponent = (allOfProps) => {
3797
3933
  media,
3798
3934
  title,
3799
3935
  tags
3800
- } = allOfProps;
3801
- return {
3936
+ } = props;
3937
+ const component = {
3802
3938
  type: "all-of",
3803
3939
  kind: "input",
3804
3940
  uid,
@@ -3814,24 +3950,25 @@ var createAllOfComponent = (allOfProps) => {
3814
3950
  title,
3815
3951
  tags,
3816
3952
  getChildren() {
3817
- return this.components;
3953
+ return component.components;
3818
3954
  },
3819
3955
  getSummary() {
3820
- return summariseFromChildren(this.getChildren());
3956
+ return summariseFromChildren(component.getChildren());
3821
3957
  },
3822
3958
  async getSubmittableValue() {
3823
- return getSubmittableData(this.components);
3959
+ return getSubmittableData(component.components);
3824
3960
  },
3825
3961
  getSubmittableValueSync() {
3826
- return getSubmittableDataSync(this.components);
3962
+ return getSubmittableDataSync(component.components);
3827
3963
  },
3828
3964
  getLocalValue() {
3829
- return getLocalValues(this.components);
3965
+ return getLocalValues(component.components);
3830
3966
  },
3831
3967
  validate() {
3832
- return hidden ? true : validateComponents(this.getChildren());
3968
+ return hidden ? true : validateComponents(component.getChildren());
3833
3969
  }
3834
3970
  };
3971
+ return component;
3835
3972
  };
3836
3973
 
3837
3974
  // src/domain/mappers/schema/allOfSchemaToComponent.ts
@@ -3857,8 +3994,8 @@ var allOfSchemaToComponent = (schemaMapperProps, mapperProps) => {
3857
3994
  };
3858
3995
 
3859
3996
  // src/domain/components/RepeatableComponent.ts
3860
- var createRepeatableComponent = (repeatableProps, onComponentUpdate) => {
3861
- const _a = repeatableProps, {
3997
+ var createRepeatableComponent = (props, onComponentUpdate) => {
3998
+ const _a = props, {
3862
3999
  uid,
3863
4000
  schemaId,
3864
4001
  analyticsId,
@@ -3881,7 +4018,7 @@ var createRepeatableComponent = (repeatableProps, onComponentUpdate) => {
3881
4018
  ]);
3882
4019
  const update = getInputUpdateFunction(onComponentUpdate);
3883
4020
  const getValidationErrors = getLocalValueValidator(checks);
3884
- const repeatableComponent = __spreadProps(__spreadValues({
4021
+ const component = __spreadProps(__spreadValues({
3885
4022
  uid,
3886
4023
  schemaId,
3887
4024
  analyticsId,
@@ -3896,37 +4033,34 @@ var createRepeatableComponent = (repeatableProps, onComponentUpdate) => {
3896
4033
  media: summary == null ? void 0 : summary.defaultMedia
3897
4034
  }
3898
4035
  }, componentProps), {
3899
- _update(updateFn) {
3900
- update(this, updateFn);
3901
- },
3902
- onEdit(itemIndex) {
3903
- this._update((draft) => {
4036
+ editComponent(itemIndex) {
4037
+ update(component, (draft) => {
3904
4038
  draft.editableComponent = createEditableComponent(
3905
4039
  draft.components[itemIndex].getLocalValue()
3906
4040
  );
3907
4041
  draft.editableIndex = itemIndex;
3908
4042
  });
3909
4043
  },
3910
- onAdd() {
3911
- this._update((draft) => {
4044
+ addComponent() {
4045
+ update(component, (draft) => {
3912
4046
  draft.editableComponent = createEditableComponent(null);
3913
4047
  draft.editableIndex = null;
3914
4048
  draft.errors = [];
3915
4049
  });
3916
4050
  },
3917
- onSave() {
4051
+ saveComponent() {
3918
4052
  var _a2;
3919
- const isValid = (_a2 = this.editableComponent) == null ? void 0 : _a2.validate();
4053
+ const isValid = (_a2 = component.editableComponent) == null ? void 0 : _a2.validate();
3920
4054
  if (!isValid) {
3921
4055
  return false;
3922
4056
  }
3923
- this._update((draft) => {
4057
+ update(component, (draft) => {
3924
4058
  if (draft.editableComponent === null) {
3925
4059
  return;
3926
4060
  }
3927
4061
  if (draft.editableIndex === null) {
3928
4062
  const newComponent = __spreadValues({}, draft.editableComponent);
3929
- draft.components = [...this.components, newComponent];
4063
+ draft.components = [...component.components, newComponent];
3930
4064
  } else {
3931
4065
  draft.components[draft.editableIndex] = __spreadProps(__spreadValues({}, draft.editableComponent), {
3932
4066
  uid: draft.components[draft.editableIndex].uid
@@ -3938,8 +4072,8 @@ var createRepeatableComponent = (repeatableProps, onComponentUpdate) => {
3938
4072
  onValueChange();
3939
4073
  return true;
3940
4074
  },
3941
- onRemove() {
3942
- this._update((draft) => {
4075
+ removeComponent() {
4076
+ update(component, (draft) => {
3943
4077
  if (draft.editableIndex === null) {
3944
4078
  return;
3945
4079
  }
@@ -3950,30 +4084,32 @@ var createRepeatableComponent = (repeatableProps, onComponentUpdate) => {
3950
4084
  onValueChange();
3951
4085
  },
3952
4086
  getChildren() {
3953
- return this.editableComponent !== null ? [...this.components, this.editableComponent] : this.components;
4087
+ return component.editableComponent !== null ? [...component.components, component.editableComponent] : component.components;
3954
4088
  },
3955
4089
  async getSubmittableValue() {
3956
- return Promise.all(this.components.map(async (component) => component.getSubmittableValue()));
4090
+ return Promise.all(
4091
+ component.components.map(async (childComponent) => childComponent.getSubmittableValue())
4092
+ );
3957
4093
  },
3958
4094
  getSubmittableValueSync() {
3959
- return this.components.map((component) => component.getSubmittableValueSync());
4095
+ return component.components.map((childComponent) => childComponent.getSubmittableValueSync());
3960
4096
  },
3961
4097
  getSummary() {
3962
4098
  return summariser(null);
3963
4099
  },
3964
4100
  getLocalValue() {
3965
- return this.components.map((component) => component.getLocalValue());
4101
+ return component.components.map((childComponent) => childComponent.getLocalValue());
3966
4102
  },
3967
4103
  validate() {
3968
- const messages = getValidationErrors(this.getLocalValue());
3969
- const childComponentsValid = validateComponents(this.getChildren());
3970
- this._update((draft) => {
4104
+ const messages = getValidationErrors(component.getLocalValue());
4105
+ const childComponentsValid = validateComponents(component.getChildren());
4106
+ update(component, (draft) => {
3971
4107
  draft.errors = messages;
3972
4108
  });
3973
4109
  return messages.length === 0 && childComponentsValid;
3974
4110
  }
3975
4111
  });
3976
- return repeatableComponent;
4112
+ return component;
3977
4113
  };
3978
4114
 
3979
4115
  // src/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.ts
@@ -4123,8 +4259,8 @@ var base64ToBytes = (base64) => {
4123
4259
  };
4124
4260
 
4125
4261
  // src/domain/components/MultiUploadInputComponent.ts
4126
- var createMultiUploadInputComponent = (uploadInputProps, onComponentUpdate) => {
4127
- const _a = uploadInputProps, {
4262
+ var createMultiUploadInputComponent = (props, onComponentUpdate) => {
4263
+ const _a = props, {
4128
4264
  uid,
4129
4265
  id,
4130
4266
  checks,
@@ -4147,77 +4283,74 @@ var createMultiUploadInputComponent = (uploadInputProps, onComponentUpdate) => {
4147
4283
  const getValidationErrors = getLocalValueValidator(checks);
4148
4284
  const getFileValidationErrors = getLocalValueValidator(fileChecks);
4149
4285
  const persist = performPersistAsync ? getComponentMultiPersistAsync(update, performPersistAsync) : void 0;
4150
- const uploadComponent = __spreadValues({
4286
+ const component = __spreadValues({
4151
4287
  type: "multi-upload",
4152
4288
  kind: "input",
4153
4289
  uid,
4154
4290
  id,
4155
4291
  format,
4156
4292
  files: [],
4157
- _update(updateFn) {
4158
- update(this, updateFn);
4159
- },
4160
4293
  onBlur() {
4161
- this.validate();
4294
+ component.validate();
4162
4295
  },
4163
4296
  onFocus() {
4164
4297
  },
4165
4298
  // Noop
4166
- async onRemoveFile(index) {
4299
+ async removeFile(index) {
4167
4300
  var _a2;
4168
- this._update((draft) => {
4301
+ update(component, (draft) => {
4169
4302
  draft.value.splice(index, 1);
4170
4303
  draft.files.splice(index, 1);
4171
4304
  });
4172
4305
  if (persist) {
4173
- (_a2 = this.persistedState[index]) == null ? void 0 : _a2.abortController.abort();
4174
- this._update((draft) => {
4306
+ (_a2 = component.persistedState[index]) == null ? void 0 : _a2.abortController.abort();
4307
+ update(component, (draft) => {
4175
4308
  draft.persistedState.splice(index, 1);
4176
4309
  });
4177
4310
  }
4178
4311
  },
4179
- async onInsertFile(index, file) {
4312
+ async insertFile(index, file) {
4180
4313
  const fileErrors = getFileValidationErrors(file);
4181
4314
  const fileId = getRandomId();
4182
4315
  const base64Value = format === "base64" ? await toBase64(file) : null;
4183
- this._update((draft) => {
4316
+ update(component, (draft) => {
4184
4317
  draft.value.splice(index, 0, file);
4185
4318
  draft.files.splice(index, 0, { file, id: fileId, errors: fileErrors, base64Value });
4186
4319
  draft.errors = [];
4187
4320
  });
4188
4321
  if (persist) {
4189
- await persist(this, index, format === "blob" ? file : base64Value);
4322
+ await persist(component, index, format === "blob" ? file : base64Value);
4190
4323
  }
4191
4324
  onValueChange();
4192
4325
  return fileId;
4193
4326
  },
4194
4327
  async getSubmittableValue() {
4195
4328
  if (persist) {
4196
- return Promise.all(this.persistedState.map(async ({ submission }) => submission));
4329
+ return Promise.all(component.persistedState.map(async ({ submission }) => submission));
4197
4330
  }
4198
- return this.files.map(({ base64Value }) => base64Value);
4331
+ return component.files.map(({ base64Value }) => base64Value);
4199
4332
  },
4200
4333
  getSubmittableValueSync() {
4201
4334
  if (persist) {
4202
- return this.persistedState.map(({ lastResponse }) => lastResponse);
4335
+ return component.persistedState.map(({ lastResponse }) => lastResponse);
4203
4336
  }
4204
- return this.files.map(({ base64Value }) => base64Value);
4337
+ return component.files.map(({ base64Value }) => base64Value);
4205
4338
  },
4206
4339
  getSummary() {
4207
- return summariser(this.getLocalValue().map(({ name }) => name));
4340
+ return summariser(component.getLocalValue().map(({ name }) => name));
4208
4341
  },
4209
4342
  getLocalValue() {
4210
- return this.value;
4343
+ return component.value;
4211
4344
  },
4212
4345
  validate() {
4213
- const errorMsgs = getValidationErrors(this.getLocalValue());
4214
- this._update((draft) => {
4346
+ const errorMsgs = getValidationErrors(component.getLocalValue());
4347
+ update(component, (draft) => {
4215
4348
  draft.errors = errorMsgs;
4216
4349
  });
4217
- return errorMsgs.length === 0 && this.files.every(({ errors }) => errors.length === 0);
4350
+ return errorMsgs.length === 0 && component.files.every(({ errors }) => errors.length === 0);
4218
4351
  }
4219
4352
  }, rest);
4220
- return uploadComponent;
4353
+ return component;
4221
4354
  };
4222
4355
 
4223
4356
  // src/domain/features/persistAsync/getInitialPersistedState.ts
@@ -4371,8 +4504,8 @@ var getPersistAsyncConfig = (schema) => {
4371
4504
  var getValueForPersistAsync = (localValue) => isArray(localValue) && localValue.every(isFile) ? localValue : [];
4372
4505
 
4373
4506
  // src/domain/components/MultiSelectInputComponent.ts
4374
- var createMultiSelectComponent = (multiSelectProps, onComponentUpdate) => {
4375
- const _a = multiSelectProps, {
4507
+ var createMultiSelectComponent = (props, onComponentUpdate) => {
4508
+ const _a = props, {
4376
4509
  uid,
4377
4510
  checks,
4378
4511
  options,
@@ -4403,21 +4536,18 @@ var createMultiSelectComponent = (multiSelectProps, onComponentUpdate) => {
4403
4536
  selectedIndices,
4404
4537
  value: null
4405
4538
  }, rest), {
4406
- _update(updateFn) {
4407
- update(this, updateFn);
4408
- },
4409
- onSelect(indices) {
4410
- this._update((draft) => {
4539
+ selectIndices(indices) {
4540
+ update(component, (draft) => {
4411
4541
  draft.selectedIndices = indices;
4412
4542
  draft.errors = [];
4413
4543
  });
4414
4544
  void (schemaOnChange == null ? void 0 : schemaOnChange());
4415
- const errors = getValidationErrors(this.getLocalValue());
4416
- this._update((draft) => {
4545
+ const errors = getValidationErrors(component.getLocalValue());
4546
+ update(component, (draft) => {
4417
4547
  draft.errors = errors;
4418
4548
  });
4419
- if (this.validate()) {
4420
- validateAsync == null ? void 0 : validateAsync(this, this.getLocalValue()).catch(() => {
4549
+ if (component.validate()) {
4550
+ validateAsync == null ? void 0 : validateAsync(component, component.getLocalValue()).catch(() => {
4421
4551
  });
4422
4552
  }
4423
4553
  onValueChange();
@@ -4430,17 +4560,17 @@ var createMultiSelectComponent = (multiSelectProps, onComponentUpdate) => {
4430
4560
  // Noop
4431
4561
  getLocalValue() {
4432
4562
  var _a2, _b;
4433
- return (_b = (_a2 = this.getSelectedChildren()) == null ? void 0 : _a2.map((child) => child.getLocalValue())) != null ? _b : null;
4563
+ return (_b = (_a2 = component.getSelectedChildren()) == null ? void 0 : _a2.map((child) => child.getLocalValue())) != null ? _b : null;
4434
4564
  },
4435
4565
  validate() {
4436
- const errors = getValidationErrors(this.getLocalValue());
4437
- this._update((draft) => {
4566
+ const errors = getValidationErrors(component.getLocalValue());
4567
+ update(component, (draft) => {
4438
4568
  draft.errors = errors;
4439
4569
  });
4440
4570
  return errors.length === 0;
4441
4571
  },
4442
4572
  async getSubmittableValue() {
4443
- const selected = this.getSelectedChildren();
4573
+ const selected = component.getSelectedChildren();
4444
4574
  if (selected) {
4445
4575
  return Promise.all(selected.map(async (child) => child.getSubmittableValue()));
4446
4576
  }
@@ -4448,14 +4578,14 @@ var createMultiSelectComponent = (multiSelectProps, onComponentUpdate) => {
4448
4578
  },
4449
4579
  getSubmittableValueSync() {
4450
4580
  var _a2, _b;
4451
- return (_b = (_a2 = this.getSelectedChildren()) == null ? void 0 : _a2.map((child) => child.getSubmittableValueSync())) != null ? _b : null;
4581
+ return (_b = (_a2 = component.getSelectedChildren()) == null ? void 0 : _a2.map((child) => child.getSubmittableValueSync())) != null ? _b : null;
4452
4582
  },
4453
4583
  getSummary: () => ({}),
4454
4584
  getChildren() {
4455
- return this.children;
4585
+ return component.children;
4456
4586
  },
4457
4587
  getSelectedChildren() {
4458
- return this.selectedIndices.map((i) => this.children[i]);
4588
+ return component.selectedIndices.map((i) => component.children[i]);
4459
4589
  }
4460
4590
  });
4461
4591
  return component;
@@ -4537,7 +4667,7 @@ var arraySchemaToMultiSelectComponent = (schemaMapperProps, mapperProps) => {
4537
4667
  };
4538
4668
 
4539
4669
  // src/domain/components/TupleComponent.ts
4540
- var createTupleComponent = (tupleProps) => {
4670
+ var createTupleComponent = (props) => {
4541
4671
  const {
4542
4672
  uid,
4543
4673
  schemaId,
@@ -4552,8 +4682,8 @@ var createTupleComponent = (tupleProps) => {
4552
4682
  summariser,
4553
4683
  title,
4554
4684
  tags
4555
- } = tupleProps;
4556
- return {
4685
+ } = props;
4686
+ const component = {
4557
4687
  type: "tuple",
4558
4688
  kind: "input",
4559
4689
  uid,
@@ -4569,26 +4699,27 @@ var createTupleComponent = (tupleProps) => {
4569
4699
  title,
4570
4700
  tags,
4571
4701
  getChildren() {
4572
- return this.components;
4702
+ return component.components;
4573
4703
  },
4574
4704
  async getSubmittableValue() {
4575
- return Promise.all(this.components.map(async (child) => child.getSubmittableValue()));
4705
+ return Promise.all(component.components.map(async (child) => child.getSubmittableValue()));
4576
4706
  },
4577
4707
  getSubmittableValueSync() {
4578
- return this.components.map((child) => child.getSubmittableValueSync());
4708
+ return component.components.map((child) => child.getSubmittableValueSync());
4579
4709
  },
4580
4710
  getSummary() {
4581
- const summary = summariser(this.getLocalValue());
4582
- const childSummary = summariseFromChildren(this.getChildren());
4711
+ const summary = summariser(component.getLocalValue());
4712
+ const childSummary = summariseFromChildren(component.getChildren());
4583
4713
  return mergeSummaries(summary, childSummary);
4584
4714
  },
4585
4715
  getLocalValue() {
4586
- return this.components.map((child) => child.getLocalValue());
4716
+ return component.components.map((child) => child.getLocalValue());
4587
4717
  },
4588
4718
  validate() {
4589
- return hidden ? true : validateComponents(this.getChildren());
4719
+ return hidden ? true : validateComponents(component.getChildren());
4590
4720
  }
4591
4721
  };
4722
+ return component;
4592
4723
  };
4593
4724
 
4594
4725
  // src/domain/mappers/schema/arraySchemaToComponent/arraySchemaToTupleComponent.ts
@@ -4643,8 +4774,8 @@ var isPersistAsyncWithUploadSchema = (schema) => isSchemaWithPersistAsync(schema
4643
4774
  var isArraySchemaListWithMultiSelect = (schema) => isArrayListSchema(schema) && "oneOf" in schema.items && schema.items.oneOf.every(isConstSchema);
4644
4775
 
4645
4776
  // src/domain/components/UploadInputComponent.ts
4646
- var createUploadInputComponent = (uploadInputProps, onComponentUpdate) => {
4647
- const _a = uploadInputProps, {
4777
+ var createUploadInputComponent = (props, onComponentUpdate) => {
4778
+ const _a = props, {
4648
4779
  uid,
4649
4780
  id,
4650
4781
  checks,
@@ -4667,7 +4798,7 @@ var createUploadInputComponent = (uploadInputProps, onComponentUpdate) => {
4667
4798
  ]);
4668
4799
  const update = getInputUpdateFunction(onComponentUpdate);
4669
4800
  const getValidationErrors = getLocalValueValidator(checks);
4670
- const uploadComponent = __spreadValues({
4801
+ const component = __spreadValues({
4671
4802
  type: "upload",
4672
4803
  kind: "input",
4673
4804
  uid,
@@ -4675,18 +4806,15 @@ var createUploadInputComponent = (uploadInputProps, onComponentUpdate) => {
4675
4806
  format,
4676
4807
  value,
4677
4808
  base64Value: null,
4678
- _update(updateFn) {
4679
- update(this, updateFn);
4680
- },
4681
4809
  onBlur() {
4682
- this.validate();
4810
+ component.validate();
4683
4811
  },
4684
4812
  onFocus() {
4685
4813
  },
4686
4814
  // Noop
4687
- async onUpload(updatedValue) {
4688
- const base64Value = this.format === "base64" && updatedValue ? await toBase64(updatedValue) : null;
4689
- this._update((draft) => {
4815
+ async setValue(updatedValue) {
4816
+ const base64Value = component.format === "base64" && updatedValue ? await toBase64(updatedValue) : null;
4817
+ update(component, (draft) => {
4690
4818
  draft.errors = [];
4691
4819
  draft.value = updatedValue;
4692
4820
  draft.base64Value = base64Value;
@@ -4694,50 +4822,47 @@ var createUploadInputComponent = (uploadInputProps, onComponentUpdate) => {
4694
4822
  void (schemaOnChange == null ? void 0 : schemaOnChange());
4695
4823
  onValueChange();
4696
4824
  await (onPersistAsync == null ? void 0 : onPersistAsync().catch((e) => {
4697
- this._update((draft) => {
4825
+ update(component, (draft) => {
4698
4826
  draft.value = null;
4699
4827
  });
4700
4828
  throw e;
4701
4829
  }));
4702
4830
  },
4703
4831
  async getSubmittableValue() {
4704
- const file = this.getLocalValue();
4705
- if (this.format === "base64" && file) {
4832
+ const file = component.getLocalValue();
4833
+ if (component.format === "base64" && file) {
4706
4834
  return toBase64(file);
4707
4835
  }
4708
4836
  return null;
4709
4837
  },
4710
4838
  getSubmittableValueSync() {
4711
- return this.base64Value;
4839
+ return component.base64Value;
4712
4840
  },
4713
4841
  getSummary() {
4714
4842
  var _a2, _b;
4715
- return summariser((_b = (_a2 = this.getLocalValue()) == null ? void 0 : _a2.name) != null ? _b : null);
4843
+ return summariser((_b = (_a2 = component.getLocalValue()) == null ? void 0 : _a2.name) != null ? _b : null);
4716
4844
  },
4717
4845
  getLocalValue() {
4718
- return this.value;
4846
+ return component.value;
4719
4847
  },
4720
4848
  validate() {
4721
- const errors = getValidationErrors(this.getLocalValue());
4722
- this._update((draft) => {
4849
+ const errors = getValidationErrors(component.getLocalValue());
4850
+ update(component, (draft) => {
4723
4851
  draft.errors = errors;
4724
4852
  });
4725
4853
  return errors.length === 0;
4726
4854
  }
4727
4855
  }, rest);
4728
4856
  if (format === "base64" && value && !onPersistAsync) {
4729
- void initialiseBase64Value(uploadComponent);
4730
- }
4731
- return uploadComponent;
4732
- };
4733
- var initialiseBase64Value = async (uploadComponent) => {
4734
- const { format, value } = uploadComponent;
4735
- const base64Value = format === "base64" && value ? await toBase64(value) : null;
4736
- if (base64Value) {
4737
- uploadComponent._update((draft) => {
4738
- draft.base64Value = base64Value;
4857
+ void toBase64(value).then((base64Value) => {
4858
+ if (base64Value) {
4859
+ update(component, (draft) => {
4860
+ draft.base64Value = base64Value;
4861
+ });
4862
+ }
4739
4863
  });
4740
4864
  }
4865
+ return component;
4741
4866
  };
4742
4867
 
4743
4868
  // src/domain/mappers/schema/blobSchemaToComponent.ts
@@ -4766,8 +4891,8 @@ var blobSchemaToComponent = (schemaMapperProps, mapperProps) => {
4766
4891
  };
4767
4892
 
4768
4893
  // src/domain/components/BooleanInputComponent.ts
4769
- var createBooleanInputComponent = (booleanInputProps, onComponentUpdate) => {
4770
- const _a = booleanInputProps, {
4894
+ var createBooleanInputComponent = (props, onComponentUpdate) => {
4895
+ const _a = props, {
4771
4896
  uid,
4772
4897
  id,
4773
4898
  value,
@@ -4788,49 +4913,46 @@ var createBooleanInputComponent = (booleanInputProps, onComponentUpdate) => {
4788
4913
  ]);
4789
4914
  const update = getInputUpdateFunction(onComponentUpdate);
4790
4915
  const validateAsync = performValidationAsync ? getComponentValidationAsync(update, performValidationAsync) : void 0;
4791
- const booleanComponent = __spreadValues({
4916
+ const component = __spreadValues({
4792
4917
  type: "boolean",
4793
4918
  kind: "input",
4794
4919
  uid,
4795
4920
  id,
4796
4921
  autoComplete: "",
4797
4922
  value,
4798
- _update(updateFn) {
4799
- update(this, updateFn);
4800
- },
4801
4923
  onBlur() {
4802
4924
  },
4803
4925
  // Noop
4804
4926
  onFocus() {
4805
4927
  },
4806
4928
  // Noop
4807
- onChange(updatedValue) {
4808
- this._update((draft) => {
4929
+ setValue(updatedValue) {
4930
+ update(component, (draft) => {
4809
4931
  draft.errors = [];
4810
4932
  draft.value = updatedValue;
4811
4933
  });
4812
4934
  void (schemaOnChange == null ? void 0 : schemaOnChange());
4813
4935
  void (onPersistAsync == null ? void 0 : onPersistAsync().catch(() => {
4814
4936
  }));
4815
- validateAsync == null ? void 0 : validateAsync(this, this.getLocalValue()).catch(() => {
4937
+ validateAsync == null ? void 0 : validateAsync(component, component.getLocalValue()).catch(() => {
4816
4938
  });
4817
4939
  onValueChange();
4818
4940
  },
4819
4941
  async getSubmittableValue() {
4820
- return this.getSubmittableValueSync();
4942
+ return component.getSubmittableValueSync();
4821
4943
  },
4822
4944
  getSubmittableValueSync() {
4823
- return this.getLocalValue();
4945
+ return component.getLocalValue();
4824
4946
  },
4825
4947
  getSummary() {
4826
- return summariser(this.getLocalValue());
4948
+ return summariser(component.getLocalValue());
4827
4949
  },
4828
4950
  getLocalValue() {
4829
- return this.value;
4951
+ return component.value;
4830
4952
  },
4831
4953
  validate: () => true
4832
4954
  }, rest);
4833
- return booleanComponent;
4955
+ return component;
4834
4956
  };
4835
4957
 
4836
4958
  // src/domain/mappers/schema/booleanSchemaToComponent.ts
@@ -4871,8 +4993,8 @@ var getValidModel = (model, defaultValue) => {
4871
4993
  };
4872
4994
 
4873
4995
  // src/domain/components/ConstComponent.ts
4874
- var createConstComponent = (hiddenProps) => {
4875
- const { uid, schemaId, analyticsId, value, summary, layout, hidden, tags } = hiddenProps;
4996
+ var createConstComponent = (props) => {
4997
+ const { uid, schemaId, analyticsId, value, summary, layout, hidden, tags } = props;
4876
4998
  return {
4877
4999
  type: "const",
4878
5000
  kind: "input",
@@ -4915,8 +5037,8 @@ var getConstLayout = (uid, mapperProps, layout, alert) => {
4915
5037
  };
4916
5038
 
4917
5039
  // src/domain/components/IntegerInputComponent.ts
4918
- var createIntegerInputComponent = (integerInputProps, onComponentUpdate) => {
4919
- const _a = integerInputProps, {
5040
+ var createIntegerInputComponent = (props, onComponentUpdate) => {
5041
+ const _a = props, {
4920
5042
  uid,
4921
5043
  id,
4922
5044
  checks,
@@ -4941,17 +5063,14 @@ var createIntegerInputComponent = (integerInputProps, onComponentUpdate) => {
4941
5063
  const getValidationErrors = getLocalValueValidator(checks);
4942
5064
  const performOnChange = getDebouncedSchemaOnChange(schemaOnChange, getValidationErrors);
4943
5065
  const validateAsync = performValidationAsync ? getDebouncedComponentValidationAsync(update, performValidationAsync) : void 0;
4944
- const integerComponent = __spreadValues({
5066
+ const component = __spreadValues({
4945
5067
  type: "integer",
4946
5068
  kind: "input",
4947
5069
  uid,
4948
5070
  id,
4949
5071
  value,
4950
- _update(updateFn) {
4951
- update(this, updateFn);
4952
- },
4953
5072
  onBlur() {
4954
- const isValid = this.validate();
5073
+ const isValid = component.validate();
4955
5074
  performOnChange == null ? void 0 : performOnChange.flush();
4956
5075
  if (isValid) {
4957
5076
  void (onPersistAsync == null ? void 0 : onPersistAsync().catch(() => {
@@ -4962,9 +5081,9 @@ var createIntegerInputComponent = (integerInputProps, onComponentUpdate) => {
4962
5081
  onFocus() {
4963
5082
  },
4964
5083
  // Noop
4965
- onChange(updatedValue) {
4966
- const prevValue = this.value;
4967
- this._update((draft) => {
5084
+ setValue(updatedValue) {
5085
+ const prevValue = component.value;
5086
+ update(component, (draft) => {
4968
5087
  draft.errors = [];
4969
5088
  draft.validationAsyncState.messages = {};
4970
5089
  draft.value = updatedValue;
@@ -4972,32 +5091,32 @@ var createIntegerInputComponent = (integerInputProps, onComponentUpdate) => {
4972
5091
  performOnChange == null ? void 0 : performOnChange(prevValue, updatedValue);
4973
5092
  const isValid = getValidationErrors(updatedValue).length === 0;
4974
5093
  if (isValid) {
4975
- validateAsync == null ? void 0 : validateAsync(this, updatedValue);
5094
+ validateAsync == null ? void 0 : validateAsync(component, updatedValue);
4976
5095
  }
4977
5096
  onValueChange();
4978
5097
  },
4979
5098
  async getSubmittableValue() {
4980
- return this.getSubmittableValueSync();
5099
+ return component.getSubmittableValueSync();
4981
5100
  },
4982
5101
  getSubmittableValueSync() {
4983
5102
  var _a2;
4984
- return (_a2 = this.getLocalValue()) != null ? _a2 : null;
5103
+ return (_a2 = component.getLocalValue()) != null ? _a2 : null;
4985
5104
  },
4986
5105
  getSummary() {
4987
- return summariser(this.getLocalValue());
5106
+ return summariser(component.getLocalValue());
4988
5107
  },
4989
5108
  getLocalValue() {
4990
- return this.value;
5109
+ return component.value;
4991
5110
  },
4992
5111
  validate() {
4993
- const errors = getValidationErrors(this.getLocalValue());
4994
- this._update((draft) => {
5112
+ const errors = getValidationErrors(component.getLocalValue());
5113
+ update(component, (draft) => {
4995
5114
  draft.errors = errors;
4996
5115
  });
4997
5116
  return errors.length === 0;
4998
5117
  }
4999
5118
  }, rest);
5000
- return integerComponent;
5119
+ return component;
5001
5120
  };
5002
5121
 
5003
5122
  // src/domain/mappers/schema/integerSchemaToComponent.ts
@@ -5055,7 +5174,7 @@ var createFormattedValueComponent = (props, onComponentUpdate) => {
5055
5174
  schemaOnChange
5056
5175
  } = props;
5057
5176
  const update = getInputUpdateFunction(onComponentUpdate);
5058
- return {
5177
+ const component = {
5059
5178
  type: "formatted-value",
5060
5179
  kind: "input",
5061
5180
  uid,
@@ -5073,27 +5192,28 @@ var createFormattedValueComponent = (props, onComponentUpdate) => {
5073
5192
  tags,
5074
5193
  value,
5075
5194
  async getSubmittableValue() {
5076
- return this.getSubmittableValueSync();
5195
+ return component.getSubmittableValueSync();
5077
5196
  },
5078
5197
  getSubmittableValueSync() {
5079
- return this.getLocalValue();
5198
+ return component.getLocalValue();
5080
5199
  },
5081
5200
  getSummary() {
5082
- return summariser(this.getLocalValue());
5201
+ return summariser(component.getLocalValue());
5083
5202
  },
5084
5203
  getLocalValue() {
5085
- return this.value;
5204
+ return component.value;
5086
5205
  },
5087
5206
  validate() {
5088
5207
  return true;
5089
5208
  },
5090
- onChange(newValue) {
5091
- update(this, (draft) => {
5209
+ setValue(newValue) {
5210
+ update(component, (draft) => {
5092
5211
  draft.value = newValue;
5093
5212
  });
5094
5213
  void (schemaOnChange == null ? void 0 : schemaOnChange());
5095
5214
  }
5096
5215
  };
5216
+ return component;
5097
5217
  };
5098
5218
 
5099
5219
  // src/domain/mappers/schema/objectSchemaToComponent/objectSchemaToFormattedValueComponent.ts
@@ -5112,8 +5232,8 @@ var objectSchemaToFormattedValueComponent = (schemaMapperProps, mapperProps) =>
5112
5232
  };
5113
5233
 
5114
5234
  // src/domain/components/MoneyInputComponent.ts
5115
- var createMoneyInputComponent = (moneyInputProps, onComponentUpdate) => {
5116
- const _a = moneyInputProps, {
5235
+ var createMoneyInputComponent = (props, onComponentUpdate) => {
5236
+ const _a = props, {
5117
5237
  id,
5118
5238
  uid,
5119
5239
  schemaId,
@@ -5154,7 +5274,7 @@ var createMoneyInputComponent = (moneyInputProps, onComponentUpdate) => {
5154
5274
  ]);
5155
5275
  const getValidationErrors = getLocalValueValidator(checks);
5156
5276
  const update = getInputUpdateFunction(onComponentUpdate);
5157
- const moneyComponent = __spreadValues({
5277
+ const component = __spreadValues({
5158
5278
  type: "money-input",
5159
5279
  kind: "input",
5160
5280
  id,
@@ -5173,9 +5293,6 @@ var createMoneyInputComponent = (moneyInputProps, onComponentUpdate) => {
5173
5293
  [amountKey]: amountComponent.getLocalValue(),
5174
5294
  [currencyKey]: currencyComponent.getLocalValue()
5175
5295
  },
5176
- _update(updateFn) {
5177
- update(this, updateFn);
5178
- },
5179
5296
  components: {
5180
5297
  amount: amountComponent,
5181
5298
  currency: currencyComponent
@@ -5199,11 +5316,11 @@ var createMoneyInputComponent = (moneyInputProps, onComponentUpdate) => {
5199
5316
  }, extraValues);
5200
5317
  },
5201
5318
  getSummary() {
5202
- return summariser(this.getLocalValue());
5319
+ return summariser(component.getLocalValue());
5203
5320
  },
5204
5321
  validate() {
5205
5322
  const errors = getValidationErrors(amountComponent.getLocalValue());
5206
- this._update((draft) => {
5323
+ update(component, (draft) => {
5207
5324
  draft.errors = errors;
5208
5325
  });
5209
5326
  return amountComponent.validate() && currencyComponent.validate() && errors.length === 0;
@@ -5214,11 +5331,11 @@ var createMoneyInputComponent = (moneyInputProps, onComponentUpdate) => {
5214
5331
  onFocus() {
5215
5332
  }
5216
5333
  }, rest);
5217
- return moneyComponent;
5334
+ return component;
5218
5335
  };
5219
5336
 
5220
5337
  // src/domain/components/ObjectComponent.ts
5221
- var createObjectComponent = (objectProps) => {
5338
+ var createObjectComponent = (props) => {
5222
5339
  const {
5223
5340
  uid,
5224
5341
  schemaId,
@@ -5234,8 +5351,8 @@ var createObjectComponent = (objectProps) => {
5234
5351
  summariser,
5235
5352
  title,
5236
5353
  tags
5237
- } = objectProps;
5238
- return {
5354
+ } = props;
5355
+ const component = {
5239
5356
  type: "object",
5240
5357
  kind: "input",
5241
5358
  uid,
@@ -5251,12 +5368,12 @@ var createObjectComponent = (objectProps) => {
5251
5368
  title,
5252
5369
  tags,
5253
5370
  getChildren() {
5254
- return displayOrder.map((propName) => this.componentMap[propName]);
5371
+ return displayOrder.map((propName) => component.componentMap[propName]);
5255
5372
  },
5256
5373
  async getSubmittableValue() {
5257
5374
  return Promise.all(
5258
5375
  displayOrder.map(
5259
- async (propName) => this.componentMap[propName].getSubmittableValue().then((value) => ({ value, propName }))
5376
+ async (propName) => component.componentMap[propName].getSubmittableValue().then((value) => ({ value, propName }))
5260
5377
  )
5261
5378
  ).then(
5262
5379
  (values) => values.reduce(
@@ -5268,24 +5385,25 @@ var createObjectComponent = (objectProps) => {
5268
5385
  getSubmittableValueSync() {
5269
5386
  return mergeChildrenValues(
5270
5387
  displayOrder,
5271
- (propName) => this.componentMap[propName].getSubmittableValueSync()
5388
+ (propName) => component.componentMap[propName].getSubmittableValueSync()
5272
5389
  );
5273
5390
  },
5274
5391
  getSummary() {
5275
- const summary = summariser(this.getLocalValue());
5276
- const childSummary = summariseFromChildren(this.getChildren());
5392
+ const summary = summariser(component.getLocalValue());
5393
+ const childSummary = summariseFromChildren(component.getChildren());
5277
5394
  return mergeSummaries(summary, childSummary);
5278
5395
  },
5279
5396
  getLocalValue() {
5280
5397
  return mergeChildrenValues(
5281
5398
  displayOrder,
5282
- (propName) => this.componentMap[propName].getLocalValue()
5399
+ (propName) => component.componentMap[propName].getLocalValue()
5283
5400
  );
5284
5401
  },
5285
5402
  validate() {
5286
- return hidden ? true : validateComponents(this.getChildren());
5403
+ return hidden ? true : validateComponents(component.getChildren());
5287
5404
  }
5288
5405
  };
5406
+ return component;
5289
5407
  };
5290
5408
  var mergeChildrenValues = (displayOrder, getComponentValue) => displayOrder.reduce((acc, propName) => {
5291
5409
  const componentValue = getComponentValue(propName);
@@ -5471,8 +5589,8 @@ var isPartialModelMatch = (localModel, incomingModel) => {
5471
5589
  var nonNullishKeys = (model) => Object.keys(model).filter((key) => !isNullish(model[key]));
5472
5590
 
5473
5591
  // src/domain/components/SelectInputComponent.ts
5474
- var createSelectInputComponent = (selectProps, onComponentUpdate) => {
5475
- const _a = selectProps, { uid, checks, initialModel, options, schemaOnChange, onValueChange, summariser } = _a, rest = __objRest(_a, ["uid", "checks", "initialModel", "options", "schemaOnChange", "onValueChange", "summariser"]);
5592
+ var createSelectInputComponent = (props, onComponentUpdate) => {
5593
+ const _a = props, { uid, checks, initialModel, options, schemaOnChange, onValueChange, summariser } = _a, rest = __objRest(_a, ["uid", "checks", "initialModel", "options", "schemaOnChange", "onValueChange", "summariser"]);
5476
5594
  const children = options.map((option) => option.component);
5477
5595
  const matchingOptions = options.map(
5478
5596
  (option) => isPartialModelMatch(option.component.getSubmittableValueSync(), initialModel)
@@ -5489,54 +5607,51 @@ var createSelectInputComponent = (selectProps, onComponentUpdate) => {
5489
5607
  selectedIndex,
5490
5608
  value: null
5491
5609
  }, rest), {
5492
- _update(updateFn) {
5493
- update(this, updateFn);
5494
- },
5495
5610
  getChildren() {
5496
- return this.children;
5611
+ return component.children;
5497
5612
  },
5498
5613
  getSelectedChild() {
5499
- return this.selectedIndex !== null ? this.children[this.selectedIndex] : null;
5614
+ return component.selectedIndex !== null ? component.children[component.selectedIndex] : null;
5500
5615
  },
5501
5616
  async getSubmittableValue() {
5502
5617
  var _a2, _b;
5503
- return (_b = await ((_a2 = this.getSelectedChild()) == null ? void 0 : _a2.getSubmittableValue())) != null ? _b : null;
5618
+ return (_b = await ((_a2 = component.getSelectedChild()) == null ? void 0 : _a2.getSubmittableValue())) != null ? _b : null;
5504
5619
  },
5505
5620
  getSubmittableValueSync() {
5506
5621
  var _a2, _b;
5507
- return (_b = (_a2 = this.getSelectedChild()) == null ? void 0 : _a2.getSubmittableValueSync()) != null ? _b : null;
5622
+ return (_b = (_a2 = component.getSelectedChild()) == null ? void 0 : _a2.getSubmittableValueSync()) != null ? _b : null;
5508
5623
  },
5509
5624
  getSummary() {
5510
5625
  var _a2, _b;
5511
- return (_b = (_a2 = this.getSelectedChild()) == null ? void 0 : _a2.getSummary()) != null ? _b : {};
5626
+ return (_b = (_a2 = component.getSelectedChild()) == null ? void 0 : _a2.getSummary()) != null ? _b : {};
5512
5627
  },
5513
5628
  getLocalValue() {
5514
5629
  var _a2, _b;
5515
- return (_b = (_a2 = this.getSelectedChild()) == null ? void 0 : _a2.getLocalValue()) != null ? _b : null;
5630
+ return (_b = (_a2 = component.getSelectedChild()) == null ? void 0 : _a2.getLocalValue()) != null ? _b : null;
5516
5631
  },
5517
5632
  onBlur() {
5518
- this.validate();
5633
+ component.validate();
5519
5634
  },
5520
5635
  onFocus() {
5521
5636
  },
5522
5637
  // noop
5523
- onSelect(updatedIndex) {
5524
- if (updatedIndex === this.selectedIndex) {
5638
+ selectIndex(updatedIndex) {
5639
+ if (updatedIndex === component.selectedIndex) {
5525
5640
  return;
5526
5641
  }
5527
5642
  if (updatedIndex !== null) {
5528
- selectProps.trackEvent("OneOf Option Selected", {
5529
- schema: this.analyticsId,
5530
- selectedOption: this.children[updatedIndex].analyticsId
5643
+ props.trackEvent("OneOf Option Selected", {
5644
+ schema: component.analyticsId,
5645
+ selectedOption: component.children[updatedIndex].analyticsId
5531
5646
  });
5532
- if (this.analyticsId) {
5533
- selectProps.trackEvent("OneOf Selected", {
5534
- oneOfId: this.analyticsId,
5535
- schemaId: this.children[updatedIndex].analyticsId
5647
+ if (component.analyticsId) {
5648
+ props.trackEvent("OneOf Selected", {
5649
+ oneOfId: component.analyticsId,
5650
+ schemaId: component.children[updatedIndex].analyticsId
5536
5651
  });
5537
5652
  }
5538
5653
  }
5539
- this._update((draft) => {
5654
+ update(component, (draft) => {
5540
5655
  draft.errors = [];
5541
5656
  draft.selectedIndex = updatedIndex;
5542
5657
  });
@@ -5545,9 +5660,9 @@ var createSelectInputComponent = (selectProps, onComponentUpdate) => {
5545
5660
  },
5546
5661
  validate() {
5547
5662
  var _a2, _b;
5548
- const validChild = (_b = (_a2 = this.getSelectedChild()) == null ? void 0 : _a2.validate()) != null ? _b : true;
5549
- const errors = getValidationErrors(this.getLocalValue());
5550
- this._update((draft) => {
5663
+ const validChild = (_b = (_a2 = component.getSelectedChild()) == null ? void 0 : _a2.validate()) != null ? _b : true;
5664
+ const errors = getValidationErrors(component.getLocalValue());
5665
+ update(component, (draft) => {
5551
5666
  draft.errors = errors;
5552
5667
  });
5553
5668
  return errors.length === 0 && validChild;
@@ -5643,63 +5758,72 @@ var isExactLocalValueMatch = (valueA, valueB) => {
5643
5758
 
5644
5759
  // src/domain/components/PersistAsyncComponent.ts
5645
5760
  var createPersistAsyncComponent = (props, performPersistAsync, schemaOnChange, onComponentUpdate) => {
5646
- const { uid, analyticsId, schemaId, component, hidden, model, localValue, tags } = props;
5761
+ const {
5762
+ uid,
5763
+ analyticsId,
5764
+ schemaId,
5765
+ component: childComponent,
5766
+ hidden,
5767
+ model,
5768
+ localValue,
5769
+ tags
5770
+ } = props;
5647
5771
  const update = getInputUpdateFunction(onComponentUpdate);
5648
- const paComponent = {
5772
+ const component = {
5649
5773
  type: "persist-async",
5650
5774
  kind: "input",
5651
5775
  uid,
5652
5776
  analyticsId,
5653
5777
  schemaId,
5654
- component,
5778
+ component: childComponent,
5655
5779
  hidden,
5780
+ status: "idle",
5656
5781
  lastSubmitted: model != null ? localValue != null ? localValue : null : null,
5657
5782
  lastResponse: model != null ? model : null,
5658
5783
  submission: Promise.resolve(model != null ? model : null),
5659
5784
  abortController: new AbortController(),
5660
5785
  errors: [],
5661
5786
  tags,
5662
- _update(updateFn) {
5663
- update(this, updateFn);
5664
- },
5665
5787
  validate() {
5666
- return this.component.validate();
5788
+ return component.component.validate();
5667
5789
  },
5668
5790
  getLocalValue() {
5669
- return this.component.getLocalValue();
5791
+ return component.component.getLocalValue();
5670
5792
  },
5671
5793
  async getSubmittableValue() {
5672
- return this.persist();
5794
+ return component.persist();
5673
5795
  },
5674
5796
  getSubmittableValueSync() {
5675
- return this.lastResponse;
5797
+ return component.lastResponse;
5676
5798
  },
5677
5799
  getSummary() {
5678
- return this.component.getSummary();
5800
+ return component.component.getSummary();
5679
5801
  },
5680
5802
  async persist() {
5681
- const childLocalValue = this.component.getLocalValue();
5682
- if (isExactLocalValueMatch(childLocalValue, this.lastSubmitted)) {
5683
- return this.submission;
5803
+ const childLocalValue = component.component.getLocalValue();
5804
+ if (isExactLocalValueMatch(childLocalValue, component.lastSubmitted)) {
5805
+ return component.submission;
5684
5806
  }
5685
- const newAbortController = abortAndResetController(this.abortController);
5807
+ const newAbortController = abortAndResetController(component.abortController);
5686
5808
  if (childLocalValue == null || childLocalValue === "") {
5687
5809
  const resolvedNull = Promise.resolve(null);
5688
- this._update((draft) => {
5810
+ update(component, (draft) => {
5689
5811
  draft.abortController = newAbortController;
5690
5812
  draft.lastResponse = null;
5691
5813
  draft.lastSubmitted = childLocalValue;
5692
5814
  draft.submission = resolvedNull;
5693
5815
  draft.errors = [];
5816
+ draft.status = "idle";
5694
5817
  });
5695
5818
  void (schemaOnChange == null ? void 0 : schemaOnChange());
5696
5819
  return resolvedNull;
5697
5820
  }
5698
5821
  const { signal } = newAbortController;
5699
5822
  const newSubmission = performPersistAsync({ value: childLocalValue, signal }).then((token) => {
5700
- this._update((draft) => {
5823
+ update(component, (draft) => {
5701
5824
  draft.lastResponse = token;
5702
5825
  draft.errors = [];
5826
+ draft.status = "success";
5703
5827
  });
5704
5828
  void (schemaOnChange == null ? void 0 : schemaOnChange());
5705
5829
  return token;
@@ -5707,27 +5831,29 @@ var createPersistAsyncComponent = (props, performPersistAsync, schemaOnChange, o
5707
5831
  if (error instanceof DOMException && error.name === "AbortError") {
5708
5832
  return null;
5709
5833
  }
5710
- this._update((draft) => {
5834
+ update(component, (draft) => {
5711
5835
  draft.lastResponse = null;
5712
5836
  draft.lastSubmitted = null;
5713
5837
  draft.submission = Promise.resolve(null);
5714
- if (this.component.type !== "upload") {
5838
+ draft.status = "error";
5839
+ if (component.component.type !== "upload") {
5715
5840
  draft.errors = error instanceof Error ? [error.message] : [];
5716
5841
  }
5717
5842
  });
5718
5843
  throw error;
5719
5844
  });
5720
- this._update((draft) => {
5845
+ update(component, (draft) => {
5721
5846
  draft.abortController = newAbortController;
5722
5847
  draft.lastSubmitted = childLocalValue;
5723
5848
  draft.lastResponse = null;
5724
5849
  draft.submission = newSubmission;
5725
5850
  draft.errors = [];
5851
+ draft.status = "persisting";
5726
5852
  });
5727
5853
  return newSubmission;
5728
5854
  }
5729
5855
  };
5730
- return paComponent;
5856
+ return component;
5731
5857
  };
5732
5858
 
5733
5859
  // src/domain/mappers/schema/persistAsyncSchemaToComponent.ts
@@ -5766,8 +5892,8 @@ var persistAsyncSchemaToComponent = (schemaMapperProps, mapperProps) => {
5766
5892
  };
5767
5893
 
5768
5894
  // src/domain/components/DateInputComponent.ts
5769
- var createDateInputComponent = (textInputProps, onComponentUpdate) => {
5770
- const _a = textInputProps, {
5895
+ var createDateInputComponent = (props, onComponentUpdate) => {
5896
+ const _a = props, {
5771
5897
  uid,
5772
5898
  id,
5773
5899
  checks,
@@ -5791,28 +5917,25 @@ var createDateInputComponent = (textInputProps, onComponentUpdate) => {
5791
5917
  const update = getInputUpdateFunction(onComponentUpdate);
5792
5918
  const getValidationErrors = getLocalValueValidator(checks);
5793
5919
  const validateAsync = performValidationAsync ? getComponentValidationAsync(update, performValidationAsync) : void 0;
5794
- const dateInputComponent = __spreadValues({
5920
+ const component = __spreadValues({
5795
5921
  type: "date",
5796
5922
  kind: "input",
5797
5923
  uid,
5798
5924
  id,
5799
5925
  value,
5800
- _update(updateFn) {
5801
- update(this, updateFn);
5802
- },
5803
5926
  onBlur() {
5804
- const isValid = this.validate();
5927
+ const isValid = component.validate();
5805
5928
  if (isValid) {
5806
- validateAsync == null ? void 0 : validateAsync(this, this.getLocalValue()).catch(() => {
5929
+ validateAsync == null ? void 0 : validateAsync(component, component.getLocalValue()).catch(() => {
5807
5930
  });
5808
5931
  }
5809
5932
  },
5810
5933
  onFocus() {
5811
5934
  },
5812
5935
  // Noop
5813
- onChange(updatedValue) {
5814
- const prevValue = this.value;
5815
- this._update((draft) => {
5936
+ setValue(updatedValue) {
5937
+ const prevValue = component.value;
5938
+ update(component, (draft) => {
5816
5939
  draft.errors = [];
5817
5940
  draft.validationAsyncState.messages = {};
5818
5941
  draft.value = updatedValue;
@@ -5827,29 +5950,29 @@ var createDateInputComponent = (textInputProps, onComponentUpdate) => {
5827
5950
  }
5828
5951
  },
5829
5952
  async getSubmittableValue() {
5830
- return this.getSubmittableValueSync();
5953
+ return component.getSubmittableValueSync();
5831
5954
  },
5832
5955
  getSubmittableValueSync() {
5833
- if (isValidDate(this.getLocalValue())) {
5834
- return this.getLocalValue();
5956
+ if (isValidDate(component.getLocalValue())) {
5957
+ return component.getLocalValue();
5835
5958
  }
5836
5959
  return null;
5837
5960
  },
5838
5961
  getSummary() {
5839
- return summariser(this.getLocalValue());
5962
+ return summariser(component.getLocalValue());
5840
5963
  },
5841
5964
  getLocalValue() {
5842
- return this.value;
5965
+ return component.value;
5843
5966
  },
5844
5967
  validate() {
5845
- const errors = getValidationErrors(this.getLocalValue());
5846
- this._update((draft) => {
5968
+ const errors = getValidationErrors(component.getLocalValue());
5969
+ update(component, (draft) => {
5847
5970
  draft.errors = errors;
5848
5971
  });
5849
5972
  return errors.length === 0;
5850
5973
  }
5851
5974
  }, rest);
5852
- return dateInputComponent;
5975
+ return component;
5853
5976
  };
5854
5977
 
5855
5978
  // src/domain/mappers/utils/suggestions-utils.ts
@@ -5963,8 +6086,8 @@ var stringSchemaToUploadInputComponent = (schemaMapperProps, mapperProps) => {
5963
6086
  var getFileFromModel = (model) => isString(model) ? base64dataUrltoFile(model, "") : null;
5964
6087
 
5965
6088
  // src/domain/components/TextInputComponent.ts
5966
- var createTextInputComponent = (textInputProps, onComponentUpdate) => {
5967
- const _a = textInputProps, {
6089
+ var createTextInputComponent = (props, onComponentUpdate) => {
6090
+ const _a = props, {
5968
6091
  uid,
5969
6092
  id,
5970
6093
  checks,
@@ -5989,17 +6112,14 @@ var createTextInputComponent = (textInputProps, onComponentUpdate) => {
5989
6112
  const getValidationErrors = getLocalValueValidator(checks);
5990
6113
  const performOnChange = getDebouncedSchemaOnChange(schemaOnChange, getValidationErrors);
5991
6114
  const validateAsync = performValidationAsync ? getDebouncedComponentValidationAsync(update, performValidationAsync) : void 0;
5992
- const inputComponent = __spreadValues({
6115
+ const component = __spreadValues({
5993
6116
  type: "text",
5994
6117
  kind: "input",
5995
6118
  uid,
5996
6119
  id,
5997
6120
  value,
5998
- _update(updateFn) {
5999
- update(this, updateFn);
6000
- },
6001
6121
  onBlur() {
6002
- const isValid = this.validate();
6122
+ const isValid = component.validate();
6003
6123
  performOnChange == null ? void 0 : performOnChange.flush();
6004
6124
  if (isValid) {
6005
6125
  void (onPersistAsync == null ? void 0 : onPersistAsync().catch(() => {
@@ -6010,9 +6130,9 @@ var createTextInputComponent = (textInputProps, onComponentUpdate) => {
6010
6130
  onFocus() {
6011
6131
  },
6012
6132
  // Noop
6013
- onChange(updatedValue) {
6014
- const prevValue = this.value;
6015
- this._update((draft) => {
6133
+ setValue(updatedValue) {
6134
+ const prevValue = component.value;
6135
+ update(component, (draft) => {
6016
6136
  draft.errors = [];
6017
6137
  draft.validationAsyncState.messages = {};
6018
6138
  draft.value = updatedValue;
@@ -6020,7 +6140,7 @@ var createTextInputComponent = (textInputProps, onComponentUpdate) => {
6020
6140
  performOnChange == null ? void 0 : performOnChange(prevValue, updatedValue);
6021
6141
  const isValid = getValidationErrors(updatedValue).length === 0;
6022
6142
  if (isValid) {
6023
- validateAsync == null ? void 0 : validateAsync(this, updatedValue);
6143
+ validateAsync == null ? void 0 : validateAsync(component, updatedValue);
6024
6144
  }
6025
6145
  if (!updatedValue) {
6026
6146
  validateAsync == null ? void 0 : validateAsync.cancel();
@@ -6028,26 +6148,26 @@ var createTextInputComponent = (textInputProps, onComponentUpdate) => {
6028
6148
  onValueChange();
6029
6149
  },
6030
6150
  async getSubmittableValue() {
6031
- return this.getSubmittableValueSync();
6151
+ return component.getSubmittableValueSync();
6032
6152
  },
6033
6153
  getSubmittableValueSync() {
6034
- return this.getLocalValue() || null;
6154
+ return component.getLocalValue() || null;
6035
6155
  },
6036
6156
  getSummary() {
6037
- return summariser(this.getLocalValue());
6157
+ return summariser(component.getLocalValue());
6038
6158
  },
6039
6159
  getLocalValue() {
6040
- return this.value;
6160
+ return component.value;
6041
6161
  },
6042
6162
  validate() {
6043
- const errors = getValidationErrors(this.getLocalValue());
6044
- this._update((draft) => {
6163
+ const errors = getValidationErrors(component.getLocalValue());
6164
+ update(component, (draft) => {
6045
6165
  draft.errors = errors;
6046
6166
  });
6047
6167
  return errors.length === 0;
6048
6168
  }
6049
6169
  }, rest);
6050
- return inputComponent;
6170
+ return component;
6051
6171
  };
6052
6172
 
6053
6173
  // src/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.ts
@@ -6291,7 +6411,7 @@ var mapStepToComponent = (_a) => {
6291
6411
  "onPoll",
6292
6412
  "onBehavior"
6293
6413
  ]);
6294
- var _a2;
6414
+ var _a2, _b2;
6295
6415
  const { etag, step, stepLocalValue, flowRequestCache, logEvent, onComponentUpdate } = restProps;
6296
6416
  const {
6297
6417
  id,
@@ -6310,6 +6430,12 @@ var mapStepToComponent = (_a) => {
6310
6430
  const registerSubmissionBehavior = (behavior) => {
6311
6431
  submissionBehaviors.push(behavior);
6312
6432
  };
6433
+ const mapperProps = __spreadProps(__spreadValues({}, restProps), {
6434
+ features,
6435
+ trackEvent,
6436
+ onBehavior,
6437
+ registerSubmissionBehavior
6438
+ });
6313
6439
  const back = mapBackNavigation(navigation, onBehavior, features.isEnabled("nativeBack"));
6314
6440
  const stepId = id || key;
6315
6441
  if (stepId === void 0) {
@@ -6325,18 +6451,15 @@ var mapStepToComponent = (_a) => {
6325
6451
  }) : void 0;
6326
6452
  const stepRefreshAfter = refreshAfter ? getStepRefreshAfter({ refreshAfter, logEvent, onBehavior }) : void 0;
6327
6453
  const stepPrefetch = getStepPrefetch(restProps.httpClient, flowRequestCache, submissionBehaviors);
6328
- const externalConfirmation = (external == null ? void 0 : external.url) ? createExternalConfirmation(
6329
- `${uid}-external-confirmation`,
6330
- external == null ? void 0 : external.url,
6331
- restProps.onLink,
6332
- onComponentUpdate
6333
- ) : void 0;
6334
- const mapperProps = __spreadProps(__spreadValues({}, restProps), {
6335
- features,
6336
- trackEvent,
6337
- onBehavior,
6454
+ const onLoadBehavior = getDomainLayerBehavior(
6455
+ { behavior: step.onLoad },
6456
+ (_a2 = step.actions) != null ? _a2 : [],
6338
6457
  registerSubmissionBehavior
6339
- });
6458
+ );
6459
+ const stepOnLoad = onLoadBehavior && onLoadBehavior.type !== "link" ? () => {
6460
+ void onBehavior(onLoadBehavior);
6461
+ } : void 0;
6462
+ const externalConfirmation = getExternalConfiguration(uid, external, onLoadBehavior, mapperProps);
6340
6463
  const referencedSchemaIds = getReferencedSchemaId(step);
6341
6464
  const schemaComponents = mapStepSchemas(uid, step, stepLocalValue, mapperProps);
6342
6465
  const { layout, footer } = getLayoutAndFooter(step, features);
@@ -6364,13 +6487,16 @@ var mapStepToComponent = (_a) => {
6364
6487
  stepRefreshAfter,
6365
6488
  title,
6366
6489
  tags,
6367
- stackBehavior: (_a2 = navigation == null ? void 0 : navigation.stackBehavior) != null ? _a2 : "default",
6490
+ stackBehavior: (_b2 = navigation == null ? void 0 : navigation.stackBehavior) != null ? _b2 : "default",
6368
6491
  stepPrefetch,
6369
6492
  step,
6370
6493
  referencedSchemaIds,
6494
+ features,
6371
6495
  onComponentUpdate,
6372
6496
  trackEvent,
6373
- onBehavior
6497
+ logEvent,
6498
+ onBehavior,
6499
+ onLoad: stepOnLoad
6374
6500
  });
6375
6501
  return stepComponent;
6376
6502
  };
@@ -6384,7 +6510,7 @@ var getReferencedSchemaId = (step) => {
6384
6510
  var mapBackNavigation = (navigation, onBehavior, isNativeBackEnabled) => {
6385
6511
  var _a;
6386
6512
  const backNavigation = (_a = navigation == null ? void 0 : navigation.back) != null ? _a : navigation == null ? void 0 : navigation.backButton;
6387
- const backBehavior = { type: "back", action: backNavigation == null ? void 0 : backNavigation.action };
6513
+ const backBehavior = { type: "back", action: backNavigation == null ? void 0 : backNavigation.action, track: false };
6388
6514
  return backNavigation || isNativeBackEnabled ? {
6389
6515
  title: backNavigation == null ? void 0 : backNavigation.title,
6390
6516
  onClick: () => {
@@ -6392,6 +6518,25 @@ var mapBackNavigation = (navigation, onBehavior, isNativeBackEnabled) => {
6392
6518
  }
6393
6519
  } : void 0;
6394
6520
  };
6521
+ var getExternalConfiguration = (uid, external, onLoad, mapperProps) => {
6522
+ if (onLoad.type === "link") {
6523
+ return createExternalConfirmation(
6524
+ `${uid}-external-confirmation`,
6525
+ onLoad == null ? void 0 : onLoad.url,
6526
+ mapperProps.onLink,
6527
+ mapperProps.onComponentUpdate
6528
+ );
6529
+ }
6530
+ if ((external == null ? void 0 : external.url) && onLoad.type === "none") {
6531
+ return createExternalConfirmation(
6532
+ `${uid}-external-confirmation`,
6533
+ external == null ? void 0 : external.url,
6534
+ mapperProps.onLink,
6535
+ mapperProps.onComponentUpdate
6536
+ );
6537
+ }
6538
+ return void 0;
6539
+ };
6395
6540
  var getLayoutAndFooter = (step, features) => {
6396
6541
  var _a;
6397
6542
  if (step.footer) {
@@ -6422,20 +6567,149 @@ var validateStepTypes = (step, logEvent) => {
6422
6567
  }
6423
6568
  };
6424
6569
 
6425
- // src/controller/executePoll.ts
6426
- var executePoll = async (props) => {
6427
- const { errorBehavior, signal, url, httpClient, trackEvent } = props;
6570
+ // src/controller/getFilenameFromContentDisposition.ts
6571
+ var getFilenameFromContentDisposition = (contentDisposition) => {
6572
+ var _a;
6573
+ if (!contentDisposition) {
6574
+ return "";
6575
+ }
6576
+ const parameters = getFilenames(contentDisposition);
6577
+ const { filename, filenameStar } = parameters;
6578
+ const decodedFilename = decodeFilename(filenameStar);
6579
+ return extractBasename((_a = decodedFilename != null ? decodedFilename : filename) != null ? _a : "");
6580
+ };
6581
+ var filenameRegex = /;\s*(filename\*?)\s*=\s*("[^"]*"|[^;]*)/gi;
6582
+ var getFilenames = (contentDisposition) => {
6583
+ var _a, _b;
6584
+ const params = Array.from(contentDisposition.matchAll(filenameRegex)).map((match) => {
6585
+ var _a2, _b2, _c;
6586
+ return [(_a2 = match[1]) == null ? void 0 : _a2.toLowerCase(), removeQuotes((_c = (_b2 = match[2]) == null ? void 0 : _b2.trim()) != null ? _c : "") || void 0];
6587
+ });
6588
+ return {
6589
+ filename: (_a = params.find(([key]) => key === "filename")) == null ? void 0 : _a[1],
6590
+ filenameStar: (_b = params.find(([key]) => key === "filename*")) == null ? void 0 : _b[1]
6591
+ };
6592
+ };
6593
+ var removeQuotes = (value) => {
6594
+ if (value.startsWith('"') && value.endsWith('"')) {
6595
+ return value.slice(1, -1);
6596
+ }
6597
+ return value;
6598
+ };
6599
+ var decodeFilename = (encodedFilename) => {
6600
+ if (!encodedFilename) {
6601
+ return void 0;
6602
+ }
6603
+ const sections = encodedFilename.split("'");
6604
+ const encodedValue = sections.length >= 3 ? sections.slice(2).join("'") : encodedFilename;
6428
6605
  try {
6429
- const response = await httpClient(url != null ? url : "", {
6430
- method: "GET",
6431
- signal
6432
- });
6433
- if (!response.ok) {
6434
- trackEvent("Polling Failed", { url, statusCode: response.status, variant: "revamp" });
6435
- return { type: "behavior", behavior: errorBehavior };
6436
- }
6437
- const responseType = getResponseTypeFromHeader(response.headers);
6438
- const body = await parseResponseBodyAsJsonElement(response);
6606
+ return decodeURIComponent(encodedValue);
6607
+ } catch (e) {
6608
+ return void 0;
6609
+ }
6610
+ };
6611
+ var extractBasename = (filename) => {
6612
+ var _a;
6613
+ const segments = filename.split(/[\\/]+/).filter(Boolean);
6614
+ return (_a = segments.at(-1)) != null ? _a : "";
6615
+ };
6616
+
6617
+ // src/controller/executeDownload.ts
6618
+ var getExecuteDownload = ({
6619
+ onNotification,
6620
+ getErrorMessageFunctions,
6621
+ trackEvent
6622
+ // TODO: add analytics after aligning with other client platforms
6623
+ }) => {
6624
+ const pendingRequests = createPendingRequestsSet();
6625
+ const executeDownload = async (request, httpClient) => {
6626
+ if (pendingRequests.has(request)) {
6627
+ return;
6628
+ }
6629
+ pendingRequests.add(request);
6630
+ onNotification == null ? void 0 : onNotification({ text: getErrorMessageFunctions().downloadStarted() });
6631
+ return fetchDownloadRequest(request, httpClient).then(saveBlob).then(() => {
6632
+ onNotification == null ? void 0 : onNotification({ text: getErrorMessageFunctions().downloadSuccessful() });
6633
+ }).catch((error) => {
6634
+ onNotification == null ? void 0 : onNotification({ text: getErrorMessageFunctions().downloadFailed() });
6635
+ throw error;
6636
+ }).finally(() => {
6637
+ pendingRequests.remove(request);
6638
+ });
6639
+ };
6640
+ return executeDownload;
6641
+ };
6642
+ var fetchDownloadRequest = async (request, httpClient) => {
6643
+ const { url, method, body, headers } = request;
6644
+ const requestBody = method === "GET" ? void 0 : JSON.stringify(body);
6645
+ const requestHeaders = filterForbiddenHeaders(headers);
6646
+ if (requestBody) {
6647
+ requestHeaders.set("Content-Type", "application/json");
6648
+ }
6649
+ const response = await httpClient(url, { method, body: requestBody, headers: requestHeaders });
6650
+ if (!response.ok) {
6651
+ throw new Error(`Download failed with status ${response.status}`);
6652
+ }
6653
+ const contentDisposition = response.headers.get("Content-Disposition");
6654
+ const filename = getFilenameFromContentDisposition(contentDisposition);
6655
+ const blob = await response.blob();
6656
+ return { filename, blob };
6657
+ };
6658
+ var saveBlob = async ({ blob, filename = "" }) => {
6659
+ const blobUrl = URL.createObjectURL(blob);
6660
+ const link = Object.assign(document.createElement("a"), {
6661
+ href: blobUrl,
6662
+ download: filename
6663
+ });
6664
+ document.body.appendChild(link);
6665
+ link.click();
6666
+ await wait();
6667
+ document.body.removeChild(link);
6668
+ URL.revokeObjectURL(blobUrl);
6669
+ };
6670
+ var filterForbiddenHeaders = (headers) => {
6671
+ const forbiddenHeaders = ["authorization", "cookie", "host"];
6672
+ const filteredHeaders = Object.entries(headers != null ? headers : {}).map(([key, value]) => [
6673
+ key.trim().toLowerCase(),
6674
+ value
6675
+ ]).filter(([key]) => !forbiddenHeaders.includes(key));
6676
+ return new Headers(filteredHeaders);
6677
+ };
6678
+ var wait = async () => new Promise((resolve) => {
6679
+ setTimeout(resolve, 0);
6680
+ });
6681
+ var createPendingRequestsSet = () => {
6682
+ const pendingRequests = /* @__PURE__ */ new Set();
6683
+ return {
6684
+ add: (request) => {
6685
+ const requestKey = JSON.stringify(request);
6686
+ pendingRequests.add(requestKey);
6687
+ },
6688
+ remove: (request) => {
6689
+ const requestKey = JSON.stringify(request);
6690
+ pendingRequests.delete(requestKey);
6691
+ },
6692
+ has: (request) => {
6693
+ const requestKey = JSON.stringify(request);
6694
+ return pendingRequests.has(requestKey);
6695
+ }
6696
+ };
6697
+ };
6698
+
6699
+ // src/controller/executePoll.ts
6700
+ var executePoll = async (props) => {
6701
+ const { errorBehavior, signal, url, httpClient, trackEvent } = props;
6702
+ try {
6703
+ const response = await httpClient(url != null ? url : "", {
6704
+ method: "GET",
6705
+ signal
6706
+ });
6707
+ if (!response.ok) {
6708
+ trackEvent("Polling Failed", { url, statusCode: response.status, variant: "revamp" });
6709
+ return { type: "behavior", behavior: errorBehavior };
6710
+ }
6711
+ const responseType = getResponseTypeFromHeader(response.headers);
6712
+ const body = await parseResponseBodyAsJsonElement(response);
6439
6713
  try {
6440
6714
  switch (responseType) {
6441
6715
  case "step": {
@@ -6452,10 +6726,10 @@ var executePoll = async (props) => {
6452
6726
  }
6453
6727
  case "modal": {
6454
6728
  assertModalResponseBody(body);
6455
- return { type: "behavior", behavior: __spreadValues({ type: "modal" }, body) };
6729
+ return { type: "behavior", behavior: __spreadProps(__spreadValues({ type: "modal" }, body), { track: false }) };
6456
6730
  }
6457
6731
  case "no-op": {
6458
- return { type: "behavior", behavior: { type: "none" } };
6732
+ return { type: "behavior", behavior: { type: "none", track: false } };
6459
6733
  }
6460
6734
  case "subflow": {
6461
6735
  assertSubflowResponseBody(body);
@@ -6480,7 +6754,8 @@ var executePoll = async (props) => {
6480
6754
  };
6481
6755
  var actionResponseBodyToBehavior = (body) => ({
6482
6756
  type: "non-merging-action",
6483
- action: body.action
6757
+ action: body.action,
6758
+ track: false
6484
6759
  });
6485
6760
 
6486
6761
  // src/controller/executeRefresh.ts
@@ -6535,36 +6810,30 @@ var executeRefresh = async (props) => {
6535
6810
  };
6536
6811
 
6537
6812
  // src/domain/components/SubflowComponent.ts
6538
- var createSubflowComponent = (subflowProps, onComponentUpdate) => {
6539
- switch (subflowProps.subflowType) {
6813
+ var createSubflowComponent = (props, onComponentUpdate) => {
6814
+ switch (props.subflowType) {
6540
6815
  case "dynamic":
6541
- return createDynamicSubflowComponent(subflowProps, onComponentUpdate);
6816
+ return createDynamicSubflowComponent(props, onComponentUpdate);
6542
6817
  case "native":
6543
- return createNativeSubflowComponent(subflowProps);
6818
+ return createNativeSubflowComponent(props);
6544
6819
  }
6545
6820
  };
6546
- var createDynamicSubflowComponent = (subflowProps, onComponentUpdate) => {
6821
+ var createDynamicSubflowComponent = (props, onComponentUpdate) => {
6547
6822
  const update = getInputUpdateFunction(onComponentUpdate);
6548
- const subflowComponent = __spreadProps(__spreadValues({
6823
+ return __spreadValues({
6549
6824
  uid: `subflow-dynamic-${getRandomId()}`,
6550
6825
  type: "subflow",
6551
6826
  subflowType: "dynamic",
6552
6827
  kind: "layout"
6553
- }, subflowProps), {
6554
- _update(updateFn) {
6555
- update(this, updateFn);
6556
- }
6557
- });
6558
- return subflowComponent;
6828
+ }, props);
6559
6829
  };
6560
- var createNativeSubflowComponent = (subflowProps) => {
6561
- const subflowComponent = __spreadValues({
6830
+ var createNativeSubflowComponent = (props) => {
6831
+ return __spreadValues({
6562
6832
  uid: `subflow-native-${getRandomId()}`,
6563
6833
  type: "subflow",
6564
6834
  subflowType: "native",
6565
6835
  kind: "layout"
6566
- }, subflowProps);
6567
- return subflowComponent;
6836
+ }, props);
6568
6837
  };
6569
6838
 
6570
6839
  // src/controller/executeSubflow.ts
@@ -6694,13 +6963,14 @@ var getStepCounter = () => {
6694
6963
 
6695
6964
  // src/controller/FlowController.ts
6696
6965
  var createFlowController = (props) => {
6697
- const _a = props, {
6966
+ const {
6698
6967
  flowId,
6699
6968
  initialAction,
6700
6969
  initialStep,
6701
6970
  backConfig,
6702
6971
  features,
6703
6972
  nativeSubflowHandlers,
6973
+ requestCache,
6704
6974
  getErrorMessageFunctions,
6705
6975
  scrollToTop,
6706
6976
  onChange,
@@ -6708,38 +6978,21 @@ var createFlowController = (props) => {
6708
6978
  onCompletion,
6709
6979
  onCopy,
6710
6980
  onLink,
6981
+ onNotification,
6711
6982
  onError,
6712
6983
  onEvent,
6713
6984
  onLog,
6714
6985
  onValueChange
6715
- } = _a, rest = __objRest(_a, [
6716
- "flowId",
6717
- "initialAction",
6718
- "initialStep",
6719
- "backConfig",
6720
- "features",
6721
- "nativeSubflowHandlers",
6722
- "getErrorMessageFunctions",
6723
- "scrollToTop",
6724
- "onChange",
6725
- "onCancellation",
6726
- "onCompletion",
6727
- "onCopy",
6728
- "onLink",
6729
- "onError",
6730
- "onEvent",
6731
- "onLog",
6732
- "onValueChange"
6733
- ]);
6986
+ } = props;
6734
6987
  const httpClient = getHttpClientWithCapabilities(props.httpClient, nativeSubflowHandlers);
6735
6988
  const rootComponent = createRootDomainComponent(
6736
6989
  onChange,
6737
6990
  scrollToTop,
6738
6991
  backConfig,
6739
- normaliseRequestCache(rest.requestCache)
6992
+ normaliseRequestCache(requestCache)
6740
6993
  );
6741
6994
  const stepCount = getStepCounter();
6742
- const abortController = getRequestAbortController();
6995
+ const refreshAbortController = getRequestAbortController();
6743
6996
  const createStep = (newStep, etag) => {
6744
6997
  if (rootComponent.hasStep()) {
6745
6998
  stepCount.increment();
@@ -6751,8 +7004,8 @@ var createFlowController = (props) => {
6751
7004
  }
6752
7005
  };
6753
7006
  const updateStep = (newStep, etag) => {
6754
- var _a2;
6755
- const component = createStepComponent2(newStep, etag, (_a2 = rootComponent.getLocalValue()) != null ? _a2 : null);
7007
+ var _a;
7008
+ const component = createStepComponent2(newStep, etag, (_a = rootComponent.getLocalValue()) != null ? _a : null);
6756
7009
  if (component) {
6757
7010
  rootComponent.updateStep(component);
6758
7011
  rootComponent.setLoadingState("idle");
@@ -6787,14 +7040,14 @@ var createFlowController = (props) => {
6787
7040
  }
6788
7041
  };
6789
7042
  const getStep = () => {
6790
- var _a2;
7043
+ var _a;
6791
7044
  const stepComponent = rootComponent.getStep();
6792
- return (_a2 = stepComponent == null ? void 0 : stepComponent.step) != null ? _a2 : initialStep;
7045
+ return (_a = stepComponent == null ? void 0 : stepComponent.step) != null ? _a : initialStep;
6793
7046
  };
6794
7047
  const trackEvent = (eventName, properties) => {
6795
- var _a2, _b;
7048
+ var _a, _b;
6796
7049
  const step = getStep();
6797
- const stepId = (_b = (_a2 = step == null ? void 0 : step.id) != null ? _a2 : step == null ? void 0 : step.key) != null ? _b : null;
7050
+ const stepId = (_b = (_a = step == null ? void 0 : step.id) != null ? _a : step == null ? void 0 : step.key) != null ? _b : null;
6798
7051
  const analytics = step == null ? void 0 : step.analytics;
6799
7052
  const metadata = __spreadValues(__spreadValues(__spreadValues(__spreadValues({
6800
7053
  flowId,
@@ -6805,10 +7058,16 @@ var createFlowController = (props) => {
6805
7058
  } catch (e) {
6806
7059
  }
6807
7060
  };
7061
+ const trackCoreEvent = trackEvent;
7062
+ const executeDownload = getExecuteDownload({
7063
+ onNotification,
7064
+ getErrorMessageFunctions,
7065
+ trackEvent
7066
+ });
6808
7067
  const logEvent = (level, message, properties) => {
6809
- var _a2, _b;
7068
+ var _a, _b;
6810
7069
  const step = getStep();
6811
- const stepId = (_b = (_a2 = step == null ? void 0 : step.id) != null ? _a2 : step == null ? void 0 : step.key) != null ? _b : null;
7070
+ const stepId = (_b = (_a = step == null ? void 0 : step.id) != null ? _a : step == null ? void 0 : step.key) != null ? _b : null;
6812
7071
  try {
6813
7072
  onLog == null ? void 0 : onLog(level, message, __spreadValues(__spreadValues(__spreadProps(__spreadValues({}, properties), {
6814
7073
  flowId
@@ -6818,17 +7077,26 @@ var createFlowController = (props) => {
6818
7077
  };
6819
7078
  const closeWithError = (error, analytics, statusCode) => {
6820
7079
  rootComponent.stop();
6821
- trackEvent("Failed", __spreadValues({}, analytics));
7080
+ trackCoreEvent("Failed", __spreadValues({}, analytics));
6822
7081
  logEvent("error", "Dynamic Flow failed", { errorMessage: getErrorMessage(error), analytics });
6823
7082
  onError(error, statusCode);
6824
7083
  };
6825
7084
  const closeWithCancellation = () => {
6826
- trackEvent("Cancelled");
7085
+ trackCoreEvent("Cancelled");
6827
7086
  onCancellation == null ? void 0 : onCancellation();
6828
7087
  };
6829
7088
  const onBehavior = async (behavior) => {
6830
- var _a2;
7089
+ var _a;
7090
+ trackBehaviorTriggered(trackEvent, behavior);
6831
7091
  switch (behavior.type) {
7092
+ case "download": {
7093
+ try {
7094
+ await executeDownload(behavior.request, httpClient);
7095
+ } catch (error) {
7096
+ logEvent("error", "Download failed", { errorMessage: getErrorMessage(error) });
7097
+ }
7098
+ break;
7099
+ }
6832
7100
  case "back": {
6833
7101
  if (behavior.action) {
6834
7102
  onAction(behavior.action, null).then(() => {
@@ -6863,6 +7131,7 @@ var createFlowController = (props) => {
6863
7131
  void onAction(action, model);
6864
7132
  } else {
6865
7133
  rootComponent.setLoadingState("idle");
7134
+ scrollToTop("smooth");
6866
7135
  }
6867
7136
  } catch (e) {
6868
7137
  rootComponent.setLoadingState("idle");
@@ -6885,7 +7154,7 @@ var createFlowController = (props) => {
6885
7154
  void onRefresh({ refreshUrl: behavior.url, analytics: behavior.analytics });
6886
7155
  return {
6887
7156
  abort: () => {
6888
- abortController.abort();
7157
+ refreshAbortController.abort();
6889
7158
  }
6890
7159
  };
6891
7160
  }
@@ -6894,7 +7163,7 @@ var createFlowController = (props) => {
6894
7163
  break;
6895
7164
  }
6896
7165
  case "modal": {
6897
- const currentStep = (_a2 = rootComponent.getStep()) == null ? void 0 : _a2.step;
7166
+ const currentStep = (_a = rootComponent.getStep()) == null ? void 0 : _a.step;
6898
7167
  if (currentStep) {
6899
7168
  rootComponent.showModal(
6900
7169
  modalToComponent(
@@ -6945,14 +7214,14 @@ var createFlowController = (props) => {
6945
7214
  } };
6946
7215
  };
6947
7216
  const onAction = async (action, model) => {
6948
- var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j;
7217
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
6949
7218
  try {
6950
7219
  rootComponent.setLoadingState("submitting");
6951
7220
  const command = await executeSubmission({
6952
7221
  action,
6953
7222
  model,
6954
7223
  isInitial: !rootComponent.hasStep(),
6955
- requestCache: (_b = (_a2 = rootComponent.getStep()) == null ? void 0 : _a2.requestCache) != null ? _b : rootComponent.requestCache,
7224
+ requestCache: (_b = (_a = rootComponent.getStep()) == null ? void 0 : _a.requestCache) != null ? _b : rootComponent.requestCache,
6956
7225
  httpClient,
6957
7226
  trackEvent,
6958
7227
  logEvent
@@ -6960,7 +7229,7 @@ var createFlowController = (props) => {
6960
7229
  switch (command.type) {
6961
7230
  case "complete": {
6962
7231
  onCompletion(command.result);
6963
- trackEvent("Succeeded");
7232
+ trackCoreEvent("Succeeded");
6964
7233
  if (features.isEnabled("continueAfterCompletion")) {
6965
7234
  rootComponent.setLoadingState("idle");
6966
7235
  } else {
@@ -6972,7 +7241,7 @@ var createFlowController = (props) => {
6972
7241
  const isFirstStep = !rootComponent.hasStep();
6973
7242
  rootComponent.closeSubflow();
6974
7243
  createStep(command.step, command.etag);
6975
- trackEvent("Step Shown", { isFirstStep });
7244
+ trackCoreEvent("Step Shown", { isFirstStep });
6976
7245
  break;
6977
7246
  }
6978
7247
  case "error": {
@@ -6989,8 +7258,10 @@ var createFlowController = (props) => {
6989
7258
  // and the model that was submitted
6990
7259
  polling: void 0,
6991
7260
  // and no polling, to avoid restarting it
6992
- external: void 0
7261
+ external: void 0,
6993
7262
  // and no external, to avoid retriggering it
7263
+ onLoad: void 0
7264
+ // and no onLoad, to avoid retriggering it (how is this still the best we have. Should refactor soon)
6994
7265
  }),
6995
7266
  (_f = (_e = rootComponent.getStep()) == null ? void 0 : _e.etag) != null ? _f : null
6996
7267
  );
@@ -7029,13 +7300,13 @@ var createFlowController = (props) => {
7029
7300
  errorsOverride,
7030
7301
  analytics
7031
7302
  }) => {
7032
- var _a2, _b, _c;
7303
+ var _a, _b, _c;
7033
7304
  try {
7034
7305
  rootComponent.setLoadingState("refreshing");
7035
7306
  const model = rootComponent.getSubmittableValueSync();
7036
7307
  const command = await executeRefresh({
7037
- abortSignal: abortController.abortAndGetNewSignal(),
7038
- url: (_a2 = refreshUrl != null ? refreshUrl : rootComponent.getRefreshUrl()) != null ? _a2 : "",
7308
+ abortSignal: refreshAbortController.abortAndGetNewSignal(),
7309
+ url: (_a = refreshUrl != null ? refreshUrl : rootComponent.getRefreshUrl()) != null ? _a : "",
7039
7310
  model,
7040
7311
  etag: (_c = (_b = rootComponent.getStep()) == null ? void 0 : _b.etag) != null ? _c : null,
7041
7312
  analytics,
@@ -7091,14 +7362,14 @@ var createFlowController = (props) => {
7091
7362
  let initState = "initial";
7092
7363
  if (initialStep) {
7093
7364
  initState = "created";
7094
- trackEvent("Initiated");
7365
+ trackCoreEvent("Initiated");
7095
7366
  createStep(initialStep, null);
7096
- trackEvent("Step Shown", { isFirstStep: true });
7367
+ trackCoreEvent("Step Shown", { isFirstStep: true });
7097
7368
  }
7098
7369
  const start = () => {
7099
7370
  if (initState === "initial" && initialAction) {
7100
7371
  initState = "created";
7101
- trackEvent("Initiated");
7372
+ trackCoreEvent("Initiated");
7102
7373
  rootComponent.setLoadingState("submitting");
7103
7374
  void onAction(__spreadValues({ method: "GET" }, initialAction), null).then(() => {
7104
7375
  initState = "started";
@@ -7297,6 +7568,26 @@ var multi_file_upload_messages_default = defineMessages5({
7297
7568
  }
7298
7569
  });
7299
7570
 
7571
+ // src/common/messages/download.messages.ts
7572
+ import { defineMessages as defineMessages6 } from "react-intl";
7573
+ var download_messages_default = defineMessages6({
7574
+ downloadStarted: {
7575
+ id: "dynamicFlows.DownloadFeedback.started",
7576
+ defaultMessage: "Downloading...",
7577
+ description: "Appears in a snackbar when a download starts."
7578
+ },
7579
+ downloadSuccessful: {
7580
+ id: "dynamicFlows.DownloadFeedback.successful",
7581
+ defaultMessage: "Download successful",
7582
+ description: "Appears in a snackbar when a download succeeds."
7583
+ },
7584
+ downloadFailed: {
7585
+ id: "dynamicFlows.DownloadFeedback.failed",
7586
+ defaultMessage: "Download failed",
7587
+ description: "Appears in a snackbar when a download fails."
7588
+ }
7589
+ });
7590
+
7300
7591
  // src/renderers/getSchemaErrorMessageFunction.ts
7301
7592
  function getSchemaErrorMessageFunction(formatMessage, locale) {
7302
7593
  return (validationMessages) => createErrorMessageFunctions(validationMessages != null ? validationMessages : {}, formatMessage, locale);
@@ -7383,6 +7674,15 @@ var createErrorMessageFunctions = (validationMessages, formatMessage, locale) =>
7383
7674
  },
7384
7675
  genericErrorWithRetry() {
7385
7676
  return formatMessage(generic_error_messages_default.genericErrorRetryHint);
7677
+ },
7678
+ downloadStarted() {
7679
+ return formatMessage(download_messages_default.downloadStarted);
7680
+ },
7681
+ downloadFailed() {
7682
+ return formatMessage(download_messages_default.downloadFailed);
7683
+ },
7684
+ downloadSuccessful() {
7685
+ return formatMessage(download_messages_default.downloadSuccessful);
7386
7686
  }
7387
7687
  });
7388
7688
  var formatDateOptions = {
@@ -7390,6 +7690,28 @@ var formatDateOptions = {
7390
7690
  dateStyle: "long"
7391
7691
  };
7392
7692
 
7693
+ // src/renderers/mappers/utils/mapCallToAction.ts
7694
+ var mapCallToAction = (_a) => {
7695
+ var _b = _a, {
7696
+ hrefWithTracking
7697
+ } = _b, cta = __objRest(_b, [
7698
+ "hrefWithTracking"
7699
+ ]);
7700
+ return __spreadProps(__spreadValues({}, cta), {
7701
+ getAnchorProps: hrefWithTracking
7702
+ });
7703
+ };
7704
+ var mapCallToActionOptional = (cta) => cta ? mapCallToAction(cta) : void 0;
7705
+ var mapAdditionalInfo2 = (info) => {
7706
+ if (info) {
7707
+ const _a = info, { hrefWithTracking } = _a, rest = __objRest(_a, ["hrefWithTracking"]);
7708
+ return __spreadProps(__spreadValues({}, rest), {
7709
+ getAnchorProps: hrefWithTracking
7710
+ });
7711
+ }
7712
+ return void 0;
7713
+ };
7714
+
7393
7715
  // src/renderers/mappers/utils/pick.ts
7394
7716
  function pick(obj, ...keys) {
7395
7717
  const result = {};
@@ -7400,18 +7722,9 @@ function pick(obj, ...keys) {
7400
7722
  }
7401
7723
 
7402
7724
  // src/renderers/mappers/alertComponentToProps.ts
7403
- var alertComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadValues({}, pick(
7404
- component,
7405
- "uid",
7406
- "analyticsId",
7407
- "type",
7408
- "callToAction",
7409
- "context",
7410
- "control",
7411
- "margin",
7412
- "markdown",
7413
- "tags"
7414
- )), rendererMapperProps);
7725
+ var alertComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "context", "control", "margin", "markdown", "tags")), {
7726
+ callToAction: mapCallToActionOptional(component.callToAction)
7727
+ }), rendererMapperProps);
7415
7728
 
7416
7729
  // src/renderers/mappers/allOfComponentToProps.ts
7417
7730
  var allOfComponentToProps = (component, rendererMapperProps) => {
@@ -7463,56 +7776,47 @@ var getValidationState = (errors, validationAsyncState) => {
7463
7776
  // src/renderers/mappers/utils/inputComponentToProps.ts
7464
7777
  var inputComponentToProps = (component, type) => {
7465
7778
  var _a;
7466
- const {
7467
- uid,
7468
- analyticsId,
7469
- control,
7470
- description,
7471
- disabled,
7472
- errors,
7473
- help,
7474
- id,
7475
- media,
7476
- placeholder,
7477
- required,
7478
- title,
7479
- tags,
7480
- validationAsyncState,
7481
- onBlur,
7482
- onFocus
7483
- } = component;
7779
+ const { errors, validationAsyncState } = component;
7484
7780
  const { messages } = validationAsyncState != null ? validationAsyncState : {};
7485
- return {
7486
- uid,
7487
- analyticsId,
7781
+ return __spreadProps(__spreadValues({}, pick(
7782
+ component,
7783
+ "uid",
7784
+ "analyticsId",
7785
+ "control",
7786
+ "description",
7787
+ "disabled",
7788
+ "help",
7789
+ "id",
7790
+ "media",
7791
+ "placeholder",
7792
+ "required",
7793
+ "title",
7794
+ "tags",
7795
+ "inlineAlert",
7796
+ "onBlur",
7797
+ "onFocus"
7798
+ )), {
7488
7799
  type,
7489
- control,
7490
- description,
7491
- disabled,
7492
7800
  error: (_a = messages == null ? void 0 : messages.error) != null ? _a : errors == null ? void 0 : errors[0],
7493
- help,
7494
- id,
7495
- media,
7496
- placeholder,
7497
- required,
7498
- title,
7499
- tags,
7500
- validationState: getValidationState(errors, validationAsyncState),
7501
7801
  value: component.getLocalValue(),
7502
- onBlur: onBlur.bind(component),
7503
- onFocus: onFocus.bind(component)
7504
- };
7802
+ validationState: getValidationState(errors, validationAsyncState),
7803
+ fieldLoadingState: getFieldLoadingState(component)
7804
+ });
7805
+ };
7806
+ var getFieldLoadingState = (component) => {
7807
+ const { validationAsyncState } = component;
7808
+ if (!validationAsyncState) {
7809
+ return "idle";
7810
+ }
7811
+ return validationAsyncState.loadingState === "pending" ? "validating" : "idle";
7505
7812
  };
7506
7813
 
7507
7814
  // src/renderers/mappers/booleanInputComponentToProps.ts
7508
7815
  var booleanInputComponentToProps = (component, rendererMapperProps) => {
7509
7816
  var _a;
7510
- return __spreadProps(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-checkbox")), rendererMapperProps), {
7511
- additionalText: component.additionalText,
7512
- supportingValues: component.supportingValues,
7513
- inlineAlert: component.inlineAlert,
7514
- value: (_a = component.value) != null ? _a : false,
7515
- onChange: component.onChange.bind(component)
7817
+ return __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-checkbox")), rendererMapperProps), pick(component, "additionalText", "supportingValues", "inlineAlert")), {
7818
+ onChange: component.setValue,
7819
+ value: (_a = component.value) != null ? _a : false
7516
7820
  });
7517
7821
  };
7518
7822
 
@@ -7561,30 +7865,14 @@ var buttonComponentToProps = (component, rendererMapperProps) => {
7561
7865
  };
7562
7866
 
7563
7867
  // src/renderers/mappers/columnsComponentToProps.ts
7564
- var columnsComponentToProps = ({
7565
- uid,
7566
- analyticsId,
7567
- bias,
7568
- control,
7569
- margin,
7570
- tags,
7571
- startComponents,
7572
- endComponents
7573
- }, rendererMapperProps) => {
7574
- const startChildrenProps = startComponents.map(
7868
+ var columnsComponentToProps = (component, rendererMapperProps) => {
7869
+ const startChildrenProps = component.startComponents.map(
7575
7870
  (c) => componentToRendererProps(c, rendererMapperProps)
7576
7871
  );
7577
- const endChildrenProps = endComponents.map(
7872
+ const endChildrenProps = component.endComponents.map(
7578
7873
  (c) => componentToRendererProps(c, rendererMapperProps)
7579
7874
  );
7580
- return __spreadProps(__spreadValues({}, rendererMapperProps), {
7581
- uid,
7582
- analyticsId,
7583
- type: "columns",
7584
- bias,
7585
- control,
7586
- margin,
7587
- tags,
7875
+ return __spreadProps(__spreadValues(__spreadValues({}, rendererMapperProps), pick(component, "uid", "analyticsId", "type", "bias", "control", "margin", "tags")), {
7588
7876
  startChildren: startChildrenProps.map(rendererMapperProps.render),
7589
7877
  endChildren: endChildrenProps.map(rendererMapperProps.render),
7590
7878
  startChildrenProps,
@@ -7608,29 +7896,24 @@ var constComponentToProps = (component, rendererMapperProps) => {
7608
7896
  // src/renderers/mappers/containerComponentToProps.ts
7609
7897
  var containerComponentToProps = (component, rendererMapperProps) => {
7610
7898
  const childrenProps = component.getChildren().map((c) => componentToRendererProps(c, rendererMapperProps));
7611
- return __spreadValues({
7612
- type: "container",
7613
- uid: component.uid,
7899
+ return __spreadValues(__spreadProps(__spreadValues({}, pick(component, "type", "uid")), {
7614
7900
  children: childrenProps.map(rendererMapperProps.render),
7615
7901
  childrenProps
7616
- }, rendererMapperProps);
7902
+ }), rendererMapperProps);
7617
7903
  };
7618
7904
 
7619
7905
  // src/renderers/mappers/dateInputComponentToProps.ts
7620
- var dateInputComponentToProps = (component, rendererMapperProps) => __spreadProps(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-date")), rendererMapperProps), {
7621
- autoComplete: component.autoComplete,
7622
- minimumDate: component.minimumDate,
7623
- maximumDate: component.maximumDate,
7624
- suggestions: component.suggestions,
7625
- onChange: component.onChange.bind(component)
7906
+ var dateInputComponentToProps = (component, rendererMapperProps) => __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-date")), rendererMapperProps), pick(component, "autoComplete", "minimumDate", "maximumDate", "suggestions")), {
7907
+ onChange: component.setValue
7626
7908
  });
7627
7909
 
7628
7910
  // src/renderers/mappers/decisionComponentToProps.ts
7629
7911
  var decisionComponentToProps = (component, rendererMapperProps) => __spreadProps(__spreadValues(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "title", "tags")), rendererMapperProps), {
7630
7912
  options: component.options.map((_a) => {
7631
- var _b = _a, { disabled } = _b, rest = __objRest(_b, ["disabled"]);
7632
- return __spreadProps(__spreadValues({}, rest), {
7633
- disabled: disabled || rendererMapperProps.stepLoadingState !== "idle"
7913
+ var _b = _a, { disabled } = _b, option = __objRest(_b, ["disabled"]);
7914
+ return __spreadProps(__spreadValues({}, option), {
7915
+ disabled: disabled || rendererMapperProps.stepLoadingState !== "idle",
7916
+ getAnchorProps: option.hrefWithTracking
7634
7917
  });
7635
7918
  })
7636
7919
  });
@@ -7640,14 +7923,11 @@ var dividerComponentToProps = (component, rendererMapperProps) => __spreadValues
7640
7923
 
7641
7924
  // src/renderers/mappers/externalComponentToProps.ts
7642
7925
  var externalComponentToProps = (component, rendererMapperProps) => {
7643
- return __spreadValues({
7644
- type: "external-confirmation",
7645
- uid: component.uid,
7646
- url: component.url,
7647
- visible: component.status === "failure",
7648
- open: component.open.bind(component),
7649
- onCancel: component.onCancel.bind(component)
7650
- }, rendererMapperProps);
7926
+ return __spreadValues(__spreadProps(__spreadValues({
7927
+ type: "external-confirmation"
7928
+ }, pick(component, "uid", "url", "open", "onCancel")), {
7929
+ visible: component.status === "failure"
7930
+ }), rendererMapperProps);
7651
7931
  };
7652
7932
 
7653
7933
  // src/renderers/mappers/formattedValueComponentToProps.ts
@@ -7668,25 +7948,18 @@ var formattedValueComponentToProps = (component, rendererMapperProps) => {
7668
7948
  // for now, we don't want to pass `value` down to the renderer to avoid the "WhateverComponent".
7669
7949
  // 'value',
7670
7950
  )), {
7671
- validationState: getValidationState(component.errors, void 0),
7672
- onChange: component.onChange.bind(component)
7951
+ onChange: component.setValue,
7952
+ validationState: getValidationState(component.errors, void 0)
7673
7953
  }), rendererMapperProps);
7674
7954
  };
7675
7955
 
7676
7956
  // src/renderers/mappers/formComponentToProps.ts
7677
7957
  var formComponentToProps = (component, rendererMapperProps) => {
7678
7958
  const childrenProps = component.getChildren().map((c) => componentToRendererProps(c, rendererMapperProps));
7679
- const { uid, analyticsId, control, margin, tags } = component;
7680
- return __spreadValues({
7681
- uid,
7682
- analyticsId,
7683
- type: "form",
7959
+ return __spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "tags")), {
7684
7960
  children: childrenProps.map(rendererMapperProps.render),
7685
- childrenProps,
7686
- control,
7687
- margin,
7688
- tags
7689
- }, rendererMapperProps);
7961
+ childrenProps
7962
+ }), rendererMapperProps);
7690
7963
  };
7691
7964
 
7692
7965
  // src/renderers/mappers/headingComponentToProps.ts
@@ -7719,26 +7992,18 @@ var imageComponentToProps = (component, rendererMapperProps) => __spreadProps(__
7719
7992
  var instructionsComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "items", "margin", "title", "tags")), rendererMapperProps);
7720
7993
 
7721
7994
  // src/renderers/mappers/integerInputComponentToProps.ts
7722
- var integerInputComponentToProps = (component, rendererMapperProps) => __spreadProps(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-integer")), rendererMapperProps), {
7723
- autoComplete: component.autoComplete,
7724
- maximum: component.maximum,
7725
- minimum: component.minimum,
7726
- onChange: component.onChange.bind(component)
7995
+ var integerInputComponentToProps = (component, rendererMapperProps) => __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-integer")), rendererMapperProps), pick(component, "autoComplete", "maximum", "minimum")), {
7996
+ onChange: component.setValue
7727
7997
  });
7728
7998
 
7729
7999
  // src/renderers/mappers/listComponentToProps.ts
7730
- var listComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadValues({}, pick(
7731
- component,
7732
- "uid",
7733
- "analyticsId",
7734
- "type",
7735
- "callToAction",
7736
- "control",
7737
- "items",
7738
- "margin",
7739
- "title",
7740
- "tags"
7741
- )), rendererMapperProps);
8000
+ var listComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "title", "tags")), {
8001
+ callToAction: mapCallToActionOptional(component.callToAction),
8002
+ items: component.items.map((item) => __spreadProps(__spreadValues({}, item), {
8003
+ callToAction: mapCallToActionOptional(item.callToAction),
8004
+ additionalInfo: mapAdditionalInfo2(item.additionalInfo)
8005
+ }))
8006
+ }), rendererMapperProps);
7742
8007
 
7743
8008
  // src/renderers/mappers/loadingIndicatorComponentToProps.ts
7744
8009
  var loadingIndicatorComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "size", "tags")), rendererMapperProps);
@@ -7762,39 +8027,25 @@ var mediaComponentToProps = (component, rendererMapperProps) => __spreadValues(_
7762
8027
 
7763
8028
  // src/renderers/mappers/modalComponentToProps.ts
7764
8029
  var modalComponentToProps = (component, rendererMapperProps) => {
7765
- const { uid, analyticsId, open, tags, title, close } = component;
7766
8030
  const childrenProps = component.getChildren().map((c) => componentToRendererProps(c, rendererMapperProps));
7767
- return __spreadValues({
7768
- uid,
7769
- analyticsId,
7770
- type: "modal",
7771
- open,
7772
- tags,
7773
- title,
8031
+ return __spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "open", "tags", "title")), {
7774
8032
  children: childrenProps.map(rendererMapperProps.render),
7775
8033
  childrenProps,
7776
- onClose: close.bind(component)
7777
- }, rendererMapperProps);
8034
+ onClose: component.close
8035
+ }), rendererMapperProps);
7778
8036
  };
7779
8037
 
7780
8038
  // src/renderers/mappers/modalLayoutComponentToProps.ts
7781
8039
  var modalLayoutComponentToProps = (component, rendererMapperProps) => {
7782
- const { uid, analyticsId, content, control, margin, tags, trigger } = component;
8040
+ const { content } = component;
7783
8041
  const childrenProps = component.getChildren().map((c) => componentToRendererProps(c, rendererMapperProps));
7784
- return __spreadValues({
7785
- uid,
7786
- analyticsId,
7787
- type: "modal-layout",
8042
+ return __spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "tags", "trigger")), {
7788
8043
  content: {
7789
8044
  children: childrenProps.map(rendererMapperProps.render),
7790
8045
  childrenProps,
7791
8046
  title: content.title
7792
- },
7793
- control,
7794
- margin,
7795
- tags,
7796
- trigger
7797
- }, rendererMapperProps);
8047
+ }
8048
+ }), rendererMapperProps);
7798
8049
  };
7799
8050
 
7800
8051
  // src/renderers/mappers/moneyInputComponentToProps.ts
@@ -7821,8 +8072,8 @@ var moneyInputComponentToProps = (component, rendererMapperProps) => {
7821
8072
  return __spreadValues(__spreadProps(__spreadValues({}, inputComponentToProps(component, "money-input")), {
7822
8073
  amountValue: amountComponent.getLocalValue(),
7823
8074
  selectedCurrencyIndex: currencyComponent.selectedIndex,
7824
- onAmountChange: amountComponent.onChange.bind(amountComponent),
7825
- onCurrencyChange: currencyComponent.onSelect.bind(currencyComponent),
8075
+ onAmountChange: amountComponent.setValue,
8076
+ onCurrencyChange: currencyComponent.selectIndex,
7826
8077
  placeholder: amountComponent.placeholder,
7827
8078
  currencies,
7828
8079
  validationState
@@ -7854,47 +8105,42 @@ var selectInputOptionsToProps = (options, children, rendererMapperProps) => {
7854
8105
 
7855
8106
  // src/renderers/mappers/multiSelectComponentToProps.ts
7856
8107
  var multiSelectInputComponentToProps = (component, rendererMapperProps) => {
7857
- const { autoComplete, maxItems, minItems, selectedIndices, onSelect } = component;
7858
8108
  const _a = inputComponentToProps(component, "input-multi-select"), { required, value } = _a, props = __objRest(_a, ["required", "value"]);
7859
8109
  const options = selectInputOptionsToProps(
7860
8110
  component.options,
7861
8111
  component.getChildren(),
7862
8112
  rendererMapperProps
7863
8113
  );
7864
- return __spreadProps(__spreadValues(__spreadValues({}, props), rendererMapperProps), {
7865
- autoComplete,
7866
- maxItems,
7867
- minItems,
7868
- options,
7869
- selectedIndices,
7870
- onSelect: onSelect.bind(component)
8114
+ return __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), rendererMapperProps), pick(component, "autoComplete", "maxItems", "minItems", "selectedIndices")), {
8115
+ onSelect: component.selectIndices,
8116
+ options
7871
8117
  });
7872
8118
  };
7873
8119
 
7874
8120
  // src/renderers/mappers/multiUploadInputComponentToProps.ts
7875
8121
  var multiUploadInputComponentToProps = (component, rendererMapperProps) => {
7876
- const { accepts, cameraConfig, files, maxSize, minItems, maxItems, source, uploadLabel } = component;
7877
- return __spreadProps(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-upload-multi")), rendererMapperProps), {
7878
- accepts,
7879
- cameraConfig,
7880
- maxSize,
7881
- minItems,
7882
- maxItems,
7883
- source,
7884
- uploadLabel,
8122
+ const { files } = component;
8123
+ return __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-upload-multi")), rendererMapperProps), pick(
8124
+ component,
8125
+ "accepts",
8126
+ "cameraConfig",
8127
+ "maxSize",
8128
+ "minItems",
8129
+ "maxItems",
8130
+ "source",
8131
+ "uploadLabel"
8132
+ )), {
7885
8133
  value: files.map((file) => __spreadProps(__spreadValues({}, file), {
7886
8134
  validationState: mapErrorsToValidationState(file.errors)
7887
8135
  })),
7888
- onInsertFile: component.onInsertFile.bind(component),
7889
- onRemoveFile: component.onRemoveFile.bind(component)
8136
+ onInsertFile: component.insertFile,
8137
+ onRemoveFile: component.removeFile
7890
8138
  });
7891
8139
  };
7892
8140
 
7893
8141
  // src/renderers/mappers/numberInputComponentToProps.ts
7894
- var numberInputComponentToProps = (component, rendererMapperProps) => __spreadProps(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-number")), rendererMapperProps), {
7895
- maximum: component.maximum,
7896
- minimum: component.minimum,
7897
- onChange: component.onChange.bind(component)
8142
+ var numberInputComponentToProps = (component, rendererMapperProps) => __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-number")), rendererMapperProps), pick(component, "maximum", "minimum")), {
8143
+ onChange: component.setValue
7898
8144
  });
7899
8145
 
7900
8146
  // src/renderers/mappers/objectComponentToProps.ts
@@ -7934,13 +8180,10 @@ var paragraphComponentToProps = (component, rendererMapperProps) => __spreadValu
7934
8180
 
7935
8181
  // src/renderers/mappers/persistAsyncComponentToProps.ts
7936
8182
  var persistAsyncComponentToProps = (component, rendererMapperProps) => {
7937
- const props = componentToRendererProps(component.component, rendererMapperProps);
7938
- if ("validationState" in props && component.errors.length > 0) {
7939
- return __spreadProps(__spreadValues({}, props), {
7940
- validationState: { status: "invalid", message: component.errors[0] }
7941
- });
7942
- }
7943
- return props;
8183
+ const { errors, status } = component;
8184
+ const validationState = errors.length > 0 ? { status: "invalid", message: errors[0] } : void 0;
8185
+ const fieldLoadingState = status === "persisting" ? "persisting" : void 0;
8186
+ return __spreadValues(__spreadValues(__spreadValues({}, componentToRendererProps(component.component, rendererMapperProps)), validationState ? { validationState } : {}), fieldLoadingState ? { fieldLoadingState } : {});
7944
8187
  };
7945
8188
 
7946
8189
  // src/renderers/mappers/progressComponentToProps.ts
@@ -7962,27 +8205,7 @@ var progressComponentToProps = (component, rendererMapperProps) => __spreadValue
7962
8205
 
7963
8206
  // src/renderers/mappers/repeatableComponentToProps.ts
7964
8207
  var repeatableComponentToProps = (component, rendererMapperProps) => {
7965
- const {
7966
- uid,
7967
- analyticsId,
7968
- addItemTitle,
7969
- control,
7970
- components,
7971
- description,
7972
- editableComponent,
7973
- editItemTitle,
7974
- errors,
7975
- maxItems,
7976
- media,
7977
- minItems,
7978
- summaryDefaults,
7979
- title = "",
7980
- tags,
7981
- onEdit,
7982
- onAdd,
7983
- onSave,
7984
- onRemove
7985
- } = component;
8208
+ const { components, editableComponent, errors, summaryDefaults, title = "" } = component;
7986
8209
  const childrenProps = component.getChildren().map((c) => componentToRendererProps(c, rendererMapperProps));
7987
8210
  const editableItemProps = editableComponent ? componentToRendererProps(editableComponent, rendererMapperProps) : null;
7988
8211
  const getSummary = (componentSummary) => {
@@ -7996,75 +8219,63 @@ var repeatableComponentToProps = (component, rendererMapperProps) => {
7996
8219
  const itemProps = components.map((childComponent) => __spreadProps(__spreadValues({}, getSummary(childComponent.getSummary())), {
7997
8220
  id: `${childComponent.uid}-summary`
7998
8221
  }));
7999
- return __spreadValues({
8000
- uid,
8001
- analyticsId,
8222
+ return __spreadValues(__spreadProps(__spreadValues({
8002
8223
  type: "repeatable",
8224
+ title
8225
+ }, pick(
8226
+ component,
8227
+ "control",
8228
+ "description",
8229
+ "media",
8230
+ "tags",
8231
+ "uid",
8232
+ "analyticsId",
8233
+ "editItemTitle",
8234
+ "addItemTitle",
8235
+ "maxItems",
8236
+ "minItems"
8237
+ )), {
8003
8238
  children: childrenProps.map(rendererMapperProps.render),
8004
8239
  childrenProps,
8005
- addItemTitle,
8006
- control,
8007
- description,
8008
8240
  editableItem: rendererMapperProps.render(editableItemProps),
8009
8241
  editableItemProps,
8010
- editItemTitle,
8011
8242
  items: itemProps,
8012
- maxItems,
8013
- media,
8014
- minItems,
8015
- title,
8016
- tags,
8017
8243
  validationState: mapErrorsToValidationState(errors),
8018
- onAdd: onAdd.bind(component),
8019
- onEdit: onEdit.bind(component),
8020
- onSave: onSave.bind(component),
8021
- onRemove: onRemove.bind(component)
8022
- }, rendererMapperProps);
8244
+ onAdd: component.addComponent,
8245
+ onEdit: component.editComponent,
8246
+ onRemove: component.removeComponent,
8247
+ onSave: component.saveComponent
8248
+ }), rendererMapperProps);
8023
8249
  };
8024
8250
 
8025
8251
  // src/renderers/mappers/reviewComponentToProps.ts
8026
- var reviewComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadValues({}, pick(
8027
- component,
8028
- "uid",
8029
- "analyticsId",
8030
- "type",
8031
- "callToAction",
8032
- "control",
8033
- "fields",
8034
- "margin",
8035
- "title",
8036
- "tags"
8037
- )), rendererMapperProps);
8252
+ var reviewComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "title", "tags")), {
8253
+ callToAction: mapCallToActionOptional(component.callToAction),
8254
+ fields: component.fields.map((field) => __spreadProps(__spreadValues({}, field), {
8255
+ callToAction: mapCallToActionOptional(field.callToAction),
8256
+ additionalInfo: mapAdditionalInfo2(field.additionalInfo)
8257
+ }))
8258
+ }), rendererMapperProps);
8038
8259
 
8039
8260
  // src/renderers/mappers/searchComponentToProps.ts
8040
8261
  var searchComponentToProps = (component, rendererMapperProps) => {
8041
- const { uid, control, emptyMessage, error, hint, isLoading, margin, query, title, tags } = component;
8042
- const onChange = component.onChange.bind(component);
8043
- const onSelect = component.onSelect.bind(component);
8262
+ const { uid, emptyMessage, error, query, setQuery, selectResult } = component;
8044
8263
  const state = getSearchState({
8045
8264
  emptyMessage,
8046
8265
  error,
8047
- isLoading,
8266
+ isLoading: component.isLoading,
8048
8267
  query,
8049
8268
  state: component.state,
8050
8269
  rendererMapperProps,
8051
- onChange,
8052
- onSelect
8270
+ setQuery,
8271
+ selectResult
8053
8272
  });
8054
- return __spreadValues({
8055
- uid,
8273
+ return __spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "control", "hint", "isLoading", "margin", "query", "title", "tags")), {
8274
+ onChange: setQuery,
8056
8275
  type: "search",
8057
8276
  id: uid,
8058
- control,
8059
- hint,
8060
- isLoading,
8061
- margin,
8062
- query,
8063
- state,
8064
- title,
8065
- tags,
8066
- onChange
8067
- }, rendererMapperProps);
8277
+ state
8278
+ }), rendererMapperProps);
8068
8279
  };
8069
8280
  var getSearchState = ({
8070
8281
  emptyMessage,
@@ -8073,14 +8284,14 @@ var getSearchState = ({
8073
8284
  query,
8074
8285
  state,
8075
8286
  rendererMapperProps,
8076
- onChange,
8077
- onSelect
8287
+ setQuery,
8288
+ selectResult
8078
8289
  }) => {
8079
8290
  if (isLoading) {
8080
8291
  return { type: "pending" };
8081
8292
  }
8082
8293
  if (error) {
8083
- return { type: "error", onRetry: () => onChange(query) };
8294
+ return { type: "error", onRetry: () => setQuery(query) };
8084
8295
  }
8085
8296
  if (!state) {
8086
8297
  return { type: "noResults", message: emptyMessage };
@@ -8107,7 +8318,7 @@ var getSearchState = ({
8107
8318
  id: result.type === "action" ? (_a = result.value.id) != null ? _a : result.value.$id : void 0,
8108
8319
  image: mapSpecImage(result.image),
8109
8320
  media: getDomainLayerMedia(result),
8110
- onClick: () => onSelect(result)
8321
+ onClick: () => selectResult(result)
8111
8322
  });
8112
8323
  })
8113
8324
  };
@@ -8118,17 +8329,9 @@ var sectionComponentToProps = (component, rendererMapperProps) => {
8118
8329
  const childrenProps = component.components.map(
8119
8330
  (c) => componentToRendererProps(c, rendererMapperProps)
8120
8331
  );
8121
- return __spreadProps(__spreadValues(__spreadValues({}, pick(
8122
- component,
8123
- "uid",
8124
- "analyticsId",
8125
- "type",
8126
- "title",
8127
- "margin",
8128
- "control",
8129
- "callToAction",
8130
- "tags"
8131
- )), rendererMapperProps), {
8332
+ return __spreadProps(__spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "title", "margin", "control", "tags")), {
8333
+ callToAction: mapCallToActionOptional(component.callToAction)
8334
+ }), rendererMapperProps), {
8132
8335
  children: childrenProps.map(rendererMapperProps.render),
8133
8336
  childrenProps
8134
8337
  });
@@ -8137,7 +8340,7 @@ var sectionComponentToProps = (component, rendererMapperProps) => {
8137
8340
  // src/renderers/mappers/selectInputComponentToProps.ts
8138
8341
  var selectInputComponentToProps = (component, rendererMapperProps) => {
8139
8342
  var _b;
8140
- const { autoComplete, selectedIndex, onSelect } = component;
8343
+ const { autoComplete, selectedIndex, selectIndex } = component;
8141
8344
  const selectedChild = component.getSelectedChild();
8142
8345
  const childrenProps = selectedChild ? componentToRendererProps(selectedChild, rendererMapperProps) : null;
8143
8346
  const _a = inputComponentToProps(component, "input-select"), { value } = _a, props = __objRest(_a, ["value"]);
@@ -8149,7 +8352,7 @@ var selectInputComponentToProps = (component, rendererMapperProps) => {
8149
8352
  if (options.length === 1 && ((_b = options[0].childrenProps) == null ? void 0 : _b.type) === "form-section") {
8150
8353
  if (selectedIndex == null) {
8151
8354
  rendererMapperProps.trackEvent("OneOf Option Selected - Auto-select single-option", {});
8152
- onSelect.bind(component)(0);
8355
+ selectIndex(0);
8153
8356
  }
8154
8357
  return options[0].childrenProps;
8155
8358
  }
@@ -8157,14 +8360,18 @@ var selectInputComponentToProps = (component, rendererMapperProps) => {
8157
8360
  autoComplete,
8158
8361
  options,
8159
8362
  selectedIndex,
8160
- onSelect: onSelect.bind(component),
8363
+ onSelect: component.selectIndex,
8161
8364
  children: rendererMapperProps.render(childrenProps),
8162
8365
  childrenProps
8163
8366
  });
8164
8367
  };
8165
8368
 
8166
8369
  // src/renderers/mappers/statusListComponentToProps.ts
8167
- var statusListComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "items", "margin", "title", "tags")), rendererMapperProps);
8370
+ var statusListComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "title", "tags")), {
8371
+ items: component.items.map((item) => __spreadProps(__spreadValues({}, item), {
8372
+ callToAction: mapCallToActionOptional(item.callToAction)
8373
+ }))
8374
+ }), rendererMapperProps);
8168
8375
 
8169
8376
  // src/renderers/mappers/tabsComponentToProps.ts
8170
8377
  var tabsComponentToProps = (component, rendererMapperProps) => {
@@ -8183,15 +8390,17 @@ var tabsComponentToProps = (component, rendererMapperProps) => {
8183
8390
  };
8184
8391
 
8185
8392
  // src/renderers/mappers/textInputComponentToProps.ts
8186
- var textInputComponentToProps = (component, rendererMapperProps) => __spreadProps(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-text")), rendererMapperProps), {
8187
- autoComplete: component.autoComplete,
8188
- autoCapitalize: component == null ? void 0 : component.autocapitalization,
8189
- displayFormat: component.displayFormat,
8190
- maxLength: component.maxLength,
8191
- minLength: component.minLength,
8192
- pattern: component.pattern,
8193
- suggestions: component.suggestions,
8194
- onChange: component.onChange.bind(component)
8393
+ var textInputComponentToProps = (component, rendererMapperProps) => __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-text")), rendererMapperProps), pick(
8394
+ component,
8395
+ "autoComplete",
8396
+ "displayFormat",
8397
+ "maxLength",
8398
+ "minLength",
8399
+ "pattern",
8400
+ "suggestions"
8401
+ )), {
8402
+ onChange: component.setValue,
8403
+ autoCapitalize: component == null ? void 0 : component.autocapitalization
8195
8404
  });
8196
8405
 
8197
8406
  // src/renderers/mappers/tupleComponentToProps.ts
@@ -8217,30 +8426,15 @@ var tupleComponentToProps = (component, rendererMapperProps) => {
8217
8426
 
8218
8427
  // src/renderers/mappers/uploadInputComponentToProps.ts
8219
8428
  var uploadInputComponentToProps = (component, rendererMapperProps) => {
8220
- const { accepts, cameraConfig, maxSize, source } = component;
8221
- return __spreadProps(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-upload")), rendererMapperProps), {
8222
- cameraConfig,
8223
- source,
8224
- accepts,
8225
- maxSize,
8226
- onUpload: component.onUpload.bind(component)
8429
+ return __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, inputComponentToProps(component, "input-upload")), rendererMapperProps), pick(component, "accepts", "cameraConfig", "maxSize", "source")), {
8430
+ onUpload: component.setValue
8227
8431
  });
8228
8432
  };
8229
8433
 
8230
8434
  // src/renderers/mappers/upsellComponentToProps.ts
8231
- var upsellComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadProps(__spreadValues({}, pick(
8232
- component,
8233
- "uid",
8234
- "analyticsId",
8235
- "type",
8236
- "callToAction",
8237
- "control",
8238
- "margin",
8239
- "media",
8240
- "tags",
8241
- "text"
8242
- )), {
8243
- onDismiss: component.onDismiss ? component.onDismiss.bind(component) : void 0
8435
+ var upsellComponentToProps = (component, rendererMapperProps) => __spreadValues(__spreadProps(__spreadValues({}, pick(component, "uid", "analyticsId", "type", "control", "margin", "media", "tags", "text")), {
8436
+ callToAction: mapCallToAction(component.callToAction),
8437
+ onDismiss: component.dismiss
8244
8438
  }), rendererMapperProps);
8245
8439
 
8246
8440
  // src/renderers/mappers/componentToRendererProps.ts
@@ -8397,7 +8591,7 @@ var stepComponentToProps = (component, rendererMapperProps) => {
8397
8591
  footer: footerProps.map(rendererMapperProps.render),
8398
8592
  footerProps,
8399
8593
  __onAction: (action) => {
8400
- void onBehavior({ type: "action", action });
8594
+ void onBehavior({ type: "action", action, track: false });
8401
8595
  }
8402
8596
  }, restMapperProps);
8403
8597
  };
@@ -8440,27 +8634,33 @@ var subflowComponentToRendererProps = (subflow, rendererMapperProps, nativeSubfl
8440
8634
  }
8441
8635
  };
8442
8636
  var dynamicSubflowComponentToRendererProps = (component, rendererMapperProps) => {
8443
- return __spreadValues(__spreadProps(__spreadValues({
8444
- uid: component.uid,
8637
+ return __spreadValues(__spreadValues({
8445
8638
  type: "subflow-dynamic"
8446
- }, pick(component, "requestCache", "presentation", "initialRequest")), {
8447
- onCancellation: component.onCancellation.bind(component),
8448
- onCompletion: component.onCompletion.bind(component),
8449
- onError: component.onError.bind(component),
8450
- onEvent: component.onEvent.bind(component)
8451
- }), rendererMapperProps);
8639
+ }, pick(
8640
+ component,
8641
+ "uid",
8642
+ "requestCache",
8643
+ "presentation",
8644
+ "initialRequest",
8645
+ "onCancellation",
8646
+ "onCompletion",
8647
+ "onError",
8648
+ "onEvent"
8649
+ )), rendererMapperProps);
8452
8650
  };
8453
8651
  var nativeSubflowComponentToRendererProps = (component, rendererMapperProps) => {
8454
- return __spreadValues({
8455
- uid: component.uid,
8456
- type: "subflow-native",
8457
- id: component.id,
8458
- payload: component.payload,
8459
- onCancellation: component.onCancellation.bind(component),
8460
- onCompletion: component.onCompletion.bind(component),
8461
- onError: component.onError.bind(component),
8462
- onEvent: component.onEvent.bind(component)
8463
- }, rendererMapperProps);
8652
+ return __spreadValues(__spreadValues({
8653
+ type: "subflow-native"
8654
+ }, pick(
8655
+ component,
8656
+ "uid",
8657
+ "id",
8658
+ "payload",
8659
+ "onCancellation",
8660
+ "onCompletion",
8661
+ "onError",
8662
+ "onEvent"
8663
+ )), rendererMapperProps);
8464
8664
  };
8465
8665
 
8466
8666
  // src/renderers/mappers/rootComponentToProps.ts
@@ -8737,7 +8937,8 @@ var eventNames = [
8737
8937
  "Native Subflow Triggered",
8738
8938
  "Native Subflow Succeeded",
8739
8939
  "Native Subflow Failed",
8740
- "Native Subflow Cancelled"
8940
+ "Native Subflow Cancelled",
8941
+ "Behavior Triggered"
8741
8942
  ];
8742
8943
 
8743
8944
  // src/renderers/subflow/getDynamicSubflowRenderer.tsx