@dnb/eufemia 10.22.0 → 10.24.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 (1233) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/cjs/components/accordion/Accordion.js +1 -1
  3. package/cjs/components/accordion/Accordion.js.map +1 -1
  4. package/cjs/components/accordion/AccordionContext.d.ts +1 -1
  5. package/cjs/components/accordion/AccordionGroup.js +1 -1
  6. package/cjs/components/accordion/AccordionGroup.js.map +1 -1
  7. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +18 -0
  8. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  9. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +20 -0
  10. package/cjs/components/anchor/Anchor.d.ts +3 -4
  11. package/cjs/components/anchor/Anchor.js +16 -25
  12. package/cjs/components/anchor/Anchor.js.map +1 -1
  13. package/cjs/components/anchor/style/anchor-mixins.scss +62 -13
  14. package/cjs/components/anchor/style/dnb-anchor.css +79 -16
  15. package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
  16. package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +10 -30
  17. package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  18. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +82 -78
  19. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  20. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +25 -53
  21. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.css +10 -30
  22. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  23. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.scss +1 -8
  24. package/cjs/components/aria-live/useAriaLive.d.ts +1 -1
  25. package/cjs/components/breadcrumb/Breadcrumb.js +26 -17
  26. package/cjs/components/breadcrumb/Breadcrumb.js.map +1 -1
  27. package/cjs/components/breadcrumb/BreadcrumbItem.d.ts +6 -4
  28. package/cjs/components/breadcrumb/BreadcrumbItem.js +17 -9
  29. package/cjs/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  30. package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +29 -4
  31. package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  32. package/cjs/components/breadcrumb/style/dnb-breadcrumb.scss +32 -4
  33. package/cjs/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.css +9 -0
  34. package/cjs/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.min.css +1 -1
  35. package/cjs/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.scss +7 -0
  36. package/cjs/components/button/Button.js +1 -1
  37. package/cjs/components/button/Button.js.map +1 -1
  38. package/cjs/components/button/style/button--tertiary.scss +30 -75
  39. package/cjs/components/button/style/dnb-button.css +43 -49
  40. package/cjs/components/button/style/dnb-button.min.css +1 -1
  41. package/cjs/components/button/style/dnb-button.scss +46 -59
  42. package/cjs/components/button/style/themes/button-mixins.scss +26 -5
  43. package/cjs/components/button/style/themes/dnb-button-theme-eiendom.css +29 -60
  44. package/cjs/components/button/style/themes/dnb-button-theme-eiendom.min.css +12 -2
  45. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.css +44 -72
  46. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.min.css +16 -4
  47. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.scss +14 -16
  48. package/cjs/components/button/style/themes/dnb-button-theme-ui.css +29 -60
  49. package/cjs/components/button/style/themes/dnb-button-theme-ui.min.css +12 -2
  50. package/cjs/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  51. package/cjs/components/card/Card.d.ts +15 -2
  52. package/cjs/components/card/Card.js +19 -7
  53. package/cjs/components/card/Card.js.map +1 -1
  54. package/cjs/components/card/CardDocs.d.ts +2 -0
  55. package/cjs/components/card/CardDocs.js +65 -0
  56. package/cjs/components/card/CardDocs.js.map +1 -0
  57. package/cjs/components/card/style/dnb-card.css +24 -5
  58. package/cjs/components/card/style/dnb-card.min.css +1 -1
  59. package/cjs/components/card/style/dnb-card.scss +47 -16
  60. package/cjs/components/checkbox/style/dnb-checkbox.css +3 -0
  61. package/cjs/components/checkbox/style/dnb-checkbox.min.css +1 -1
  62. package/cjs/components/checkbox/style/dnb-checkbox.scss +7 -0
  63. package/cjs/components/date-picker/DatePicker.d.ts +2 -0
  64. package/cjs/components/date-picker/DatePicker.js +2 -1
  65. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  66. package/cjs/components/date-picker/DatePickerInput.js +19 -3
  67. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  68. package/cjs/components/date-picker/DatePickerProvider.js +8 -3
  69. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  70. package/cjs/components/dropdown/style/dnb-dropdown.css +3 -0
  71. package/cjs/components/dropdown/style/dnb-dropdown.min.css +1 -1
  72. package/cjs/components/dropdown/style/dnb-dropdown.scss +4 -0
  73. package/cjs/components/flex/style/dnb-flex.css +1 -1
  74. package/cjs/components/flex/style/dnb-flex.min.css +1 -1
  75. package/cjs/components/flex/style/flex-stack.scss +1 -1
  76. package/cjs/components/form-label/FormLabel.js +1 -1
  77. package/cjs/components/form-label/FormLabel.js.map +1 -1
  78. package/cjs/components/form-label/style/dnb-form-label.css +3 -0
  79. package/cjs/components/form-label/style/dnb-form-label.min.css +1 -1
  80. package/cjs/components/form-label/style/dnb-form-label.scss +4 -0
  81. package/cjs/components/form-label/style/themes/dnb-form-label-theme-sbanken.css +0 -3
  82. package/cjs/components/form-label/style/themes/dnb-form-label-theme-sbanken.min.css +1 -1
  83. package/cjs/components/form-label/style/themes/dnb-form-label-theme-sbanken.scss +0 -8
  84. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.css +0 -6
  85. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  86. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.scss +0 -8
  87. package/cjs/components/heading/HeadingContext.d.ts +1 -1
  88. package/cjs/components/height-animation/style/dnb-height-animation.css +2 -2
  89. package/cjs/components/height-animation/style/dnb-height-animation.min.css +1 -1
  90. package/cjs/components/height-animation/style/dnb-height-animation.scss +3 -2
  91. package/cjs/components/icon/style/dnb-icon.css +2 -2
  92. package/cjs/components/icon/style/dnb-icon.min.css +1 -1
  93. package/cjs/components/icon/style/dnb-icon.scss +1 -1
  94. package/cjs/components/input/Input.js +1 -1
  95. package/cjs/components/input/Input.js.map +1 -1
  96. package/cjs/components/number-format/NumberUtils.d.ts +1 -1
  97. package/cjs/components/radio/style/dnb-radio.css +4 -0
  98. package/cjs/components/radio/style/dnb-radio.min.css +1 -1
  99. package/cjs/components/radio/style/dnb-radio.scss +9 -0
  100. package/cjs/components/section/style/themes/dnb-section-theme-ui.css +3 -6
  101. package/cjs/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  102. package/cjs/components/skeleton/SkeletonHelper.d.ts +6 -6
  103. package/cjs/components/skeleton/style/dnb-skeleton.css +1 -0
  104. package/cjs/components/skeleton/style/dnb-skeleton.min.css +1 -1
  105. package/cjs/components/skeleton/style/dnb-skeleton.scss +1 -0
  106. package/cjs/components/slider/SliderInstance.js +1 -0
  107. package/cjs/components/slider/SliderInstance.js.map +1 -1
  108. package/cjs/components/slider/SliderThumb.js +4 -2
  109. package/cjs/components/slider/SliderThumb.js.map +1 -1
  110. package/cjs/components/step-indicator/StepIndicator.js +11 -5
  111. package/cjs/components/step-indicator/StepIndicator.js.map +1 -1
  112. package/cjs/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.css +1 -1
  113. package/cjs/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.min.css +1 -1
  114. package/cjs/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.scss +1 -1
  115. package/cjs/components/table/TableScrollView.d.ts +5 -1
  116. package/cjs/components/table/TableScrollView.js +1 -0
  117. package/cjs/components/table/TableScrollView.js.map +1 -1
  118. package/cjs/components/table/TableTr.d.ts +1 -2
  119. package/cjs/components/table/TableTr.js.map +1 -1
  120. package/cjs/components/table/style/dnb-table.css +14 -1
  121. package/cjs/components/table/style/dnb-table.min.css +1 -1
  122. package/cjs/components/table/style/dnb-table.scss +7 -1
  123. package/cjs/components/table/style/table-header-buttons.scss +4 -1
  124. package/cjs/components/table/style/table-th.scss +9 -25
  125. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.css +1 -1
  126. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
  127. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.scss +2 -1
  128. package/cjs/components/table/style/themes/dnb-table-theme-ui.css +1 -1
  129. package/cjs/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  130. package/cjs/components/table/style/themes/dnb-table-theme-ui.scss +2 -2
  131. package/cjs/components/table/useTableAnimationHandler.d.ts +1 -1
  132. package/cjs/components/table/useTableAnimationHandler.js +3 -3
  133. package/cjs/components/table/useTableAnimationHandler.js.map +1 -1
  134. package/cjs/components/tag/Tag.d.ts +11 -0
  135. package/cjs/components/tag/Tag.js +55 -40
  136. package/cjs/components/tag/Tag.js.map +1 -1
  137. package/cjs/components/tag/style/dnb-tag.css +50 -86
  138. package/cjs/components/tag/style/dnb-tag.min.css +1 -1
  139. package/cjs/components/tag/style/dnb-tag.scss +37 -45
  140. package/cjs/components/tag/style/themes/tag-mixins.scss +24 -6
  141. package/cjs/components/textarea/Textarea.d.ts +9 -0
  142. package/cjs/components/textarea/Textarea.js +21 -5
  143. package/cjs/components/textarea/Textarea.js.map +1 -1
  144. package/cjs/components/textarea/TextareaDocs.js +10 -0
  145. package/cjs/components/textarea/TextareaDocs.js.map +1 -1
  146. package/cjs/components/textarea/style/dnb-textarea.css +69 -26
  147. package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
  148. package/cjs/components/textarea/style/dnb-textarea.scss +83 -31
  149. package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +15 -21
  150. package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
  151. package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +17 -28
  152. package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.css +12 -23
  153. package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
  154. package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.scss +11 -27
  155. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +1 -2
  156. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
  157. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +1 -2
  158. package/cjs/components/tooltip/Tooltip.js +1 -1
  159. package/cjs/components/tooltip/Tooltip.js.map +1 -1
  160. package/cjs/elements/Element.d.ts +3 -4
  161. package/cjs/elements/Element.js.map +1 -1
  162. package/cjs/elements/code/style/themes/dnb-code-theme-sbanken.scss +5 -3
  163. package/cjs/extensions/forms/DataContext/At/At.js.map +1 -1
  164. package/cjs/extensions/forms/DataContext/Context.d.ts +31 -8
  165. package/cjs/extensions/forms/DataContext/Context.js +14 -3
  166. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  167. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +29 -16
  168. package/cjs/extensions/forms/DataContext/Provider/Provider.js +324 -77
  169. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  170. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.d.ts +3 -0
  171. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +93 -0
  172. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -0
  173. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  174. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  175. package/cjs/extensions/forms/Field/Date/Date.js +3 -3
  176. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  177. package/cjs/extensions/forms/Field/Expiry/Expiry.js +4 -4
  178. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  179. package/cjs/extensions/forms/Field/Number/Number.js +3 -3
  180. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  181. package/cjs/extensions/forms/Field/Password/Password.d.ts +1 -1
  182. package/cjs/extensions/forms/Field/Password/Password.js.map +1 -1
  183. package/cjs/extensions/forms/Field/Password/style/dnb-password.scss +1 -1
  184. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +4 -4
  185. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  186. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +3 -1
  187. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  188. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +3 -3
  189. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  190. package/cjs/extensions/forms/Field/Selection/Selection.js +5 -5
  191. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  192. package/cjs/extensions/forms/Field/String/String.d.ts +6 -6
  193. package/cjs/extensions/forms/Field/String/String.js +16 -14
  194. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  195. package/cjs/extensions/forms/Field/String/StringDocs.js +9 -4
  196. package/cjs/extensions/forms/Field/String/StringDocs.js.map +1 -1
  197. package/cjs/extensions/forms/Field/Toggle/Toggle.js +7 -7
  198. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  199. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -1
  200. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +41 -19
  201. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  202. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  203. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  204. package/cjs/extensions/forms/Form/Appearance/Appearance.js +3 -0
  205. package/cjs/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
  206. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +2 -2
  207. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  208. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +2 -1
  209. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  210. package/cjs/extensions/forms/Form/Handler/Handler.js +50 -8
  211. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  212. package/cjs/extensions/forms/Form/Handler/HandlerDocs.d.ts +3 -0
  213. package/cjs/extensions/forms/Form/Handler/HandlerDocs.js +49 -0
  214. package/cjs/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -0
  215. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.d.ts +6 -1
  216. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js +19 -10
  217. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  218. package/cjs/extensions/forms/Form/SubmitButton/SubmitButtonDocs.d.ts +2 -0
  219. package/cjs/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js +30 -0
  220. package/cjs/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js.map +1 -0
  221. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.d.ts +14 -0
  222. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +81 -0
  223. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -0
  224. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.d.ts +2 -0
  225. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js +25 -0
  226. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js.map +1 -0
  227. package/cjs/extensions/forms/Form/SubmitIndicator/index.d.ts +2 -0
  228. package/cjs/extensions/forms/Form/SubmitIndicator/index.js +27 -0
  229. package/cjs/extensions/forms/Form/SubmitIndicator/index.js.map +1 -0
  230. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +99 -0
  231. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -0
  232. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +117 -0
  233. package/cjs/extensions/forms/Form/SubmitIndicator/style/index.d.ts +5 -0
  234. package/cjs/extensions/forms/Form/SubmitIndicator/style/index.js +4 -0
  235. package/cjs/extensions/forms/Form/SubmitIndicator/style/index.js.map +1 -0
  236. package/cjs/extensions/forms/Form/data-context/getData.d.ts +1 -1
  237. package/cjs/extensions/forms/Form/data-context/getData.js.map +1 -1
  238. package/cjs/extensions/forms/Form/data-context/useData.d.ts +3 -3
  239. package/cjs/extensions/forms/Form/data-context/useData.js +32 -12
  240. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  241. package/cjs/extensions/forms/Form/data-context/useError.d.ts +3 -2
  242. package/cjs/extensions/forms/Form/data-context/useError.js +8 -5
  243. package/cjs/extensions/forms/Form/data-context/useError.js.map +1 -1
  244. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  245. package/cjs/extensions/forms/Form/index.js +7 -0
  246. package/cjs/extensions/forms/Form/index.js.map +1 -1
  247. package/cjs/extensions/forms/Iterate/Array/Array.js +1 -1
  248. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  249. package/cjs/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js +1 -1
  250. package/cjs/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js.map +1 -1
  251. package/cjs/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js +1 -1
  252. package/cjs/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js.map +1 -1
  253. package/cjs/extensions/forms/StepsLayout/NextButton/NextButton.d.ts +1 -3
  254. package/cjs/extensions/forms/StepsLayout/NextButton/NextButton.js +4 -3
  255. package/cjs/extensions/forms/StepsLayout/NextButton/NextButton.js.map +1 -1
  256. package/cjs/extensions/forms/StepsLayout/PreviousButton/PreviousButton.d.ts +1 -3
  257. package/cjs/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js +6 -2
  258. package/cjs/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +1 -1
  259. package/cjs/extensions/forms/StepsLayout/Step/Step.js +2 -3
  260. package/cjs/extensions/forms/StepsLayout/Step/Step.js.map +1 -1
  261. package/cjs/extensions/forms/StepsLayout/StepsContext.d.ts +6 -4
  262. package/cjs/extensions/forms/StepsLayout/StepsContext.js +6 -1
  263. package/cjs/extensions/forms/StepsLayout/StepsContext.js.map +1 -1
  264. package/cjs/extensions/forms/StepsLayout/StepsLayout.d.ts +5 -3
  265. package/cjs/extensions/forms/StepsLayout/StepsLayout.js +112 -50
  266. package/cjs/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  267. package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.d.ts +3 -0
  268. package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.js +58 -0
  269. package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +1 -0
  270. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.css +6 -1
  271. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  272. package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +11 -1
  273. package/cjs/extensions/forms/StepsLayout/useStep.d.ts +3 -0
  274. package/cjs/extensions/forms/StepsLayout/useStep.js +19 -0
  275. package/cjs/extensions/forms/StepsLayout/useStep.js.map +1 -0
  276. package/cjs/extensions/forms/Value/Boolean/Boolean.js +1 -1
  277. package/cjs/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  278. package/cjs/extensions/forms/Value/Number/Number.js +5 -5
  279. package/cjs/extensions/forms/Value/Number/Number.js.map +1 -1
  280. package/cjs/extensions/forms/Value/String/String.js +1 -1
  281. package/cjs/extensions/forms/Value/String/String.js.map +1 -1
  282. package/cjs/extensions/forms/hooks/DataValueDocs.js +3 -3
  283. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  284. package/cjs/extensions/forms/hooks/index.d.ts +6 -3
  285. package/cjs/extensions/forms/hooks/index.js +4 -12
  286. package/cjs/extensions/forms/hooks/index.js.map +1 -1
  287. package/cjs/extensions/forms/hooks/useFieldProps.d.ts +23 -0
  288. package/cjs/extensions/forms/hooks/useFieldProps.js +774 -0
  289. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -0
  290. package/cjs/extensions/forms/style/dnb-forms.css +107 -3
  291. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  292. package/cjs/extensions/forms/types.d.ts +69 -6
  293. package/cjs/extensions/forms/types.js +3 -2
  294. package/cjs/extensions/forms/types.js.map +1 -1
  295. package/cjs/extensions/forms/utils/ajv.d.ts +9 -7
  296. package/cjs/extensions/forms/utils/ajv.js +34 -17
  297. package/cjs/extensions/forms/utils/ajv.js.map +1 -1
  298. package/cjs/fragments/scroll-view/ScrollView.d.ts +2 -2
  299. package/cjs/fragments/scroll-view/ScrollView.js +4 -1
  300. package/cjs/fragments/scroll-view/ScrollView.js.map +1 -1
  301. package/cjs/shared/Context.d.ts +20 -11
  302. package/cjs/shared/Context.js.map +1 -1
  303. package/cjs/shared/Eufemia.d.ts +2 -2
  304. package/cjs/shared/Eufemia.js +2 -2
  305. package/cjs/shared/Eufemia.js.map +1 -1
  306. package/cjs/shared/Provider.js.map +1 -1
  307. package/cjs/shared/defaults.d.ts +3 -3
  308. package/cjs/shared/defaults.js.map +1 -1
  309. package/cjs/shared/helpers/debounce.d.ts +21 -30
  310. package/cjs/shared/helpers/debounce.js +23 -11
  311. package/cjs/shared/helpers/debounce.js.map +1 -1
  312. package/cjs/shared/helpers/isAsync.d.ts +7 -0
  313. package/cjs/shared/helpers/isAsync.js +20 -0
  314. package/cjs/shared/helpers/isAsync.js.map +1 -0
  315. package/cjs/shared/helpers/runCssVersionMismatchWarning.d.ts +8 -0
  316. package/cjs/shared/helpers/runCssVersionMismatchWarning.js +31 -0
  317. package/cjs/shared/helpers/runCssVersionMismatchWarning.js.map +1 -0
  318. package/cjs/{extensions/forms/hooks → shared/helpers}/useId.js +1 -1
  319. package/cjs/shared/helpers/useId.js.map +1 -0
  320. package/cjs/shared/helpers/useMountEffect.js.map +1 -0
  321. package/cjs/shared/helpers/useMounted.js.map +1 -0
  322. package/cjs/shared/helpers/useSharedState.js +15 -9
  323. package/cjs/shared/helpers/useSharedState.js.map +1 -1
  324. package/cjs/shared/helpers/useUnmountEffect.js.map +1 -0
  325. package/cjs/shared/helpers/useUpdateEffect.js.map +1 -0
  326. package/cjs/shared/helpers.js +2 -0
  327. package/cjs/shared/helpers.js.map +1 -1
  328. package/cjs/shared/index.d.ts +10 -10
  329. package/cjs/shared/index.js +7 -1
  330. package/cjs/shared/index.js.map +1 -1
  331. package/cjs/shared/locales/en-GB.d.ts +1 -0
  332. package/cjs/shared/locales/en-GB.js +2 -1
  333. package/cjs/shared/locales/en-GB.js.map +1 -1
  334. package/cjs/shared/locales/en-US.d.ts +1 -0
  335. package/cjs/shared/locales/index.d.ts +4 -2
  336. package/cjs/shared/locales/index.js +2 -1
  337. package/cjs/shared/locales/index.js.map +1 -1
  338. package/cjs/shared/locales/nb-NO.d.ts +1 -0
  339. package/cjs/shared/locales/nb-NO.js +2 -1
  340. package/cjs/shared/locales/nb-NO.js.map +1 -1
  341. package/cjs/shared/types.d.ts +4 -1
  342. package/cjs/shared/types.js.map +1 -1
  343. package/cjs/shared/useLocale.d.ts +2 -0
  344. package/cjs/shared/useLocale.js +37 -0
  345. package/cjs/shared/useLocale.js.map +1 -0
  346. package/cjs/style/core/scopes.scss +3 -0
  347. package/cjs/style/dnb-ui-basis.css +1 -0
  348. package/cjs/style/dnb-ui-basis.min.css +1 -1
  349. package/cjs/style/dnb-ui-body.css +1 -0
  350. package/cjs/style/dnb-ui-body.min.css +1 -1
  351. package/cjs/style/dnb-ui-components.css +433 -195
  352. package/cjs/style/dnb-ui-components.min.css +3 -3
  353. package/cjs/style/dnb-ui-core.css +1 -0
  354. package/cjs/style/dnb-ui-core.min.css +1 -1
  355. package/cjs/style/dnb-ui-extensions.css +107 -3
  356. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  357. package/cjs/style/dnb-ui-forms.css +107 -3
  358. package/cjs/style/dnb-ui-forms.min.css +1 -1
  359. package/cjs/style/dnb-ui-forms.scss +1 -0
  360. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -6
  361. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  362. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +596 -328
  363. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +17 -7
  364. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -6
  365. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  366. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +107 -3
  367. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  368. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +107 -3
  369. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  370. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +5 -2
  371. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  372. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +710 -374
  373. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +21 -9
  374. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +5 -2
  375. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  376. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +107 -3
  377. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  378. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +107 -3
  379. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  380. package/cjs/style/themes/theme-ui/ui-theme-basis.css +3 -6
  381. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  382. package/cjs/style/themes/theme-ui/ui-theme-components.css +596 -326
  383. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +17 -7
  384. package/cjs/style/themes/theme-ui/ui-theme-elements.css +3 -6
  385. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  386. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +107 -3
  387. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  388. package/cjs/style/themes/theme-ui/ui-theme-forms.css +107 -3
  389. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  390. package/cjs/style/themes/theme-ui/ui-theme-tags.css +40 -15
  391. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  392. package/components/accordion/Accordion.js +1 -1
  393. package/components/accordion/Accordion.js.map +1 -1
  394. package/components/accordion/AccordionContext.d.ts +1 -1
  395. package/components/accordion/AccordionGroup.js +1 -1
  396. package/components/accordion/AccordionGroup.js.map +1 -1
  397. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +18 -0
  398. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  399. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +20 -0
  400. package/components/anchor/Anchor.d.ts +3 -4
  401. package/components/anchor/Anchor.js +16 -25
  402. package/components/anchor/Anchor.js.map +1 -1
  403. package/components/anchor/style/anchor-mixins.scss +62 -13
  404. package/components/anchor/style/dnb-anchor.css +79 -16
  405. package/components/anchor/style/dnb-anchor.min.css +1 -1
  406. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +10 -30
  407. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  408. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +82 -78
  409. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  410. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +25 -53
  411. package/components/anchor/style/themes/dnb-anchor-theme-ui.css +10 -30
  412. package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  413. package/components/anchor/style/themes/dnb-anchor-theme-ui.scss +1 -8
  414. package/components/aria-live/useAriaLive.d.ts +1 -1
  415. package/components/breadcrumb/Breadcrumb.js +27 -18
  416. package/components/breadcrumb/Breadcrumb.js.map +1 -1
  417. package/components/breadcrumb/BreadcrumbItem.d.ts +6 -4
  418. package/components/breadcrumb/BreadcrumbItem.js +18 -10
  419. package/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  420. package/components/breadcrumb/style/dnb-breadcrumb.css +29 -4
  421. package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  422. package/components/breadcrumb/style/dnb-breadcrumb.scss +32 -4
  423. package/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.css +9 -0
  424. package/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.min.css +1 -1
  425. package/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.scss +7 -0
  426. package/components/button/Button.js +1 -1
  427. package/components/button/Button.js.map +1 -1
  428. package/components/button/style/button--tertiary.scss +30 -75
  429. package/components/button/style/dnb-button.css +43 -49
  430. package/components/button/style/dnb-button.min.css +1 -1
  431. package/components/button/style/dnb-button.scss +46 -59
  432. package/components/button/style/themes/button-mixins.scss +26 -5
  433. package/components/button/style/themes/dnb-button-theme-eiendom.css +29 -60
  434. package/components/button/style/themes/dnb-button-theme-eiendom.min.css +12 -2
  435. package/components/button/style/themes/dnb-button-theme-sbanken.css +44 -72
  436. package/components/button/style/themes/dnb-button-theme-sbanken.min.css +16 -4
  437. package/components/button/style/themes/dnb-button-theme-sbanken.scss +14 -16
  438. package/components/button/style/themes/dnb-button-theme-ui.css +29 -60
  439. package/components/button/style/themes/dnb-button-theme-ui.min.css +12 -2
  440. package/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  441. package/components/card/Card.d.ts +15 -2
  442. package/components/card/Card.js +19 -7
  443. package/components/card/Card.js.map +1 -1
  444. package/components/card/CardDocs.d.ts +2 -0
  445. package/components/card/CardDocs.js +58 -0
  446. package/components/card/CardDocs.js.map +1 -0
  447. package/components/card/style/dnb-card.css +24 -5
  448. package/components/card/style/dnb-card.min.css +1 -1
  449. package/components/card/style/dnb-card.scss +47 -16
  450. package/components/checkbox/style/dnb-checkbox.css +3 -0
  451. package/components/checkbox/style/dnb-checkbox.min.css +1 -1
  452. package/components/checkbox/style/dnb-checkbox.scss +7 -0
  453. package/components/date-picker/DatePicker.d.ts +2 -0
  454. package/components/date-picker/DatePicker.js +2 -1
  455. package/components/date-picker/DatePicker.js.map +1 -1
  456. package/components/date-picker/DatePickerInput.js +19 -3
  457. package/components/date-picker/DatePickerInput.js.map +1 -1
  458. package/components/date-picker/DatePickerProvider.js +8 -3
  459. package/components/date-picker/DatePickerProvider.js.map +1 -1
  460. package/components/dropdown/style/dnb-dropdown.css +3 -0
  461. package/components/dropdown/style/dnb-dropdown.min.css +1 -1
  462. package/components/dropdown/style/dnb-dropdown.scss +4 -0
  463. package/components/flex/style/dnb-flex.css +1 -1
  464. package/components/flex/style/dnb-flex.min.css +1 -1
  465. package/components/flex/style/flex-stack.scss +1 -1
  466. package/components/form-label/FormLabel.js +1 -1
  467. package/components/form-label/FormLabel.js.map +1 -1
  468. package/components/form-label/style/dnb-form-label.css +3 -0
  469. package/components/form-label/style/dnb-form-label.min.css +1 -1
  470. package/components/form-label/style/dnb-form-label.scss +4 -0
  471. package/components/form-label/style/themes/dnb-form-label-theme-sbanken.css +0 -3
  472. package/components/form-label/style/themes/dnb-form-label-theme-sbanken.min.css +1 -1
  473. package/components/form-label/style/themes/dnb-form-label-theme-sbanken.scss +0 -8
  474. package/components/form-label/style/themes/dnb-form-label-theme-ui.css +0 -6
  475. package/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  476. package/components/form-label/style/themes/dnb-form-label-theme-ui.scss +0 -8
  477. package/components/heading/HeadingContext.d.ts +1 -1
  478. package/components/height-animation/style/dnb-height-animation.css +2 -2
  479. package/components/height-animation/style/dnb-height-animation.min.css +1 -1
  480. package/components/height-animation/style/dnb-height-animation.scss +3 -2
  481. package/components/icon/style/dnb-icon.css +2 -2
  482. package/components/icon/style/dnb-icon.min.css +1 -1
  483. package/components/icon/style/dnb-icon.scss +1 -1
  484. package/components/input/Input.js +1 -1
  485. package/components/input/Input.js.map +1 -1
  486. package/components/number-format/NumberUtils.d.ts +1 -1
  487. package/components/radio/style/dnb-radio.css +4 -0
  488. package/components/radio/style/dnb-radio.min.css +1 -1
  489. package/components/radio/style/dnb-radio.scss +9 -0
  490. package/components/section/style/themes/dnb-section-theme-ui.css +3 -6
  491. package/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  492. package/components/skeleton/SkeletonHelper.d.ts +6 -6
  493. package/components/skeleton/style/dnb-skeleton.css +1 -0
  494. package/components/skeleton/style/dnb-skeleton.min.css +1 -1
  495. package/components/skeleton/style/dnb-skeleton.scss +1 -0
  496. package/components/slider/SliderInstance.js +1 -0
  497. package/components/slider/SliderInstance.js.map +1 -1
  498. package/components/slider/SliderThumb.js +4 -2
  499. package/components/slider/SliderThumb.js.map +1 -1
  500. package/components/step-indicator/StepIndicator.js +11 -6
  501. package/components/step-indicator/StepIndicator.js.map +1 -1
  502. package/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.css +1 -1
  503. package/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.min.css +1 -1
  504. package/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.scss +1 -1
  505. package/components/table/TableScrollView.d.ts +5 -1
  506. package/components/table/TableScrollView.js +1 -0
  507. package/components/table/TableScrollView.js.map +1 -1
  508. package/components/table/TableTr.d.ts +1 -2
  509. package/components/table/TableTr.js.map +1 -1
  510. package/components/table/style/dnb-table.css +14 -1
  511. package/components/table/style/dnb-table.min.css +1 -1
  512. package/components/table/style/dnb-table.scss +7 -1
  513. package/components/table/style/table-header-buttons.scss +4 -1
  514. package/components/table/style/table-th.scss +9 -25
  515. package/components/table/style/themes/dnb-table-theme-sbanken.css +1 -1
  516. package/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
  517. package/components/table/style/themes/dnb-table-theme-sbanken.scss +2 -1
  518. package/components/table/style/themes/dnb-table-theme-ui.css +1 -1
  519. package/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  520. package/components/table/style/themes/dnb-table-theme-ui.scss +2 -2
  521. package/components/table/useTableAnimationHandler.d.ts +1 -1
  522. package/components/table/useTableAnimationHandler.js +3 -3
  523. package/components/table/useTableAnimationHandler.js.map +1 -1
  524. package/components/tag/Tag.d.ts +11 -0
  525. package/components/tag/Tag.js +54 -39
  526. package/components/tag/Tag.js.map +1 -1
  527. package/components/tag/style/dnb-tag.css +50 -86
  528. package/components/tag/style/dnb-tag.min.css +1 -1
  529. package/components/tag/style/dnb-tag.scss +37 -45
  530. package/components/tag/style/themes/tag-mixins.scss +24 -6
  531. package/components/textarea/Textarea.d.ts +9 -0
  532. package/components/textarea/Textarea.js +21 -5
  533. package/components/textarea/Textarea.js.map +1 -1
  534. package/components/textarea/TextareaDocs.js +10 -0
  535. package/components/textarea/TextareaDocs.js.map +1 -1
  536. package/components/textarea/style/dnb-textarea.css +69 -26
  537. package/components/textarea/style/dnb-textarea.min.css +1 -1
  538. package/components/textarea/style/dnb-textarea.scss +83 -31
  539. package/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +15 -21
  540. package/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
  541. package/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +17 -28
  542. package/components/textarea/style/themes/dnb-textarea-theme-ui.css +12 -23
  543. package/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
  544. package/components/textarea/style/themes/dnb-textarea-theme-ui.scss +11 -27
  545. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +1 -2
  546. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
  547. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +1 -2
  548. package/components/tooltip/Tooltip.js +1 -1
  549. package/components/tooltip/Tooltip.js.map +1 -1
  550. package/elements/Element.d.ts +3 -4
  551. package/elements/Element.js.map +1 -1
  552. package/elements/code/style/themes/dnb-code-theme-sbanken.scss +5 -3
  553. package/es/components/accordion/Accordion.js +1 -1
  554. package/es/components/accordion/Accordion.js.map +1 -1
  555. package/es/components/accordion/AccordionContext.d.ts +1 -1
  556. package/es/components/accordion/AccordionGroup.js +1 -1
  557. package/es/components/accordion/AccordionGroup.js.map +1 -1
  558. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +18 -0
  559. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  560. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +20 -0
  561. package/es/components/anchor/Anchor.d.ts +3 -4
  562. package/es/components/anchor/Anchor.js +16 -25
  563. package/es/components/anchor/Anchor.js.map +1 -1
  564. package/es/components/anchor/style/anchor-mixins.scss +62 -13
  565. package/es/components/anchor/style/dnb-anchor.css +79 -16
  566. package/es/components/anchor/style/dnb-anchor.min.css +1 -1
  567. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +10 -30
  568. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  569. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +82 -78
  570. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  571. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +25 -53
  572. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +10 -30
  573. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  574. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.scss +1 -8
  575. package/es/components/aria-live/useAriaLive.d.ts +1 -1
  576. package/es/components/breadcrumb/Breadcrumb.js +27 -18
  577. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  578. package/es/components/breadcrumb/BreadcrumbItem.d.ts +6 -4
  579. package/es/components/breadcrumb/BreadcrumbItem.js +18 -10
  580. package/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  581. package/es/components/breadcrumb/style/dnb-breadcrumb.css +29 -4
  582. package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  583. package/es/components/breadcrumb/style/dnb-breadcrumb.scss +32 -4
  584. package/es/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.css +9 -0
  585. package/es/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.min.css +1 -1
  586. package/es/components/breadcrumb/style/themes/dnb-breadcrumb-theme-sbanken.scss +7 -0
  587. package/es/components/button/Button.js +1 -1
  588. package/es/components/button/Button.js.map +1 -1
  589. package/es/components/button/style/button--tertiary.scss +30 -75
  590. package/es/components/button/style/dnb-button.css +43 -49
  591. package/es/components/button/style/dnb-button.min.css +1 -1
  592. package/es/components/button/style/dnb-button.scss +46 -59
  593. package/es/components/button/style/themes/button-mixins.scss +26 -5
  594. package/es/components/button/style/themes/dnb-button-theme-eiendom.css +29 -60
  595. package/es/components/button/style/themes/dnb-button-theme-eiendom.min.css +12 -2
  596. package/es/components/button/style/themes/dnb-button-theme-sbanken.css +44 -72
  597. package/es/components/button/style/themes/dnb-button-theme-sbanken.min.css +16 -4
  598. package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +14 -16
  599. package/es/components/button/style/themes/dnb-button-theme-ui.css +29 -60
  600. package/es/components/button/style/themes/dnb-button-theme-ui.min.css +12 -2
  601. package/es/components/button/style/themes/dnb-button-theme-ui.scss +1 -1
  602. package/es/components/card/Card.d.ts +15 -2
  603. package/es/components/card/Card.js +19 -7
  604. package/es/components/card/Card.js.map +1 -1
  605. package/es/components/card/CardDocs.d.ts +2 -0
  606. package/es/components/card/CardDocs.js +58 -0
  607. package/es/components/card/CardDocs.js.map +1 -0
  608. package/es/components/card/style/dnb-card.css +24 -5
  609. package/es/components/card/style/dnb-card.min.css +1 -1
  610. package/es/components/card/style/dnb-card.scss +47 -16
  611. package/es/components/checkbox/style/dnb-checkbox.css +3 -0
  612. package/es/components/checkbox/style/dnb-checkbox.min.css +1 -1
  613. package/es/components/checkbox/style/dnb-checkbox.scss +7 -0
  614. package/es/components/date-picker/DatePicker.d.ts +2 -0
  615. package/es/components/date-picker/DatePicker.js +2 -1
  616. package/es/components/date-picker/DatePicker.js.map +1 -1
  617. package/es/components/date-picker/DatePickerInput.js +19 -3
  618. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  619. package/es/components/date-picker/DatePickerProvider.js +8 -3
  620. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  621. package/es/components/dropdown/style/dnb-dropdown.css +3 -0
  622. package/es/components/dropdown/style/dnb-dropdown.min.css +1 -1
  623. package/es/components/dropdown/style/dnb-dropdown.scss +4 -0
  624. package/es/components/flex/style/dnb-flex.css +1 -1
  625. package/es/components/flex/style/dnb-flex.min.css +1 -1
  626. package/es/components/flex/style/flex-stack.scss +1 -1
  627. package/es/components/form-label/FormLabel.js +1 -1
  628. package/es/components/form-label/FormLabel.js.map +1 -1
  629. package/es/components/form-label/style/dnb-form-label.css +3 -0
  630. package/es/components/form-label/style/dnb-form-label.min.css +1 -1
  631. package/es/components/form-label/style/dnb-form-label.scss +4 -0
  632. package/es/components/form-label/style/themes/dnb-form-label-theme-sbanken.css +0 -3
  633. package/es/components/form-label/style/themes/dnb-form-label-theme-sbanken.min.css +1 -1
  634. package/es/components/form-label/style/themes/dnb-form-label-theme-sbanken.scss +0 -8
  635. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.css +0 -6
  636. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  637. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.scss +0 -8
  638. package/es/components/heading/HeadingContext.d.ts +1 -1
  639. package/es/components/height-animation/style/dnb-height-animation.css +2 -2
  640. package/es/components/height-animation/style/dnb-height-animation.min.css +1 -1
  641. package/es/components/height-animation/style/dnb-height-animation.scss +3 -2
  642. package/es/components/icon/style/dnb-icon.css +2 -2
  643. package/es/components/icon/style/dnb-icon.min.css +1 -1
  644. package/es/components/icon/style/dnb-icon.scss +1 -1
  645. package/es/components/input/Input.js +1 -1
  646. package/es/components/input/Input.js.map +1 -1
  647. package/es/components/number-format/NumberUtils.d.ts +1 -1
  648. package/es/components/radio/style/dnb-radio.css +4 -0
  649. package/es/components/radio/style/dnb-radio.min.css +1 -1
  650. package/es/components/radio/style/dnb-radio.scss +9 -0
  651. package/es/components/section/style/themes/dnb-section-theme-ui.css +3 -6
  652. package/es/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  653. package/es/components/skeleton/SkeletonHelper.d.ts +6 -6
  654. package/es/components/skeleton/style/dnb-skeleton.css +1 -0
  655. package/es/components/skeleton/style/dnb-skeleton.min.css +1 -1
  656. package/es/components/skeleton/style/dnb-skeleton.scss +1 -0
  657. package/es/components/slider/SliderInstance.js +1 -0
  658. package/es/components/slider/SliderInstance.js.map +1 -1
  659. package/es/components/slider/SliderThumb.js +4 -2
  660. package/es/components/slider/SliderThumb.js.map +1 -1
  661. package/es/components/step-indicator/StepIndicator.js +11 -6
  662. package/es/components/step-indicator/StepIndicator.js.map +1 -1
  663. package/es/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.css +1 -1
  664. package/es/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.min.css +1 -1
  665. package/es/components/step-indicator/style/themes/dnb-step-indicator-theme-ui.scss +1 -1
  666. package/es/components/table/TableScrollView.d.ts +5 -1
  667. package/es/components/table/TableScrollView.js +1 -0
  668. package/es/components/table/TableScrollView.js.map +1 -1
  669. package/es/components/table/TableTr.d.ts +1 -2
  670. package/es/components/table/TableTr.js.map +1 -1
  671. package/es/components/table/style/dnb-table.css +14 -1
  672. package/es/components/table/style/dnb-table.min.css +1 -1
  673. package/es/components/table/style/dnb-table.scss +7 -1
  674. package/es/components/table/style/table-header-buttons.scss +4 -1
  675. package/es/components/table/style/table-th.scss +9 -25
  676. package/es/components/table/style/themes/dnb-table-theme-sbanken.css +1 -1
  677. package/es/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
  678. package/es/components/table/style/themes/dnb-table-theme-sbanken.scss +2 -1
  679. package/es/components/table/style/themes/dnb-table-theme-ui.css +1 -1
  680. package/es/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  681. package/es/components/table/style/themes/dnb-table-theme-ui.scss +2 -2
  682. package/es/components/table/useTableAnimationHandler.d.ts +1 -1
  683. package/es/components/table/useTableAnimationHandler.js +3 -3
  684. package/es/components/table/useTableAnimationHandler.js.map +1 -1
  685. package/es/components/tag/Tag.d.ts +11 -0
  686. package/es/components/tag/Tag.js +54 -39
  687. package/es/components/tag/Tag.js.map +1 -1
  688. package/es/components/tag/style/dnb-tag.css +50 -86
  689. package/es/components/tag/style/dnb-tag.min.css +1 -1
  690. package/es/components/tag/style/dnb-tag.scss +37 -45
  691. package/es/components/tag/style/themes/tag-mixins.scss +24 -6
  692. package/es/components/textarea/Textarea.d.ts +9 -0
  693. package/es/components/textarea/Textarea.js +21 -5
  694. package/es/components/textarea/Textarea.js.map +1 -1
  695. package/es/components/textarea/TextareaDocs.js +10 -0
  696. package/es/components/textarea/TextareaDocs.js.map +1 -1
  697. package/es/components/textarea/style/dnb-textarea.css +69 -26
  698. package/es/components/textarea/style/dnb-textarea.min.css +1 -1
  699. package/es/components/textarea/style/dnb-textarea.scss +83 -31
  700. package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +15 -21
  701. package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
  702. package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +17 -28
  703. package/es/components/textarea/style/themes/dnb-textarea-theme-ui.css +12 -23
  704. package/es/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
  705. package/es/components/textarea/style/themes/dnb-textarea-theme-ui.scss +11 -27
  706. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +1 -2
  707. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
  708. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +1 -2
  709. package/es/components/tooltip/Tooltip.js +1 -1
  710. package/es/components/tooltip/Tooltip.js.map +1 -1
  711. package/es/elements/Element.d.ts +3 -4
  712. package/es/elements/Element.js.map +1 -1
  713. package/es/elements/code/style/themes/dnb-code-theme-sbanken.scss +5 -3
  714. package/es/extensions/forms/DataContext/At/At.js.map +1 -1
  715. package/es/extensions/forms/DataContext/Context.d.ts +31 -8
  716. package/es/extensions/forms/DataContext/Context.js +14 -3
  717. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  718. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +29 -16
  719. package/es/extensions/forms/DataContext/Provider/Provider.js +321 -75
  720. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  721. package/es/extensions/forms/DataContext/Provider/ProviderDocs.d.ts +3 -0
  722. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +85 -0
  723. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -0
  724. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +2 -2
  725. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  726. package/es/extensions/forms/Field/Date/Date.js +4 -4
  727. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  728. package/es/extensions/forms/Field/Expiry/Expiry.js +5 -5
  729. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  730. package/es/extensions/forms/Field/Number/Number.js +4 -4
  731. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  732. package/es/extensions/forms/Field/Password/Password.d.ts +1 -1
  733. package/es/extensions/forms/Field/Password/Password.js.map +1 -1
  734. package/es/extensions/forms/Field/Password/style/dnb-password.scss +1 -1
  735. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +5 -5
  736. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  737. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +3 -1
  738. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  739. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -4
  740. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  741. package/es/extensions/forms/Field/Selection/Selection.js +6 -6
  742. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  743. package/es/extensions/forms/Field/String/String.d.ts +6 -6
  744. package/es/extensions/forms/Field/String/String.js +17 -15
  745. package/es/extensions/forms/Field/String/String.js.map +1 -1
  746. package/es/extensions/forms/Field/String/StringDocs.js +9 -4
  747. package/es/extensions/forms/Field/String/StringDocs.js.map +1 -1
  748. package/es/extensions/forms/Field/Toggle/Toggle.js +8 -8
  749. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  750. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -1
  751. package/es/extensions/forms/FieldBlock/FieldBlock.js +41 -20
  752. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  753. package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  754. package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  755. package/es/extensions/forms/Form/Appearance/Appearance.js +3 -0
  756. package/es/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
  757. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +2 -2
  758. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  759. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +2 -1
  760. package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  761. package/es/extensions/forms/Form/Handler/Handler.js +45 -9
  762. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  763. package/es/extensions/forms/Form/Handler/HandlerDocs.d.ts +3 -0
  764. package/es/extensions/forms/Form/Handler/HandlerDocs.js +39 -0
  765. package/es/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -0
  766. package/es/extensions/forms/Form/SubmitButton/SubmitButton.d.ts +6 -1
  767. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js +21 -12
  768. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  769. package/es/extensions/forms/Form/SubmitButton/SubmitButtonDocs.d.ts +2 -0
  770. package/es/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js +23 -0
  771. package/es/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js.map +1 -0
  772. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.d.ts +14 -0
  773. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +69 -0
  774. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -0
  775. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.d.ts +2 -0
  776. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js +18 -0
  777. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js.map +1 -0
  778. package/es/extensions/forms/Form/SubmitIndicator/index.d.ts +2 -0
  779. package/es/extensions/forms/Form/SubmitIndicator/index.js +3 -0
  780. package/es/extensions/forms/Form/SubmitIndicator/index.js.map +1 -0
  781. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +99 -0
  782. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -0
  783. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +117 -0
  784. package/es/extensions/forms/Form/SubmitIndicator/style/index.d.ts +5 -0
  785. package/es/extensions/forms/Form/SubmitIndicator/style/index.js +1 -0
  786. package/es/extensions/forms/Form/SubmitIndicator/style/index.js.map +1 -0
  787. package/es/extensions/forms/Form/data-context/getData.d.ts +1 -1
  788. package/es/extensions/forms/Form/data-context/getData.js.map +1 -1
  789. package/es/extensions/forms/Form/data-context/useData.d.ts +3 -3
  790. package/es/extensions/forms/Form/data-context/useData.js +30 -12
  791. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  792. package/es/extensions/forms/Form/data-context/useError.d.ts +3 -2
  793. package/es/extensions/forms/Form/data-context/useError.js +7 -6
  794. package/es/extensions/forms/Form/data-context/useError.js.map +1 -1
  795. package/es/extensions/forms/Form/index.d.ts +1 -0
  796. package/es/extensions/forms/Form/index.js +1 -0
  797. package/es/extensions/forms/Form/index.js.map +1 -1
  798. package/es/extensions/forms/Iterate/Array/Array.js +2 -2
  799. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  800. package/es/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js +2 -2
  801. package/es/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js.map +1 -1
  802. package/es/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js +2 -2
  803. package/es/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js.map +1 -1
  804. package/es/extensions/forms/StepsLayout/NextButton/NextButton.d.ts +1 -3
  805. package/es/extensions/forms/StepsLayout/NextButton/NextButton.js +4 -3
  806. package/es/extensions/forms/StepsLayout/NextButton/NextButton.js.map +1 -1
  807. package/es/extensions/forms/StepsLayout/PreviousButton/PreviousButton.d.ts +1 -3
  808. package/es/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js +6 -2
  809. package/es/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +1 -1
  810. package/es/extensions/forms/StepsLayout/Step/Step.js +2 -3
  811. package/es/extensions/forms/StepsLayout/Step/Step.js.map +1 -1
  812. package/es/extensions/forms/StepsLayout/StepsContext.d.ts +6 -4
  813. package/es/extensions/forms/StepsLayout/StepsContext.js +6 -1
  814. package/es/extensions/forms/StepsLayout/StepsContext.js.map +1 -1
  815. package/es/extensions/forms/StepsLayout/StepsLayout.d.ts +5 -3
  816. package/es/extensions/forms/StepsLayout/StepsLayout.js +108 -49
  817. package/es/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  818. package/es/extensions/forms/StepsLayout/StepsLayoutDocs.d.ts +3 -0
  819. package/es/extensions/forms/StepsLayout/StepsLayoutDocs.js +50 -0
  820. package/es/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +1 -0
  821. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.css +6 -1
  822. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  823. package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +11 -1
  824. package/es/extensions/forms/StepsLayout/useStep.d.ts +3 -0
  825. package/es/extensions/forms/StepsLayout/useStep.js +12 -0
  826. package/es/extensions/forms/StepsLayout/useStep.js.map +1 -0
  827. package/es/extensions/forms/Value/Boolean/Boolean.js +2 -2
  828. package/es/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  829. package/es/extensions/forms/Value/Number/Number.js +5 -5
  830. package/es/extensions/forms/Value/Number/Number.js.map +1 -1
  831. package/es/extensions/forms/Value/String/String.js +2 -2
  832. package/es/extensions/forms/Value/String/String.js.map +1 -1
  833. package/es/extensions/forms/hooks/DataValueDocs.js +3 -3
  834. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  835. package/es/extensions/forms/hooks/index.d.ts +6 -3
  836. package/es/extensions/forms/hooks/index.js +2 -3
  837. package/es/extensions/forms/hooks/index.js.map +1 -1
  838. package/es/extensions/forms/hooks/useFieldProps.d.ts +23 -0
  839. package/es/extensions/forms/hooks/useFieldProps.js +749 -0
  840. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -0
  841. package/es/extensions/forms/style/dnb-forms.css +107 -3
  842. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  843. package/es/extensions/forms/types.d.ts +69 -6
  844. package/es/extensions/forms/types.js +3 -2
  845. package/es/extensions/forms/types.js.map +1 -1
  846. package/es/extensions/forms/utils/ajv.d.ts +9 -7
  847. package/es/extensions/forms/utils/ajv.js +34 -15
  848. package/es/extensions/forms/utils/ajv.js.map +1 -1
  849. package/es/fragments/scroll-view/ScrollView.d.ts +2 -2
  850. package/es/fragments/scroll-view/ScrollView.js +4 -1
  851. package/es/fragments/scroll-view/ScrollView.js.map +1 -1
  852. package/es/shared/Context.d.ts +20 -11
  853. package/es/shared/Context.js.map +1 -1
  854. package/es/shared/Eufemia.d.ts +2 -2
  855. package/es/shared/Eufemia.js +2 -2
  856. package/es/shared/Eufemia.js.map +1 -1
  857. package/es/shared/Provider.js.map +1 -1
  858. package/es/shared/defaults.d.ts +3 -3
  859. package/es/shared/defaults.js.map +1 -1
  860. package/es/shared/helpers/debounce.d.ts +21 -30
  861. package/es/shared/helpers/debounce.js +21 -9
  862. package/es/shared/helpers/debounce.js.map +1 -1
  863. package/es/shared/helpers/isAsync.d.ts +7 -0
  864. package/es/shared/helpers/isAsync.js +14 -0
  865. package/es/shared/helpers/isAsync.js.map +1 -0
  866. package/es/shared/helpers/runCssVersionMismatchWarning.d.ts +8 -0
  867. package/es/shared/helpers/runCssVersionMismatchWarning.js +25 -0
  868. package/es/shared/helpers/runCssVersionMismatchWarning.js.map +1 -0
  869. package/es/{extensions/forms/hooks → shared/helpers}/useId.js +1 -1
  870. package/es/shared/helpers/useId.js.map +1 -0
  871. package/es/shared/helpers/useMountEffect.js.map +1 -0
  872. package/es/shared/helpers/useMounted.js.map +1 -0
  873. package/es/shared/helpers/useSharedState.js +15 -9
  874. package/es/shared/helpers/useSharedState.js.map +1 -1
  875. package/es/shared/helpers/useUnmountEffect.js.map +1 -0
  876. package/es/shared/helpers/useUpdateEffect.js.map +1 -0
  877. package/es/shared/helpers.js +2 -0
  878. package/es/shared/helpers.js.map +1 -1
  879. package/es/shared/index.d.ts +10 -10
  880. package/es/shared/index.js +9 -11
  881. package/es/shared/index.js.map +1 -1
  882. package/es/shared/locales/en-GB.d.ts +1 -0
  883. package/es/shared/locales/en-GB.js +2 -1
  884. package/es/shared/locales/en-GB.js.map +1 -1
  885. package/es/shared/locales/en-US.d.ts +1 -0
  886. package/es/shared/locales/index.d.ts +4 -2
  887. package/es/shared/locales/index.js +2 -1
  888. package/es/shared/locales/index.js.map +1 -1
  889. package/es/shared/locales/nb-NO.d.ts +1 -0
  890. package/es/shared/locales/nb-NO.js +2 -1
  891. package/es/shared/locales/nb-NO.js.map +1 -1
  892. package/es/shared/types.d.ts +4 -1
  893. package/es/shared/types.js.map +1 -1
  894. package/es/shared/useLocale.d.ts +2 -0
  895. package/es/shared/useLocale.js +29 -0
  896. package/es/shared/useLocale.js.map +1 -0
  897. package/es/style/core/scopes.scss +3 -0
  898. package/es/style/dnb-ui-basis.css +1 -0
  899. package/es/style/dnb-ui-basis.min.css +1 -1
  900. package/es/style/dnb-ui-body.css +1 -0
  901. package/es/style/dnb-ui-body.min.css +1 -1
  902. package/es/style/dnb-ui-components.css +433 -195
  903. package/es/style/dnb-ui-components.min.css +3 -3
  904. package/es/style/dnb-ui-core.css +1 -0
  905. package/es/style/dnb-ui-core.min.css +1 -1
  906. package/es/style/dnb-ui-extensions.css +107 -3
  907. package/es/style/dnb-ui-extensions.min.css +1 -1
  908. package/es/style/dnb-ui-forms.css +107 -3
  909. package/es/style/dnb-ui-forms.min.css +1 -1
  910. package/es/style/dnb-ui-forms.scss +1 -0
  911. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -6
  912. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  913. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +596 -328
  914. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +17 -7
  915. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -6
  916. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  917. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +107 -3
  918. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  919. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +107 -3
  920. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  921. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +5 -2
  922. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  923. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +710 -374
  924. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +21 -9
  925. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +5 -2
  926. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  927. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +107 -3
  928. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  929. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +107 -3
  930. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  931. package/es/style/themes/theme-ui/ui-theme-basis.css +3 -6
  932. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  933. package/es/style/themes/theme-ui/ui-theme-components.css +596 -326
  934. package/es/style/themes/theme-ui/ui-theme-components.min.css +17 -7
  935. package/es/style/themes/theme-ui/ui-theme-elements.css +3 -6
  936. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  937. package/es/style/themes/theme-ui/ui-theme-extensions.css +107 -3
  938. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  939. package/es/style/themes/theme-ui/ui-theme-forms.css +107 -3
  940. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  941. package/es/style/themes/theme-ui/ui-theme-tags.css +40 -15
  942. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  943. package/esm/dnb-ui-basis.min.mjs +1 -1
  944. package/esm/dnb-ui-components.min.mjs +1 -1
  945. package/esm/dnb-ui-elements.min.mjs +1 -1
  946. package/esm/dnb-ui-extensions.min.mjs +3 -3
  947. package/esm/dnb-ui-lib.min.mjs +1 -1
  948. package/extensions/forms/DataContext/At/At.js.map +1 -1
  949. package/extensions/forms/DataContext/Context.d.ts +31 -8
  950. package/extensions/forms/DataContext/Context.js +14 -3
  951. package/extensions/forms/DataContext/Context.js.map +1 -1
  952. package/extensions/forms/DataContext/Provider/Provider.d.ts +29 -16
  953. package/extensions/forms/DataContext/Provider/Provider.js +325 -78
  954. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  955. package/extensions/forms/DataContext/Provider/ProviderDocs.d.ts +3 -0
  956. package/extensions/forms/DataContext/Provider/ProviderDocs.js +85 -0
  957. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -0
  958. package/extensions/forms/Field/ArraySelection/ArraySelection.js +2 -2
  959. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  960. package/extensions/forms/Field/Date/Date.js +4 -4
  961. package/extensions/forms/Field/Date/Date.js.map +1 -1
  962. package/extensions/forms/Field/Expiry/Expiry.js +5 -5
  963. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  964. package/extensions/forms/Field/Number/Number.js +4 -4
  965. package/extensions/forms/Field/Number/Number.js.map +1 -1
  966. package/extensions/forms/Field/Password/Password.d.ts +1 -1
  967. package/extensions/forms/Field/Password/Password.js.map +1 -1
  968. package/extensions/forms/Field/Password/style/dnb-password.scss +1 -1
  969. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +5 -5
  970. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  971. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +3 -1
  972. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  973. package/extensions/forms/Field/SelectCountry/SelectCountry.js +4 -4
  974. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  975. package/extensions/forms/Field/Selection/Selection.js +6 -6
  976. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  977. package/extensions/forms/Field/String/String.d.ts +6 -6
  978. package/extensions/forms/Field/String/String.js +17 -15
  979. package/extensions/forms/Field/String/String.js.map +1 -1
  980. package/extensions/forms/Field/String/StringDocs.js +9 -4
  981. package/extensions/forms/Field/String/StringDocs.js.map +1 -1
  982. package/extensions/forms/Field/Toggle/Toggle.js +8 -8
  983. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  984. package/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -1
  985. package/extensions/forms/FieldBlock/FieldBlock.js +42 -20
  986. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  987. package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +2 -2
  988. package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  989. package/extensions/forms/Form/Appearance/Appearance.js +3 -0
  990. package/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
  991. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +2 -2
  992. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  993. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +2 -1
  994. package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  995. package/extensions/forms/Form/Handler/Handler.js +49 -9
  996. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  997. package/extensions/forms/Form/Handler/HandlerDocs.d.ts +3 -0
  998. package/extensions/forms/Form/Handler/HandlerDocs.js +39 -0
  999. package/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -0
  1000. package/extensions/forms/Form/SubmitButton/SubmitButton.d.ts +6 -1
  1001. package/extensions/forms/Form/SubmitButton/SubmitButton.js +21 -12
  1002. package/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  1003. package/extensions/forms/Form/SubmitButton/SubmitButtonDocs.d.ts +2 -0
  1004. package/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js +23 -0
  1005. package/extensions/forms/Form/SubmitButton/SubmitButtonDocs.js.map +1 -0
  1006. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.d.ts +14 -0
  1007. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +69 -0
  1008. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -0
  1009. package/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.d.ts +2 -0
  1010. package/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js +18 -0
  1011. package/extensions/forms/Form/SubmitIndicator/SubmitIndicatorDocs.js.map +1 -0
  1012. package/extensions/forms/Form/SubmitIndicator/index.d.ts +2 -0
  1013. package/extensions/forms/Form/SubmitIndicator/index.js +3 -0
  1014. package/extensions/forms/Form/SubmitIndicator/index.js.map +1 -0
  1015. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +99 -0
  1016. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -0
  1017. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +117 -0
  1018. package/extensions/forms/Form/SubmitIndicator/style/index.d.ts +5 -0
  1019. package/extensions/forms/Form/SubmitIndicator/style/index.js +1 -0
  1020. package/extensions/forms/Form/SubmitIndicator/style/index.js.map +1 -0
  1021. package/extensions/forms/Form/data-context/getData.d.ts +1 -1
  1022. package/extensions/forms/Form/data-context/getData.js.map +1 -1
  1023. package/extensions/forms/Form/data-context/useData.d.ts +3 -3
  1024. package/extensions/forms/Form/data-context/useData.js +32 -12
  1025. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  1026. package/extensions/forms/Form/data-context/useError.d.ts +3 -2
  1027. package/extensions/forms/Form/data-context/useError.js +8 -6
  1028. package/extensions/forms/Form/data-context/useError.js.map +1 -1
  1029. package/extensions/forms/Form/index.d.ts +1 -0
  1030. package/extensions/forms/Form/index.js +1 -0
  1031. package/extensions/forms/Form/index.js.map +1 -1
  1032. package/extensions/forms/Iterate/Array/Array.js +2 -2
  1033. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  1034. package/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js +2 -2
  1035. package/extensions/forms/Iterate/ArrayPushButton/ArrayPushButton.js.map +1 -1
  1036. package/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js +2 -2
  1037. package/extensions/forms/Iterate/ArrayRemoveElementButton/ArrayRemoveElementButton.js.map +1 -1
  1038. package/extensions/forms/StepsLayout/NextButton/NextButton.d.ts +1 -3
  1039. package/extensions/forms/StepsLayout/NextButton/NextButton.js +4 -3
  1040. package/extensions/forms/StepsLayout/NextButton/NextButton.js.map +1 -1
  1041. package/extensions/forms/StepsLayout/PreviousButton/PreviousButton.d.ts +1 -3
  1042. package/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js +6 -2
  1043. package/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +1 -1
  1044. package/extensions/forms/StepsLayout/Step/Step.js +2 -3
  1045. package/extensions/forms/StepsLayout/Step/Step.js.map +1 -1
  1046. package/extensions/forms/StepsLayout/StepsContext.d.ts +6 -4
  1047. package/extensions/forms/StepsLayout/StepsContext.js +6 -1
  1048. package/extensions/forms/StepsLayout/StepsContext.js.map +1 -1
  1049. package/extensions/forms/StepsLayout/StepsLayout.d.ts +5 -3
  1050. package/extensions/forms/StepsLayout/StepsLayout.js +111 -51
  1051. package/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  1052. package/extensions/forms/StepsLayout/StepsLayoutDocs.d.ts +3 -0
  1053. package/extensions/forms/StepsLayout/StepsLayoutDocs.js +50 -0
  1054. package/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +1 -0
  1055. package/extensions/forms/StepsLayout/style/dnb-steps-layout.css +6 -1
  1056. package/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
  1057. package/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +11 -1
  1058. package/extensions/forms/StepsLayout/useStep.d.ts +3 -0
  1059. package/extensions/forms/StepsLayout/useStep.js +13 -0
  1060. package/extensions/forms/StepsLayout/useStep.js.map +1 -0
  1061. package/extensions/forms/Value/Boolean/Boolean.js +2 -2
  1062. package/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  1063. package/extensions/forms/Value/Number/Number.js +5 -5
  1064. package/extensions/forms/Value/Number/Number.js.map +1 -1
  1065. package/extensions/forms/Value/String/String.js +2 -2
  1066. package/extensions/forms/Value/String/String.js.map +1 -1
  1067. package/extensions/forms/hooks/DataValueDocs.js +3 -3
  1068. package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  1069. package/extensions/forms/hooks/index.d.ts +6 -3
  1070. package/extensions/forms/hooks/index.js +2 -3
  1071. package/extensions/forms/hooks/index.js.map +1 -1
  1072. package/extensions/forms/hooks/useFieldProps.d.ts +23 -0
  1073. package/extensions/forms/hooks/useFieldProps.js +764 -0
  1074. package/extensions/forms/hooks/useFieldProps.js.map +1 -0
  1075. package/extensions/forms/style/dnb-forms.css +107 -3
  1076. package/extensions/forms/style/dnb-forms.min.css +1 -1
  1077. package/extensions/forms/types.d.ts +69 -6
  1078. package/extensions/forms/types.js +3 -2
  1079. package/extensions/forms/types.js.map +1 -1
  1080. package/extensions/forms/utils/ajv.d.ts +9 -7
  1081. package/extensions/forms/utils/ajv.js +34 -15
  1082. package/extensions/forms/utils/ajv.js.map +1 -1
  1083. package/fragments/scroll-view/ScrollView.d.ts +2 -2
  1084. package/fragments/scroll-view/ScrollView.js +4 -1
  1085. package/fragments/scroll-view/ScrollView.js.map +1 -1
  1086. package/package.json +1 -1
  1087. package/shared/Context.d.ts +20 -11
  1088. package/shared/Context.js.map +1 -1
  1089. package/shared/Eufemia.d.ts +2 -2
  1090. package/shared/Eufemia.js +2 -2
  1091. package/shared/Eufemia.js.map +1 -1
  1092. package/shared/Provider.js.map +1 -1
  1093. package/shared/defaults.d.ts +3 -3
  1094. package/shared/defaults.js.map +1 -1
  1095. package/shared/helpers/debounce.d.ts +21 -30
  1096. package/shared/helpers/debounce.js +23 -11
  1097. package/shared/helpers/debounce.js.map +1 -1
  1098. package/shared/helpers/isAsync.d.ts +7 -0
  1099. package/shared/helpers/isAsync.js +14 -0
  1100. package/shared/helpers/isAsync.js.map +1 -0
  1101. package/shared/helpers/runCssVersionMismatchWarning.d.ts +8 -0
  1102. package/shared/helpers/runCssVersionMismatchWarning.js +25 -0
  1103. package/shared/helpers/runCssVersionMismatchWarning.js.map +1 -0
  1104. package/{extensions/forms/hooks → shared/helpers}/useId.js +1 -1
  1105. package/shared/helpers/useId.js.map +1 -0
  1106. package/shared/helpers/useMountEffect.js.map +1 -0
  1107. package/shared/helpers/useMounted.js.map +1 -0
  1108. package/shared/helpers/useSharedState.js +15 -9
  1109. package/shared/helpers/useSharedState.js.map +1 -1
  1110. package/shared/helpers/useUnmountEffect.js.map +1 -0
  1111. package/shared/helpers/useUpdateEffect.js.map +1 -0
  1112. package/shared/helpers.js +2 -0
  1113. package/shared/helpers.js.map +1 -1
  1114. package/shared/index.d.ts +10 -10
  1115. package/shared/index.js +9 -11
  1116. package/shared/index.js.map +1 -1
  1117. package/shared/locales/en-GB.d.ts +1 -0
  1118. package/shared/locales/en-GB.js +2 -1
  1119. package/shared/locales/en-GB.js.map +1 -1
  1120. package/shared/locales/en-US.d.ts +1 -0
  1121. package/shared/locales/index.d.ts +4 -2
  1122. package/shared/locales/index.js +2 -1
  1123. package/shared/locales/index.js.map +1 -1
  1124. package/shared/locales/nb-NO.d.ts +1 -0
  1125. package/shared/locales/nb-NO.js +2 -1
  1126. package/shared/locales/nb-NO.js.map +1 -1
  1127. package/shared/types.d.ts +4 -1
  1128. package/shared/types.js.map +1 -1
  1129. package/shared/useLocale.d.ts +2 -0
  1130. package/shared/useLocale.js +29 -0
  1131. package/shared/useLocale.js.map +1 -0
  1132. package/style/core/scopes.scss +3 -0
  1133. package/style/dnb-ui-basis.css +1 -0
  1134. package/style/dnb-ui-basis.min.css +1 -1
  1135. package/style/dnb-ui-body.css +1 -0
  1136. package/style/dnb-ui-body.min.css +1 -1
  1137. package/style/dnb-ui-components.css +433 -195
  1138. package/style/dnb-ui-components.min.css +3 -3
  1139. package/style/dnb-ui-core.css +1 -0
  1140. package/style/dnb-ui-core.min.css +1 -1
  1141. package/style/dnb-ui-extensions.css +107 -3
  1142. package/style/dnb-ui-extensions.min.css +1 -1
  1143. package/style/dnb-ui-forms.css +107 -3
  1144. package/style/dnb-ui-forms.min.css +1 -1
  1145. package/style/dnb-ui-forms.scss +1 -0
  1146. package/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -6
  1147. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  1148. package/style/themes/theme-eiendom/eiendom-theme-components.css +596 -328
  1149. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +17 -7
  1150. package/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -6
  1151. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  1152. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +107 -3
  1153. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  1154. package/style/themes/theme-eiendom/eiendom-theme-forms.css +107 -3
  1155. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  1156. package/style/themes/theme-sbanken/sbanken-theme-basis.css +5 -2
  1157. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  1158. package/style/themes/theme-sbanken/sbanken-theme-components.css +710 -374
  1159. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +21 -9
  1160. package/style/themes/theme-sbanken/sbanken-theme-elements.css +5 -2
  1161. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  1162. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +107 -3
  1163. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  1164. package/style/themes/theme-sbanken/sbanken-theme-forms.css +107 -3
  1165. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  1166. package/style/themes/theme-ui/ui-theme-basis.css +3 -6
  1167. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  1168. package/style/themes/theme-ui/ui-theme-components.css +596 -326
  1169. package/style/themes/theme-ui/ui-theme-components.min.css +17 -7
  1170. package/style/themes/theme-ui/ui-theme-elements.css +3 -6
  1171. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  1172. package/style/themes/theme-ui/ui-theme-extensions.css +107 -3
  1173. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  1174. package/style/themes/theme-ui/ui-theme-forms.css +107 -3
  1175. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  1176. package/style/themes/theme-ui/ui-theme-tags.css +40 -15
  1177. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  1178. package/umd/dnb-ui-basis.min.js +1 -1
  1179. package/umd/dnb-ui-components.min.js +1 -1
  1180. package/umd/dnb-ui-elements.min.js +1 -1
  1181. package/umd/dnb-ui-extensions.min.js +3 -3
  1182. package/umd/dnb-ui-lib.min.js +1 -1
  1183. package/cjs/extensions/forms/hooks/useDataValue.d.ts +0 -18
  1184. package/cjs/extensions/forms/hooks/useDataValue.js +0 -461
  1185. package/cjs/extensions/forms/hooks/useDataValue.js.map +0 -1
  1186. package/cjs/extensions/forms/hooks/useId.js.map +0 -1
  1187. package/cjs/extensions/forms/hooks/useMountEffect.js.map +0 -1
  1188. package/cjs/extensions/forms/hooks/useMounted.js.map +0 -1
  1189. package/cjs/extensions/forms/hooks/useUnmountEffect.js.map +0 -1
  1190. package/cjs/extensions/forms/hooks/useUpdateEffect.js.map +0 -1
  1191. package/es/extensions/forms/hooks/useDataValue.d.ts +0 -18
  1192. package/es/extensions/forms/hooks/useDataValue.js +0 -443
  1193. package/es/extensions/forms/hooks/useDataValue.js.map +0 -1
  1194. package/es/extensions/forms/hooks/useId.js.map +0 -1
  1195. package/es/extensions/forms/hooks/useMountEffect.js.map +0 -1
  1196. package/es/extensions/forms/hooks/useMounted.js.map +0 -1
  1197. package/es/extensions/forms/hooks/useUnmountEffect.js.map +0 -1
  1198. package/es/extensions/forms/hooks/useUpdateEffect.js.map +0 -1
  1199. package/extensions/forms/hooks/useDataValue.d.ts +0 -18
  1200. package/extensions/forms/hooks/useDataValue.js +0 -451
  1201. package/extensions/forms/hooks/useDataValue.js.map +0 -1
  1202. package/extensions/forms/hooks/useId.js.map +0 -1
  1203. package/extensions/forms/hooks/useMountEffect.js.map +0 -1
  1204. package/extensions/forms/hooks/useMounted.js.map +0 -1
  1205. package/extensions/forms/hooks/useUnmountEffect.js.map +0 -1
  1206. package/extensions/forms/hooks/useUpdateEffect.js.map +0 -1
  1207. /package/cjs/{extensions/forms/hooks → shared/helpers}/useId.d.ts +0 -0
  1208. /package/cjs/{extensions/forms/hooks → shared/helpers}/useMountEffect.d.ts +0 -0
  1209. /package/cjs/{extensions/forms/hooks → shared/helpers}/useMountEffect.js +0 -0
  1210. /package/cjs/{extensions/forms/hooks → shared/helpers}/useMounted.d.ts +0 -0
  1211. /package/cjs/{extensions/forms/hooks → shared/helpers}/useMounted.js +0 -0
  1212. /package/cjs/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.d.ts +0 -0
  1213. /package/cjs/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.js +0 -0
  1214. /package/cjs/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.d.ts +0 -0
  1215. /package/cjs/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.js +0 -0
  1216. /package/es/{extensions/forms/hooks → shared/helpers}/useId.d.ts +0 -0
  1217. /package/es/{extensions/forms/hooks → shared/helpers}/useMountEffect.d.ts +0 -0
  1218. /package/es/{extensions/forms/hooks → shared/helpers}/useMountEffect.js +0 -0
  1219. /package/es/{extensions/forms/hooks → shared/helpers}/useMounted.d.ts +0 -0
  1220. /package/es/{extensions/forms/hooks → shared/helpers}/useMounted.js +0 -0
  1221. /package/es/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.d.ts +0 -0
  1222. /package/es/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.js +0 -0
  1223. /package/es/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.d.ts +0 -0
  1224. /package/es/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.js +0 -0
  1225. /package/{extensions/forms/hooks → shared/helpers}/useId.d.ts +0 -0
  1226. /package/{extensions/forms/hooks → shared/helpers}/useMountEffect.d.ts +0 -0
  1227. /package/{extensions/forms/hooks → shared/helpers}/useMountEffect.js +0 -0
  1228. /package/{extensions/forms/hooks → shared/helpers}/useMounted.d.ts +0 -0
  1229. /package/{extensions/forms/hooks → shared/helpers}/useMounted.js +0 -0
  1230. /package/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.d.ts +0 -0
  1231. /package/{extensions/forms/hooks → shared/helpers}/useUnmountEffect.js +0 -0
  1232. /package/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.d.ts +0 -0
  1233. /package/{extensions/forms/hooks → shared/helpers}/useUpdateEffect.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFieldProps.js","names":["useRef","useEffect","useContext","useCallback","useMemo","useReducer","pointer","errorChanged","ajvErrorsToOneFormError","FormError","Context","DataContext","combineDescribedBy","useId","useUpdateEffect","useMountEffect","useUnmountEffect","SharedContext","FieldBlockContext","IterateElementContext","useProcessManager","createSharedState","useSharedState","isAsync","useFieldProps","props","_props$disabled","_dataContext$props","_dataContext$ajvInsta","_localErrorRef$curren","_ref","_props$path","_props$autoComplete","path","itemPath","emptyValue","required","info","warning","error","errorProp","errorMessages","onFocus","onBlur","onChange","onBlurValidator","validator","schema","validateInitially","validateUnchanged","continuousValidation","toInput","value","fromInput","toEvent","transformValue","fromExternal","validateRequired","res","undefined","disabled","readOnly","forceUpdate","startProcess","id","dataContext","fieldBlockContext","iterateElementContext","sharedContext","tr","translation","Forms","transformers","handlePathChange","handlePathChangeDataContext","updateDataValue","updateDataValueDataContext","validateData","validateDataDataContext","setFieldState","setFieldStateDataContext","setFieldError","setFieldErrorDataContext","setProps","setPropsDataContext","errors","dataContextErrors","contextErrorMessages","onChangeContext","dataContextError","inFieldBlock","Boolean","setFieldStateFieldBlock","showFieldError","showFieldErrorFieldBlock","inIterate","index","iterateElementIndex","iterateElementValue","handleChange","handleIterateElementChange","substring","Error","identifier","externalValue","current","has","get","data","valueRef","changedRef","hasFocusRef","showErrorRef","errorMethodRef","localErrorRef","contextErrorRef","validatorRef","onBlurValidatorRef","schemaValidatorRef","ajvInstance","compile","asyncBehaviorIsEnabled","validatedWithValue","changeEventResultRef","currentAsyncProcessRef","setCurrentAsyncProcess","name","asyncBufferRef","key","fulfill","hasAsyncProcesses","window","requestAnimationFrame","eventPool","onChangeLocal","addToPool","fn","runAsync","runPool","cb","pending","fieldStateRef","state","resolveValidatingState","showError","hideError","hasVisibleError","hasErrorProp","hasError","_ref2","errorMessagesRef","_objectSpread","fieldErrorRequired","prepareError","_error$messageValues","message","validationRule","_errorMessagesRef$cur","fieldMessage","messageWithValues","Object","entries","messageValues","reduce","replace","stateId","persistErrorState","method","errorArg","keys","filter","length","type","content","showInitially","clearErrorState","callValidator","opts","result","callOnBlurValidator","valueOverride","validateValue","isProcessActive","requiredError","isChanged","handleError","setHasFocus","hasFocus","yieldAsyncProcess","waitFor","withValidatedValueOf","Promise","resolve","some","processName","withStates","handleChangeEventResult","warningRef","infoRef","success","setEventResult","callOnChangeContext","updateValue","newValue","argFromInput","additionalArgs","currentValue","transformedValue","getArgs","args","apply","iterateValuePath","handleFocus","handleBlur","handleMountField","handleUnMountField","_dataContext$ajvInsta2","hasValue","existingValue","sharedState","sharedValue","showAllErrors","formState","onSubmitHandler","_dataContext$setField","setFieldEventListener","call","show","mountedFieldsRef","htmlAttributes","acc","cur","startsWith","_fieldBlockContext$fi","stateIds","fieldStateIdsRef","ids","fieldBlockProps","fieldState","sharedData","set","autoComplete","omitFieldProps","restProps","_objectWithoutProperties","_excluded"],"sources":["../../../../../src/extensions/forms/hooks/useFieldProps.ts"],"sourcesContent":["import {\n useRef,\n useEffect,\n useContext,\n useCallback,\n useMemo,\n useReducer,\n AriaAttributes,\n} from 'react'\nimport pointer from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport { errorChanged } from '../utils'\nimport { ajvErrorsToOneFormError } from '../utils/ajv'\nimport {\n FormError,\n FieldProps,\n AdditionalEventArgs,\n SubmitState,\n EventReturnWithStateObjectAndSuccess,\n EventStateObjectWithSuccess,\n} from '../types'\nimport { Context as DataContext, ContextState } from '../DataContext'\nimport { combineDescribedBy } from '../../../shared/component-helper'\nimport useId from '../../../shared/helpers/useId'\nimport useUpdateEffect from '../../../shared/helpers/useUpdateEffect'\nimport useMountEffect from '../../../shared/helpers/useMountEffect'\nimport useUnmountEffect from '../../../shared/helpers/useUnmountEffect'\nimport SharedContext from '../../../shared/Context'\nimport FieldBlockContext from '../FieldBlock/FieldBlockContext'\nimport IterateElementContext from '../Iterate/IterateElementContext'\nimport useProcessManager from './useProcessManager'\nimport {\n createSharedState,\n useSharedState,\n} from '../../../shared/helpers/useSharedState'\nimport { isAsync } from '../../../shared/helpers/isAsync'\n\ntype SubmitStateWithValidating = SubmitState | 'validating'\ntype AsyncProcesses =\n | 'validator'\n | 'onBlurValidator'\n | 'onChangeLocal'\n | 'onChangeContext'\ntype PersistErrorStateMethod =\n /**\n * Add or remove the error regardless\n */\n | 'weak'\n /**\n * Check if there is an existing error, and if so, keep it\n */\n | 'gracefully'\n /**\n * Remove the error, if any\n */\n | 'wipe'\ntype AsyncProcessesBuffer = {\n fulfill: () => void\n hasAsyncProcesses: () => boolean\n}\n\nexport type DataAttributes = {\n [property: `data-${string}`]: string\n}\n\nexport default function useFieldProps<\n Value = unknown,\n Props extends FieldProps<Value> = FieldProps<Value>,\n>(props: Props): Props & FieldProps<Value> & ReturnAdditional<Value> {\n const {\n path,\n itemPath,\n emptyValue,\n required,\n info,\n warning,\n error: errorProp,\n errorMessages,\n onFocus,\n onBlur,\n onChange,\n onBlurValidator,\n validator,\n schema,\n validateInitially,\n validateUnchanged,\n continuousValidation,\n toInput = (value: Value) => value,\n fromInput = (value: Value) => value,\n toEvent = (value: Value) => value,\n transformValue = (value: Value) => value,\n fromExternal = (value: Value) => value,\n validateRequired = (value: Value, { emptyValue, required, error }) => {\n const res =\n required &&\n (value === emptyValue ||\n (typeof emptyValue === 'undefined' && value === ''))\n ? error\n : undefined\n\n return res\n },\n } = props\n\n const disabled = props.disabled ?? props.readOnly\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const { startProcess } = useProcessManager()\n const id = useId(props.id)\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const iterateElementContext = useContext(IterateElementContext)\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const transformers = useRef({\n toInput,\n fromInput,\n toEvent,\n fromExternal,\n transformValue,\n validateRequired,\n })\n\n const {\n handlePathChange: handlePathChangeDataContext,\n updateDataValue: updateDataValueDataContext,\n validateData: validateDataDataContext,\n setFieldState: setFieldStateDataContext,\n setFieldError: setFieldErrorDataContext,\n setProps: setPropsDataContext,\n errors: dataContextErrors,\n contextErrorMessages,\n } = dataContext ?? {}\n const onChangeContext = dataContext?.props?.onChange\n\n const dataContextError = path ? dataContextErrors?.[path] : undefined\n const inFieldBlock = Boolean(fieldBlockContext)\n const {\n setFieldState: setFieldStateFieldBlock,\n showFieldError: showFieldErrorFieldBlock,\n } = fieldBlockContext ?? {}\n const inIterate = Boolean(iterateElementContext)\n const {\n index: iterateElementIndex,\n value: iterateElementValue,\n handleChange: handleIterateElementChange,\n } = iterateElementContext ?? {}\n\n if (path && path.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid path. Data value path JSON Pointers must be from root (starting with a /).'\n )\n }\n if (itemPath && itemPath.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid itemPath. Item pathJSON Pointers must be from root of iterate element (starting with a /).'\n )\n }\n if (itemPath && !iterateElementContext) {\n throw new Error(\n 'itemPath cannot be used when not inside an iterate element context. Wrap the component in an Iterate.Loop.'\n )\n }\n\n const identifier = useMemo(() => {\n // Identifier is used is registries of multiple fields, like in the DataContext keeping track of errors\n return path ?? id\n }, [path, id])\n\n const externalValue = useMemo(() => {\n if (props.value !== emptyValue) {\n // Value-prop sent directly to the field has highest priority, overriding any surrounding source\n return transformers.current.fromExternal(props.value)\n }\n\n if (inIterate && itemPath) {\n // This field is inside an iterate, and has a pointer from the base of the element being iterated\n if (itemPath === '/') {\n return iterateElementValue\n }\n\n return pointer.has(iterateElementValue, itemPath)\n ? pointer.get(iterateElementValue, itemPath)\n : emptyValue\n }\n\n if (dataContext.data && path) {\n // There is a surrounding data context and a path for where in the source to find the data\n if (path === '/') {\n return dataContext.data\n }\n\n return pointer.has(dataContext.data, path)\n ? pointer.get(dataContext.data, path)\n : emptyValue\n }\n\n return emptyValue\n }, [\n props.value,\n emptyValue,\n inIterate,\n itemPath,\n dataContext.data,\n path,\n iterateElementValue,\n ])\n\n // Many variables are kept in refs to avoid triggering unnecessary update loops because updates using\n // useEffect depend on them (like the external `value`)\n\n // Hold an internal copy of the input value in case the input component is used uncontrolled,\n // and to handle errors in Eufemia on components that does not take updated callback functions into account.\n const valueRef = useRef<Value>(externalValue)\n const changedRef = useRef<boolean>(false)\n const hasFocusRef = useRef<boolean>(false)\n\n // Error handling\n // - Should errors received through validation be shown initially. Assume that providing a direct prop to\n // the component means it is supposed to be shown initially.\n const showErrorRef = useRef<boolean>(\n Boolean(validateInitially || errorProp)\n )\n // - Local errors are errors based on validation instructions received by\n const errorMethodRef = useRef<\n Partial<Record<PersistErrorStateMethod, Error | FormError>>\n >({})\n const localErrorRef = useRef<Error | FormError | undefined>()\n // - Context errors are from outer contexts, like validation for this field as part of the whole data set\n const contextErrorRef = useRef<Error | FormError | undefined>(\n dataContextError\n )\n\n const validatorRef = useRef(validator)\n useUpdateEffect(() => {\n validatorRef.current = validator\n }, [validator])\n const onBlurValidatorRef = useRef(onBlurValidator)\n useUpdateEffect(() => {\n onBlurValidatorRef.current = onBlurValidator\n }, [onBlurValidator])\n\n const schemaValidatorRef = useRef<ValidateFunction>(\n schema ? dataContext.ajvInstance?.compile(schema) : undefined\n )\n\n // - Async behavior\n const asyncBehaviorIsEnabled = useMemo(() => {\n return isAsync(onChange) || isAsync(onChangeContext)\n }, [onChangeContext, onChange])\n const validatedWithValue = useRef<Value>()\n const changeEventResultRef = useRef<EventStateObjectWithSuccess>(null)\n const currentAsyncProcessRef = useRef<AsyncProcesses>(null)\n const setCurrentAsyncProcess = useCallback((name: AsyncProcesses) => {\n currentAsyncProcessRef.current = name\n }, [])\n\n // When both an async onChange and async validators are used,\n // we buffer the onChange calls to avoid race conditions.\n const asyncBufferRef = useRef<\n Record<AsyncProcesses, AsyncProcessesBuffer> | Record<string, unknown>\n >({})\n\n for (const key in asyncBufferRef.current) {\n const { fulfill, hasAsyncProcesses } = (asyncBufferRef.current[key] ||\n {}) as AsyncProcessesBuffer\n if (hasAsyncProcesses?.() === false) {\n delete asyncBufferRef.current[key]\n if (typeof fulfill === 'function') {\n window.requestAnimationFrame(fulfill)\n }\n }\n }\n\n const eventPool = useRef({\n validator: null,\n onBlurValidator: null,\n onChangeContext: null,\n onChangeLocal: null,\n })\n\n const addToPool = useCallback(\n (name: keyof typeof eventPool.current, fn, runAsync) => {\n if (!eventPool.current[name]) {\n eventPool.current[name] = { fn, runAsync }\n }\n },\n []\n )\n\n const runPool = useCallback(async (cb = null) => {\n for (const key in eventPool.current) {\n if (!eventPool.current[key] || eventPool.current[key].pending) {\n continue\n }\n\n const { fn, runAsync } = eventPool.current[key] || {}\n if (fn) {\n eventPool.current[key].pending = true\n eventPool.current[key] = null\n\n if (runAsync) {\n await fn()\n } else {\n fn()\n }\n }\n }\n\n cb?.()\n }, [])\n\n // Put props into the surrounding data context\n setPropsDataContext?.(identifier, props)\n\n const fieldStateRef = useRef<SubmitStateWithValidating>()\n const setFieldState = useCallback(\n (state: SubmitStateWithValidating) => {\n fieldStateRef.current = state\n setFieldStateDataContext(identifier, resolveValidatingState(state))\n if (!validateInitially) {\n forceUpdate()\n }\n },\n [setFieldStateDataContext, identifier, validateInitially]\n )\n\n const showError = useCallback(() => {\n showErrorRef.current = true\n showFieldErrorFieldBlock?.(identifier, true)\n }, [showFieldErrorFieldBlock, identifier])\n\n const hideError = useCallback(() => {\n showErrorRef.current = false\n showFieldErrorFieldBlock?.(identifier, false)\n }, [showFieldErrorFieldBlock, identifier])\n\n const error =\n showErrorRef.current ||\n // If the error is a type error, we want to show it even if the field as not been used\n localErrorRef.current?.['validationRule'] === 'type'\n ? errorProp ?? localErrorRef.current ?? contextErrorRef.current\n : undefined\n\n const hasVisibleError =\n Boolean(error) || (inFieldBlock && fieldBlockContext.hasErrorProp)\n const hasError = useCallback(() => {\n return Boolean(\n errorProp ?? localErrorRef.current ?? contextErrorRef.current\n )\n }, [errorProp])\n\n const errorMessagesRef = useRef(null)\n errorMessagesRef.current = useMemo(() => {\n return {\n required: tr.fieldErrorRequired,\n ...errorMessages,\n }\n }, [errorMessages, tr.fieldErrorRequired])\n\n /**\n * Prepare error from validation logic with correct error messages based on props\n */\n const prepareError = useCallback(\n (error: Error | FormError | undefined): FormError | undefined => {\n if (error instanceof FormError) {\n let message = error.message\n\n const { validationRule } = error\n if (typeof validationRule === 'string') {\n const fieldMessage = errorMessagesRef.current?.[validationRule]\n if (fieldMessage) {\n message = fieldMessage\n }\n }\n\n const messageWithValues = Object.entries(\n error.messageValues ?? {}\n ).reduce((message, [key, value]) => {\n return message.replace(`{${key}}`, value)\n }, message)\n\n error.message = messageWithValues\n\n return error\n }\n\n return error\n },\n []\n )\n\n /**\n * Based on validation, update error state, locally and relevant surrounding contexts\n */\n const stateId = useId()\n const persistErrorState = useCallback(\n (\n method: PersistErrorStateMethod,\n errorArg: Error | FormError | undefined = undefined\n ) => {\n const error = prepareError(errorArg)\n\n if (!errorChanged(error, localErrorRef.current)) {\n // In case different triggers lead to validation with no changes in the result (like still no error, or the same error),\n // avoid unnecessary re-renders by letting the old error object stay in the state and skip re-rendering.\n return\n }\n\n if (method === 'wipe') {\n errorMethodRef.current = {}\n } else {\n errorMethodRef.current[method] = error\n }\n\n if (\n !error &&\n method === 'gracefully' &&\n Object.keys(errorMethodRef.current).filter(Boolean).length > 0\n ) {\n // If the error is removed, we need to check if there are other errors that still should be shown\n return\n }\n\n localErrorRef.current = error\n\n // Tell the data context about the error, so it can stop the user from submitting the form until the error has been fixed\n setFieldErrorDataContext?.(identifier, error)\n\n // Set the visual states\n setFieldStateDataContext?.(identifier, error ? 'error' : undefined)\n setFieldStateFieldBlock?.({\n stateId,\n identifier,\n type: 'error',\n content: error,\n showInitially: Boolean(inFieldBlock && validateInitially),\n })\n\n forceUpdate()\n },\n [\n prepareError,\n setFieldErrorDataContext,\n identifier,\n setFieldStateDataContext,\n setFieldStateFieldBlock,\n stateId,\n inFieldBlock,\n validateInitially,\n ]\n )\n\n const clearErrorState = useCallback(() => {\n persistErrorState('wipe')\n }, [persistErrorState])\n\n const callValidator = useCallback(async () => {\n if (typeof validatorRef.current !== 'function') {\n return\n }\n\n const runAsync = isAsync(validatorRef.current)\n\n if (runAsync) {\n setCurrentAsyncProcess('validator')\n setFieldState('validating')\n hideError()\n }\n\n const opts = {\n ...contextErrorMessages,\n ...errorMessagesRef.current,\n }\n\n // Run async regardless to support Promise based validators\n const result = await validatorRef.current(valueRef.current, opts)\n\n persistErrorState('gracefully', result as Error)\n\n if (runAsync) {\n setFieldState(result instanceof Error ? 'error' : 'complete')\n }\n\n // Because its a better UX to show the error when the validation is async/delayed\n if (continuousValidation || runAsync) {\n // Because we first need to throw the error to be able to display it, we delay the showError call\n window.requestAnimationFrame(() => {\n showError()\n forceUpdate()\n })\n }\n\n return result\n }, [\n contextErrorMessages,\n continuousValidation,\n hideError,\n persistErrorState,\n setCurrentAsyncProcess,\n setFieldState,\n showError,\n ])\n\n const callOnBlurValidator = useCallback(\n async ({ valueOverride = null } = {}) => {\n if (typeof onBlurValidatorRef.current !== 'function') {\n return\n }\n // External blur validators makes it possible to validate values but not on every character change in case of\n // expensive validation calling external services etc.\n\n // Since the validator can return either a synchronous result or an asynchronous\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlurValidator'\n )\n\n const runAsync = isAsync(onBlurValidatorRef.current)\n\n if (runAsync) {\n setCurrentAsyncProcess('onBlurValidator')\n setFieldState('validating')\n }\n\n // Run async regardless to support Promise based validators\n const result = await onBlurValidatorRef.current(value)\n\n persistErrorState('gracefully', result as Error)\n\n if (runAsync) {\n setFieldState(result instanceof Error ? 'error' : 'complete')\n }\n\n showError()\n forceUpdate()\n },\n [persistErrorState, setCurrentAsyncProcess, setFieldState, showError]\n )\n\n /**\n * Validate the current state value by provided validator instructions\n */\n const validateValue = useCallback(async () => {\n const isProcessActive = startProcess()\n\n if (disabled) {\n if (isProcessActive()) {\n clearErrorState()\n }\n hideError()\n setFieldState(undefined)\n return // stop here\n }\n\n const value = valueRef.current\n changeEventResultRef.current = null\n validatedWithValue.current = null\n\n try {\n // Validate required\n const requiredError = transformers.current.validateRequired(value, {\n emptyValue,\n required,\n isChanged: changedRef.current,\n error: new FormError('The value is required', {\n validationRule: 'required',\n }),\n })\n if (requiredError instanceof Error) {\n throw requiredError\n }\n\n // Validate by provided JSON Schema for this value\n if (\n schemaValidatorRef.current &&\n value !== undefined &&\n !schemaValidatorRef.current(value)\n ) {\n const error = ajvErrorsToOneFormError(\n schemaValidatorRef.current.errors,\n valueRef.current\n )\n throw error\n }\n\n // Validate by provided derivative validator\n if (\n validatorRef.current &&\n (changedRef.current || validateInitially)\n ) {\n const result = await callValidator()\n\n if (result instanceof Error) {\n throw result\n }\n }\n\n if (isProcessActive()) {\n clearErrorState()\n }\n\n validatedWithValue.current = value\n } catch (error: unknown) {\n if (isProcessActive()) {\n persistErrorState('weak', error as Error)\n }\n }\n }, [\n startProcess,\n disabled,\n hideError,\n setFieldState,\n clearErrorState,\n emptyValue,\n required,\n validateInitially,\n callValidator,\n persistErrorState,\n ])\n\n const handleError = useCallback(() => {\n if (\n continuousValidation ||\n (continuousValidation !== false && !hasFocusRef.current)\n ) {\n // When there is a change to the value without there having been any focus callback beforehand, it is likely\n // to believe that the blur callback will not be called either, which would trigger the display of the error.\n // The error is therefore displayed immediately (unless instructed not to with continuousValidation set to false).\n showError()\n } else {\n // When changing the value, hide errors to avoid annoying the user before they are finished filling in that value\n hideError()\n }\n }, [continuousValidation, hideError, showError])\n\n const setHasFocus = useCallback(\n async (hasFocus: boolean, valueOverride?: Value) => {\n if (hasFocus) {\n // Field was put in focus (like when clicking in a text field or opening a dropdown menu)\n hasFocusRef.current = true\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onFocus'\n )\n onFocus?.(value)\n } else {\n // Field was removed from focus (like when tabbing out of a text field or closing a dropdown menu)\n hasFocusRef.current = false\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlur'\n )\n onBlur?.(value)\n\n if (!changedRef.current && !validateUnchanged) {\n // Avoid showing errors when blurring without having changed the value, so tabbing through several\n // fields does not make errors pop up all over the place\n return\n }\n\n addToPool(\n 'onBlurValidator',\n async () => await callOnBlurValidator({ valueOverride }),\n isAsync(onBlurValidatorRef.current)\n )\n\n await runPool(() => {\n // Since the user left the field, show error (if any)\n showError()\n forceUpdate()\n })\n }\n },\n [\n addToPool,\n callOnBlurValidator,\n onBlur,\n onFocus,\n runPool,\n showError,\n validateUnchanged,\n ]\n )\n\n // Await an async operation to run after criteria are fulfilled\n const yieldAsyncProcess = useCallback(\n async ({\n name,\n waitFor,\n withValidatedValueOf,\n }: {\n name: 'onChangeLocal' | 'onChangeContext' | 'onSubmitContext'\n waitFor: Array<{\n processName?: AsyncProcesses\n withStates: Array<SubmitStateWithValidating>\n }>\n withValidatedValueOf?: Value\n }) => {\n return new Promise<void>((resolve) => {\n const fulfill = () => {\n if (\n typeof withValidatedValueOf === 'undefined' ||\n // If the value has changed during the async process, we don't want to resolve anymore\n withValidatedValueOf === validatedWithValue.current\n ) {\n resolve()\n }\n }\n\n const hasAsyncProcesses = () => {\n return waitFor.some(({ processName, withStates }) => {\n return (\n (processName\n ? processName === currentAsyncProcessRef.current\n : true) &&\n withStates.some((state) => {\n return state === fieldStateRef.current\n })\n )\n })\n }\n\n if (hasAsyncProcesses() === true) {\n asyncBufferRef.current[name] = { fulfill, hasAsyncProcesses }\n } else {\n fulfill()\n setFieldState('pending')\n }\n })\n },\n [setFieldState]\n )\n\n const handleChangeEventResult = useCallback(async () => {\n const result: EventStateObjectWithSuccess =\n changeEventResultRef.current\n\n if (typeof result?.error !== 'undefined') {\n persistErrorState('gracefully', result.error)\n showError()\n }\n if (typeof result?.warning !== 'undefined') {\n warningRef.current = result.warning\n }\n if (typeof result?.info !== 'undefined') {\n infoRef.current = result.info\n }\n\n if (asyncBehaviorIsEnabled) {\n await yieldAsyncProcess({\n name: 'onSubmitContext',\n waitFor: [{ withStates: ['validating'] }],\n })\n }\n\n if (result?.success === 'saved') {\n setFieldState('success')\n } else if (result?.error) {\n setFieldState('error')\n } else if (asyncBehaviorIsEnabled) {\n setFieldState('complete')\n }\n }, [\n asyncBehaviorIsEnabled,\n persistErrorState,\n setFieldState,\n showError,\n yieldAsyncProcess,\n ])\n\n const setEventResult = useCallback(\n (result: EventReturnWithStateObjectAndSuccess) => {\n if (result instanceof Error) {\n result = { error: result }\n }\n changeEventResultRef.current = {\n ...changeEventResultRef.current,\n ...result,\n } as EventStateObjectWithSuccess\n\n handleChangeEventResult()\n },\n [handleChangeEventResult]\n )\n\n const callOnChangeContext = useCallback(async () => {\n if (asyncBehaviorIsEnabled) {\n await yieldAsyncProcess({\n name: 'onChangeContext',\n withValidatedValueOf: valueRef.current,\n waitFor: [\n {\n processName: 'validator',\n withStates: ['validating', 'error'],\n },\n {\n processName: 'onBlurValidator',\n withStates: ['validating', 'error'],\n },\n ],\n })\n }\n\n if (path) {\n if (isAsync(onChangeContext)) {\n setCurrentAsyncProcess('onChangeContext')\n setEventResult(\n (await handlePathChangeDataContext?.(\n path,\n valueRef.current\n )) as EventReturnWithStateObjectAndSuccess\n )\n } else {\n setEventResult(\n handlePathChangeDataContext?.(\n path,\n valueRef.current\n ) as EventReturnWithStateObjectAndSuccess\n )\n }\n }\n\n forceUpdate()\n }, [\n asyncBehaviorIsEnabled,\n path,\n yieldAsyncProcess,\n onChangeContext,\n setCurrentAsyncProcess,\n setEventResult,\n handlePathChangeDataContext,\n ])\n\n const updateValue = useCallback(\n async (newValue: Value) => {\n if (newValue === valueRef.current) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n valueRef.current = newValue\n\n addToPool('validator', validateValue, isAsync(validatorRef.current))\n\n addToPool(\n 'onChangeContext',\n callOnChangeContext,\n isAsync(onChangeContext)\n )\n\n await runPool(() => {\n handleError()\n })\n },\n [\n addToPool,\n callOnChangeContext,\n handleError,\n onChangeContext,\n runPool,\n validateValue,\n ]\n )\n\n const handleChange = useCallback(\n async (\n argFromInput: Value,\n additionalArgs: AdditionalEventArgs = undefined\n ) => {\n const currentValue = valueRef.current\n const fromInput = transformers.current.fromInput(argFromInput)\n\n if (fromInput === currentValue) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n const transformedValue = transformers.current.transformValue(\n fromInput,\n currentValue\n )\n\n // Must be set before validation\n changedRef.current = true\n\n if (asyncBehaviorIsEnabled) {\n hideError()\n await updateValue(transformedValue)\n } else {\n updateValue(transformedValue)\n }\n\n const getArgs = (): [Value] | [Value, AdditionalEventArgs] => {\n const value = transformers.current.toEvent(\n valueRef.current,\n 'onChange'\n )\n\n return typeof additionalArgs !== 'undefined'\n ? [value, additionalArgs]\n : [value]\n }\n\n if (isAsync(onChange)) {\n addToPool(\n 'onChangeLocal',\n async () => {\n const args = getArgs()\n\n await yieldAsyncProcess({\n name: 'onChangeLocal',\n withValidatedValueOf: args[0],\n waitFor: [\n {\n processName: 'validator',\n withStates: ['validating', 'error'],\n },\n {\n processName: 'onBlurValidator',\n withStates: ['validating', 'error'],\n },\n {\n processName: 'onChangeContext',\n withStates: ['pending', 'error'],\n },\n ],\n })\n\n setCurrentAsyncProcess('onChangeLocal')\n\n // If the value has changed during the async process, we don't want to call the onChange anymore\n setEventResult(await onChange?.apply(this, args))\n },\n true\n )\n } else {\n setEventResult(onChange?.apply(this, getArgs()))\n }\n\n await runPool(() => {\n if (itemPath) {\n const iterateValuePath = `/${iterateElementIndex}${\n itemPath && itemPath !== '/' ? itemPath : ''\n }`\n handleIterateElementChange?.(iterateValuePath, valueRef.current)\n }\n })\n },\n [\n addToPool,\n asyncBehaviorIsEnabled,\n handleIterateElementChange,\n hideError,\n itemPath,\n iterateElementIndex,\n onChange,\n runPool,\n setCurrentAsyncProcess,\n setEventResult,\n updateValue,\n yieldAsyncProcess,\n ]\n )\n\n const handleFocus = useCallback(() => setHasFocus(true), [setHasFocus])\n const handleBlur = useCallback(() => setHasFocus(false), [setHasFocus])\n\n useMountEffect(() => {\n dataContext?.handleMountField(identifier)\n\n validateValue()\n })\n useUnmountEffect(() => {\n dataContext?.handleUnMountField(identifier)\n })\n\n useUpdateEffect(() => {\n schemaValidatorRef.current = schema\n ? dataContext.ajvInstance?.compile(schema)\n : undefined\n validateValue()\n }, [schema, validateValue])\n\n useUpdateEffect(() => {\n // Error or removed error for this field from the surrounding data context (by path)\n if (valueRef.current !== externalValue) {\n valueRef.current = externalValue\n validateValue()\n }\n forceUpdate()\n }, [externalValue, validateValue])\n\n useEffect(() => {\n const error = prepareError(dataContextError)\n if (errorChanged(error, contextErrorRef.current)) {\n contextErrorRef.current = error\n forceUpdate()\n }\n }, [dataContextError, prepareError])\n\n useEffect(() => {\n if (path) {\n let value = props.value\n\n // First, look for existing data in the context\n const hasValue = pointer.has(dataContext.data, path)\n const existingValue = hasValue\n ? pointer.get(dataContext.data, path)\n : undefined\n\n // If no data where found in the dataContext, look for shared data\n if (\n dataContext.id &&\n !hasValue &&\n typeof existingValue === 'undefined' &&\n typeof value === 'undefined'\n ) {\n const sharedState = createSharedState(dataContext.id)\n const hasValue = pointer.has(sharedState.data, path)\n if (hasValue) {\n const sharedValue = pointer.get(sharedState.data, path)\n if (sharedValue) {\n value = sharedValue\n }\n }\n }\n\n if (\n !hasValue ||\n (value !== existingValue &&\n // Prevents an infinite loop by skipping the update if the value hasn't changed\n valueRef.current !== existingValue)\n ) {\n // Update the data context when a pointer not exists,\n // but was given initially.\n updateDataValueDataContext?.(path, value)\n validateDataDataContext?.()\n }\n }\n }, [\n dataContext.data,\n dataContext.id,\n path,\n props.value,\n updateDataValueDataContext,\n validateDataDataContext,\n ])\n\n useEffect(() => {\n if (dataContext.showAllErrors) {\n // If showError on a surrounding data context was changed and set to true, it is because the user clicked next, submit or\n // something else that should lead to showing the user all errors.\n showError()\n forceUpdate()\n }\n }, [dataContext.showAllErrors, showError])\n\n useEffect(() => {\n if (\n dataContext.formState === 'pending' &&\n (validatorRef.current || onBlurValidatorRef.current)\n ) {\n hideError()\n forceUpdate()\n }\n }, [dataContext.formState, hideError])\n\n const onSubmitHandler = useCallback(async () => {\n if (hasError()) {\n return // stop here\n }\n\n addToPool('validator', callValidator, isAsync(validatorRef.current))\n addToPool(\n 'onBlurValidator',\n callOnBlurValidator,\n isAsync(onBlurValidatorRef.current)\n )\n\n await runPool()\n }, [addToPool, callOnBlurValidator, callValidator, hasError, runPool])\n\n // Validate/call validator functions during submit of the form\n useMountEffect(() => {\n dataContext?.setFieldEventListener?.(\n identifier,\n 'onSubmit',\n onSubmitHandler\n )\n })\n\n // Set the error in the field block context if this field is inside a field block\n useMountEffect(() => {\n if (inFieldBlock) {\n if (errorProp) {\n setFieldStateFieldBlock?.({\n identifier,\n type: 'error',\n content: errorProp,\n showInitially: true,\n show: true,\n })\n }\n if (warning) {\n setFieldStateFieldBlock?.({\n identifier,\n type: 'warning',\n content: warning,\n showInitially: true,\n show: true,\n })\n }\n if (info) {\n setFieldStateFieldBlock?.({\n identifier,\n type: 'info',\n content: info,\n showInitially: true,\n show: true,\n })\n }\n\n return () => {\n // Unmount procedure\n if (fieldBlockContext.mountedFieldsRef) {\n fieldBlockContext.mountedFieldsRef.current[identifier] = true\n }\n }\n }\n })\n\n const infoRef = useRef<React.ReactNode>(info)\n const warningRef = useRef<React.ReactNode>(warning)\n useUpdateEffect(() => {\n infoRef.current = info\n warningRef.current = warning\n forceUpdate()\n }, [info, warning])\n\n // - Handle htmlAttributes\n const htmlAttributes = useMemo(() => {\n return Object.keys(props).reduce<AriaAttributes>((acc, cur) => {\n if (cur.startsWith('aria-') || cur.startsWith('data-')) {\n acc[cur] = props[cur]\n }\n return acc\n }, {})\n }, [props])\n\n if (error) {\n htmlAttributes['aria-invalid'] = error ? 'true' : 'false'\n }\n if (required) {\n htmlAttributes['aria-required'] = required ? 'true' : 'false'\n }\n if (inFieldBlock) {\n // Mount the field in the field block context\n if (fieldBlockContext.mountedFieldsRef) {\n fieldBlockContext.mountedFieldsRef.current[identifier] = true\n }\n\n // Check if there are any state IDs to be added to the aria-describedby attribute\n const stateIds = fieldBlockContext.fieldStateIdsRef?.current\n\n if (stateIds) {\n htmlAttributes['aria-describedby'] = combineDescribedBy(\n htmlAttributes,\n [\n error && stateIds.error,\n warning && stateIds.warning,\n info && stateIds.info,\n ].filter(Boolean)\n )\n }\n } else {\n const ids = [\n (error || errorProp) && `${id}-form-status--error`,\n warning && `${id}-form-status--warning`,\n info && `${id}-form-status--info`,\n ].filter(Boolean)\n\n if (ids.length) {\n htmlAttributes['aria-describedby'] = combineDescribedBy(\n htmlAttributes,\n ids\n )\n }\n }\n\n const fieldBlockProps = {\n /** Documented APIs */\n info: !inFieldBlock ? infoRef.current : undefined,\n warning: !inFieldBlock ? warningRef.current : undefined,\n error: !inFieldBlock ? error : undefined,\n\n /** HTML Attributes */\n disabled:\n onBlurValidator &&\n currentAsyncProcessRef.current === 'onBlurValidator' &&\n fieldStateRef.current === 'validating'\n ? true\n : disabled,\n\n /** Internal */\n fieldState: resolveValidatingState(fieldStateRef.current),\n }\n\n const sharedData = useSharedState(id)\n sharedData.set(fieldBlockProps)\n\n return {\n ...props,\n ...fieldBlockProps,\n\n /** HTML Attributes */\n name: props.name || props.path?.replace('/', '') || id,\n autoComplete:\n props.autoComplete ??\n (dataContext.autoComplete === true ? 'on' : undefined),\n\n /** Documented APIs */\n id,\n value: transformers.current.toInput(valueRef.current),\n hasError: hasVisibleError,\n isChanged: changedRef.current,\n htmlAttributes,\n setHasFocus,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n\n /** Internal */\n dataContext,\n }\n}\n\nexport interface ReturnAdditional<Value> {\n /** Documented APIs */\n value: Value\n isChanged: boolean\n htmlAttributes: AriaAttributes | DataAttributes\n setHasFocus: (hasFocus: boolean, valueOverride?: unknown) => void\n handleFocus: () => void\n handleBlur: () => void\n handleChange: (\n value: Value,\n additionalArgs?: AdditionalEventArgs\n ) => void\n updateValue: (value: Value) => void\n forceUpdate: () => void\n\n /** Internal */\n dataContext: ContextState\n fieldState: SubmitState\n}\n\nexport function omitFieldProps<\n Props extends FieldProps<unknown> & ReturnAdditional<unknown>,\n>(props: Props) {\n // Do not include typical HTML attributes\n const {\n /** Documented APIs */\n name, // eslint-disable-line\n error, // eslint-disable-line\n warning, // eslint-disable-line\n info, // eslint-disable-line\n hasError, // eslint-disable-line\n isChanged, // eslint-disable-line\n htmlAttributes, // eslint-disable-line\n setHasFocus, // eslint-disable-line\n handleFocus, // eslint-disable-line\n handleBlur, // eslint-disable-line\n handleChange, // eslint-disable-line\n updateValue, // eslint-disable-line\n forceUpdate, // eslint-disable-line\n\n /** HTML Attributes */\n autoComplete, // eslint-disable-line\n\n /** Internal */\n dataContext, // eslint-disable-line\n fieldState, // eslint-disable-line\n ...restProps\n } = props\n\n return restProps\n}\n\nfunction resolveValidatingState(state: SubmitStateWithValidating) {\n return state === 'validating' ? 'pending' : state\n}\n"],"mappings":";;;;;;;AAAA,SACEA,MAAM,EACNC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,OAAO,EACPC,UAAU,QAEL,OAAO;AACd,OAAOC,OAAO,MAAM,cAAc;AAElC,SAASC,YAAY,QAAQ,UAAU;AACvC,SAASC,uBAAuB,QAAQ,cAAc;AACtD,SACEC,SAAS,QAMJ,UAAU;AACjB,SAASC,OAAO,IAAIC,WAAW,QAAsB,gBAAgB;AACrE,SAASC,kBAAkB,QAAQ,kCAAkC;AACrE,OAAOC,KAAK,MAAM,+BAA+B;AACjD,OAAOC,eAAe,MAAM,yCAAyC;AACrE,OAAOC,cAAc,MAAM,wCAAwC;AACnE,OAAOC,gBAAgB,MAAM,0CAA0C;AACvE,OAAOC,aAAa,MAAM,yBAAyB;AACnD,OAAOC,iBAAiB,MAAM,iCAAiC;AAC/D,OAAOC,qBAAqB,MAAM,kCAAkC;AACpE,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,SACEC,iBAAiB,EACjBC,cAAc,QACT,wCAAwC;AAC/C,SAASC,OAAO,QAAQ,iCAAiC;AA8BzD,eAAe,SAASC,aAAaA,CAGnCC,KAAY,EAAuD;EAAA,IAAAC,eAAA,EAAAC,kBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,IAAA,EAAAC,WAAA,EAAAC,mBAAA;EACnE,MAAM;IACJC,IAAI;IACJC,QAAQ;IACRC,UAAU;IACVC,QAAQ;IACRC,IAAI;IACJC,OAAO;IACPC,KAAK,EAAEC,SAAS;IAChBC,aAAa;IACbC,OAAO;IACPC,MAAM;IACNC,QAAQ;IACRC,eAAe;IACfC,SAAS;IACTC,MAAM;IACNC,iBAAiB;IACjBC,iBAAiB;IACjBC,oBAAoB;IACpBC,OAAO,GAAIC,KAAY,IAAKA,KAAK;IACjCC,SAAS,GAAID,KAAY,IAAKA,KAAK;IACnCE,OAAO,GAAIF,KAAY,IAAKA,KAAK;IACjCG,cAAc,GAAIH,KAAY,IAAKA,KAAK;IACxCI,YAAY,GAAIJ,KAAY,IAAKA,KAAK;IACtCK,gBAAgB,GAAGA,CAACL,KAAY,EAAE;MAAEjB,UAAU;MAAEC,QAAQ;MAAEG;IAAM,CAAC,KAAK;MACpE,MAAMmB,GAAG,GACPtB,QAAQ,KACPgB,KAAK,KAAKjB,UAAU,IAClB,OAAOA,UAAU,KAAK,WAAW,IAAIiB,KAAK,KAAK,EAAG,CAAC,GAClDb,KAAK,GACLoB,SAAS;MAEf,OAAOD,GAAG;IACZ;EACF,CAAC,GAAGjC,KAAK;EAET,MAAMmC,QAAQ,IAAAlC,eAAA,GAAGD,KAAK,CAACmC,QAAQ,cAAAlC,eAAA,cAAAA,eAAA,GAAID,KAAK,CAACoC,QAAQ;EAEjD,MAAM,GAAGC,WAAW,CAAC,GAAGzD,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClD,MAAM;IAAE0D;EAAa,CAAC,GAAG3C,iBAAiB,CAAC,CAAC;EAC5C,MAAM4C,EAAE,GAAGnD,KAAK,CAACY,KAAK,CAACuC,EAAE,CAAC;EAC1B,MAAMC,WAAW,GAAG/D,UAAU,CAACS,WAAW,CAAC;EAC3C,MAAMuD,iBAAiB,GAAGhE,UAAU,CAACgB,iBAAiB,CAAC;EACvD,MAAMiD,qBAAqB,GAAGjE,UAAU,CAACiB,qBAAqB,CAAC;EAC/D,MAAMiD,aAAa,GAAGlE,UAAU,CAACe,aAAa,CAAC;EAC/C,MAAMoD,EAAE,GAAGD,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,WAAW,CAACC,KAAK;EAE3C,MAAMC,YAAY,GAAGxE,MAAM,CAAC;IAC1BmD,OAAO;IACPE,SAAS;IACTC,OAAO;IACPE,YAAY;IACZD,cAAc;IACdE;EACF,CAAC,CAAC;EAEF,MAAM;IACJgB,gBAAgB,EAAEC,2BAA2B;IAC7CC,eAAe,EAAEC,0BAA0B;IAC3CC,YAAY,EAAEC,uBAAuB;IACrCC,aAAa,EAAEC,wBAAwB;IACvCC,aAAa,EAAEC,wBAAwB;IACvCC,QAAQ,EAAEC,mBAAmB;IAC7BC,MAAM,EAAEC,iBAAiB;IACzBC;EACF,CAAC,GAAGtB,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,CAAC,CAAC;EACrB,MAAMuB,eAAe,GAAGvB,WAAW,aAAXA,WAAW,wBAAAtC,kBAAA,GAAXsC,WAAW,CAAExC,KAAK,cAAAE,kBAAA,uBAAlBA,kBAAA,CAAoBiB,QAAQ;EAEpD,MAAM6C,gBAAgB,GAAGxD,IAAI,GAAGqD,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAGrD,IAAI,CAAC,GAAG0B,SAAS;EACrE,MAAM+B,YAAY,GAAGC,OAAO,CAACzB,iBAAiB,CAAC;EAC/C,MAAM;IACJa,aAAa,EAAEa,uBAAuB;IACtCC,cAAc,EAAEC;EAClB,CAAC,GAAG5B,iBAAiB,aAAjBA,iBAAiB,cAAjBA,iBAAiB,GAAI,CAAC,CAAC;EAC3B,MAAM6B,SAAS,GAAGJ,OAAO,CAACxB,qBAAqB,CAAC;EAChD,MAAM;IACJ6B,KAAK,EAAEC,mBAAmB;IAC1B7C,KAAK,EAAE8C,mBAAmB;IAC1BC,YAAY,EAAEC;EAChB,CAAC,GAAGjC,qBAAqB,aAArBA,qBAAqB,cAArBA,qBAAqB,GAAI,CAAC,CAAC;EAE/B,IAAIlC,IAAI,IAAIA,IAAI,CAACoE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;IACxC,MAAM,IAAIC,KAAK,CACb,oFACF,CAAC;EACH;EACA,IAAIpE,QAAQ,IAAIA,QAAQ,CAACmE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;IAChD,MAAM,IAAIC,KAAK,CACb,oGACF,CAAC;EACH;EACA,IAAIpE,QAAQ,IAAI,CAACiC,qBAAqB,EAAE;IACtC,MAAM,IAAImC,KAAK,CACb,4GACF,CAAC;EACH;EAEA,MAAMC,UAAU,GAAGnG,OAAO,CAAC,MAAM;IAE/B,OAAO6B,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI+B,EAAE;EACnB,CAAC,EAAE,CAAC/B,IAAI,EAAE+B,EAAE,CAAC,CAAC;EAEd,MAAMwC,aAAa,GAAGpG,OAAO,CAAC,MAAM;IAClC,IAAIqB,KAAK,CAAC2B,KAAK,KAAKjB,UAAU,EAAE;MAE9B,OAAOqC,YAAY,CAACiC,OAAO,CAACjD,YAAY,CAAC/B,KAAK,CAAC2B,KAAK,CAAC;IACvD;IAEA,IAAI2C,SAAS,IAAI7D,QAAQ,EAAE;MAEzB,IAAIA,QAAQ,KAAK,GAAG,EAAE;QACpB,OAAOgE,mBAAmB;MAC5B;MAEA,OAAO5F,OAAO,CAACoG,GAAG,CAACR,mBAAmB,EAAEhE,QAAQ,CAAC,GAC7C5B,OAAO,CAACqG,GAAG,CAACT,mBAAmB,EAAEhE,QAAQ,CAAC,GAC1CC,UAAU;IAChB;IAEA,IAAI8B,WAAW,CAAC2C,IAAI,IAAI3E,IAAI,EAAE;MAE5B,IAAIA,IAAI,KAAK,GAAG,EAAE;QAChB,OAAOgC,WAAW,CAAC2C,IAAI;MACzB;MAEA,OAAOtG,OAAO,CAACoG,GAAG,CAACzC,WAAW,CAAC2C,IAAI,EAAE3E,IAAI,CAAC,GACtC3B,OAAO,CAACqG,GAAG,CAAC1C,WAAW,CAAC2C,IAAI,EAAE3E,IAAI,CAAC,GACnCE,UAAU;IAChB;IAEA,OAAOA,UAAU;EACnB,CAAC,EAAE,CACDV,KAAK,CAAC2B,KAAK,EACXjB,UAAU,EACV4D,SAAS,EACT7D,QAAQ,EACR+B,WAAW,CAAC2C,IAAI,EAChB3E,IAAI,EACJiE,mBAAmB,CACpB,CAAC;EAOF,MAAMW,QAAQ,GAAG7G,MAAM,CAAQwG,aAAa,CAAC;EAC7C,MAAMM,UAAU,GAAG9G,MAAM,CAAU,KAAK,CAAC;EACzC,MAAM+G,WAAW,GAAG/G,MAAM,CAAU,KAAK,CAAC;EAK1C,MAAMgH,YAAY,GAAGhH,MAAM,CACzB2F,OAAO,CAAC3C,iBAAiB,IAAIR,SAAS,CACxC,CAAC;EAED,MAAMyE,cAAc,GAAGjH,MAAM,CAE3B,CAAC,CAAC,CAAC;EACL,MAAMkH,aAAa,GAAGlH,MAAM,CAAgC,CAAC;EAE7D,MAAMmH,eAAe,GAAGnH,MAAM,CAC5ByF,gBACF,CAAC;EAED,MAAM2B,YAAY,GAAGpH,MAAM,CAAC8C,SAAS,CAAC;EACtChC,eAAe,CAAC,MAAM;IACpBsG,YAAY,CAACX,OAAO,GAAG3D,SAAS;EAClC,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EACf,MAAMuE,kBAAkB,GAAGrH,MAAM,CAAC6C,eAAe,CAAC;EAClD/B,eAAe,CAAC,MAAM;IACpBuG,kBAAkB,CAACZ,OAAO,GAAG5D,eAAe;EAC9C,CAAC,EAAE,CAACA,eAAe,CAAC,CAAC;EAErB,MAAMyE,kBAAkB,GAAGtH,MAAM,CAC/B+C,MAAM,IAAAnB,qBAAA,GAAGqC,WAAW,CAACsD,WAAW,cAAA3F,qBAAA,uBAAvBA,qBAAA,CAAyB4F,OAAO,CAACzE,MAAM,CAAC,GAAGY,SACtD,CAAC;EAGD,MAAM8D,sBAAsB,GAAGrH,OAAO,CAAC,MAAM;IAC3C,OAAOmB,OAAO,CAACqB,QAAQ,CAAC,IAAIrB,OAAO,CAACiE,eAAe,CAAC;EACtD,CAAC,EAAE,CAACA,eAAe,EAAE5C,QAAQ,CAAC,CAAC;EAC/B,MAAM8E,kBAAkB,GAAG1H,MAAM,CAAQ,CAAC;EAC1C,MAAM2H,oBAAoB,GAAG3H,MAAM,CAA8B,IAAI,CAAC;EACtE,MAAM4H,sBAAsB,GAAG5H,MAAM,CAAiB,IAAI,CAAC;EAC3D,MAAM6H,sBAAsB,GAAG1H,WAAW,CAAE2H,IAAoB,IAAK;IACnEF,sBAAsB,CAACnB,OAAO,GAAGqB,IAAI;EACvC,CAAC,EAAE,EAAE,CAAC;EAIN,MAAMC,cAAc,GAAG/H,MAAM,CAE3B,CAAC,CAAC,CAAC;EAEL,KAAK,MAAMgI,GAAG,IAAID,cAAc,CAACtB,OAAO,EAAE;IACxC,MAAM;MAAEwB,OAAO;MAAEC;IAAkB,CAAC,GAAIH,cAAc,CAACtB,OAAO,CAACuB,GAAG,CAAC,IACjE,CAAC,CAA0B;IAC7B,IAAI,CAAAE,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAG,CAAC,MAAK,KAAK,EAAE;MACnC,OAAOH,cAAc,CAACtB,OAAO,CAACuB,GAAG,CAAC;MAClC,IAAI,OAAOC,OAAO,KAAK,UAAU,EAAE;QACjCE,MAAM,CAACC,qBAAqB,CAACH,OAAO,CAAC;MACvC;IACF;EACF;EAEA,MAAMI,SAAS,GAAGrI,MAAM,CAAC;IACvB8C,SAAS,EAAE,IAAI;IACfD,eAAe,EAAE,IAAI;IACrB2C,eAAe,EAAE,IAAI;IACrB8C,aAAa,EAAE;EACjB,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAGpI,WAAW,CAC3B,CAAC2H,IAAoC,EAAEU,EAAE,EAAEC,QAAQ,KAAK;IACtD,IAAI,CAACJ,SAAS,CAAC5B,OAAO,CAACqB,IAAI,CAAC,EAAE;MAC5BO,SAAS,CAAC5B,OAAO,CAACqB,IAAI,CAAC,GAAG;QAAEU,EAAE;QAAEC;MAAS,CAAC;IAC5C;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMC,OAAO,GAAGvI,WAAW,CAAC,OAAOwI,EAAE,GAAG,IAAI,KAAK;IAC/C,KAAK,MAAMX,GAAG,IAAIK,SAAS,CAAC5B,OAAO,EAAE;MACnC,IAAI,CAAC4B,SAAS,CAAC5B,OAAO,CAACuB,GAAG,CAAC,IAAIK,SAAS,CAAC5B,OAAO,CAACuB,GAAG,CAAC,CAACY,OAAO,EAAE;QAC7D;MACF;MAEA,MAAM;QAAEJ,EAAE;QAAEC;MAAS,CAAC,GAAGJ,SAAS,CAAC5B,OAAO,CAACuB,GAAG,CAAC,IAAI,CAAC,CAAC;MACrD,IAAIQ,EAAE,EAAE;QACNH,SAAS,CAAC5B,OAAO,CAACuB,GAAG,CAAC,CAACY,OAAO,GAAG,IAAI;QACrCP,SAAS,CAAC5B,OAAO,CAACuB,GAAG,CAAC,GAAG,IAAI;QAE7B,IAAIS,QAAQ,EAAE;UACZ,MAAMD,EAAE,CAAC,CAAC;QACZ,CAAC,MAAM;UACLA,EAAE,CAAC,CAAC;QACN;MACF;IACF;IAEAG,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAG,CAAC;EACR,CAAC,EAAE,EAAE,CAAC;EAGNvD,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAGmB,UAAU,EAAE9E,KAAK,CAAC;EAExC,MAAMoH,aAAa,GAAG7I,MAAM,CAA4B,CAAC;EACzD,MAAM+E,aAAa,GAAG5E,WAAW,CAC9B2I,KAAgC,IAAK;IACpCD,aAAa,CAACpC,OAAO,GAAGqC,KAAK;IAC7B9D,wBAAwB,CAACuB,UAAU,EAAEwC,sBAAsB,CAACD,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC9F,iBAAiB,EAAE;MACtBc,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EACD,CAACkB,wBAAwB,EAAEuB,UAAU,EAAEvD,iBAAiB,CAC1D,CAAC;EAED,MAAMgG,SAAS,GAAG7I,WAAW,CAAC,MAAM;IAClC6G,YAAY,CAACP,OAAO,GAAG,IAAI;IAC3BX,wBAAwB,aAAxBA,wBAAwB,uBAAxBA,wBAAwB,CAAGS,UAAU,EAAE,IAAI,CAAC;EAC9C,CAAC,EAAE,CAACT,wBAAwB,EAAES,UAAU,CAAC,CAAC;EAE1C,MAAM0C,SAAS,GAAG9I,WAAW,CAAC,MAAM;IAClC6G,YAAY,CAACP,OAAO,GAAG,KAAK;IAC5BX,wBAAwB,aAAxBA,wBAAwB,uBAAxBA,wBAAwB,CAAGS,UAAU,EAAE,KAAK,CAAC;EAC/C,CAAC,EAAE,CAACT,wBAAwB,EAAES,UAAU,CAAC,CAAC;EAE1C,MAAMhE,KAAK,GACTyE,YAAY,CAACP,OAAO,IAEpB,EAAA5E,qBAAA,GAAAqF,aAAa,CAACT,OAAO,cAAA5E,qBAAA,uBAArBA,qBAAA,CAAwB,gBAAgB,CAAC,MAAK,MAAM,IAAAC,IAAA,GAChDU,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI0E,aAAa,CAACT,OAAO,cAAA3E,IAAA,cAAAA,IAAA,GAAIqF,eAAe,CAACV,OAAO,GAC7D9C,SAAS;EAEf,MAAMuF,eAAe,GACnBvD,OAAO,CAACpD,KAAK,CAAC,IAAKmD,YAAY,IAAIxB,iBAAiB,CAACiF,YAAa;EACpE,MAAMC,QAAQ,GAAGjJ,WAAW,CAAC,MAAM;IAAA,IAAAkJ,KAAA;IACjC,OAAO1D,OAAO,EAAA0D,KAAA,GACZ7G,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI0E,aAAa,CAACT,OAAO,cAAA4C,KAAA,cAAAA,KAAA,GAAIlC,eAAe,CAACV,OACxD,CAAC;EACH,CAAC,EAAE,CAACjE,SAAS,CAAC,CAAC;EAEf,MAAM8G,gBAAgB,GAAGtJ,MAAM,CAAC,IAAI,CAAC;EACrCsJ,gBAAgB,CAAC7C,OAAO,GAAGrG,OAAO,CAAC,MAAM;IACvC,OAAAmJ,aAAA;MACEnH,QAAQ,EAAEiC,EAAE,CAACmF;IAAkB,GAC5B/G,aAAa;EAEpB,CAAC,EAAE,CAACA,aAAa,EAAE4B,EAAE,CAACmF,kBAAkB,CAAC,CAAC;EAK1C,MAAMC,YAAY,GAAGtJ,WAAW,CAC7BoC,KAAoC,IAA4B;IAC/D,IAAIA,KAAK,YAAY9B,SAAS,EAAE;MAAA,IAAAiJ,oBAAA;MAC9B,IAAIC,OAAO,GAAGpH,KAAK,CAACoH,OAAO;MAE3B,MAAM;QAAEC;MAAe,CAAC,GAAGrH,KAAK;MAChC,IAAI,OAAOqH,cAAc,KAAK,QAAQ,EAAE;QAAA,IAAAC,qBAAA;QACtC,MAAMC,YAAY,IAAAD,qBAAA,GAAGP,gBAAgB,CAAC7C,OAAO,cAAAoD,qBAAA,uBAAxBA,qBAAA,CAA2BD,cAAc,CAAC;QAC/D,IAAIE,YAAY,EAAE;UAChBH,OAAO,GAAGG,YAAY;QACxB;MACF;MAEA,MAAMC,iBAAiB,GAAGC,MAAM,CAACC,OAAO,EAAAP,oBAAA,GACtCnH,KAAK,CAAC2H,aAAa,cAAAR,oBAAA,cAAAA,oBAAA,GAAI,CAAC,CAC1B,CAAC,CAACS,MAAM,CAAC,CAACR,OAAO,EAAE,CAAC3B,GAAG,EAAE5E,KAAK,CAAC,KAAK;QAClC,OAAOuG,OAAO,CAACS,OAAO,CAAE,IAAGpC,GAAI,GAAE,EAAE5E,KAAK,CAAC;MAC3C,CAAC,EAAEuG,OAAO,CAAC;MAEXpH,KAAK,CAACoH,OAAO,GAAGI,iBAAiB;MAEjC,OAAOxH,KAAK;IACd;IAEA,OAAOA,KAAK;EACd,CAAC,EACD,EACF,CAAC;EAKD,MAAM8H,OAAO,GAAGxJ,KAAK,CAAC,CAAC;EACvB,MAAMyJ,iBAAiB,GAAGnK,WAAW,CACnC,CACEoK,MAA+B,EAC/BC,QAAuC,GAAG7G,SAAS,KAChD;IACH,MAAMpB,KAAK,GAAGkH,YAAY,CAACe,QAAQ,CAAC;IAEpC,IAAI,CAACjK,YAAY,CAACgC,KAAK,EAAE2E,aAAa,CAACT,OAAO,CAAC,EAAE;MAG/C;IACF;IAEA,IAAI8D,MAAM,KAAK,MAAM,EAAE;MACrBtD,cAAc,CAACR,OAAO,GAAG,CAAC,CAAC;IAC7B,CAAC,MAAM;MACLQ,cAAc,CAACR,OAAO,CAAC8D,MAAM,CAAC,GAAGhI,KAAK;IACxC;IAEA,IACE,CAACA,KAAK,IACNgI,MAAM,KAAK,YAAY,IACvBP,MAAM,CAACS,IAAI,CAACxD,cAAc,CAACR,OAAO,CAAC,CAACiE,MAAM,CAAC/E,OAAO,CAAC,CAACgF,MAAM,GAAG,CAAC,EAC9D;MAEA;IACF;IAEAzD,aAAa,CAACT,OAAO,GAAGlE,KAAK;IAG7B2C,wBAAwB,aAAxBA,wBAAwB,uBAAxBA,wBAAwB,CAAGqB,UAAU,EAAEhE,KAAK,CAAC;IAG7CyC,wBAAwB,aAAxBA,wBAAwB,uBAAxBA,wBAAwB,CAAGuB,UAAU,EAAEhE,KAAK,GAAG,OAAO,GAAGoB,SAAS,CAAC;IACnEiC,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAG;MACxByE,OAAO;MACP9D,UAAU;MACVqE,IAAI,EAAE,OAAO;MACbC,OAAO,EAAEtI,KAAK;MACduI,aAAa,EAAEnF,OAAO,CAACD,YAAY,IAAI1C,iBAAiB;IAC1D,CAAC,CAAC;IAEFc,WAAW,CAAC,CAAC;EACf,CAAC,EACD,CACE2F,YAAY,EACZvE,wBAAwB,EACxBqB,UAAU,EACVvB,wBAAwB,EACxBY,uBAAuB,EACvByE,OAAO,EACP3E,YAAY,EACZ1C,iBAAiB,CAErB,CAAC;EAED,MAAM+H,eAAe,GAAG5K,WAAW,CAAC,MAAM;IACxCmK,iBAAiB,CAAC,MAAM,CAAC;EAC3B,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,MAAMU,aAAa,GAAG7K,WAAW,CAAC,YAAY;IAC5C,IAAI,OAAOiH,YAAY,CAACX,OAAO,KAAK,UAAU,EAAE;MAC9C;IACF;IAEA,MAAMgC,QAAQ,GAAGlH,OAAO,CAAC6F,YAAY,CAACX,OAAO,CAAC;IAE9C,IAAIgC,QAAQ,EAAE;MACZZ,sBAAsB,CAAC,WAAW,CAAC;MACnC9C,aAAa,CAAC,YAAY,CAAC;MAC3BkE,SAAS,CAAC,CAAC;IACb;IAEA,MAAMgC,IAAI,GAAA1B,aAAA,CAAAA,aAAA,KACLhE,oBAAoB,GACpB+D,gBAAgB,CAAC7C,OAAO,CAC5B;IAGD,MAAMyE,MAAM,GAAG,MAAM9D,YAAY,CAACX,OAAO,CAACI,QAAQ,CAACJ,OAAO,EAAEwE,IAAI,CAAC;IAEjEX,iBAAiB,CAAC,YAAY,EAAEY,MAAe,CAAC;IAEhD,IAAIzC,QAAQ,EAAE;MACZ1D,aAAa,CAACmG,MAAM,YAAY5E,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IAC/D;IAGA,IAAIpD,oBAAoB,IAAIuF,QAAQ,EAAE;MAEpCN,MAAM,CAACC,qBAAqB,CAAC,MAAM;QACjCY,SAAS,CAAC,CAAC;QACXlF,WAAW,CAAC,CAAC;MACf,CAAC,CAAC;IACJ;IAEA,OAAOoH,MAAM;EACf,CAAC,EAAE,CACD3F,oBAAoB,EACpBrC,oBAAoB,EACpB+F,SAAS,EACTqB,iBAAiB,EACjBzC,sBAAsB,EACtB9C,aAAa,EACbiE,SAAS,CACV,CAAC;EAEF,MAAMmC,mBAAmB,GAAGhL,WAAW,CACrC,OAAO;IAAEiL,aAAa,GAAG;EAAK,CAAC,GAAG,CAAC,CAAC,KAAK;IACvC,IAAI,OAAO/D,kBAAkB,CAACZ,OAAO,KAAK,UAAU,EAAE;MACpD;IACF;IAKA,MAAMrD,KAAK,GAAGoB,YAAY,CAACiC,OAAO,CAACnD,OAAO,CACxC8H,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAIvE,QAAQ,CAACJ,OAAO,EACjC,iBACF,CAAC;IAED,MAAMgC,QAAQ,GAAGlH,OAAO,CAAC8F,kBAAkB,CAACZ,OAAO,CAAC;IAEpD,IAAIgC,QAAQ,EAAE;MACZZ,sBAAsB,CAAC,iBAAiB,CAAC;MACzC9C,aAAa,CAAC,YAAY,CAAC;IAC7B;IAGA,MAAMmG,MAAM,GAAG,MAAM7D,kBAAkB,CAACZ,OAAO,CAACrD,KAAK,CAAC;IAEtDkH,iBAAiB,CAAC,YAAY,EAAEY,MAAe,CAAC;IAEhD,IAAIzC,QAAQ,EAAE;MACZ1D,aAAa,CAACmG,MAAM,YAAY5E,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IAC/D;IAEA0C,SAAS,CAAC,CAAC;IACXlF,WAAW,CAAC,CAAC;EACf,CAAC,EACD,CAACwG,iBAAiB,EAAEzC,sBAAsB,EAAE9C,aAAa,EAAEiE,SAAS,CACtE,CAAC;EAKD,MAAMqC,aAAa,GAAGlL,WAAW,CAAC,YAAY;IAC5C,MAAMmL,eAAe,GAAGvH,YAAY,CAAC,CAAC;IAEtC,IAAIH,QAAQ,EAAE;MACZ,IAAI0H,eAAe,CAAC,CAAC,EAAE;QACrBP,eAAe,CAAC,CAAC;MACnB;MACA9B,SAAS,CAAC,CAAC;MACXlE,aAAa,CAACpB,SAAS,CAAC;MACxB;IACF;IAEA,MAAMP,KAAK,GAAGyD,QAAQ,CAACJ,OAAO;IAC9BkB,oBAAoB,CAAClB,OAAO,GAAG,IAAI;IACnCiB,kBAAkB,CAACjB,OAAO,GAAG,IAAI;IAEjC,IAAI;MAEF,MAAM8E,aAAa,GAAG/G,YAAY,CAACiC,OAAO,CAAChD,gBAAgB,CAACL,KAAK,EAAE;QACjEjB,UAAU;QACVC,QAAQ;QACRoJ,SAAS,EAAE1E,UAAU,CAACL,OAAO;QAC7BlE,KAAK,EAAE,IAAI9B,SAAS,CAAC,uBAAuB,EAAE;UAC5CmJ,cAAc,EAAE;QAClB,CAAC;MACH,CAAC,CAAC;MACF,IAAI2B,aAAa,YAAYjF,KAAK,EAAE;QAClC,MAAMiF,aAAa;MACrB;MAGA,IACEjE,kBAAkB,CAACb,OAAO,IAC1BrD,KAAK,KAAKO,SAAS,IACnB,CAAC2D,kBAAkB,CAACb,OAAO,CAACrD,KAAK,CAAC,EAClC;QACA,MAAMb,KAAK,GAAG/B,uBAAuB,CACnC8G,kBAAkB,CAACb,OAAO,CAACpB,MAAM,EACjCwB,QAAQ,CAACJ,OACX,CAAC;QACD,MAAMlE,KAAK;MACb;MAGA,IACE6E,YAAY,CAACX,OAAO,KACnBK,UAAU,CAACL,OAAO,IAAIzD,iBAAiB,CAAC,EACzC;QACA,MAAMkI,MAAM,GAAG,MAAMF,aAAa,CAAC,CAAC;QAEpC,IAAIE,MAAM,YAAY5E,KAAK,EAAE;UAC3B,MAAM4E,MAAM;QACd;MACF;MAEA,IAAII,eAAe,CAAC,CAAC,EAAE;QACrBP,eAAe,CAAC,CAAC;MACnB;MAEArD,kBAAkB,CAACjB,OAAO,GAAGrD,KAAK;IACpC,CAAC,CAAC,OAAOb,KAAc,EAAE;MACvB,IAAI+I,eAAe,CAAC,CAAC,EAAE;QACrBhB,iBAAiB,CAAC,MAAM,EAAE/H,KAAc,CAAC;MAC3C;IACF;EACF,CAAC,EAAE,CACDwB,YAAY,EACZH,QAAQ,EACRqF,SAAS,EACTlE,aAAa,EACbgG,eAAe,EACf5I,UAAU,EACVC,QAAQ,EACRY,iBAAiB,EACjBgI,aAAa,EACbV,iBAAiB,CAClB,CAAC;EAEF,MAAMmB,WAAW,GAAGtL,WAAW,CAAC,MAAM;IACpC,IACE+C,oBAAoB,IACnBA,oBAAoB,KAAK,KAAK,IAAI,CAAC6D,WAAW,CAACN,OAAQ,EACxD;MAIAuC,SAAS,CAAC,CAAC;IACb,CAAC,MAAM;MAELC,SAAS,CAAC,CAAC;IACb;EACF,CAAC,EAAE,CAAC/F,oBAAoB,EAAE+F,SAAS,EAAED,SAAS,CAAC,CAAC;EAEhD,MAAM0C,WAAW,GAAGvL,WAAW,CAC7B,OAAOwL,QAAiB,EAAEP,aAAqB,KAAK;IAClD,IAAIO,QAAQ,EAAE;MAEZ5E,WAAW,CAACN,OAAO,GAAG,IAAI;MAC1B,MAAMrD,KAAK,GAAGoB,YAAY,CAACiC,OAAO,CAACnD,OAAO,CACxC8H,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAIvE,QAAQ,CAACJ,OAAO,EACjC,SACF,CAAC;MACD/D,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGU,KAAK,CAAC;IAClB,CAAC,MAAM;MAEL2D,WAAW,CAACN,OAAO,GAAG,KAAK;MAC3B,MAAMrD,KAAK,GAAGoB,YAAY,CAACiC,OAAO,CAACnD,OAAO,CACxC8H,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAIvE,QAAQ,CAACJ,OAAO,EACjC,QACF,CAAC;MACD9D,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAGS,KAAK,CAAC;MAEf,IAAI,CAAC0D,UAAU,CAACL,OAAO,IAAI,CAACxD,iBAAiB,EAAE;QAG7C;MACF;MAEAsF,SAAS,CACP,iBAAiB,EACjB,YAAY,MAAM4C,mBAAmB,CAAC;QAAEC;MAAc,CAAC,CAAC,EACxD7J,OAAO,CAAC8F,kBAAkB,CAACZ,OAAO,CACpC,CAAC;MAED,MAAMiC,OAAO,CAAC,MAAM;QAElBM,SAAS,CAAC,CAAC;QACXlF,WAAW,CAAC,CAAC;MACf,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CACEyE,SAAS,EACT4C,mBAAmB,EACnBxI,MAAM,EACND,OAAO,EACPgG,OAAO,EACPM,SAAS,EACT/F,iBAAiB,CAErB,CAAC;EAGD,MAAM2I,iBAAiB,GAAGzL,WAAW,CACnC,OAAO;IACL2H,IAAI;IACJ+D,OAAO;IACPC;EAQF,CAAC,KAAK;IACJ,OAAO,IAAIC,OAAO,CAAQC,OAAO,IAAK;MACpC,MAAM/D,OAAO,GAAGA,CAAA,KAAM;QACpB,IACE,OAAO6D,oBAAoB,KAAK,WAAW,IAE3CA,oBAAoB,KAAKpE,kBAAkB,CAACjB,OAAO,EACnD;UACAuF,OAAO,CAAC,CAAC;QACX;MACF,CAAC;MAED,MAAM9D,iBAAiB,GAAGA,CAAA,KAAM;QAC9B,OAAO2D,OAAO,CAACI,IAAI,CAAC,CAAC;UAAEC,WAAW;UAAEC;QAAW,CAAC,KAAK;UACnD,OACE,CAACD,WAAW,GACRA,WAAW,KAAKtE,sBAAsB,CAACnB,OAAO,GAC9C,IAAI,KACR0F,UAAU,CAACF,IAAI,CAAEnD,KAAK,IAAK;YACzB,OAAOA,KAAK,KAAKD,aAAa,CAACpC,OAAO;UACxC,CAAC,CAAC;QAEN,CAAC,CAAC;MACJ,CAAC;MAED,IAAIyB,iBAAiB,CAAC,CAAC,KAAK,IAAI,EAAE;QAChCH,cAAc,CAACtB,OAAO,CAACqB,IAAI,CAAC,GAAG;UAAEG,OAAO;UAAEC;QAAkB,CAAC;MAC/D,CAAC,MAAM;QACLD,OAAO,CAAC,CAAC;QACTlD,aAAa,CAAC,SAAS,CAAC;MAC1B;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACA,aAAa,CAChB,CAAC;EAED,MAAMqH,uBAAuB,GAAGjM,WAAW,CAAC,YAAY;IACtD,MAAM+K,MAAmC,GACvCvD,oBAAoB,CAAClB,OAAO;IAE9B,IAAI,QAAOyE,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE3I,KAAK,MAAK,WAAW,EAAE;MACxC+H,iBAAiB,CAAC,YAAY,EAAEY,MAAM,CAAC3I,KAAK,CAAC;MAC7CyG,SAAS,CAAC,CAAC;IACb;IACA,IAAI,QAAOkC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE5I,OAAO,MAAK,WAAW,EAAE;MAC1C+J,UAAU,CAAC5F,OAAO,GAAGyE,MAAM,CAAC5I,OAAO;IACrC;IACA,IAAI,QAAO4I,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE7I,IAAI,MAAK,WAAW,EAAE;MACvCiK,OAAO,CAAC7F,OAAO,GAAGyE,MAAM,CAAC7I,IAAI;IAC/B;IAEA,IAAIoF,sBAAsB,EAAE;MAC1B,MAAMmE,iBAAiB,CAAC;QACtB9D,IAAI,EAAE,iBAAiB;QACvB+D,OAAO,EAAE,CAAC;UAAEM,UAAU,EAAE,CAAC,YAAY;QAAE,CAAC;MAC1C,CAAC,CAAC;IACJ;IAEA,IAAI,CAAAjB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEqB,OAAO,MAAK,OAAO,EAAE;MAC/BxH,aAAa,CAAC,SAAS,CAAC;IAC1B,CAAC,MAAM,IAAImG,MAAM,aAANA,MAAM,eAANA,MAAM,CAAE3I,KAAK,EAAE;MACxBwC,aAAa,CAAC,OAAO,CAAC;IACxB,CAAC,MAAM,IAAI0C,sBAAsB,EAAE;MACjC1C,aAAa,CAAC,UAAU,CAAC;IAC3B;EACF,CAAC,EAAE,CACD0C,sBAAsB,EACtB6C,iBAAiB,EACjBvF,aAAa,EACbiE,SAAS,EACT4C,iBAAiB,CAClB,CAAC;EAEF,MAAMY,cAAc,GAAGrM,WAAW,CAC/B+K,MAA4C,IAAK;IAChD,IAAIA,MAAM,YAAY5E,KAAK,EAAE;MAC3B4E,MAAM,GAAG;QAAE3I,KAAK,EAAE2I;MAAO,CAAC;IAC5B;IACAvD,oBAAoB,CAAClB,OAAO,GAAA8C,aAAA,CAAAA,aAAA,KACvB5B,oBAAoB,CAAClB,OAAO,GAC5ByE,MAAM,CACqB;IAEhCkB,uBAAuB,CAAC,CAAC;EAC3B,CAAC,EACD,CAACA,uBAAuB,CAC1B,CAAC;EAED,MAAMK,mBAAmB,GAAGtM,WAAW,CAAC,YAAY;IAClD,IAAIsH,sBAAsB,EAAE;MAC1B,MAAMmE,iBAAiB,CAAC;QACtB9D,IAAI,EAAE,iBAAiB;QACvBgE,oBAAoB,EAAEjF,QAAQ,CAACJ,OAAO;QACtCoF,OAAO,EAAE,CACP;UACEK,WAAW,EAAE,WAAW;UACxBC,UAAU,EAAE,CAAC,YAAY,EAAE,OAAO;QACpC,CAAC,EACD;UACED,WAAW,EAAE,iBAAiB;UAC9BC,UAAU,EAAE,CAAC,YAAY,EAAE,OAAO;QACpC,CAAC;MAEL,CAAC,CAAC;IACJ;IAEA,IAAIlK,IAAI,EAAE;MACR,IAAIV,OAAO,CAACiE,eAAe,CAAC,EAAE;QAC5BqC,sBAAsB,CAAC,iBAAiB,CAAC;QACzC2E,cAAc,CACX,OAAM9H,2BAA2B,aAA3BA,2BAA2B,uBAA3BA,2BAA2B,CAChCzC,IAAI,EACJ4E,QAAQ,CAACJ,OACX,CAAC,CACH,CAAC;MACH,CAAC,MAAM;QACL+F,cAAc,CACZ9H,2BAA2B,aAA3BA,2BAA2B,uBAA3BA,2BAA2B,CACzBzC,IAAI,EACJ4E,QAAQ,CAACJ,OACX,CACF,CAAC;MACH;IACF;IAEA3C,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,CACD2D,sBAAsB,EACtBxF,IAAI,EACJ2J,iBAAiB,EACjBpG,eAAe,EACfqC,sBAAsB,EACtB2E,cAAc,EACd9H,2BAA2B,CAC5B,CAAC;EAEF,MAAMgI,WAAW,GAAGvM,WAAW,CAC7B,MAAOwM,QAAe,IAAK;IACzB,IAAIA,QAAQ,KAAK9F,QAAQ,CAACJ,OAAO,EAAE;MAGjC;IACF;IAEAI,QAAQ,CAACJ,OAAO,GAAGkG,QAAQ;IAE3BpE,SAAS,CAAC,WAAW,EAAE8C,aAAa,EAAE9J,OAAO,CAAC6F,YAAY,CAACX,OAAO,CAAC,CAAC;IAEpE8B,SAAS,CACP,iBAAiB,EACjBkE,mBAAmB,EACnBlL,OAAO,CAACiE,eAAe,CACzB,CAAC;IAED,MAAMkD,OAAO,CAAC,MAAM;MAClB+C,WAAW,CAAC,CAAC;IACf,CAAC,CAAC;EACJ,CAAC,EACD,CACElD,SAAS,EACTkE,mBAAmB,EACnBhB,WAAW,EACXjG,eAAe,EACfkD,OAAO,EACP2C,aAAa,CAEjB,CAAC;EAED,MAAMlF,YAAY,GAAGhG,WAAW,CAC9B,OACEyM,YAAmB,EACnBC,cAAmC,GAAGlJ,SAAS,KAC5C;IACH,MAAMmJ,YAAY,GAAGjG,QAAQ,CAACJ,OAAO;IACrC,MAAMpD,SAAS,GAAGmB,YAAY,CAACiC,OAAO,CAACpD,SAAS,CAACuJ,YAAY,CAAC;IAE9D,IAAIvJ,SAAS,KAAKyJ,YAAY,EAAE;MAG9B;IACF;IAEA,MAAMC,gBAAgB,GAAGvI,YAAY,CAACiC,OAAO,CAAClD,cAAc,CAC1DF,SAAS,EACTyJ,YACF,CAAC;IAGDhG,UAAU,CAACL,OAAO,GAAG,IAAI;IAEzB,IAAIgB,sBAAsB,EAAE;MAC1BwB,SAAS,CAAC,CAAC;MACX,MAAMyD,WAAW,CAACK,gBAAgB,CAAC;IACrC,CAAC,MAAM;MACLL,WAAW,CAACK,gBAAgB,CAAC;IAC/B;IAEA,MAAMC,OAAO,GAAGA,CAAA,KAA8C;MAC5D,MAAM5J,KAAK,GAAGoB,YAAY,CAACiC,OAAO,CAACnD,OAAO,CACxCuD,QAAQ,CAACJ,OAAO,EAChB,UACF,CAAC;MAED,OAAO,OAAOoG,cAAc,KAAK,WAAW,GACxC,CAACzJ,KAAK,EAAEyJ,cAAc,CAAC,GACvB,CAACzJ,KAAK,CAAC;IACb,CAAC;IAED,IAAI7B,OAAO,CAACqB,QAAQ,CAAC,EAAE;MACrB2F,SAAS,CACP,eAAe,EACf,YAAY;QACV,MAAM0E,IAAI,GAAGD,OAAO,CAAC,CAAC;QAEtB,MAAMpB,iBAAiB,CAAC;UACtB9D,IAAI,EAAE,eAAe;UACrBgE,oBAAoB,EAAEmB,IAAI,CAAC,CAAC,CAAC;UAC7BpB,OAAO,EAAE,CACP;YACEK,WAAW,EAAE,WAAW;YACxBC,UAAU,EAAE,CAAC,YAAY,EAAE,OAAO;UACpC,CAAC,EACD;YACED,WAAW,EAAE,iBAAiB;YAC9BC,UAAU,EAAE,CAAC,YAAY,EAAE,OAAO;UACpC,CAAC,EACD;YACED,WAAW,EAAE,iBAAiB;YAC9BC,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO;UACjC,CAAC;QAEL,CAAC,CAAC;QAEFtE,sBAAsB,CAAC,eAAe,CAAC;QAGvC2E,cAAc,CAAC,OAAM5J,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEsK,KAAK,CAAC,IAAI,EAAED,IAAI,CAAC,EAAC;MACnD,CAAC,EACD,IACF,CAAC;IACH,CAAC,MAAM;MACLT,cAAc,CAAC5J,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEsK,KAAK,CAAC,IAAI,EAAEF,OAAO,CAAC,CAAC,CAAC,CAAC;IAClD;IAEA,MAAMtE,OAAO,CAAC,MAAM;MAClB,IAAIxG,QAAQ,EAAE;QACZ,MAAMiL,gBAAgB,GAAI,IAAGlH,mBAAoB,GAC/C/D,QAAQ,IAAIA,QAAQ,KAAK,GAAG,GAAGA,QAAQ,GAAG,EAC3C,EAAC;QACFkE,0BAA0B,aAA1BA,0BAA0B,uBAA1BA,0BAA0B,CAAG+G,gBAAgB,EAAEtG,QAAQ,CAACJ,OAAO,CAAC;MAClE;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CACE8B,SAAS,EACTd,sBAAsB,EACtBrB,0BAA0B,EAC1B6C,SAAS,EACT/G,QAAQ,EACR+D,mBAAmB,EACnBrD,QAAQ,EACR8F,OAAO,EACPb,sBAAsB,EACtB2E,cAAc,EACdE,WAAW,EACXd,iBAAiB,CAErB,CAAC;EAED,MAAMwB,WAAW,GAAGjN,WAAW,CAAC,MAAMuL,WAAW,CAAC,IAAI,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EACvE,MAAM2B,UAAU,GAAGlN,WAAW,CAAC,MAAMuL,WAAW,CAAC,KAAK,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEvE3K,cAAc,CAAC,MAAM;IACnBkD,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEqJ,gBAAgB,CAAC/G,UAAU,CAAC;IAEzC8E,aAAa,CAAC,CAAC;EACjB,CAAC,CAAC;EACFrK,gBAAgB,CAAC,MAAM;IACrBiD,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEsJ,kBAAkB,CAAChH,UAAU,CAAC;EAC7C,CAAC,CAAC;EAEFzF,eAAe,CAAC,MAAM;IAAA,IAAA0M,sBAAA;IACpBlG,kBAAkB,CAACb,OAAO,GAAG1D,MAAM,IAAAyK,sBAAA,GAC/BvJ,WAAW,CAACsD,WAAW,cAAAiG,sBAAA,uBAAvBA,sBAAA,CAAyBhG,OAAO,CAACzE,MAAM,CAAC,GACxCY,SAAS;IACb0H,aAAa,CAAC,CAAC;EACjB,CAAC,EAAE,CAACtI,MAAM,EAAEsI,aAAa,CAAC,CAAC;EAE3BvK,eAAe,CAAC,MAAM;IAEpB,IAAI+F,QAAQ,CAACJ,OAAO,KAAKD,aAAa,EAAE;MACtCK,QAAQ,CAACJ,OAAO,GAAGD,aAAa;MAChC6E,aAAa,CAAC,CAAC;IACjB;IACAvH,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,CAAC0C,aAAa,EAAE6E,aAAa,CAAC,CAAC;EAElCpL,SAAS,CAAC,MAAM;IACd,MAAMsC,KAAK,GAAGkH,YAAY,CAAChE,gBAAgB,CAAC;IAC5C,IAAIlF,YAAY,CAACgC,KAAK,EAAE4E,eAAe,CAACV,OAAO,CAAC,EAAE;MAChDU,eAAe,CAACV,OAAO,GAAGlE,KAAK;MAC/BuB,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAAC2B,gBAAgB,EAAEgE,YAAY,CAAC,CAAC;EAEpCxJ,SAAS,CAAC,MAAM;IACd,IAAIgC,IAAI,EAAE;MACR,IAAImB,KAAK,GAAG3B,KAAK,CAAC2B,KAAK;MAGvB,MAAMqK,QAAQ,GAAGnN,OAAO,CAACoG,GAAG,CAACzC,WAAW,CAAC2C,IAAI,EAAE3E,IAAI,CAAC;MACpD,MAAMyL,aAAa,GAAGD,QAAQ,GAC1BnN,OAAO,CAACqG,GAAG,CAAC1C,WAAW,CAAC2C,IAAI,EAAE3E,IAAI,CAAC,GACnC0B,SAAS;MAGb,IACEM,WAAW,CAACD,EAAE,IACd,CAACyJ,QAAQ,IACT,OAAOC,aAAa,KAAK,WAAW,IACpC,OAAOtK,KAAK,KAAK,WAAW,EAC5B;QACA,MAAMuK,WAAW,GAAGtM,iBAAiB,CAAC4C,WAAW,CAACD,EAAE,CAAC;QACrD,MAAMyJ,QAAQ,GAAGnN,OAAO,CAACoG,GAAG,CAACiH,WAAW,CAAC/G,IAAI,EAAE3E,IAAI,CAAC;QACpD,IAAIwL,QAAQ,EAAE;UACZ,MAAMG,WAAW,GAAGtN,OAAO,CAACqG,GAAG,CAACgH,WAAW,CAAC/G,IAAI,EAAE3E,IAAI,CAAC;UACvD,IAAI2L,WAAW,EAAE;YACfxK,KAAK,GAAGwK,WAAW;UACrB;QACF;MACF;MAEA,IACE,CAACH,QAAQ,IACRrK,KAAK,KAAKsK,aAAa,IAEtB7G,QAAQ,CAACJ,OAAO,KAAKiH,aAAc,EACrC;QAGA9I,0BAA0B,aAA1BA,0BAA0B,uBAA1BA,0BAA0B,CAAG3C,IAAI,EAAEmB,KAAK,CAAC;QACzC0B,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAG,CAAC;MAC7B;IACF;EACF,CAAC,EAAE,CACDb,WAAW,CAAC2C,IAAI,EAChB3C,WAAW,CAACD,EAAE,EACd/B,IAAI,EACJR,KAAK,CAAC2B,KAAK,EACXwB,0BAA0B,EAC1BE,uBAAuB,CACxB,CAAC;EAEF7E,SAAS,CAAC,MAAM;IACd,IAAIgE,WAAW,CAAC4J,aAAa,EAAE;MAG7B7E,SAAS,CAAC,CAAC;MACXlF,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACG,WAAW,CAAC4J,aAAa,EAAE7E,SAAS,CAAC,CAAC;EAE1C/I,SAAS,CAAC,MAAM;IACd,IACEgE,WAAW,CAAC6J,SAAS,KAAK,SAAS,KAClC1G,YAAY,CAACX,OAAO,IAAIY,kBAAkB,CAACZ,OAAO,CAAC,EACpD;MACAwC,SAAS,CAAC,CAAC;MACXnF,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACG,WAAW,CAAC6J,SAAS,EAAE7E,SAAS,CAAC,CAAC;EAEtC,MAAM8E,eAAe,GAAG5N,WAAW,CAAC,YAAY;IAC9C,IAAIiJ,QAAQ,CAAC,CAAC,EAAE;MACd;IACF;IAEAb,SAAS,CAAC,WAAW,EAAEyC,aAAa,EAAEzJ,OAAO,CAAC6F,YAAY,CAACX,OAAO,CAAC,CAAC;IACpE8B,SAAS,CACP,iBAAiB,EACjB4C,mBAAmB,EACnB5J,OAAO,CAAC8F,kBAAkB,CAACZ,OAAO,CACpC,CAAC;IAED,MAAMiC,OAAO,CAAC,CAAC;EACjB,CAAC,EAAE,CAACH,SAAS,EAAE4C,mBAAmB,EAAEH,aAAa,EAAE5B,QAAQ,EAAEV,OAAO,CAAC,CAAC;EAGtE3H,cAAc,CAAC,MAAM;IAAA,IAAAiN,qBAAA;IACnB/J,WAAW,aAAXA,WAAW,wBAAA+J,qBAAA,GAAX/J,WAAW,CAAEgK,qBAAqB,cAAAD,qBAAA,uBAAlCA,qBAAA,CAAAE,IAAA,CAAAjK,WAAW,EACTsC,UAAU,EACV,UAAU,EACVwH,eACF,CAAC;EACH,CAAC,CAAC;EAGFhN,cAAc,CAAC,MAAM;IACnB,IAAI2E,YAAY,EAAE;MAChB,IAAIlD,SAAS,EAAE;QACboD,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAG;UACxBW,UAAU;UACVqE,IAAI,EAAE,OAAO;UACbC,OAAO,EAAErI,SAAS;UAClBsI,aAAa,EAAE,IAAI;UACnBqD,IAAI,EAAE;QACR,CAAC,CAAC;MACJ;MACA,IAAI7L,OAAO,EAAE;QACXsD,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAG;UACxBW,UAAU;UACVqE,IAAI,EAAE,SAAS;UACfC,OAAO,EAAEvI,OAAO;UAChBwI,aAAa,EAAE,IAAI;UACnBqD,IAAI,EAAE;QACR,CAAC,CAAC;MACJ;MACA,IAAI9L,IAAI,EAAE;QACRuD,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAG;UACxBW,UAAU;UACVqE,IAAI,EAAE,MAAM;UACZC,OAAO,EAAExI,IAAI;UACbyI,aAAa,EAAE,IAAI;UACnBqD,IAAI,EAAE;QACR,CAAC,CAAC;MACJ;MAEA,OAAO,MAAM;QAEX,IAAIjK,iBAAiB,CAACkK,gBAAgB,EAAE;UACtClK,iBAAiB,CAACkK,gBAAgB,CAAC3H,OAAO,CAACF,UAAU,CAAC,GAAG,IAAI;QAC/D;MACF,CAAC;IACH;EACF,CAAC,CAAC;EAEF,MAAM+F,OAAO,GAAGtM,MAAM,CAAkBqC,IAAI,CAAC;EAC7C,MAAMgK,UAAU,GAAGrM,MAAM,CAAkBsC,OAAO,CAAC;EACnDxB,eAAe,CAAC,MAAM;IACpBwL,OAAO,CAAC7F,OAAO,GAAGpE,IAAI;IACtBgK,UAAU,CAAC5F,OAAO,GAAGnE,OAAO;IAC5BwB,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,CAACzB,IAAI,EAAEC,OAAO,CAAC,CAAC;EAGnB,MAAM+L,cAAc,GAAGjO,OAAO,CAAC,MAAM;IACnC,OAAO4J,MAAM,CAACS,IAAI,CAAChJ,KAAK,CAAC,CAAC0I,MAAM,CAAiB,CAACmE,GAAG,EAAEC,GAAG,KAAK;MAC7D,IAAIA,GAAG,CAACC,UAAU,CAAC,OAAO,CAAC,IAAID,GAAG,CAACC,UAAU,CAAC,OAAO,CAAC,EAAE;QACtDF,GAAG,CAACC,GAAG,CAAC,GAAG9M,KAAK,CAAC8M,GAAG,CAAC;MACvB;MACA,OAAOD,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EACR,CAAC,EAAE,CAAC7M,KAAK,CAAC,CAAC;EAEX,IAAIc,KAAK,EAAE;IACT8L,cAAc,CAAC,cAAc,CAAC,GAAG9L,KAAK,GAAG,MAAM,GAAG,OAAO;EAC3D;EACA,IAAIH,QAAQ,EAAE;IACZiM,cAAc,CAAC,eAAe,CAAC,GAAGjM,QAAQ,GAAG,MAAM,GAAG,OAAO;EAC/D;EACA,IAAIsD,YAAY,EAAE;IAAA,IAAA+I,qBAAA;IAEhB,IAAIvK,iBAAiB,CAACkK,gBAAgB,EAAE;MACtClK,iBAAiB,CAACkK,gBAAgB,CAAC3H,OAAO,CAACF,UAAU,CAAC,GAAG,IAAI;IAC/D;IAGA,MAAMmI,QAAQ,IAAAD,qBAAA,GAAGvK,iBAAiB,CAACyK,gBAAgB,cAAAF,qBAAA,uBAAlCA,qBAAA,CAAoChI,OAAO;IAE5D,IAAIiI,QAAQ,EAAE;MACZL,cAAc,CAAC,kBAAkB,CAAC,GAAGzN,kBAAkB,CACrDyN,cAAc,EACd,CACE9L,KAAK,IAAImM,QAAQ,CAACnM,KAAK,EACvBD,OAAO,IAAIoM,QAAQ,CAACpM,OAAO,EAC3BD,IAAI,IAAIqM,QAAQ,CAACrM,IAAI,CACtB,CAACqI,MAAM,CAAC/E,OAAO,CAClB,CAAC;IACH;EACF,CAAC,MAAM;IACL,MAAMiJ,GAAG,GAAG,CACV,CAACrM,KAAK,IAAIC,SAAS,KAAM,GAAEwB,EAAG,qBAAoB,EAClD1B,OAAO,IAAK,GAAE0B,EAAG,uBAAsB,EACvC3B,IAAI,IAAK,GAAE2B,EAAG,oBAAmB,CAClC,CAAC0G,MAAM,CAAC/E,OAAO,CAAC;IAEjB,IAAIiJ,GAAG,CAACjE,MAAM,EAAE;MACd0D,cAAc,CAAC,kBAAkB,CAAC,GAAGzN,kBAAkB,CACrDyN,cAAc,EACdO,GACF,CAAC;IACH;EACF;EAEA,MAAMC,eAAe,GAAG;IAEtBxM,IAAI,EAAE,CAACqD,YAAY,GAAG4G,OAAO,CAAC7F,OAAO,GAAG9C,SAAS;IACjDrB,OAAO,EAAE,CAACoD,YAAY,GAAG2G,UAAU,CAAC5F,OAAO,GAAG9C,SAAS;IACvDpB,KAAK,EAAE,CAACmD,YAAY,GAAGnD,KAAK,GAAGoB,SAAS;IAGxCC,QAAQ,EACNf,eAAe,IACf+E,sBAAsB,CAACnB,OAAO,KAAK,iBAAiB,IACpDoC,aAAa,CAACpC,OAAO,KAAK,YAAY,GAClC,IAAI,GACJ7C,QAAQ;IAGdkL,UAAU,EAAE/F,sBAAsB,CAACF,aAAa,CAACpC,OAAO;EAC1D,CAAC;EAED,MAAMsI,UAAU,GAAGzN,cAAc,CAAC0C,EAAE,CAAC;EACrC+K,UAAU,CAACC,GAAG,CAACH,eAAe,CAAC;EAE/B,OAAAtF,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACK9H,KAAK,GACLoN,eAAe;IAGlB/G,IAAI,EAAErG,KAAK,CAACqG,IAAI,MAAA/F,WAAA,GAAIN,KAAK,CAACQ,IAAI,cAAAF,WAAA,uBAAVA,WAAA,CAAYqI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,KAAIpG,EAAE;IACtDiL,YAAY,GAAAjN,mBAAA,GACVP,KAAK,CAACwN,YAAY,cAAAjN,mBAAA,cAAAA,mBAAA,GACjBiC,WAAW,CAACgL,YAAY,KAAK,IAAI,GAAG,IAAI,GAAGtL,SAAU;IAGxDK,EAAE;IACFZ,KAAK,EAAEoB,YAAY,CAACiC,OAAO,CAACtD,OAAO,CAAC0D,QAAQ,CAACJ,OAAO,CAAC;IACrD2C,QAAQ,EAAEF,eAAe;IACzBsC,SAAS,EAAE1E,UAAU,CAACL,OAAO;IAC7B4H,cAAc;IACd3C,WAAW;IACX0B,WAAW;IACXC,UAAU;IACVlH,YAAY;IACZuG,WAAW;IACX5I,WAAW;IAGXG;EAAW;AAEf;AAsBA,OAAO,SAASiL,cAAcA,CAE5BzN,KAAY,EAAE;EAEd,MAAM;MAEJqG,IAAI;MACJvF,KAAK;MACLD,OAAO;MACPD,IAAI;MACJ+G,QAAQ;MACRoC,SAAS;MACT6C,cAAc;MACd3C,WAAW;MACX0B,WAAW;MACXC,UAAU;MACVlH,YAAY;MACZuG,WAAW;MACX5I,WAAW;MAGXmL,YAAY;MAGZhL,WAAW;MACX6K;IAEF,CAAC,GAAGrN,KAAK;IADJ0N,SAAS,GAAAC,wBAAA,CACV3N,KAAK,EAAA4N,SAAA;EAET,OAAOF,SAAS;AAClB;AAEA,SAASpG,sBAAsBA,CAACD,KAAgC,EAAE;EAChE,OAAOA,KAAK,KAAK,YAAY,GAAG,SAAS,GAAGA,KAAK;AACnD"}
@@ -402,8 +402,8 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
402
402
  .dnb-forms-button-row {
403
403
  display: flex;
404
404
  flex-flow: row;
405
- -moz-column-gap: var(--spacing-small);
406
- column-gap: var(--spacing-small);
405
+ flex-wrap: wrap;
406
+ gap: var(--spacing-small);
407
407
  }
408
408
  .dnb-card + .dnb-forms-button-row:not([class*=space__top]) {
409
409
  margin-top: var(--spacing-small);
@@ -442,6 +442,105 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
442
442
  margin-bottom: var(--spacing-small);
443
443
  }
444
444
 
445
+ /*
446
+ * Utilities
447
+ */
448
+ .dnb-form-submit-indicator {
449
+ display: inline;
450
+ --padding-left: 0.5em;
451
+ }
452
+ .dnb-form-submit-indicator__content {
453
+ font-size: 0;
454
+ line-height: 1em;
455
+ will-change: font-size;
456
+ transition: font-size 800ms var(--easing-default);
457
+ }
458
+ .dnb-form-submit-indicator__content b {
459
+ padding-left: 0.125em;
460
+ color: var(--dots-color, currentColor);
461
+ opacity: 0.2;
462
+ animation-name: submit-indicator-dot;
463
+ animation-iteration-count: infinite;
464
+ animation-duration: 1.3s;
465
+ animation-delay: 200ms;
466
+ }
467
+ .dnb-form-submit-indicator__content b:nth-of-type(1) {
468
+ padding-left: var(--padding-left);
469
+ animation-delay: 50ms;
470
+ }
471
+ .dnb-form-submit-indicator__content b:nth-of-type(2) {
472
+ animation-delay: 200ms;
473
+ }
474
+ .dnb-form-submit-indicator__content b:nth-of-type(3) {
475
+ animation-delay: 400ms;
476
+ }
477
+ html[data-visual-test] .dnb-form-submit-indicator__content b {
478
+ animation: none;
479
+ }
480
+ .dnb-form-submit-indicator--state-pending .dnb-form-submit-indicator__content {
481
+ font-size: 1em;
482
+ font-weight: var(--font-weight-bold);
483
+ }
484
+ .dnb-form-submit-indicator--state-success .dnb-form-submit-indicator__content {
485
+ font-size: 1em;
486
+ }
487
+ .dnb-form-submit-indicator--state-success .dnb-form-submit-indicator__content .dnb-icon {
488
+ padding-left: var(--padding-left);
489
+ color: var(--color-success-green);
490
+ }
491
+ .dnb-form-submit-indicator--state-success .dnb-form-submit-indicator__content .dnb-icon--default {
492
+ font-size: 1em;
493
+ }
494
+ .dnb-form-submit-indicator--state-success .dnb-form-submit-indicator__content__label {
495
+ font-size: var(--font-size-small);
496
+ padding-left: calc(var(--padding-left) * 2);
497
+ }
498
+ .dnb-form-submit-indicator--inline-wrap .dnb-form-submit-indicator__content {
499
+ display: flex;
500
+ --padding-left: 0.25em;
501
+ }
502
+
503
+ @keyframes submit-indicator-dot {
504
+ 0% {
505
+ opacity: 0.2;
506
+ }
507
+ 15% {
508
+ opacity: 1;
509
+ }
510
+ 50% {
511
+ opacity: 1;
512
+ }
513
+ 60% {
514
+ opacity: 0.3;
515
+ }
516
+ 100% {
517
+ opacity: 0.2;
518
+ }
519
+ }
520
+ @keyframes submit-indicator-success {
521
+ 0% {
522
+ opacity: 0.2;
523
+ font-size: 1em;
524
+ }
525
+ 20% {
526
+ opacity: 1;
527
+ font-size: 1em;
528
+ }
529
+ 80% {
530
+ opacity: 1;
531
+ }
532
+ 85% {
533
+ opacity: 0.3;
534
+ font-size: 1em;
535
+ }
536
+ 90% {
537
+ opacity: 0;
538
+ }
539
+ 100% {
540
+ opacity: 0;
541
+ font-size: 0;
542
+ }
543
+ }
445
544
  /*
446
545
  * Utilities
447
546
  */
@@ -461,11 +560,16 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
461
560
  margin-bottom: 2rem;
462
561
  }
463
562
  .dnb-forms-steps-layout__contents {
464
- flex: 1 0 25rem;
563
+ flex: 1 0 auto;
465
564
  }
466
565
  .dnb-forms-steps-layout__contents .dnb-card {
467
566
  --border-color: var(--color-pistachio);
468
567
  }
568
+ @media screen and (min-width: 40em) {
569
+ .dnb-forms-steps-layout + .dnb-form-status:not([class*=space__left]), .dnb-forms-steps-layout + .dnb-form-status + .dnb-form-status:not([class*=space__left]) {
570
+ margin-left: var(--spacing-medium);
571
+ }
572
+ }
469
573
  @media screen and (max-width: 60em) {
470
574
  .dnb-forms-steps-layout {
471
575
  flex-direction: column;
@@ -1 +1 @@
1
- .dnb-forms-field-array-selection--layout-vertical .dnb-forms-field-array-selection__options{display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-array-selection__options{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap;row-gap:var(--spacing-x-small)}@media screen and (min-width:40em){.dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem;margin-bottom:0}}.dnb-forms-field-expiry .dnb-multi-input-mask{width:var(--forms-field-width--small)}.dnb-forms-field-expiry .dnb-multi-input-mask .dnb-input__shell{justify-content:center}.dnb-forms-field-number{--number-control-button-border-color:#000;--number-control-button-border-color--hover:#a9a9a9;--number-control-button-border-color--focus:#a9a9a9;--number-control-button-border-width--focus:0.125rem;--number-control-button-background-color--hover:grey;--number-control-button-color--hover:#000;--number-control-button-background-color--active:#000;--number-control-button-color--active:#d3d3d3;--number-control-button--error:red;--number-control-button--error-contrast:#fff;--number-control-button-width--small:2rem;--number-control-button-width--medium:2.5rem;--number-control-button-width--large:3rem;--forms-field-block--number-control-buttons-width--small:calc(var(--number-control-button-width--small)*2);--forms-field-block--number-control-buttons-width--medium:calc(var(--number-control-button-width--medium)*2);--forms-field-block--number-control-buttons-width--large:calc(var(--number-control-button-width--large)*2)}.dnb-forms-field-number__contents{display:flex}.dnb-forms-field-number__contents--has-controls{--border-color:var(--number-control-button-border-color);--border-width:0.0625rem;border-color:transparent;border-radius:.25rem;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover:not([disabled]){--border-color:var(--number-control-button-border-color);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html[data-whatinput=keyboard] .dnb-forms-field-number__contents--has-controls:focus-within{--border-color:var(--number-control-button-border-color--focus);--border-width:var(--number-control-button-border-width--focus);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls .dnb-input__input{align-items:center}.dnb-forms-field-number__contents--has-controls .dnb-input__shell{border-radius:0;box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover:not([disabled]){box-shadow:none}.dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none;outline:initial}html[data-whatinput=""] .dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button-background-color--hover);color:var(--number-control-button-color--hover)}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button-background-color--active);color:var(--number-control-button-color--active)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error{--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover:not([disabled]){--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-input__status--error:not([data-input-state=disabled]):not(:hover):not(:active) .dnb-input__shell{box-shadow:none}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before{color:var(--number-control-button--error)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button--error-contrast);color:var(--number-control-button--error)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button--error);color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before[disabled]{color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover:not([disabled]){--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-input[data-input-state=disabled] .dnb-input__shell{box-shadow:none}.dnb-input[data-input-state=disabled] .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-before[disabled]{background-color:var(--color-black-3);color:var(--color-black-20)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small{width:calc(var(--forms-field-width--small) + var(--forms-field-block--number-control-buttons-width--small))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-before{width:var(--number-control-button-width--small)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium{width:calc(var(--forms-field-width--medium) + var(--forms-field-block--number-control-buttons-width--medium))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-before{width:var(--number-control-button-width--medium)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large{width:calc(var(--forms-field-width--large) + var(--forms-field-block--number-control-buttons-width--large))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-before{width:var(--number-control-button-width--large)}.dnb-forms-field-password .dnb-input__status--error .dnb-input__submit-button__button{color:var(--color-fire-red)}.dnb-forms-field-password .dnb-input__status--error .dnb-input__submit-button__button:hover{color:var(--color-white)}.dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:calc(var(--forms-field-width--medium) - 2rem)}.dnb-forms-field-phone-number__number{flex:1}.dnb-forms-field-phone-number .dnb-form-label{max-width:14ch}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{align-self:center}.dnb-forms-field-selection__options-layout--horizontal .dnb-forms-field-block--layout-horizontal .dnb-form-label,.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{margin-bottom:0}.dnb-forms-field-selection__variant--button .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem}:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}@media screen and (max-width:15em){.dnb-forms-field-number .dnb-input__shell,.dnb-forms-field-string .dnb-input__shell{width:90%}}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block{width:100%}.dnb-forms-field-block__grid{display:grid}@media screen and (max-width:40em){.dnb-forms-field-block--layout-vertical .dnb-forms-field-block__grid{flex-wrap:wrap}.dnb-forms-field-block--layout-vertical .dnb-forms-field-block__grid>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:25em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__label-description{margin-left:.3em}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__status .dnb-form-status__shell{margin-top:.5rem}@media screen and (max-width:15em){.dnb-forms-field-block__status{width:90%}}.dnb-forms-field-block__contents{grid-area:contents;width:100%}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:25em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__contents__composition--vertical{display:flex;flex-flow:column;row-gap:var(--spacing-small)}.dnb-forms-field-block__contents__composition--horizontal{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (min-width:25em){.dnb-forms-field-block__contents__composition--horizontal{align-items:flex-end}}@media screen and (max-width:25em){.dnb-forms-field-block__contents__composition--horizontal{flex-flow:column;row-gap:var(--spacing-x-small)}}.dnb-forms-button-row{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-card+.dnb-forms-button-row:not([class*=space__top]){margin-top:var(--spacing-small)}.dnb-card+.dnb-forms-button-row:not([class*=space__top]) .dnb-button[class*=space__top]{margin-top:0}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-spacing .dnb-form-main-heading.dnb-h--large:not([class*=space__]){margin:0}@media screen and (min-width:40em){.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-spacing .dnb-form-sub-heading.dnb-h--medium:not([class*=space__]){margin:0}.dnb-form-sub-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-forms-steps-layout{-moz-column-gap:var(--spacing-medium);column-gap:var(--spacing-medium);display:flex;flex-flow:row wrap}.dnb-forms-steps-layout--drawer{align-items:stretch;flex-direction:column;justify-content:stretch}.dnb-forms-steps-layout__sidebar{flex:0;margin-bottom:2rem}.dnb-forms-steps-layout__contents{flex:1 0 25rem}.dnb-forms-steps-layout__contents .dnb-card{--border-color:var(--color-pistachio)}@media screen and (max-width:60em){.dnb-forms-steps-layout{align-items:stretch;flex-direction:column;justify-content:stretch}.dnb-forms-steps-layout__contents{flex-basis:auto}}.dnb-forms-steps-layout .dnb-step-indicator__sidebar{margin-right:0}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline{display:inline-block;font-size:inherit;margin-left:var(--spacing-xx-small);margin-right:var(--spacing-xx-small)}.dnb-forms-value-block__label{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:rgba(0,0,0,.5)}.dnb-forms-test-element{border:1px dashed grey;border-radius:.5rem;color:#909090;padding:.5rem 1rem}
1
+ .dnb-forms-field-array-selection--layout-vertical .dnb-forms-field-array-selection__options{display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-array-selection__options{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap;row-gap:var(--spacing-x-small)}@media screen and (min-width:40em){.dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem;margin-bottom:0}}.dnb-forms-field-expiry .dnb-multi-input-mask{width:var(--forms-field-width--small)}.dnb-forms-field-expiry .dnb-multi-input-mask .dnb-input__shell{justify-content:center}.dnb-forms-field-number{--number-control-button-border-color:#000;--number-control-button-border-color--hover:#a9a9a9;--number-control-button-border-color--focus:#a9a9a9;--number-control-button-border-width--focus:0.125rem;--number-control-button-background-color--hover:grey;--number-control-button-color--hover:#000;--number-control-button-background-color--active:#000;--number-control-button-color--active:#d3d3d3;--number-control-button--error:red;--number-control-button--error-contrast:#fff;--number-control-button-width--small:2rem;--number-control-button-width--medium:2.5rem;--number-control-button-width--large:3rem;--forms-field-block--number-control-buttons-width--small:calc(var(--number-control-button-width--small)*2);--forms-field-block--number-control-buttons-width--medium:calc(var(--number-control-button-width--medium)*2);--forms-field-block--number-control-buttons-width--large:calc(var(--number-control-button-width--large)*2)}.dnb-forms-field-number__contents{display:flex}.dnb-forms-field-number__contents--has-controls{--border-color:var(--number-control-button-border-color);--border-width:0.0625rem;border-color:transparent;border-radius:.25rem;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover:not([disabled]){--border-color:var(--number-control-button-border-color);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html[data-whatinput=keyboard] .dnb-forms-field-number__contents--has-controls:focus-within{--border-color:var(--number-control-button-border-color--focus);--border-width:var(--number-control-button-border-width--focus);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls .dnb-input__input{align-items:center}.dnb-forms-field-number__contents--has-controls .dnb-input__shell{border-radius:0;box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover:not([disabled]){box-shadow:none}.dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none;outline:initial}html[data-whatinput=""] .dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button-background-color--hover);color:var(--number-control-button-color--hover)}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button-background-color--active);color:var(--number-control-button-color--active)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error{--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover:not([disabled]){--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-input__status--error:not([data-input-state=disabled]):not(:hover):not(:active) .dnb-input__shell{box-shadow:none}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before{color:var(--number-control-button--error)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button--error-contrast);color:var(--number-control-button--error)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button--error);color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before[disabled]{color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover:not([disabled]){--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-input[data-input-state=disabled] .dnb-input__shell{box-shadow:none}.dnb-input[data-input-state=disabled] .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-before[disabled]{background-color:var(--color-black-3);color:var(--color-black-20)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small{width:calc(var(--forms-field-width--small) + var(--forms-field-block--number-control-buttons-width--small))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-before{width:var(--number-control-button-width--small)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium{width:calc(var(--forms-field-width--medium) + var(--forms-field-block--number-control-buttons-width--medium))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-before{width:var(--number-control-button-width--medium)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large{width:calc(var(--forms-field-width--large) + var(--forms-field-block--number-control-buttons-width--large))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-before{width:var(--number-control-button-width--large)}.dnb-forms-field-password .dnb-input__status--error .dnb-input__submit-button__button{color:var(--color-fire-red)}.dnb-forms-field-password .dnb-input__status--error .dnb-input__submit-button__button:hover{color:var(--color-white)}.dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:calc(var(--forms-field-width--medium) - 2rem)}.dnb-forms-field-phone-number__number{flex:1}.dnb-forms-field-phone-number .dnb-form-label{max-width:14ch}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{align-self:center}.dnb-forms-field-selection__options-layout--horizontal .dnb-forms-field-block--layout-horizontal .dnb-form-label,.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{margin-bottom:0}.dnb-forms-field-selection__variant--button .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem}:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}@media screen and (max-width:15em){.dnb-forms-field-number .dnb-input__shell,.dnb-forms-field-string .dnb-input__shell{width:90%}}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block{width:100%}.dnb-forms-field-block__grid{display:grid}@media screen and (max-width:40em){.dnb-forms-field-block--layout-vertical .dnb-forms-field-block__grid{flex-wrap:wrap}.dnb-forms-field-block--layout-vertical .dnb-forms-field-block__grid>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:25em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__label-description{margin-left:.3em}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__status .dnb-form-status__shell{margin-top:.5rem}@media screen and (max-width:15em){.dnb-forms-field-block__status{width:90%}}.dnb-forms-field-block__contents{grid-area:contents;width:100%}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:25em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__contents__composition--vertical{display:flex;flex-flow:column;row-gap:var(--spacing-small)}.dnb-forms-field-block__contents__composition--horizontal{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (min-width:25em){.dnb-forms-field-block__contents__composition--horizontal{align-items:flex-end}}@media screen and (max-width:25em){.dnb-forms-field-block__contents__composition--horizontal{flex-flow:column;row-gap:var(--spacing-x-small)}}.dnb-forms-button-row{display:flex;flex-flow:row;flex-wrap:wrap;gap:var(--spacing-small)}.dnb-card+.dnb-forms-button-row:not([class*=space__top]){margin-top:var(--spacing-small)}.dnb-card+.dnb-forms-button-row:not([class*=space__top]) .dnb-button[class*=space__top]{margin-top:0}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-spacing .dnb-form-main-heading.dnb-h--large:not([class*=space__]){margin:0}@media screen and (min-width:40em){.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-spacing .dnb-form-sub-heading.dnb-h--medium:not([class*=space__]){margin:0}.dnb-form-sub-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-form-submit-indicator{--padding-left:0.5em;display:inline}.dnb-form-submit-indicator__content{font-size:0;line-height:1em;transition:font-size .8s var(--easing-default);will-change:font-size}.dnb-form-submit-indicator__content b{animation-delay:.2s;animation-duration:1.3s;animation-iteration-count:infinite;animation-name:submit-indicator-dot;color:var(--dots-color,currentColor);opacity:.2;padding-left:.125em}.dnb-form-submit-indicator__content b:first-of-type{animation-delay:50ms;padding-left:var(--padding-left)}.dnb-form-submit-indicator__content b:nth-of-type(2){animation-delay:.2s}.dnb-form-submit-indicator__content b:nth-of-type(3){animation-delay:.4s}html[data-visual-test] .dnb-form-submit-indicator__content b{animation:none}.dnb-form-submit-indicator--state-pending .dnb-form-submit-indicator__content{font-size:1em;font-weight:var(--font-weight-bold)}.dnb-form-submit-indicator--state-success .dnb-form-submit-indicator__content{font-size:1em}.dnb-form-submit-indicator--state-success .dnb-form-submit-indicator__content .dnb-icon{color:var(--color-success-green);padding-left:var(--padding-left)}.dnb-form-submit-indicator--state-success .dnb-form-submit-indicator__content .dnb-icon--default{font-size:1em}.dnb-form-submit-indicator--state-success .dnb-form-submit-indicator__content__label{font-size:var(--font-size-small);padding-left:calc(var(--padding-left)*2)}.dnb-form-submit-indicator--inline-wrap .dnb-form-submit-indicator__content{--padding-left:0.25em;display:flex}@keyframes submit-indicator-dot{0%{opacity:.2}15%{opacity:1}50%{opacity:1}60%{opacity:.3}to{opacity:.2}}@keyframes submit-indicator-success{0%{font-size:1em;opacity:.2}20%{font-size:1em;opacity:1}80%{opacity:1}85%{font-size:1em;opacity:.3}90%{opacity:0}to{font-size:0;opacity:0}}.dnb-forms-steps-layout{-moz-column-gap:var(--spacing-medium);column-gap:var(--spacing-medium);display:flex;flex-flow:row wrap}.dnb-forms-steps-layout--drawer{align-items:stretch;flex-direction:column;justify-content:stretch}.dnb-forms-steps-layout__sidebar{flex:0;margin-bottom:2rem}.dnb-forms-steps-layout__contents{flex:1 0 auto}.dnb-forms-steps-layout__contents .dnb-card{--border-color:var(--color-pistachio)}@media screen and (min-width:40em){.dnb-forms-steps-layout+.dnb-form-status+.dnb-form-status:not([class*=space__left]),.dnb-forms-steps-layout+.dnb-form-status:not([class*=space__left]){margin-left:var(--spacing-medium)}}@media screen and (max-width:60em){.dnb-forms-steps-layout{align-items:stretch;flex-direction:column;justify-content:stretch}.dnb-forms-steps-layout__contents{flex-basis:auto}}.dnb-forms-steps-layout .dnb-step-indicator__sidebar{margin-right:0}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline{display:inline-block;font-size:inherit;margin-left:var(--spacing-xx-small);margin-right:var(--spacing-xx-small)}.dnb-forms-value-block__label{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:rgba(0,0,0,.5)}.dnb-forms-test-element{border:1px dashed grey;border-radius:.5rem;color:#909090;padding:.5rem 1rem}
@@ -1,12 +1,13 @@
1
1
  import type { SpacingProps } from '../../components/space/types';
2
- import type { JSONSchema7 } from 'json-schema';
2
+ import type { JSONSchema4, JSONSchema6, JSONSchema7 } from 'json-schema';
3
3
  import type { JSONSchemaType } from 'ajv/dist/2020';
4
+ import { JsonObject } from 'json-pointer';
4
5
  import { AriaAttributes } from 'react';
5
6
  export type * from 'json-schema';
6
7
  export type JSONSchema = JSONSchema7;
7
- export type AllJSONSchemaVersions = JSONSchema7 | JSONSchemaType<unknown>;
8
+ export type AllJSONSchemaVersions = JSONSchema4 | JSONSchema6 | JSONSchema7 | JSONSchemaType<unknown>;
8
9
  export { JSONSchemaType };
9
- type ValidationRule = string | string[];
10
+ type ValidationRule = 'type' | 'pattern' | 'required' | string;
10
11
  type MessageValues = Record<string, string>;
11
12
  interface IFormErrorOptions {
12
13
  validationRule?: ValidationRule;
@@ -55,7 +56,7 @@ export interface DataValueWriteProps<Value = unknown, EmptyValue = undefined | s
55
56
  emptyValue?: EmptyValue;
56
57
  onFocus?: (value: Value | EmptyValue) => void;
57
58
  onBlur?: (value: Value | EmptyValue) => void;
58
- onChange?: (value: Value | EmptyValue, additionalArgs?: AdditionalEventArgs) => void;
59
+ onChange?: OnChangeValue<Value, EmptyValue>;
59
60
  }
60
61
  export declare function pickDataValueWriteProps<Props extends DataValueWriteProps>(props: Props): DataValueWriteProps;
61
62
  export declare function omitDataValueWriteProps<Props extends DataValueWriteProps>(props: Props): Omit<DataValueWriteProps, keyof DataValueWriteProps>;
@@ -90,8 +91,8 @@ export interface FieldProps<Value = unknown, EmptyValue = undefined | string, Er
90
91
  trim?: boolean;
91
92
  required?: boolean;
92
93
  schema?: AllJSONSchemaVersions;
93
- validator?: (value: Value | EmptyValue, errorMessages?: ErrorMessages) => Error | undefined | Promise<Error | undefined>;
94
- onBlurValidator?: (value: Value | EmptyValue) => Error | undefined | Promise<Error | undefined>;
94
+ validator?: (value: Value | EmptyValue, errorMessages?: ErrorMessages) => Error | undefined | void | Promise<Error | undefined | void>;
95
+ onBlurValidator?: (value: Value | EmptyValue) => Error | undefined | void | Promise<Error | undefined | void>;
95
96
  /**
96
97
  * Should error messages based on validation be shown initially (from given value-prop or source data)
97
98
  * before the user interacts with the field?
@@ -139,3 +140,65 @@ export interface ValueProps<Value> extends DataValueReadComponentProps<Value> {
139
140
  }
140
141
  export type Path = string;
141
142
  export type Identifier = string;
143
+ export type SubmitState = 'pending' | 'complete' | 'success' | 'error' | 'abort';
144
+ /**
145
+ * Provide a error that shows in the FormStatus of a field.
146
+ */
147
+ type EventStateObjectError = Error;
148
+ /**
149
+ * Provide a warning that shows in the FormStatus of a field.
150
+ */
151
+ type EventStateObjectWarning = React.ReactNode;
152
+ /**
153
+ * Provide an info that shows in the FormStatus of a field.
154
+ */
155
+ type EventStateObjectInfo = React.ReactNode;
156
+ /**
157
+ * Provide a status that will enforce the form to stay in pending state
158
+ */
159
+ type EventStateObjectStatus = 'pending';
160
+ /**
161
+ * Provide a success state that will show an indicator on the related field label
162
+ */
163
+ type EventStateObjectSuccess = 'saved';
164
+ /**
165
+ * Provide an error or status messages that shows in the FormStatus of a field
166
+ */
167
+ export type EventStateObjectOr = {
168
+ error?: EventStateObjectError;
169
+ warning?: EventStateObjectWarning;
170
+ info?: EventStateObjectInfo;
171
+ pending?: EventStateObjectStatus;
172
+ };
173
+ export type EventStateObjectEitherOr = {
174
+ error: EventStateObjectError;
175
+ } | {
176
+ warning: EventStateObjectWarning;
177
+ } | {
178
+ info: EventStateObjectInfo;
179
+ } | {
180
+ status: EventStateObjectStatus;
181
+ };
182
+ export type EventStateObject = EventStateObjectOr & EventStateObjectEitherOr;
183
+ /**
184
+ * Provide 'saved' to indicate the data has been saved successfully. Can not be combined with `error`.
185
+ */
186
+ export type EventStateObjectWithSuccess = EventStateObjectOr & {
187
+ success?: EventStateObjectSuccess;
188
+ } & (EventStateObjectEitherOr | {
189
+ success: EventStateObjectSuccess;
190
+ });
191
+ /**
192
+ * Provide an error or status messages that shows in the FormStatus of a field
193
+ */
194
+ export type EventReturnWithStateObject = Error | EventStateObject;
195
+ export type EventReturnWithStateObjectAndSuccess = Error | EventStateObjectWithSuccess;
196
+ export type OnSubmitParams = {
197
+ /** Will remove browser-side stored autocomplete data */
198
+ resetForm: () => void;
199
+ /** Will empty the whole internal data set of the form */
200
+ clearData: () => void;
201
+ };
202
+ export type OnSubmit<Data = JsonObject> = (data: Partial<Data>, { resetForm, clearData }: OnSubmitParams) => EventReturnWithStateObject | void | Promise<EventReturnWithStateObject | void>;
203
+ export type OnChange<Data = unknown> = (data: Data) => EventReturnWithStateObjectAndSuccess | void | Promise<EventReturnWithStateObjectAndSuccess | void>;
204
+ export type OnChangeValue<Value = unknown, EmptyValue = undefined | string> = (value: Value | EmptyValue, additionalArgs?: AdditionalEventArgs) => EventReturnWithStateObjectAndSuccess | void | Promise<EventReturnWithStateObjectAndSuccess | void>;
@@ -5,8 +5,9 @@ export class FormError extends Error {
5
5
  _defineProperty(this, "validationRule", void 0);
6
6
  _defineProperty(this, "messageValues", void 0);
7
7
  if (options) {
8
- this.validationRule = options.validationRule;
9
- this.messageValues = options.messageValues;
8
+ for (const key in options) {
9
+ this[key] = options[key];
10
+ }
10
11
  }
11
12
  }
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["FormError","Error","constructor","message","options","_defineProperty","validationRule","messageValues","dataValueReadProps","pickDataValueReadProps","props","Object","fromEntries","entries","filter","key","includes","omitDataValueReadProps","dataValueWriteProps","pickDataValueWriteProps","omitDataValueWriteProps","pickDataValueReadWriteProps","omitDataValueReadWriteProps"],"sources":["../../../../src/extensions/forms/types.ts"],"sourcesContent":["import type { SpacingProps } from '../../components/space/types'\nimport type { JSONSchema7 } from 'json-schema'\nimport type { JSONSchemaType } from 'ajv/dist/2020'\nimport { AriaAttributes } from 'react'\n\nexport type * from 'json-schema'\nexport type JSONSchema = JSONSchema7\nexport type AllJSONSchemaVersions = JSONSchema7 | JSONSchemaType<unknown>\nexport { JSONSchemaType }\n\ntype ValidationRule = string | string[]\ntype MessageValues = Record<string, string>\n\ninterface IFormErrorOptions {\n validationRule?: ValidationRule\n messageValues?: MessageValues\n}\n\n/**\n * Standard error object for Eufemia Forms, extending the built-in error with additional information for data handling\n */\nexport class FormError extends Error {\n /**\n * What validation rule did the error occur based on? (i.e: minLength, required or maximum)\n */\n validationRule?: ValidationRule\n\n /**\n * Replacement values relevant for this error.\n * @example { minLength: 3 } to be able to replace values in a message like \"Minimum {minLength} characters\"\n */\n messageValues?: MessageValues\n\n constructor(message: string, options?: IFormErrorOptions) {\n super(message)\n\n if (options) {\n this.validationRule = options.validationRule\n this.messageValues = options.messageValues\n }\n }\n}\n\n/**\n * Accept any key, so custom message keys can be used\n */\nexport type CustomErrorMessages = Record<string, string>\n\n/**\n * Accept any key, so custom message keys can be used\n * including the path to the field the message is for\n */\nexport type CustomErrorMessagesWithPaths =\n | CustomErrorMessages\n | {\n // eslint-disable-next-line no-unused-vars\n [K in `/${string}`]?: CustomErrorMessages\n }\n\nexport interface DefaultErrorMessages {\n required?: string\n pattern?: string\n}\n\nexport interface DataValueReadProps<Value = unknown> {\n /** JSON Pointer for where the data for this field is located in the source dataset */\n path?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n value?: Value\n}\n\nconst dataValueReadProps = ['path', 'itemPath', 'value']\n\nexport function pickDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): DataValueReadProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueReadProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): Omit<DataValueReadProps, keyof DataValueReadProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueReadProps.includes(key)\n )\n )\n}\n\nexport interface DataValueWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> {\n emptyValue?: EmptyValue\n onFocus?: (value: Value | EmptyValue) => void\n onBlur?: (value: Value | EmptyValue) => void\n onChange?: (\n value: Value | EmptyValue,\n additionalArgs?: AdditionalEventArgs\n ) => void\n}\n\nconst dataValueWriteProps = ['emptyValue', 'onFocus', 'onBlur', 'onChange']\n\nexport function pickDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): DataValueWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): Omit<DataValueWriteProps, keyof DataValueWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type DataValueReadWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>\n\nexport function pickDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(props: Props): DataValueReadWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n dataValueReadProps.includes(key) ||\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(\n props: Props\n): Omit<DataValueReadWriteProps, keyof DataValueReadWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n !dataValueReadProps.includes(key) &&\n !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type ComponentProps = SpacingProps & {\n className?: string\n}\n\nexport type AdditionalEventArgs = Record<string, unknown>\n\nexport type DataValueReadComponentProps<Value = unknown> = ComponentProps &\n DataValueReadProps<Value>\n\nexport type DataValueReadWriteComponentProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = ComponentProps &\n DataValueReadProps<Value> &\n DataValueWriteProps<Value, EmptyValue>\n\nexport interface FieldProps<\n Value = unknown,\n EmptyValue = undefined | string,\n ErrorMessages extends DefaultErrorMessages = DefaultErrorMessages,\n> extends DataValueReadWriteComponentProps<Value, EmptyValue>,\n AriaAttributes {\n /** ID added to the actual field component, and linked to the label via for-attribute */\n id?: string\n name?: string\n layout?: 'horizontal' | 'vertical'\n /** Main label text */\n label?: React.ReactNode\n /** A more discreet text displayed beside the label */\n labelDescription?: React.ReactNode\n /** Text showing in place of the value if no value is given */\n placeholder?: string\n autoComplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete']\n info?: React.ReactNode\n warning?: React.ReactNode\n error?: Error | FormError\n hasError?: boolean\n disabled?: boolean\n readOnly?: boolean\n capitalize?: boolean\n trim?: boolean\n // Validation\n required?: boolean\n schema?: AllJSONSchemaVersions\n validator?: (\n value: Value | EmptyValue,\n errorMessages?: ErrorMessages\n ) => Error | undefined | Promise<Error | undefined>\n onBlurValidator?: (\n value: Value | EmptyValue\n ) => Error | undefined | Promise<Error | undefined>\n /**\n * Should error messages based on validation be shown initially (from given value-prop or source data)\n * before the user interacts with the field?\n * @default false\n */\n validateInitially?: boolean\n /**\n * Should error messages be shown when touching (like focusing a field and blurring) without having changed\n * the value? So the user did not introduce a new error, but it was invalid based on validation initially.\n */\n validateUnchanged?: boolean\n /** Should validation be done while writing, not just when blurring the field? */\n continuousValidation?: boolean\n errorMessages?: ErrorMessages\n // Derivatives\n toInput?: (external: Value | unknown) => Value | unknown\n fromInput?: (external: Value | unknown) => Value\n toEvent?: (\n internal: Value,\n type: 'onChange' | 'onFocus' | 'onBlur' | 'onBlurValidator'\n ) => Value\n fromExternal?: (external: Value) => Value\n transformValue?: (value: Value, currentValue?: Value) => Value\n validateRequired?: (\n internal: Value,\n {\n emptyValue,\n required,\n isChanged,\n error,\n }: {\n emptyValue: EmptyValue\n required: boolean\n isChanged: boolean\n error: FormError | undefined\n }\n ) => FormError | undefined\n}\n\nexport interface FieldHelpProps {\n help?: {\n title?: string\n content?: string\n }\n}\n\nexport interface ValueProps<Value>\n extends DataValueReadComponentProps<Value> {\n label?: string\n /** Field label to show above the data value. */\n showEmpty?: boolean\n /** Text showing in place of the value if no value is given. */\n placeholder?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n /** For showing the value inline (not as a block element) */\n inline?: boolean\n // Derivatives\n /** Prepare value for display (regardless of source like props or data context) */\n prepare?: (external: Value | undefined) => string\n}\n\nexport type Path = string\nexport type Identifier = string\n"],"mappings":";AAqBA,OAAO,MAAMA,SAAS,SAASC,KAAK,CAAC;EAYnCC,WAAWA,CAACC,OAAe,EAAEC,OAA2B,EAAE;IACxD,KAAK,CAACD,OAAO,CAAC;IAAAE,eAAA;IAAAA,eAAA;IAEd,IAAID,OAAO,EAAE;MACX,IAAI,CAACE,cAAc,GAAGF,OAAO,CAACE,cAAc;MAC5C,IAAI,CAACC,aAAa,GAAGH,OAAO,CAACG,aAAa;IAC5C;EACF;AACF;AA+BA,MAAMC,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;AAExD,OAAO,SAASC,sBAAsBA,CACpCC,KAAY,EACQ;EACpB,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,KACvCP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CACjC,CACF,CAAC;AACH;AAEA,OAAO,SAASE,sBAAsBA,CACpCP,KAAY,EACwC;EACpD,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KAAK,CAACP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CAC7C,CACF,CAAC;AACH;AAeA,MAAMG,mBAAmB,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;AAE3E,OAAO,SAASC,uBAAuBA,CACrCT,KAAY,EACS;EACrB,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,KACvCG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CAClC,CACF,CAAC;AACH;AAEA,OAAO,SAASK,uBAAuBA,CACrCV,KAAY,EAC0C;EACtD,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KAAK,CAACG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CAC9C,CACF,CAAC;AACH;AAOA,OAAO,SAASM,2BAA2BA,CAEzCX,KAAY,EAA2B;EACvC,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KACJP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CAAC,IAChCG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CACpC,CACF,CAAC;AACH;AAEA,OAAO,SAASO,2BAA2BA,CAGzCZ,KAAY,EACkD;EAC9D,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACC,GAAG,CAAC,KACJ,CAACP,kBAAkB,CAACQ,QAAQ,CAACD,GAAG,CAAC,IACjC,CAACG,mBAAmB,CAACF,QAAQ,CAACD,GAAG,CACrC,CACF,CAAC;AACH"}
1
+ {"version":3,"file":"types.js","names":["FormError","Error","constructor","message","options","_defineProperty","key","dataValueReadProps","pickDataValueReadProps","props","Object","fromEntries","entries","filter","includes","omitDataValueReadProps","dataValueWriteProps","pickDataValueWriteProps","omitDataValueWriteProps","pickDataValueReadWriteProps","omitDataValueReadWriteProps"],"sources":["../../../../src/extensions/forms/types.ts"],"sourcesContent":["import type { SpacingProps } from '../../components/space/types'\nimport type { JSONSchema4, JSONSchema6, JSONSchema7 } from 'json-schema'\nimport type { JSONSchemaType } from 'ajv/dist/2020'\nimport { JsonObject } from 'json-pointer'\nimport { AriaAttributes } from 'react'\n\nexport type * from 'json-schema'\nexport type JSONSchema = JSONSchema7\nexport type AllJSONSchemaVersions =\n | JSONSchema4\n | JSONSchema6\n | JSONSchema7\n | JSONSchemaType<unknown>\nexport { JSONSchemaType }\n\ntype ValidationRule = 'type' | 'pattern' | 'required' | string\ntype MessageValues = Record<string, string>\n\ninterface IFormErrorOptions {\n validationRule?: ValidationRule\n messageValues?: MessageValues\n}\n\n/**\n * Standard error object for Eufemia Forms, extending the built-in error with additional information for data handling\n */\nexport class FormError extends Error {\n /**\n * What validation rule did the error occur based on? (i.e: minLength, required or maximum)\n */\n validationRule?: ValidationRule\n\n /**\n * Replacement values relevant for this error.\n * @example { minLength: 3 } to be able to replace values in a message like \"Minimum {minLength} characters\"\n */\n messageValues?: MessageValues\n\n constructor(message: string, options?: IFormErrorOptions) {\n super(message)\n\n if (options) {\n for (const key in options) {\n this[key] = options[key]\n }\n }\n }\n}\n\n/**\n * Accept any key, so custom message keys can be used\n */\nexport type CustomErrorMessages = Record<string, string>\n\n/**\n * Accept any key, so custom message keys can be used\n * including the path to the field the message is for\n */\nexport type CustomErrorMessagesWithPaths =\n | CustomErrorMessages\n | {\n // eslint-disable-next-line no-unused-vars\n [K in `/${string}`]?: CustomErrorMessages\n }\n\nexport interface DefaultErrorMessages {\n required?: string\n pattern?: string\n}\n\nexport interface DataValueReadProps<Value = unknown> {\n /** JSON Pointer for where the data for this field is located in the source dataset */\n path?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n value?: Value\n}\n\nconst dataValueReadProps = ['path', 'itemPath', 'value']\n\nexport function pickDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): DataValueReadProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueReadProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): Omit<DataValueReadProps, keyof DataValueReadProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueReadProps.includes(key)\n )\n )\n}\n\nexport interface DataValueWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> {\n emptyValue?: EmptyValue\n onFocus?: (value: Value | EmptyValue) => void\n onBlur?: (value: Value | EmptyValue) => void\n onChange?: OnChangeValue<Value, EmptyValue>\n}\n\nconst dataValueWriteProps = ['emptyValue', 'onFocus', 'onBlur', 'onChange']\n\nexport function pickDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): DataValueWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): Omit<DataValueWriteProps, keyof DataValueWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type DataValueReadWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>\n\nexport function pickDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(props: Props): DataValueReadWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n dataValueReadProps.includes(key) ||\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(\n props: Props\n): Omit<DataValueReadWriteProps, keyof DataValueReadWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n !dataValueReadProps.includes(key) &&\n !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type ComponentProps = SpacingProps & {\n className?: string\n}\n\nexport type AdditionalEventArgs = Record<string, unknown>\n\nexport type DataValueReadComponentProps<Value = unknown> = ComponentProps &\n DataValueReadProps<Value>\n\nexport type DataValueReadWriteComponentProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = ComponentProps &\n DataValueReadProps<Value> &\n DataValueWriteProps<Value, EmptyValue>\n\nexport interface FieldProps<\n Value = unknown,\n EmptyValue = undefined | string,\n ErrorMessages extends DefaultErrorMessages = DefaultErrorMessages,\n> extends DataValueReadWriteComponentProps<Value, EmptyValue>,\n AriaAttributes {\n /** ID added to the actual field component, and linked to the label via for-attribute */\n id?: string\n name?: string\n layout?: 'horizontal' | 'vertical'\n /** Main label text */\n label?: React.ReactNode\n /** A more discreet text displayed beside the label */\n labelDescription?: React.ReactNode\n /** Text showing in place of the value if no value is given */\n placeholder?: string\n autoComplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete']\n info?: React.ReactNode\n warning?: React.ReactNode\n error?: Error | FormError\n hasError?: boolean\n disabled?: boolean\n readOnly?: boolean\n capitalize?: boolean\n trim?: boolean\n // Validation\n required?: boolean\n schema?: AllJSONSchemaVersions\n validator?: (\n value: Value | EmptyValue,\n errorMessages?: ErrorMessages\n ) => Error | undefined | void | Promise<Error | undefined | void>\n onBlurValidator?: (\n value: Value | EmptyValue\n ) => Error | undefined | void | Promise<Error | undefined | void>\n /**\n * Should error messages based on validation be shown initially (from given value-prop or source data)\n * before the user interacts with the field?\n * @default false\n */\n validateInitially?: boolean\n /**\n * Should error messages be shown when touching (like focusing a field and blurring) without having changed\n * the value? So the user did not introduce a new error, but it was invalid based on validation initially.\n */\n validateUnchanged?: boolean\n /** Should validation be done while writing, not just when blurring the field? */\n continuousValidation?: boolean\n errorMessages?: ErrorMessages\n // Derivatives\n toInput?: (external: Value | unknown) => Value | unknown\n fromInput?: (external: Value | unknown) => Value\n toEvent?: (\n internal: Value,\n type: 'onChange' | 'onFocus' | 'onBlur' | 'onBlurValidator'\n ) => Value\n fromExternal?: (external: Value) => Value\n transformValue?: (value: Value, currentValue?: Value) => Value\n validateRequired?: (\n internal: Value,\n {\n emptyValue,\n required,\n isChanged,\n error,\n }: {\n emptyValue: EmptyValue\n required: boolean\n isChanged: boolean\n error: FormError | undefined\n }\n ) => FormError | undefined\n}\n\nexport interface FieldHelpProps {\n help?: {\n title?: string\n content?: string\n }\n}\n\nexport interface ValueProps<Value>\n extends DataValueReadComponentProps<Value> {\n label?: string\n /** Field label to show above the data value. */\n showEmpty?: boolean\n /** Text showing in place of the value if no value is given. */\n placeholder?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n /** For showing the value inline (not as a block element) */\n inline?: boolean\n // Derivatives\n /** Prepare value for display (regardless of source like props or data context) */\n prepare?: (external: Value | undefined) => string\n}\n\nexport type Path = string\nexport type Identifier = string\n\nexport type SubmitState =\n | 'pending' // Used for async operations\n | 'complete' // Used to hide the submit indicator\n | 'success' // Used for fields\n | 'error' // Used when error is shown\n | 'abort' // Used to abort the state regardless (step change)\n\n/**\n * Provide a error that shows in the FormStatus of a field.\n */\ntype EventStateObjectError = Error\n/**\n * Provide a warning that shows in the FormStatus of a field.\n */\ntype EventStateObjectWarning = React.ReactNode\n/**\n * Provide an info that shows in the FormStatus of a field.\n */\ntype EventStateObjectInfo = React.ReactNode\n\n/**\n * Provide a status that will enforce the form to stay in pending state\n */\ntype EventStateObjectStatus = 'pending'\n\n/**\n * Provide a success state that will show an indicator on the related field label\n */\ntype EventStateObjectSuccess = 'saved'\n\n/**\n * Provide an error or status messages that shows in the FormStatus of a field\n */\nexport type EventStateObjectOr = {\n error?: EventStateObjectError\n warning?: EventStateObjectWarning\n info?: EventStateObjectInfo\n pending?: EventStateObjectStatus\n}\n\nexport type EventStateObjectEitherOr =\n | { error: EventStateObjectError }\n | { warning: EventStateObjectWarning }\n | { info: EventStateObjectInfo }\n | { status: EventStateObjectStatus }\n\nexport type EventStateObject = EventStateObjectOr &\n EventStateObjectEitherOr\n\n/**\n * Provide 'saved' to indicate the data has been saved successfully. Can not be combined with `error`.\n */\nexport type EventStateObjectWithSuccess = EventStateObjectOr & {\n success?: EventStateObjectSuccess\n} & (EventStateObjectEitherOr | { success: EventStateObjectSuccess })\n\n/**\n * Provide an error or status messages that shows in the FormStatus of a field\n */\nexport type EventReturnWithStateObject = Error | EventStateObject\n\nexport type EventReturnWithStateObjectAndSuccess =\n | Error\n | EventStateObjectWithSuccess\n\nexport type OnSubmitParams = {\n /** Will remove browser-side stored autocomplete data */\n resetForm: () => void\n\n /** Will empty the whole internal data set of the form */\n clearData: () => void\n}\n\nexport type OnSubmit<Data = JsonObject> = (\n data: Partial<Data>,\n { resetForm, clearData }: OnSubmitParams\n) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n\nexport type OnChange<Data = unknown> = (\n data: Data\n) =>\n | EventReturnWithStateObjectAndSuccess\n | void\n | Promise<EventReturnWithStateObjectAndSuccess | void>\n\nexport type OnChangeValue<\n Value = unknown,\n EmptyValue = undefined | string,\n> = (\n value: Value | EmptyValue,\n additionalArgs?: AdditionalEventArgs\n) =>\n | EventReturnWithStateObjectAndSuccess\n | void\n | Promise<EventReturnWithStateObjectAndSuccess | void>\n"],"mappings":";AA0BA,OAAO,MAAMA,SAAS,SAASC,KAAK,CAAC;EAYnCC,WAAWA,CAACC,OAAe,EAAEC,OAA2B,EAAE;IACxD,KAAK,CAACD,OAAO,CAAC;IAAAE,eAAA;IAAAA,eAAA;IAEd,IAAID,OAAO,EAAE;MACX,KAAK,MAAME,GAAG,IAAIF,OAAO,EAAE;QACzB,IAAI,CAACE,GAAG,CAAC,GAAGF,OAAO,CAACE,GAAG,CAAC;MAC1B;IACF;EACF;AACF;AA+BA,MAAMC,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;AAExD,OAAO,SAASC,sBAAsBA,CACpCC,KAAY,EACQ;EACpB,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,CAAC,CAACP,GAAG,CAAC,KACvCC,kBAAkB,CAACO,QAAQ,CAACR,GAAG,CACjC,CACF,CAAC;AACH;AAEA,OAAO,SAASS,sBAAsBA,CACpCN,KAAY,EACwC;EACpD,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACP,GAAG,CAAC,KAAK,CAACC,kBAAkB,CAACO,QAAQ,CAACR,GAAG,CAC7C,CACF,CAAC;AACH;AAYA,MAAMU,mBAAmB,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;AAE3E,OAAO,SAASC,uBAAuBA,CACrCR,KAAY,EACS;EACrB,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,CAAC,CAACP,GAAG,CAAC,KACvCU,mBAAmB,CAACF,QAAQ,CAACR,GAAG,CAClC,CACF,CAAC;AACH;AAEA,OAAO,SAASY,uBAAuBA,CACrCT,KAAY,EAC0C;EACtD,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACP,GAAG,CAAC,KAAK,CAACU,mBAAmB,CAACF,QAAQ,CAACR,GAAG,CAC9C,CACF,CAAC;AACH;AAOA,OAAO,SAASa,2BAA2BA,CAEzCV,KAAY,EAA2B;EACvC,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACP,GAAG,CAAC,KACJC,kBAAkB,CAACO,QAAQ,CAACR,GAAG,CAAC,IAChCU,mBAAmB,CAACF,QAAQ,CAACR,GAAG,CACpC,CACF,CAAC;AACH;AAEA,OAAO,SAASc,2BAA2BA,CAGzCX,KAAY,EACkD;EAC9D,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC,CAAC,CAACI,MAAM,CAChC,CAAC,CAACP,GAAG,CAAC,KACJ,CAACC,kBAAkB,CAACO,QAAQ,CAACR,GAAG,CAAC,IACjC,CAACU,mBAAmB,CAACF,QAAQ,CAACR,GAAG,CACrC,CACF,CAAC;AACH"}
@@ -1,5 +1,5 @@
1
1
  import ajvInstance, { ErrorObject } from 'ajv/dist/2020';
2
- import { FormError } from '../types';
2
+ import { FormError, Path } from '../types';
3
3
  import type Ajv from 'ajv/dist/2020';
4
4
  export type AjvInstance = typeof ajvInstance;
5
5
  export { ajvInstance, Ajv };
@@ -19,7 +19,7 @@ export declare function makeAjvInstance(instance?: Ajv): ajvInstance;
19
19
  * @param ajvError - The Ajv error object.
20
20
  * @returns The instance path of the error.
21
21
  */
22
- export declare function getInstancePath(ajvError: ErrorObject): string;
22
+ export declare function getInstancePath(ajvError: ErrorObject): Path;
23
23
  /**
24
24
  * Retrieves the validation rule from an AJV error object.
25
25
  * If the error object has an 'errorMessage' keyword, it unwraps the original error
@@ -46,10 +46,12 @@ export declare function ajvErrorToFormError(ajvError: ErrorObject): FormError;
46
46
  * @param errors - An array of Ajv errors.
47
47
  * @returns A single FormError or undefined if there are no errors.
48
48
  */
49
- export declare function ajvErrorsToOneFormError(errors?: ErrorObject[] | null): FormError | undefined;
49
+ export declare function ajvErrorsToOneFormError(errors?: ErrorObject[] | null, value?: unknown): FormError | undefined;
50
50
  /**
51
- * Transform errors from ajv-validation into a record of errors (path as key, error as value)
52
- * @param errors
53
- * @returns
51
+ * Converts AJV validation errors to form errors.
52
+ *
53
+ * @param errors - The array of AJV validation errors.
54
+ * @param data - The data object being validated.
55
+ * @returns The converted form errors as a record of path and form error pairs.
54
56
  */
55
- export declare const ajvErrorsToFormErrors: (errors?: ErrorObject[] | null) => Record<string, FormError>;
57
+ export declare const ajvErrorsToFormErrors: (errors?: ErrorObject[] | null, data?: Record<Path, unknown>) => Record<string, FormError>;