@dnb/eufemia 10.20.0 → 10.22.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 (1062) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/cjs/components/aria-live/useAriaLive.d.ts +1 -1
  3. package/cjs/components/breadcrumb/Breadcrumb.d.ts +2 -2
  4. package/cjs/components/breadcrumb/Breadcrumb.js +3 -3
  5. package/cjs/components/breadcrumb/Breadcrumb.js.map +1 -1
  6. package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +7 -2
  7. package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  8. package/cjs/components/breadcrumb/style/dnb-breadcrumb.scss +10 -2
  9. package/cjs/components/button/Button.js +2 -2
  10. package/cjs/components/button/Button.js.map +1 -1
  11. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.css +23 -11
  12. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.min.css +3 -3
  13. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.scss +30 -14
  14. package/cjs/components/card/style/dnb-card.css +11 -2
  15. package/cjs/components/card/style/dnb-card.min.css +1 -1
  16. package/cjs/components/card/style/dnb-card.scss +12 -2
  17. package/cjs/components/date-picker/DatePicker.d.ts +10 -1
  18. package/cjs/components/date-picker/DatePicker.js +5 -2
  19. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  20. package/cjs/components/form-label/style/dnb-form-label.css +4 -8
  21. package/cjs/components/form-label/style/dnb-form-label.min.css +1 -1
  22. package/cjs/components/form-label/style/dnb-form-label.scss +5 -8
  23. package/cjs/components/form-status/style/dnb-form-status.css +11 -0
  24. package/cjs/components/form-status/style/dnb-form-status.min.css +1 -1
  25. package/cjs/components/form-status/style/dnb-form-status.scss +11 -0
  26. package/cjs/components/global-status/GlobalStatus.d.ts +1 -1
  27. package/cjs/components/global-status/GlobalStatusProvider.d.ts +1 -1
  28. package/cjs/components/height-animation/HeightAnimationInstance.d.ts +5 -6
  29. package/cjs/components/height-animation/HeightAnimationInstance.js +12 -12
  30. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  31. package/cjs/components/height-animation/useHeightAnimation.js +11 -10
  32. package/cjs/components/height-animation/useHeightAnimation.js.map +1 -1
  33. package/cjs/components/info-card/InfoCard.d.ts +6 -0
  34. package/cjs/components/info-card/InfoCard.js +4 -2
  35. package/cjs/components/info-card/InfoCard.js.map +1 -1
  36. package/cjs/components/info-card/style/dnb-info-card.css +3 -1
  37. package/cjs/components/info-card/style/dnb-info-card.min.css +1 -1
  38. package/cjs/components/info-card/style/dnb-info-card.scss +4 -2
  39. package/cjs/components/input/Input.d.ts +9 -9
  40. package/cjs/components/input/InputDocs.d.ts +2 -0
  41. package/cjs/components/input/InputDocs.js +165 -0
  42. package/cjs/components/input/InputDocs.js.map +1 -0
  43. package/cjs/components/input/InputPassword.d.ts +6 -17
  44. package/cjs/components/input/InputPassword.js +4 -85
  45. package/cjs/components/input/InputPassword.js.map +1 -1
  46. package/cjs/components/input-masked/InputMasked.d.ts +6 -93
  47. package/cjs/components/input-masked/InputMasked.js +3 -1
  48. package/cjs/components/input-masked/InputMasked.js.map +1 -1
  49. package/cjs/components/input-masked/InputMaskedDocs.d.ts +2 -0
  50. package/cjs/components/input-masked/InputMaskedDocs.js +85 -0
  51. package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -0
  52. package/cjs/components/input-masked/InputMaskedHooks.js +7 -4
  53. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  54. package/cjs/components/input-masked/MultiInputMask.js +2 -6
  55. package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
  56. package/cjs/components/input-masked/style/dnb-input-masked.css +3 -0
  57. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  58. package/cjs/components/input-masked/style/dnb-input-masked.scss +5 -0
  59. package/cjs/components/number-format/NumberFormat.d.ts +1 -1
  60. package/cjs/components/number-format/NumberUtils.js +22 -14
  61. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  62. package/cjs/components/pagination/InfinityScroller.d.ts +1 -1
  63. package/cjs/components/progress-indicator/ProgressIndicator.js +5 -7
  64. package/cjs/components/progress-indicator/ProgressIndicator.js.map +1 -1
  65. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js +1 -1
  66. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  67. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js +4 -4
  68. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  69. package/cjs/components/progress-indicator/style/dnb-progress-indicator.css +5 -2
  70. package/cjs/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  71. package/cjs/components/progress-indicator/style/dnb-progress-indicator.scss +5 -2
  72. package/cjs/components/slider/Slider.d.ts +1 -0
  73. package/cjs/components/slider/Slider.js +10 -1
  74. package/cjs/components/slider/Slider.js.map +1 -1
  75. package/cjs/components/slider/SliderInstance.js +20 -6
  76. package/cjs/components/slider/SliderInstance.js.map +1 -1
  77. package/cjs/components/slider/SliderMarker.d.ts +7 -0
  78. package/cjs/components/slider/SliderMarker.js +62 -0
  79. package/cjs/components/slider/SliderMarker.js.map +1 -0
  80. package/cjs/components/slider/SliderProvider.js +2 -1
  81. package/cjs/components/slider/SliderProvider.js.map +1 -1
  82. package/cjs/components/slider/style/dnb-slider.css +43 -2
  83. package/cjs/components/slider/style/dnb-slider.min.css +1 -1
  84. package/cjs/components/slider/style/dnb-slider.scss +44 -1
  85. package/cjs/components/slider/style/themes/dnb-slider-theme-sbanken.css +3 -0
  86. package/cjs/components/slider/style/themes/dnb-slider-theme-sbanken.min.css +1 -1
  87. package/cjs/components/slider/style/themes/dnb-slider-theme-sbanken.scss +4 -0
  88. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.css +3 -0
  89. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  90. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.scss +5 -0
  91. package/cjs/components/slider/types.d.ts +6 -0
  92. package/cjs/components/slider/types.js.map +1 -1
  93. package/cjs/components/space/SpacingHelper.d.ts +5 -5
  94. package/cjs/components/table/Table.js +2 -2
  95. package/cjs/components/table/Table.js.map +1 -1
  96. package/cjs/components/table/TableAccordion.js +42 -58
  97. package/cjs/components/table/TableAccordion.js.map +1 -1
  98. package/cjs/components/table/TableAccordionTd.d.ts +9 -0
  99. package/cjs/components/table/{TableAccordionContent.js → TableAccordionTd.js} +18 -56
  100. package/cjs/components/table/TableAccordionTd.js.map +1 -0
  101. package/cjs/components/table/TableAccordionTr.d.ts +13 -0
  102. package/cjs/components/table/TableAccordionTr.js +61 -0
  103. package/cjs/components/table/TableAccordionTr.js.map +1 -0
  104. package/cjs/components/table/TableContext.d.ts +2 -2
  105. package/cjs/components/table/TableContext.js +4 -3
  106. package/cjs/components/table/TableContext.js.map +1 -1
  107. package/cjs/components/table/TableTd.d.ts +2 -2
  108. package/cjs/components/table/TableTd.js +2 -2
  109. package/cjs/components/table/TableTd.js.map +1 -1
  110. package/cjs/components/table/TableTr.d.ts +6 -1
  111. package/cjs/components/table/TableTr.js +10 -5
  112. package/cjs/components/table/TableTr.js.map +1 -1
  113. package/cjs/components/table/style/dnb-table.css +226 -139
  114. package/cjs/components/table/style/dnb-table.min.css +1 -1
  115. package/cjs/components/table/style/dnb-table.scss +60 -4
  116. package/cjs/components/table/style/table-accordion.scss +83 -98
  117. package/cjs/components/table/style/table-container.scss +9 -9
  118. package/cjs/components/table/style/table-mixins.scss +19 -2
  119. package/cjs/components/table/style/table-td.scss +82 -60
  120. package/cjs/components/table/style/table-th.scss +5 -30
  121. package/cjs/components/table/style/table-tr.scss +0 -20
  122. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.css +34 -7
  123. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.min.css +3 -1
  124. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.scss +29 -10
  125. package/cjs/components/table/style/themes/dnb-table-theme-ui.css +14 -9
  126. package/cjs/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  127. package/cjs/components/table/style/themes/dnb-table-theme-ui.scss +12 -22
  128. package/cjs/components/table/useTableAnimationHandler.d.ts +20 -0
  129. package/cjs/components/table/useTableAnimationHandler.js +73 -0
  130. package/cjs/components/table/useTableAnimationHandler.js.map +1 -0
  131. package/cjs/components/textarea/Textarea.d.ts +4 -10
  132. package/cjs/components/textarea/TextareaDocs.d.ts +2 -0
  133. package/cjs/components/textarea/TextareaDocs.js +105 -0
  134. package/cjs/components/textarea/TextareaDocs.js.map +1 -0
  135. package/cjs/components/textarea/style/dnb-textarea.css +1 -0
  136. package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
  137. package/cjs/components/textarea/style/dnb-textarea.scss +3 -0
  138. package/cjs/components/upload/UploadInfo.js +1 -1
  139. package/cjs/components/upload/UploadInfo.js.map +1 -1
  140. package/cjs/core/jest/jestSetupScreenshots.css +7 -0
  141. package/cjs/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +1 -0
  142. package/cjs/elements/lib.d.ts +1 -1
  143. package/cjs/elements/lists/Dl.d.ts +5 -1
  144. package/cjs/elements/lists/Dl.js +5 -4
  145. package/cjs/elements/lists/Dl.js.map +1 -1
  146. package/cjs/elements/lists/style/lists-mixins.scss +24 -1
  147. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -2
  148. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  149. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +1 -2
  150. package/cjs/extensions/forms/DataContext/Provider/Provider.js +54 -40
  151. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  152. package/cjs/extensions/forms/Field/Currency/Currency.js +1 -1
  153. package/cjs/extensions/forms/Field/Currency/Currency.js.map +1 -1
  154. package/cjs/extensions/forms/Field/Expiry/Expiry.js +1 -0
  155. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  156. package/cjs/extensions/forms/Field/FieldDocs.d.ts +3 -0
  157. package/cjs/extensions/forms/Field/FieldDocs.js +18 -0
  158. package/cjs/extensions/forms/Field/FieldDocs.js.map +1 -0
  159. package/cjs/extensions/forms/Field/Number/Number.d.ts +1 -0
  160. package/cjs/extensions/forms/Field/Number/Number.js +13 -7
  161. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  162. package/cjs/extensions/forms/Field/Number/NumberDocs.d.ts +2 -0
  163. package/cjs/extensions/forms/Field/Number/NumberDocs.js +92 -0
  164. package/cjs/extensions/forms/Field/Number/NumberDocs.js.map +1 -0
  165. package/cjs/extensions/forms/Field/Number/style/dnb-number.css +3 -1
  166. package/cjs/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  167. package/cjs/extensions/forms/Field/Number/style/dnb-number.scss +4 -1
  168. package/cjs/extensions/forms/Field/Password/Password.d.ts +45 -0
  169. package/cjs/extensions/forms/Field/Password/Password.js +111 -0
  170. package/cjs/extensions/forms/Field/Password/Password.js.map +1 -0
  171. package/cjs/extensions/forms/Field/Password/index.d.ts +2 -0
  172. package/cjs/extensions/forms/Field/Password/index.js +27 -0
  173. package/cjs/extensions/forms/Field/Password/index.js.map +1 -0
  174. package/cjs/extensions/forms/Field/Password/style/dnb-password.css +6 -0
  175. package/cjs/extensions/forms/Field/Password/style/dnb-password.min.css +1 -0
  176. package/cjs/extensions/forms/Field/Password/style/dnb-password.scss +10 -0
  177. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +4 -5
  178. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  179. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -12
  180. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  181. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -11
  182. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +0 -1
  183. package/cjs/extensions/forms/Field/Selection/Selection.js +1 -9
  184. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  185. package/cjs/extensions/forms/Field/String/String.d.ts +20 -9
  186. package/cjs/extensions/forms/Field/String/String.js +52 -31
  187. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  188. package/cjs/extensions/forms/Field/String/StringDocs.d.ts +2 -0
  189. package/cjs/extensions/forms/Field/String/StringDocs.js +106 -0
  190. package/cjs/extensions/forms/Field/String/StringDocs.js.map +1 -0
  191. package/cjs/extensions/forms/Field/Toggle/Toggle.js +1 -1
  192. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  193. package/cjs/extensions/forms/Field/index.d.ts +1 -0
  194. package/cjs/extensions/forms/Field/index.js +7 -0
  195. package/cjs/extensions/forms/Field/index.js.map +1 -1
  196. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +8 -3
  197. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +204 -62
  198. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  199. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +39 -6
  200. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  201. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +2 -0
  202. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js +60 -0
  203. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -0
  204. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +29 -2
  205. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  206. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +28 -0
  207. package/cjs/extensions/forms/Form/Appearance/Appearance.d.ts +7 -0
  208. package/cjs/extensions/forms/Form/Appearance/Appearance.js +38 -0
  209. package/cjs/extensions/forms/Form/Appearance/Appearance.js.map +1 -0
  210. package/cjs/extensions/forms/Form/Appearance/AppearanceDocs.d.ts +2 -0
  211. package/cjs/extensions/forms/Form/Appearance/AppearanceDocs.js +15 -0
  212. package/cjs/extensions/forms/Form/Appearance/AppearanceDocs.js.map +1 -0
  213. package/cjs/extensions/forms/Form/Appearance/index.d.ts +2 -0
  214. package/cjs/extensions/forms/Form/Appearance/index.js +27 -0
  215. package/cjs/extensions/forms/Form/Appearance/index.js.map +1 -0
  216. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +6 -0
  217. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  218. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -2
  219. package/cjs/extensions/forms/Form/data-context/useData.d.ts +1 -1
  220. package/cjs/extensions/forms/Form/data-context/useData.js +2 -18
  221. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  222. package/cjs/extensions/forms/Form/data-context/useError.d.ts +2 -1
  223. package/cjs/extensions/forms/Form/data-context/useError.js +4 -2
  224. package/cjs/extensions/forms/Form/data-context/useError.js.map +1 -1
  225. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  226. package/cjs/extensions/forms/Form/index.js +7 -0
  227. package/cjs/extensions/forms/Form/index.js.map +1 -1
  228. package/cjs/extensions/forms/Value/Currency/Currency.js +2 -2
  229. package/cjs/extensions/forms/Value/Currency/Currency.js.map +1 -1
  230. package/cjs/extensions/forms/Value/Number/Number.d.ts +2 -2
  231. package/cjs/extensions/forms/Value/Number/Number.js +1 -1
  232. package/cjs/extensions/forms/Value/Number/Number.js.map +1 -1
  233. package/cjs/extensions/forms/Value/SummaryList/SummaryList.d.ts +7 -0
  234. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js +35 -0
  235. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -0
  236. package/cjs/extensions/forms/Value/SummaryList/SummaryListContext.d.ts +7 -0
  237. package/cjs/extensions/forms/Value/SummaryList/SummaryListContext.js +12 -0
  238. package/cjs/extensions/forms/Value/SummaryList/SummaryListContext.js.map +1 -0
  239. package/cjs/extensions/forms/Value/SummaryList/index.d.ts +2 -0
  240. package/cjs/extensions/forms/Value/SummaryList/index.js +27 -0
  241. package/cjs/extensions/forms/Value/SummaryList/index.js.map +1 -0
  242. package/cjs/extensions/forms/Value/ValueDocs.d.ts +2 -0
  243. package/cjs/extensions/forms/Value/ValueDocs.js +40 -0
  244. package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -0
  245. package/cjs/extensions/forms/Value/index.d.ts +1 -0
  246. package/cjs/extensions/forms/Value/index.js +7 -0
  247. package/cjs/extensions/forms/Value/index.js.map +1 -1
  248. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +13 -3
  249. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  250. package/cjs/extensions/forms/hooks/DataValueDocs.d.ts +3 -0
  251. package/cjs/extensions/forms/hooks/DataValueDocs.js +118 -0
  252. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -0
  253. package/cjs/extensions/forms/hooks/useDataValue.d.ts +6 -14
  254. package/cjs/extensions/forms/hooks/useDataValue.js +90 -21
  255. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  256. package/cjs/extensions/forms/hooks/useId.js +1 -1
  257. package/cjs/extensions/forms/hooks/useId.js.map +1 -1
  258. package/cjs/extensions/forms/hooks/useMountEffect.js +1 -1
  259. package/cjs/extensions/forms/hooks/useMountEffect.js.map +1 -1
  260. package/cjs/extensions/forms/hooks/useMounted.d.ts +2 -0
  261. package/cjs/extensions/forms/hooks/useMounted.js +19 -0
  262. package/cjs/extensions/forms/hooks/useMounted.js.map +1 -0
  263. package/cjs/extensions/forms/hooks/useUnmountEffect.d.ts +4 -0
  264. package/cjs/extensions/forms/hooks/useUnmountEffect.js +14 -0
  265. package/cjs/extensions/forms/hooks/useUnmountEffect.js.map +1 -0
  266. package/cjs/extensions/forms/style/dnb-forms.css +45 -15
  267. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  268. package/cjs/extensions/forms/types.d.ts +6 -4
  269. package/cjs/extensions/forms/types.js.map +1 -1
  270. package/cjs/extensions/payment-card/utils/CardDesigns.d.ts +96 -96
  271. package/cjs/fragments/drawer-list/DrawerListHelpers.d.ts +52 -52
  272. package/cjs/shared/Context.d.ts +2 -0
  273. package/cjs/shared/Context.js.map +1 -1
  274. package/cjs/shared/Eufemia.d.ts +1 -1
  275. package/cjs/shared/Eufemia.js +2 -2
  276. package/cjs/shared/Eufemia.js.map +1 -1
  277. package/cjs/shared/Theme.d.ts +7 -1
  278. package/cjs/shared/Theme.js +20 -7
  279. package/cjs/shared/Theme.js.map +1 -1
  280. package/cjs/shared/component-helper.d.ts +1 -0
  281. package/cjs/shared/component-helper.js +10 -0
  282. package/cjs/shared/component-helper.js.map +1 -1
  283. package/cjs/shared/helpers/debounce.d.ts +37 -0
  284. package/cjs/shared/helpers/debounce.js +92 -0
  285. package/cjs/shared/helpers/debounce.js.map +1 -0
  286. package/cjs/shared/helpers/filterValidProps.d.ts +2 -2
  287. package/cjs/shared/helpers/filterValidProps.js +2 -2
  288. package/cjs/shared/helpers/filterValidProps.js.map +1 -1
  289. package/cjs/shared/helpers/useSharedState.d.ts +1 -0
  290. package/cjs/shared/helpers/useSharedState.js +52 -20
  291. package/cjs/shared/helpers/useSharedState.js.map +1 -1
  292. package/cjs/shared/helpers/withCamelCaseProps.d.ts +14 -1
  293. package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
  294. package/cjs/shared/helpers.d.ts +1 -25
  295. package/cjs/shared/helpers.js +15 -37
  296. package/cjs/shared/helpers.js.map +1 -1
  297. package/cjs/shared/locales/en-GB.d.ts +5 -3
  298. package/cjs/shared/locales/en-GB.js +7 -5
  299. package/cjs/shared/locales/en-GB.js.map +1 -1
  300. package/cjs/shared/locales/en-US.d.ts +5 -3
  301. package/cjs/shared/locales/index.d.ts +10 -6
  302. package/cjs/shared/locales/nb-NO.d.ts +5 -3
  303. package/cjs/shared/locales/nb-NO.js +7 -5
  304. package/cjs/shared/locales/nb-NO.js.map +1 -1
  305. package/cjs/shared/types.d.ts +5 -0
  306. package/cjs/shared/types.js.map +1 -1
  307. package/cjs/shared/useTheme.d.ts +1 -0
  308. package/cjs/style/dnb-ui-components.css +359 -171
  309. package/cjs/style/dnb-ui-components.min.css +3 -3
  310. package/cjs/style/dnb-ui-elements.css +25 -5
  311. package/cjs/style/dnb-ui-elements.min.css +1 -1
  312. package/cjs/style/dnb-ui-extensions.css +45 -15
  313. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  314. package/cjs/style/dnb-ui-forms.css +45 -15
  315. package/cjs/style/dnb-ui-forms.min.css +1 -1
  316. package/cjs/style/dnb-ui-forms.scss +1 -0
  317. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +25 -5
  318. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  319. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +421 -195
  320. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  321. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +25 -5
  322. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  323. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +45 -15
  324. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  325. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +45 -15
  326. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  327. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +26 -5
  328. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  329. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +464 -204
  330. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
  331. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +26 -5
  332. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  333. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +45 -15
  334. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  335. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +45 -15
  336. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  337. package/cjs/style/themes/theme-ui/prism/dnb-prism-theme.d.ts +3 -3
  338. package/cjs/style/themes/theme-ui/ui-theme-basis.css +25 -5
  339. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  340. package/cjs/style/themes/theme-ui/ui-theme-components.css +421 -195
  341. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  342. package/cjs/style/themes/theme-ui/ui-theme-elements.css +25 -5
  343. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  344. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +45 -15
  345. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  346. package/cjs/style/themes/theme-ui/ui-theme-forms.css +45 -15
  347. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  348. package/cjs/style/themes/theme-ui/ui-theme-tags.css +25 -5
  349. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  350. package/components/aria-live/useAriaLive.d.ts +1 -1
  351. package/components/breadcrumb/Breadcrumb.d.ts +2 -2
  352. package/components/breadcrumb/Breadcrumb.js +3 -3
  353. package/components/breadcrumb/Breadcrumb.js.map +1 -1
  354. package/components/breadcrumb/style/dnb-breadcrumb.css +7 -2
  355. package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  356. package/components/breadcrumb/style/dnb-breadcrumb.scss +10 -2
  357. package/components/button/Button.js +2 -2
  358. package/components/button/Button.js.map +1 -1
  359. package/components/button/style/themes/dnb-button-theme-sbanken.css +23 -11
  360. package/components/button/style/themes/dnb-button-theme-sbanken.min.css +3 -3
  361. package/components/button/style/themes/dnb-button-theme-sbanken.scss +30 -14
  362. package/components/card/style/dnb-card.css +11 -2
  363. package/components/card/style/dnb-card.min.css +1 -1
  364. package/components/card/style/dnb-card.scss +12 -2
  365. package/components/date-picker/DatePicker.d.ts +10 -1
  366. package/components/date-picker/DatePicker.js +5 -2
  367. package/components/date-picker/DatePicker.js.map +1 -1
  368. package/components/form-label/style/dnb-form-label.css +4 -8
  369. package/components/form-label/style/dnb-form-label.min.css +1 -1
  370. package/components/form-label/style/dnb-form-label.scss +5 -8
  371. package/components/form-status/style/dnb-form-status.css +11 -0
  372. package/components/form-status/style/dnb-form-status.min.css +1 -1
  373. package/components/form-status/style/dnb-form-status.scss +11 -0
  374. package/components/global-status/GlobalStatus.d.ts +1 -1
  375. package/components/global-status/GlobalStatusProvider.d.ts +1 -1
  376. package/components/height-animation/HeightAnimationInstance.d.ts +5 -6
  377. package/components/height-animation/HeightAnimationInstance.js +12 -12
  378. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  379. package/components/height-animation/useHeightAnimation.js +11 -10
  380. package/components/height-animation/useHeightAnimation.js.map +1 -1
  381. package/components/info-card/InfoCard.d.ts +6 -0
  382. package/components/info-card/InfoCard.js +4 -2
  383. package/components/info-card/InfoCard.js.map +1 -1
  384. package/components/info-card/style/dnb-info-card.css +3 -1
  385. package/components/info-card/style/dnb-info-card.min.css +1 -1
  386. package/components/info-card/style/dnb-info-card.scss +4 -2
  387. package/components/input/Input.d.ts +9 -9
  388. package/components/input/InputDocs.d.ts +2 -0
  389. package/components/input/InputDocs.js +158 -0
  390. package/components/input/InputDocs.js.map +1 -0
  391. package/components/input/InputPassword.d.ts +6 -17
  392. package/components/input/InputPassword.js +3 -81
  393. package/components/input/InputPassword.js.map +1 -1
  394. package/components/input-masked/InputMasked.d.ts +6 -93
  395. package/components/input-masked/InputMasked.js +3 -1
  396. package/components/input-masked/InputMasked.js.map +1 -1
  397. package/components/input-masked/InputMaskedDocs.d.ts +2 -0
  398. package/components/input-masked/InputMaskedDocs.js +78 -0
  399. package/components/input-masked/InputMaskedDocs.js.map +1 -0
  400. package/components/input-masked/InputMaskedHooks.js +7 -4
  401. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  402. package/components/input-masked/MultiInputMask.js +2 -6
  403. package/components/input-masked/MultiInputMask.js.map +1 -1
  404. package/components/input-masked/style/dnb-input-masked.css +3 -0
  405. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  406. package/components/input-masked/style/dnb-input-masked.scss +5 -0
  407. package/components/number-format/NumberFormat.d.ts +1 -1
  408. package/components/number-format/NumberUtils.js +22 -14
  409. package/components/number-format/NumberUtils.js.map +1 -1
  410. package/components/pagination/InfinityScroller.d.ts +1 -1
  411. package/components/progress-indicator/ProgressIndicator.js +5 -7
  412. package/components/progress-indicator/ProgressIndicator.js.map +1 -1
  413. package/components/progress-indicator/ProgressIndicatorCircular.js +1 -1
  414. package/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  415. package/components/progress-indicator/ProgressIndicatorLinear.js +4 -4
  416. package/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  417. package/components/progress-indicator/style/dnb-progress-indicator.css +5 -2
  418. package/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  419. package/components/progress-indicator/style/dnb-progress-indicator.scss +5 -2
  420. package/components/slider/Slider.d.ts +1 -0
  421. package/components/slider/Slider.js +1 -0
  422. package/components/slider/Slider.js.map +1 -1
  423. package/components/slider/SliderInstance.js +18 -5
  424. package/components/slider/SliderInstance.js.map +1 -1
  425. package/components/slider/SliderMarker.d.ts +7 -0
  426. package/components/slider/SliderMarker.js +53 -0
  427. package/components/slider/SliderMarker.js.map +1 -0
  428. package/components/slider/SliderProvider.js +2 -1
  429. package/components/slider/SliderProvider.js.map +1 -1
  430. package/components/slider/style/dnb-slider.css +43 -2
  431. package/components/slider/style/dnb-slider.min.css +1 -1
  432. package/components/slider/style/dnb-slider.scss +44 -1
  433. package/components/slider/style/themes/dnb-slider-theme-sbanken.css +3 -0
  434. package/components/slider/style/themes/dnb-slider-theme-sbanken.min.css +1 -1
  435. package/components/slider/style/themes/dnb-slider-theme-sbanken.scss +4 -0
  436. package/components/slider/style/themes/dnb-slider-theme-ui.css +3 -0
  437. package/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  438. package/components/slider/style/themes/dnb-slider-theme-ui.scss +5 -0
  439. package/components/slider/types.d.ts +6 -0
  440. package/components/slider/types.js.map +1 -1
  441. package/components/space/SpacingHelper.d.ts +5 -5
  442. package/components/table/Table.js +1 -1
  443. package/components/table/Table.js.map +1 -1
  444. package/components/table/TableAccordion.js +40 -54
  445. package/components/table/TableAccordion.js.map +1 -1
  446. package/components/table/TableAccordionTd.d.ts +9 -0
  447. package/{es/components/table/TableAccordionContent.js → components/table/TableAccordionTd.js} +16 -50
  448. package/components/table/TableAccordionTd.js.map +1 -0
  449. package/components/table/TableAccordionTr.d.ts +13 -0
  450. package/components/table/TableAccordionTr.js +51 -0
  451. package/components/table/TableAccordionTr.js.map +1 -0
  452. package/components/table/TableContext.d.ts +2 -2
  453. package/components/table/TableContext.js +2 -2
  454. package/components/table/TableContext.js.map +1 -1
  455. package/components/table/TableTd.d.ts +2 -2
  456. package/components/table/TableTd.js +2 -2
  457. package/components/table/TableTd.js.map +1 -1
  458. package/components/table/TableTr.d.ts +6 -1
  459. package/components/table/TableTr.js +9 -4
  460. package/components/table/TableTr.js.map +1 -1
  461. package/components/table/style/dnb-table.css +226 -139
  462. package/components/table/style/dnb-table.min.css +1 -1
  463. package/components/table/style/dnb-table.scss +60 -4
  464. package/components/table/style/table-accordion.scss +83 -98
  465. package/components/table/style/table-container.scss +9 -9
  466. package/components/table/style/table-mixins.scss +19 -2
  467. package/components/table/style/table-td.scss +82 -60
  468. package/components/table/style/table-th.scss +5 -30
  469. package/components/table/style/table-tr.scss +0 -20
  470. package/components/table/style/themes/dnb-table-theme-sbanken.css +34 -7
  471. package/components/table/style/themes/dnb-table-theme-sbanken.min.css +3 -1
  472. package/components/table/style/themes/dnb-table-theme-sbanken.scss +29 -10
  473. package/components/table/style/themes/dnb-table-theme-ui.css +14 -9
  474. package/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  475. package/components/table/style/themes/dnb-table-theme-ui.scss +12 -22
  476. package/components/table/useTableAnimationHandler.d.ts +20 -0
  477. package/components/table/useTableAnimationHandler.js +63 -0
  478. package/components/table/useTableAnimationHandler.js.map +1 -0
  479. package/components/textarea/Textarea.d.ts +4 -10
  480. package/components/textarea/TextareaDocs.d.ts +2 -0
  481. package/components/textarea/TextareaDocs.js +98 -0
  482. package/components/textarea/TextareaDocs.js.map +1 -0
  483. package/components/textarea/style/dnb-textarea.css +1 -0
  484. package/components/textarea/style/dnb-textarea.min.css +1 -1
  485. package/components/textarea/style/dnb-textarea.scss +3 -0
  486. package/components/upload/UploadInfo.js +1 -1
  487. package/components/upload/UploadInfo.js.map +1 -1
  488. package/core/jest/jestSetupScreenshots.css +7 -0
  489. package/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +1 -0
  490. package/elements/lib.d.ts +1 -1
  491. package/elements/lists/Dl.d.ts +5 -1
  492. package/elements/lists/Dl.js +5 -4
  493. package/elements/lists/Dl.js.map +1 -1
  494. package/elements/lists/style/lists-mixins.scss +24 -1
  495. package/es/components/aria-live/useAriaLive.d.ts +1 -1
  496. package/es/components/breadcrumb/Breadcrumb.d.ts +2 -2
  497. package/es/components/breadcrumb/Breadcrumb.js +3 -3
  498. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  499. package/es/components/breadcrumb/style/dnb-breadcrumb.css +7 -2
  500. package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  501. package/es/components/breadcrumb/style/dnb-breadcrumb.scss +10 -2
  502. package/es/components/button/Button.js +2 -2
  503. package/es/components/button/Button.js.map +1 -1
  504. package/es/components/button/style/themes/dnb-button-theme-sbanken.css +23 -11
  505. package/es/components/button/style/themes/dnb-button-theme-sbanken.min.css +3 -3
  506. package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +30 -14
  507. package/es/components/card/style/dnb-card.css +11 -2
  508. package/es/components/card/style/dnb-card.min.css +1 -1
  509. package/es/components/card/style/dnb-card.scss +12 -2
  510. package/es/components/date-picker/DatePicker.d.ts +10 -1
  511. package/es/components/date-picker/DatePicker.js +5 -2
  512. package/es/components/date-picker/DatePicker.js.map +1 -1
  513. package/es/components/form-label/style/dnb-form-label.css +4 -8
  514. package/es/components/form-label/style/dnb-form-label.min.css +1 -1
  515. package/es/components/form-label/style/dnb-form-label.scss +5 -8
  516. package/es/components/form-status/style/dnb-form-status.css +11 -0
  517. package/es/components/form-status/style/dnb-form-status.min.css +1 -1
  518. package/es/components/form-status/style/dnb-form-status.scss +11 -0
  519. package/es/components/global-status/GlobalStatus.d.ts +1 -1
  520. package/es/components/global-status/GlobalStatusProvider.d.ts +1 -1
  521. package/es/components/height-animation/HeightAnimationInstance.d.ts +5 -6
  522. package/es/components/height-animation/HeightAnimationInstance.js +12 -12
  523. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  524. package/es/components/height-animation/useHeightAnimation.js +11 -10
  525. package/es/components/height-animation/useHeightAnimation.js.map +1 -1
  526. package/es/components/info-card/InfoCard.d.ts +6 -0
  527. package/es/components/info-card/InfoCard.js +4 -2
  528. package/es/components/info-card/InfoCard.js.map +1 -1
  529. package/es/components/info-card/style/dnb-info-card.css +3 -1
  530. package/es/components/info-card/style/dnb-info-card.min.css +1 -1
  531. package/es/components/info-card/style/dnb-info-card.scss +4 -2
  532. package/es/components/input/Input.d.ts +9 -9
  533. package/es/components/input/InputDocs.d.ts +2 -0
  534. package/es/components/input/InputDocs.js +158 -0
  535. package/es/components/input/InputDocs.js.map +1 -0
  536. package/es/components/input/InputPassword.d.ts +6 -17
  537. package/es/components/input/InputPassword.js +3 -81
  538. package/es/components/input/InputPassword.js.map +1 -1
  539. package/es/components/input-masked/InputMasked.d.ts +6 -93
  540. package/es/components/input-masked/InputMasked.js +3 -1
  541. package/es/components/input-masked/InputMasked.js.map +1 -1
  542. package/es/components/input-masked/InputMaskedDocs.d.ts +2 -0
  543. package/es/components/input-masked/InputMaskedDocs.js +78 -0
  544. package/es/components/input-masked/InputMaskedDocs.js.map +1 -0
  545. package/es/components/input-masked/InputMaskedHooks.js +7 -4
  546. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  547. package/es/components/input-masked/MultiInputMask.js +2 -6
  548. package/es/components/input-masked/MultiInputMask.js.map +1 -1
  549. package/es/components/input-masked/style/dnb-input-masked.css +3 -0
  550. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  551. package/es/components/input-masked/style/dnb-input-masked.scss +5 -0
  552. package/es/components/number-format/NumberFormat.d.ts +1 -1
  553. package/es/components/number-format/NumberUtils.js +23 -14
  554. package/es/components/number-format/NumberUtils.js.map +1 -1
  555. package/es/components/pagination/InfinityScroller.d.ts +1 -1
  556. package/es/components/progress-indicator/ProgressIndicator.js +5 -7
  557. package/es/components/progress-indicator/ProgressIndicator.js.map +1 -1
  558. package/es/components/progress-indicator/ProgressIndicatorCircular.js +1 -1
  559. package/es/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  560. package/es/components/progress-indicator/ProgressIndicatorLinear.js +4 -4
  561. package/es/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  562. package/es/components/progress-indicator/style/dnb-progress-indicator.css +5 -2
  563. package/es/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  564. package/es/components/progress-indicator/style/dnb-progress-indicator.scss +5 -2
  565. package/es/components/slider/Slider.d.ts +1 -0
  566. package/es/components/slider/Slider.js +1 -0
  567. package/es/components/slider/Slider.js.map +1 -1
  568. package/es/components/slider/SliderInstance.js +17 -5
  569. package/es/components/slider/SliderInstance.js.map +1 -1
  570. package/es/components/slider/SliderMarker.d.ts +7 -0
  571. package/es/components/slider/SliderMarker.js +52 -0
  572. package/es/components/slider/SliderMarker.js.map +1 -0
  573. package/es/components/slider/SliderProvider.js +2 -1
  574. package/es/components/slider/SliderProvider.js.map +1 -1
  575. package/es/components/slider/style/dnb-slider.css +43 -2
  576. package/es/components/slider/style/dnb-slider.min.css +1 -1
  577. package/es/components/slider/style/dnb-slider.scss +44 -1
  578. package/es/components/slider/style/themes/dnb-slider-theme-sbanken.css +3 -0
  579. package/es/components/slider/style/themes/dnb-slider-theme-sbanken.min.css +1 -1
  580. package/es/components/slider/style/themes/dnb-slider-theme-sbanken.scss +4 -0
  581. package/es/components/slider/style/themes/dnb-slider-theme-ui.css +3 -0
  582. package/es/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  583. package/es/components/slider/style/themes/dnb-slider-theme-ui.scss +5 -0
  584. package/es/components/slider/types.d.ts +6 -0
  585. package/es/components/slider/types.js.map +1 -1
  586. package/es/components/space/SpacingHelper.d.ts +5 -5
  587. package/es/components/table/Table.js +1 -1
  588. package/es/components/table/Table.js.map +1 -1
  589. package/es/components/table/TableAccordion.js +40 -55
  590. package/es/components/table/TableAccordion.js.map +1 -1
  591. package/es/components/table/TableAccordionTd.d.ts +9 -0
  592. package/{components/table/TableAccordionContent.js → es/components/table/TableAccordionTd.js} +16 -51
  593. package/es/components/table/TableAccordionTd.js.map +1 -0
  594. package/es/components/table/TableAccordionTr.d.ts +13 -0
  595. package/es/components/table/TableAccordionTr.js +51 -0
  596. package/es/components/table/TableAccordionTr.js.map +1 -0
  597. package/es/components/table/TableContext.d.ts +2 -2
  598. package/es/components/table/TableContext.js +2 -2
  599. package/es/components/table/TableContext.js.map +1 -1
  600. package/es/components/table/TableTd.d.ts +2 -2
  601. package/es/components/table/TableTd.js +2 -2
  602. package/es/components/table/TableTd.js.map +1 -1
  603. package/es/components/table/TableTr.d.ts +6 -1
  604. package/es/components/table/TableTr.js +9 -4
  605. package/es/components/table/TableTr.js.map +1 -1
  606. package/es/components/table/style/dnb-table.css +226 -139
  607. package/es/components/table/style/dnb-table.min.css +1 -1
  608. package/es/components/table/style/dnb-table.scss +60 -4
  609. package/es/components/table/style/table-accordion.scss +83 -98
  610. package/es/components/table/style/table-container.scss +9 -9
  611. package/es/components/table/style/table-mixins.scss +19 -2
  612. package/es/components/table/style/table-td.scss +82 -60
  613. package/es/components/table/style/table-th.scss +5 -30
  614. package/es/components/table/style/table-tr.scss +0 -20
  615. package/es/components/table/style/themes/dnb-table-theme-sbanken.css +34 -7
  616. package/es/components/table/style/themes/dnb-table-theme-sbanken.min.css +3 -1
  617. package/es/components/table/style/themes/dnb-table-theme-sbanken.scss +29 -10
  618. package/es/components/table/style/themes/dnb-table-theme-ui.css +14 -9
  619. package/es/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  620. package/es/components/table/style/themes/dnb-table-theme-ui.scss +12 -22
  621. package/es/components/table/useTableAnimationHandler.d.ts +20 -0
  622. package/es/components/table/useTableAnimationHandler.js +62 -0
  623. package/es/components/table/useTableAnimationHandler.js.map +1 -0
  624. package/es/components/textarea/Textarea.d.ts +4 -10
  625. package/es/components/textarea/TextareaDocs.d.ts +2 -0
  626. package/es/components/textarea/TextareaDocs.js +98 -0
  627. package/es/components/textarea/TextareaDocs.js.map +1 -0
  628. package/es/components/textarea/style/dnb-textarea.css +1 -0
  629. package/es/components/textarea/style/dnb-textarea.min.css +1 -1
  630. package/es/components/textarea/style/dnb-textarea.scss +3 -0
  631. package/es/components/upload/UploadInfo.js +1 -1
  632. package/es/components/upload/UploadInfo.js.map +1 -1
  633. package/es/core/jest/jestSetupScreenshots.css +7 -0
  634. package/es/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +1 -0
  635. package/es/elements/lib.d.ts +1 -1
  636. package/es/elements/lists/Dl.d.ts +5 -1
  637. package/es/elements/lists/Dl.js +5 -4
  638. package/es/elements/lists/Dl.js.map +1 -1
  639. package/es/elements/lists/style/lists-mixins.scss +24 -1
  640. package/es/extensions/forms/DataContext/Context.d.ts +1 -2
  641. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  642. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +1 -2
  643. package/es/extensions/forms/DataContext/Provider/Provider.js +54 -40
  644. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  645. package/es/extensions/forms/Field/Currency/Currency.js +1 -1
  646. package/es/extensions/forms/Field/Currency/Currency.js.map +1 -1
  647. package/es/extensions/forms/Field/Expiry/Expiry.js +1 -0
  648. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  649. package/es/extensions/forms/Field/FieldDocs.d.ts +3 -0
  650. package/es/extensions/forms/Field/FieldDocs.js +8 -0
  651. package/es/extensions/forms/Field/FieldDocs.js.map +1 -0
  652. package/es/extensions/forms/Field/Number/Number.d.ts +1 -0
  653. package/es/extensions/forms/Field/Number/Number.js +13 -7
  654. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  655. package/es/extensions/forms/Field/Number/NumberDocs.d.ts +2 -0
  656. package/es/extensions/forms/Field/Number/NumberDocs.js +85 -0
  657. package/es/extensions/forms/Field/Number/NumberDocs.js.map +1 -0
  658. package/es/extensions/forms/Field/Number/style/dnb-number.css +3 -1
  659. package/es/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  660. package/es/extensions/forms/Field/Number/style/dnb-number.scss +4 -1
  661. package/es/extensions/forms/Field/Password/Password.d.ts +45 -0
  662. package/es/extensions/forms/Field/Password/Password.js +99 -0
  663. package/es/extensions/forms/Field/Password/Password.js.map +1 -0
  664. package/es/extensions/forms/Field/Password/index.d.ts +2 -0
  665. package/es/extensions/forms/Field/Password/index.js +3 -0
  666. package/es/extensions/forms/Field/Password/index.js.map +1 -0
  667. package/es/extensions/forms/Field/Password/style/dnb-password.css +6 -0
  668. package/es/extensions/forms/Field/Password/style/dnb-password.min.css +1 -0
  669. package/es/extensions/forms/Field/Password/style/dnb-password.scss +10 -0
  670. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +4 -5
  671. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  672. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -12
  673. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  674. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -11
  675. package/es/extensions/forms/Field/Selection/Selection.d.ts +0 -1
  676. package/es/extensions/forms/Field/Selection/Selection.js +2 -11
  677. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  678. package/es/extensions/forms/Field/String/String.d.ts +20 -9
  679. package/es/extensions/forms/Field/String/String.js +52 -31
  680. package/es/extensions/forms/Field/String/String.js.map +1 -1
  681. package/es/extensions/forms/Field/String/StringDocs.d.ts +2 -0
  682. package/es/extensions/forms/Field/String/StringDocs.js +99 -0
  683. package/es/extensions/forms/Field/String/StringDocs.js.map +1 -0
  684. package/es/extensions/forms/Field/Toggle/Toggle.js +1 -1
  685. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  686. package/es/extensions/forms/Field/index.d.ts +1 -0
  687. package/es/extensions/forms/Field/index.js +1 -0
  688. package/es/extensions/forms/Field/index.js.map +1 -1
  689. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +8 -3
  690. package/es/extensions/forms/FieldBlock/FieldBlock.js +195 -58
  691. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  692. package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +39 -6
  693. package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  694. package/es/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +2 -0
  695. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js +53 -0
  696. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -0
  697. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +29 -2
  698. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  699. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +28 -0
  700. package/es/extensions/forms/Form/Appearance/Appearance.d.ts +7 -0
  701. package/es/extensions/forms/Form/Appearance/Appearance.js +30 -0
  702. package/es/extensions/forms/Form/Appearance/Appearance.js.map +1 -0
  703. package/es/extensions/forms/Form/Appearance/AppearanceDocs.d.ts +2 -0
  704. package/es/extensions/forms/Form/Appearance/AppearanceDocs.js +8 -0
  705. package/es/extensions/forms/Form/Appearance/AppearanceDocs.js.map +1 -0
  706. package/es/extensions/forms/Form/Appearance/index.d.ts +2 -0
  707. package/es/extensions/forms/Form/Appearance/index.js +3 -0
  708. package/es/extensions/forms/Form/Appearance/index.js.map +1 -0
  709. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +6 -0
  710. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  711. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -2
  712. package/es/extensions/forms/Form/data-context/useData.d.ts +1 -1
  713. package/es/extensions/forms/Form/data-context/useData.js +3 -19
  714. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  715. package/es/extensions/forms/Form/data-context/useError.d.ts +2 -1
  716. package/es/extensions/forms/Form/data-context/useError.js +4 -2
  717. package/es/extensions/forms/Form/data-context/useError.js.map +1 -1
  718. package/es/extensions/forms/Form/index.d.ts +1 -0
  719. package/es/extensions/forms/Form/index.js +1 -0
  720. package/es/extensions/forms/Form/index.js.map +1 -1
  721. package/es/extensions/forms/Value/Currency/Currency.js +2 -2
  722. package/es/extensions/forms/Value/Currency/Currency.js.map +1 -1
  723. package/es/extensions/forms/Value/Number/Number.d.ts +2 -2
  724. package/es/extensions/forms/Value/Number/Number.js +1 -1
  725. package/es/extensions/forms/Value/Number/Number.js.map +1 -1
  726. package/es/extensions/forms/Value/SummaryList/SummaryList.d.ts +7 -0
  727. package/es/extensions/forms/Value/SummaryList/SummaryList.js +26 -0
  728. package/es/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -0
  729. package/es/extensions/forms/Value/SummaryList/SummaryListContext.d.ts +7 -0
  730. package/es/extensions/forms/Value/SummaryList/SummaryListContext.js +4 -0
  731. package/es/extensions/forms/Value/SummaryList/SummaryListContext.js.map +1 -0
  732. package/es/extensions/forms/Value/SummaryList/index.d.ts +2 -0
  733. package/es/extensions/forms/Value/SummaryList/index.js +3 -0
  734. package/es/extensions/forms/Value/SummaryList/index.js.map +1 -0
  735. package/es/extensions/forms/Value/ValueDocs.d.ts +2 -0
  736. package/es/extensions/forms/Value/ValueDocs.js +33 -0
  737. package/es/extensions/forms/Value/ValueDocs.js.map +1 -0
  738. package/es/extensions/forms/Value/index.d.ts +1 -0
  739. package/es/extensions/forms/Value/index.js +1 -0
  740. package/es/extensions/forms/Value/index.js.map +1 -1
  741. package/es/extensions/forms/ValueBlock/ValueBlock.js +12 -4
  742. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  743. package/es/extensions/forms/hooks/DataValueDocs.d.ts +3 -0
  744. package/es/extensions/forms/hooks/DataValueDocs.js +110 -0
  745. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -0
  746. package/es/extensions/forms/hooks/useDataValue.d.ts +6 -14
  747. package/es/extensions/forms/hooks/useDataValue.js +92 -23
  748. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  749. package/es/extensions/forms/hooks/useId.js +1 -1
  750. package/es/extensions/forms/hooks/useId.js.map +1 -1
  751. package/es/extensions/forms/hooks/useMountEffect.js +1 -1
  752. package/es/extensions/forms/hooks/useMountEffect.js.map +1 -1
  753. package/es/extensions/forms/hooks/useMounted.d.ts +2 -0
  754. package/es/extensions/forms/hooks/useMounted.js +14 -0
  755. package/es/extensions/forms/hooks/useMounted.js.map +1 -0
  756. package/es/extensions/forms/hooks/useUnmountEffect.d.ts +4 -0
  757. package/es/extensions/forms/hooks/useUnmountEffect.js +9 -0
  758. package/es/extensions/forms/hooks/useUnmountEffect.js.map +1 -0
  759. package/es/extensions/forms/style/dnb-forms.css +45 -15
  760. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  761. package/es/extensions/forms/types.d.ts +6 -4
  762. package/es/extensions/forms/types.js.map +1 -1
  763. package/es/extensions/payment-card/utils/CardDesigns.d.ts +96 -96
  764. package/es/fragments/drawer-list/DrawerListHelpers.d.ts +52 -52
  765. package/es/shared/Context.d.ts +2 -0
  766. package/es/shared/Context.js.map +1 -1
  767. package/es/shared/Eufemia.d.ts +1 -1
  768. package/es/shared/Eufemia.js +2 -2
  769. package/es/shared/Eufemia.js.map +1 -1
  770. package/es/shared/Theme.d.ts +7 -1
  771. package/es/shared/Theme.js +20 -7
  772. package/es/shared/Theme.js.map +1 -1
  773. package/es/shared/component-helper.d.ts +1 -0
  774. package/es/shared/component-helper.js +6 -0
  775. package/es/shared/component-helper.js.map +1 -1
  776. package/es/shared/helpers/debounce.d.ts +37 -0
  777. package/es/shared/helpers/debounce.js +76 -0
  778. package/es/shared/helpers/debounce.js.map +1 -0
  779. package/es/shared/helpers/filterValidProps.d.ts +2 -2
  780. package/es/shared/helpers/filterValidProps.js +2 -2
  781. package/es/shared/helpers/filterValidProps.js.map +1 -1
  782. package/es/shared/helpers/useSharedState.d.ts +1 -0
  783. package/es/shared/helpers/useSharedState.js +49 -20
  784. package/es/shared/helpers/useSharedState.js.map +1 -1
  785. package/es/shared/helpers/withCamelCaseProps.d.ts +14 -1
  786. package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
  787. package/es/shared/helpers.d.ts +1 -25
  788. package/es/shared/helpers.js +1 -29
  789. package/es/shared/helpers.js.map +1 -1
  790. package/es/shared/locales/en-GB.d.ts +5 -3
  791. package/es/shared/locales/en-GB.js +7 -5
  792. package/es/shared/locales/en-GB.js.map +1 -1
  793. package/es/shared/locales/en-US.d.ts +5 -3
  794. package/es/shared/locales/index.d.ts +10 -6
  795. package/es/shared/locales/nb-NO.d.ts +5 -3
  796. package/es/shared/locales/nb-NO.js +7 -5
  797. package/es/shared/locales/nb-NO.js.map +1 -1
  798. package/es/shared/types.d.ts +5 -0
  799. package/es/shared/types.js.map +1 -1
  800. package/es/shared/useTheme.d.ts +1 -0
  801. package/es/style/dnb-ui-components.css +359 -171
  802. package/es/style/dnb-ui-components.min.css +3 -3
  803. package/es/style/dnb-ui-elements.css +25 -5
  804. package/es/style/dnb-ui-elements.min.css +1 -1
  805. package/es/style/dnb-ui-extensions.css +45 -15
  806. package/es/style/dnb-ui-extensions.min.css +1 -1
  807. package/es/style/dnb-ui-forms.css +45 -15
  808. package/es/style/dnb-ui-forms.min.css +1 -1
  809. package/es/style/dnb-ui-forms.scss +1 -0
  810. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +25 -5
  811. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  812. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +421 -195
  813. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  814. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +25 -5
  815. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  816. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +45 -15
  817. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  818. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +45 -15
  819. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  820. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +26 -5
  821. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  822. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +464 -204
  823. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
  824. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +26 -5
  825. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  826. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +45 -15
  827. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  828. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +45 -15
  829. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  830. package/es/style/themes/theme-ui/prism/dnb-prism-theme.d.ts +3 -3
  831. package/es/style/themes/theme-ui/ui-theme-basis.css +25 -5
  832. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  833. package/es/style/themes/theme-ui/ui-theme-components.css +421 -195
  834. package/es/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  835. package/es/style/themes/theme-ui/ui-theme-elements.css +25 -5
  836. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  837. package/es/style/themes/theme-ui/ui-theme-extensions.css +45 -15
  838. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  839. package/es/style/themes/theme-ui/ui-theme-forms.css +45 -15
  840. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  841. package/es/style/themes/theme-ui/ui-theme-tags.css +25 -5
  842. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  843. package/esm/dnb-ui-basis.min.mjs +1 -1
  844. package/esm/dnb-ui-components.min.mjs +1 -1
  845. package/esm/dnb-ui-elements.min.mjs +1 -1
  846. package/esm/dnb-ui-extensions.min.mjs +3 -3
  847. package/esm/dnb-ui-lib.min.mjs +1 -1
  848. package/extensions/forms/DataContext/Context.d.ts +1 -2
  849. package/extensions/forms/DataContext/Context.js.map +1 -1
  850. package/extensions/forms/DataContext/Provider/Provider.d.ts +1 -2
  851. package/extensions/forms/DataContext/Provider/Provider.js +54 -40
  852. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  853. package/extensions/forms/Field/Currency/Currency.js +1 -1
  854. package/extensions/forms/Field/Currency/Currency.js.map +1 -1
  855. package/extensions/forms/Field/Expiry/Expiry.js +1 -0
  856. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  857. package/extensions/forms/Field/FieldDocs.d.ts +3 -0
  858. package/extensions/forms/Field/FieldDocs.js +8 -0
  859. package/extensions/forms/Field/FieldDocs.js.map +1 -0
  860. package/extensions/forms/Field/Number/Number.d.ts +1 -0
  861. package/extensions/forms/Field/Number/Number.js +13 -7
  862. package/extensions/forms/Field/Number/Number.js.map +1 -1
  863. package/extensions/forms/Field/Number/NumberDocs.d.ts +2 -0
  864. package/extensions/forms/Field/Number/NumberDocs.js +85 -0
  865. package/extensions/forms/Field/Number/NumberDocs.js.map +1 -0
  866. package/extensions/forms/Field/Number/style/dnb-number.css +3 -1
  867. package/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  868. package/extensions/forms/Field/Number/style/dnb-number.scss +4 -1
  869. package/extensions/forms/Field/Password/Password.d.ts +45 -0
  870. package/extensions/forms/Field/Password/Password.js +99 -0
  871. package/extensions/forms/Field/Password/Password.js.map +1 -0
  872. package/extensions/forms/Field/Password/index.d.ts +2 -0
  873. package/extensions/forms/Field/Password/index.js +3 -0
  874. package/extensions/forms/Field/Password/index.js.map +1 -0
  875. package/extensions/forms/Field/Password/style/dnb-password.css +6 -0
  876. package/extensions/forms/Field/Password/style/dnb-password.min.css +1 -0
  877. package/extensions/forms/Field/Password/style/dnb-password.scss +10 -0
  878. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +4 -5
  879. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  880. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -12
  881. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  882. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -11
  883. package/extensions/forms/Field/Selection/Selection.d.ts +0 -1
  884. package/extensions/forms/Field/Selection/Selection.js +2 -11
  885. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  886. package/extensions/forms/Field/String/String.d.ts +20 -9
  887. package/extensions/forms/Field/String/String.js +52 -31
  888. package/extensions/forms/Field/String/String.js.map +1 -1
  889. package/extensions/forms/Field/String/StringDocs.d.ts +2 -0
  890. package/extensions/forms/Field/String/StringDocs.js +99 -0
  891. package/extensions/forms/Field/String/StringDocs.js.map +1 -0
  892. package/extensions/forms/Field/Toggle/Toggle.js +1 -1
  893. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  894. package/extensions/forms/Field/index.d.ts +1 -0
  895. package/extensions/forms/Field/index.js +1 -0
  896. package/extensions/forms/Field/index.js.map +1 -1
  897. package/extensions/forms/FieldBlock/FieldBlock.d.ts +8 -3
  898. package/extensions/forms/FieldBlock/FieldBlock.js +203 -64
  899. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  900. package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +39 -6
  901. package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  902. package/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +2 -0
  903. package/extensions/forms/FieldBlock/FieldBlockDocs.js +53 -0
  904. package/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -0
  905. package/extensions/forms/FieldBlock/style/dnb-field-block.css +29 -2
  906. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  907. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +28 -0
  908. package/extensions/forms/Form/Appearance/Appearance.d.ts +7 -0
  909. package/extensions/forms/Form/Appearance/Appearance.js +30 -0
  910. package/extensions/forms/Form/Appearance/Appearance.js.map +1 -0
  911. package/extensions/forms/Form/Appearance/AppearanceDocs.d.ts +2 -0
  912. package/extensions/forms/Form/Appearance/AppearanceDocs.js +8 -0
  913. package/extensions/forms/Form/Appearance/AppearanceDocs.js.map +1 -0
  914. package/extensions/forms/Form/Appearance/index.d.ts +2 -0
  915. package/extensions/forms/Form/Appearance/index.js +3 -0
  916. package/extensions/forms/Form/Appearance/index.js.map +1 -0
  917. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +6 -0
  918. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  919. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -2
  920. package/extensions/forms/Form/data-context/useData.d.ts +1 -1
  921. package/extensions/forms/Form/data-context/useData.js +3 -19
  922. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  923. package/extensions/forms/Form/data-context/useError.d.ts +2 -1
  924. package/extensions/forms/Form/data-context/useError.js +4 -2
  925. package/extensions/forms/Form/data-context/useError.js.map +1 -1
  926. package/extensions/forms/Form/index.d.ts +1 -0
  927. package/extensions/forms/Form/index.js +1 -0
  928. package/extensions/forms/Form/index.js.map +1 -1
  929. package/extensions/forms/Value/Currency/Currency.js +2 -2
  930. package/extensions/forms/Value/Currency/Currency.js.map +1 -1
  931. package/extensions/forms/Value/Number/Number.d.ts +2 -2
  932. package/extensions/forms/Value/Number/Number.js +1 -1
  933. package/extensions/forms/Value/Number/Number.js.map +1 -1
  934. package/extensions/forms/Value/SummaryList/SummaryList.d.ts +7 -0
  935. package/extensions/forms/Value/SummaryList/SummaryList.js +26 -0
  936. package/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -0
  937. package/extensions/forms/Value/SummaryList/SummaryListContext.d.ts +7 -0
  938. package/extensions/forms/Value/SummaryList/SummaryListContext.js +4 -0
  939. package/extensions/forms/Value/SummaryList/SummaryListContext.js.map +1 -0
  940. package/extensions/forms/Value/SummaryList/index.d.ts +2 -0
  941. package/extensions/forms/Value/SummaryList/index.js +3 -0
  942. package/extensions/forms/Value/SummaryList/index.js.map +1 -0
  943. package/extensions/forms/Value/ValueDocs.d.ts +2 -0
  944. package/extensions/forms/Value/ValueDocs.js +33 -0
  945. package/extensions/forms/Value/ValueDocs.js.map +1 -0
  946. package/extensions/forms/Value/index.d.ts +1 -0
  947. package/extensions/forms/Value/index.js +1 -0
  948. package/extensions/forms/Value/index.js.map +1 -1
  949. package/extensions/forms/ValueBlock/ValueBlock.js +12 -4
  950. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  951. package/extensions/forms/hooks/DataValueDocs.d.ts +3 -0
  952. package/extensions/forms/hooks/DataValueDocs.js +110 -0
  953. package/extensions/forms/hooks/DataValueDocs.js.map +1 -0
  954. package/extensions/forms/hooks/useDataValue.d.ts +6 -14
  955. package/extensions/forms/hooks/useDataValue.js +92 -23
  956. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  957. package/extensions/forms/hooks/useId.js +1 -1
  958. package/extensions/forms/hooks/useId.js.map +1 -1
  959. package/extensions/forms/hooks/useMountEffect.js +1 -1
  960. package/extensions/forms/hooks/useMountEffect.js.map +1 -1
  961. package/extensions/forms/hooks/useMounted.d.ts +2 -0
  962. package/extensions/forms/hooks/useMounted.js +14 -0
  963. package/extensions/forms/hooks/useMounted.js.map +1 -0
  964. package/extensions/forms/hooks/useUnmountEffect.d.ts +4 -0
  965. package/extensions/forms/hooks/useUnmountEffect.js +9 -0
  966. package/extensions/forms/hooks/useUnmountEffect.js.map +1 -0
  967. package/extensions/forms/style/dnb-forms.css +45 -15
  968. package/extensions/forms/style/dnb-forms.min.css +1 -1
  969. package/extensions/forms/types.d.ts +6 -4
  970. package/extensions/forms/types.js.map +1 -1
  971. package/extensions/payment-card/utils/CardDesigns.d.ts +96 -96
  972. package/fragments/drawer-list/DrawerListHelpers.d.ts +52 -52
  973. package/package.json +1 -1
  974. package/shared/Context.d.ts +2 -0
  975. package/shared/Context.js.map +1 -1
  976. package/shared/Eufemia.d.ts +1 -1
  977. package/shared/Eufemia.js +2 -2
  978. package/shared/Eufemia.js.map +1 -1
  979. package/shared/Theme.d.ts +7 -1
  980. package/shared/Theme.js +20 -7
  981. package/shared/Theme.js.map +1 -1
  982. package/shared/component-helper.d.ts +1 -0
  983. package/shared/component-helper.js +9 -0
  984. package/shared/component-helper.js.map +1 -1
  985. package/shared/helpers/debounce.d.ts +37 -0
  986. package/shared/helpers/debounce.js +83 -0
  987. package/shared/helpers/debounce.js.map +1 -0
  988. package/shared/helpers/filterValidProps.d.ts +2 -2
  989. package/shared/helpers/filterValidProps.js +2 -2
  990. package/shared/helpers/filterValidProps.js.map +1 -1
  991. package/shared/helpers/useSharedState.d.ts +1 -0
  992. package/shared/helpers/useSharedState.js +49 -20
  993. package/shared/helpers/useSharedState.js.map +1 -1
  994. package/shared/helpers/withCamelCaseProps.d.ts +14 -1
  995. package/shared/helpers/withCamelCaseProps.js.map +1 -1
  996. package/shared/helpers.d.ts +1 -25
  997. package/shared/helpers.js +3 -36
  998. package/shared/helpers.js.map +1 -1
  999. package/shared/locales/en-GB.d.ts +5 -3
  1000. package/shared/locales/en-GB.js +7 -5
  1001. package/shared/locales/en-GB.js.map +1 -1
  1002. package/shared/locales/en-US.d.ts +5 -3
  1003. package/shared/locales/index.d.ts +10 -6
  1004. package/shared/locales/nb-NO.d.ts +5 -3
  1005. package/shared/locales/nb-NO.js +7 -5
  1006. package/shared/locales/nb-NO.js.map +1 -1
  1007. package/shared/types.d.ts +5 -0
  1008. package/shared/types.js.map +1 -1
  1009. package/shared/useTheme.d.ts +1 -0
  1010. package/style/dnb-ui-components.css +359 -171
  1011. package/style/dnb-ui-components.min.css +3 -3
  1012. package/style/dnb-ui-elements.css +25 -5
  1013. package/style/dnb-ui-elements.min.css +1 -1
  1014. package/style/dnb-ui-extensions.css +45 -15
  1015. package/style/dnb-ui-extensions.min.css +1 -1
  1016. package/style/dnb-ui-forms.css +45 -15
  1017. package/style/dnb-ui-forms.min.css +1 -1
  1018. package/style/dnb-ui-forms.scss +1 -0
  1019. package/style/themes/theme-eiendom/eiendom-theme-basis.css +25 -5
  1020. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  1021. package/style/themes/theme-eiendom/eiendom-theme-components.css +421 -195
  1022. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  1023. package/style/themes/theme-eiendom/eiendom-theme-elements.css +25 -5
  1024. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  1025. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +45 -15
  1026. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  1027. package/style/themes/theme-eiendom/eiendom-theme-forms.css +45 -15
  1028. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  1029. package/style/themes/theme-sbanken/sbanken-theme-basis.css +26 -5
  1030. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  1031. package/style/themes/theme-sbanken/sbanken-theme-components.css +464 -204
  1032. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
  1033. package/style/themes/theme-sbanken/sbanken-theme-elements.css +26 -5
  1034. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  1035. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +45 -15
  1036. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  1037. package/style/themes/theme-sbanken/sbanken-theme-forms.css +45 -15
  1038. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  1039. package/style/themes/theme-ui/prism/dnb-prism-theme.d.ts +3 -3
  1040. package/style/themes/theme-ui/ui-theme-basis.css +25 -5
  1041. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  1042. package/style/themes/theme-ui/ui-theme-components.css +421 -195
  1043. package/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  1044. package/style/themes/theme-ui/ui-theme-elements.css +25 -5
  1045. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  1046. package/style/themes/theme-ui/ui-theme-extensions.css +45 -15
  1047. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  1048. package/style/themes/theme-ui/ui-theme-forms.css +45 -15
  1049. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  1050. package/style/themes/theme-ui/ui-theme-tags.css +25 -5
  1051. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  1052. package/umd/dnb-ui-basis.min.js +1 -1
  1053. package/umd/dnb-ui-components.min.js +1 -1
  1054. package/umd/dnb-ui-elements.min.js +1 -1
  1055. package/umd/dnb-ui-extensions.min.js +3 -3
  1056. package/umd/dnb-ui-lib.min.js +1 -1
  1057. package/cjs/components/table/TableAccordionContent.d.ts +0 -18
  1058. package/cjs/components/table/TableAccordionContent.js.map +0 -1
  1059. package/components/table/TableAccordionContent.d.ts +0 -18
  1060. package/components/table/TableAccordionContent.js.map +0 -1
  1061. package/es/components/table/TableAccordionContent.d.ts +0 -18
  1062. package/es/components/table/TableAccordionContent.js.map +0 -1
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Debounces a function to be executed after a specified wait time.
3
+ *
4
+ * @param {Function} debouncedFunction - The function to be debounced.
5
+ * @param {number} [wait=250] - The wait time in milliseconds before executing the debounced function.
6
+ * @param {Object} [options] - Additional options for the debounced function.
7
+ * @param {boolean} [options.immediate=false] - Whether to execute the debounced function immediately.
8
+ * @param {Object} [options.instance=null] - The instance to bind the debounced function to.
9
+ * @param {boolean} [options.async=false] - Whether to return a promise that resolves with the result of the debounced function.
10
+ * @returns {Function|Promise} - The debounced function or a promise that resolves with the result of the debounced function.
11
+ * @memberof helpers
12
+ */
13
+ export declare function debounce(debouncedFunction: any, wait?: number, { immediate, instance, async }?: {
14
+ immediate?: boolean;
15
+ instance?: any;
16
+ async?: boolean;
17
+ }): {
18
+ (...args: any[]): any;
19
+ cancel: () => void;
20
+ addCancelEvent: (fn: any) => () => boolean;
21
+ };
22
+ /**
23
+ * Debounces a function in async to be executed after a specified wait time.
24
+ *
25
+ * @param {Function} debouncedFunction - The function to be debounced.
26
+ * @param {number} [wait=250] - The wait time in milliseconds before executing the debounced function.
27
+ * @param {Object} [options] - Additional options for the debounced function.
28
+ * @param {boolean} [options.immediate=false] - Whether to execute the debounced function immediately.
29
+ * @param {Object} [options.instance=null] - The instance to bind the debounced function to.
30
+ * @returns {Promise} - The debounced promise that resolves with the result of the debounced function.
31
+ * @memberof helpers
32
+ */
33
+ export declare function debounceAsync(debouncedFunction: any, wait?: number, opts?: any): {
34
+ (...args: any[]): any;
35
+ cancel: () => void;
36
+ addCancelEvent: (fn: any) => () => boolean;
37
+ };
@@ -0,0 +1,76 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+ export function debounce(debouncedFunction, wait = 250, {
5
+ immediate = false,
6
+ instance = null,
7
+ async = false
8
+ } = {}) {
9
+ let timeout;
10
+ let recall;
11
+ let resolvePromise;
12
+ let rejectPromise;
13
+ let canceled = false;
14
+ const customCancels = [];
15
+ const cancel = () => {
16
+ var _resolvePromise;
17
+ canceled = true;
18
+ clearTimeout(timeout);
19
+ (_resolvePromise = resolvePromise) === null || _resolvePromise === void 0 ? void 0 : _resolvePromise();
20
+ customCancels.forEach(fn => {
21
+ fn();
22
+ });
23
+ };
24
+ const addCancelEvent = fn => {
25
+ if (!customCancels.includes(fn)) {
26
+ customCancels.push(fn);
27
+ }
28
+ return () => {
29
+ return canceled;
30
+ };
31
+ };
32
+ function executedFunction(...args) {
33
+ if (typeof recall === 'function') {
34
+ recall();
35
+ }
36
+ canceled = false;
37
+ const inst = instance || this || {};
38
+ inst.cancel = cancel;
39
+ inst.addCancelEvent = addCancelEvent;
40
+ const later = callNow => {
41
+ timeout = null;
42
+ if (callNow || !immediate) {
43
+ try {
44
+ var _resolvePromise2;
45
+ recall = debouncedFunction.apply(inst, args);
46
+ (_resolvePromise2 = resolvePromise) === null || _resolvePromise2 === void 0 ? void 0 : _resolvePromise2(recall);
47
+ } catch (error) {
48
+ var _rejectPromise;
49
+ (_rejectPromise = rejectPromise) === null || _rejectPromise === void 0 ? void 0 : _rejectPromise(error);
50
+ }
51
+ }
52
+ };
53
+ const callNow = immediate && !timeout;
54
+ clearTimeout(timeout);
55
+ timeout = setTimeout(later, wait);
56
+ if (callNow) {
57
+ later(true);
58
+ }
59
+ if (async) {
60
+ return new Promise((resolve, reject) => {
61
+ resolvePromise = resolve;
62
+ rejectPromise = reject;
63
+ });
64
+ }
65
+ return recall;
66
+ }
67
+ executedFunction.cancel = cancel;
68
+ executedFunction.addCancelEvent = addCancelEvent;
69
+ return executedFunction;
70
+ }
71
+ export function debounceAsync(debouncedFunction, wait = 250, opts = null) {
72
+ return debounce(debouncedFunction, wait, _objectSpread(_objectSpread({}, opts), {}, {
73
+ async: true
74
+ }));
75
+ }
76
+ //# sourceMappingURL=debounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.js","names":["debounce","debouncedFunction","wait","immediate","instance","async","timeout","recall","resolvePromise","rejectPromise","canceled","customCancels","cancel","_resolvePromise","clearTimeout","forEach","fn","addCancelEvent","includes","push","executedFunction","args","inst","later","callNow","_resolvePromise2","apply","error","_rejectPromise","setTimeout","Promise","resolve","reject","debounceAsync","opts","_objectSpread"],"sources":["../../../../src/shared/helpers/debounce.ts"],"sourcesContent":["/**\n * Debounces a function to be executed after a specified wait time.\n *\n * @param {Function} debouncedFunction - The function to be debounced.\n * @param {number} [wait=250] - The wait time in milliseconds before executing the debounced function.\n * @param {Object} [options] - Additional options for the debounced function.\n * @param {boolean} [options.immediate=false] - Whether to execute the debounced function immediately.\n * @param {Object} [options.instance=null] - The instance to bind the debounced function to.\n * @param {boolean} [options.async=false] - Whether to return a promise that resolves with the result of the debounced function.\n * @returns {Function|Promise} - The debounced function or a promise that resolves with the result of the debounced function.\n * @memberof helpers\n */\nexport function debounce(\n debouncedFunction,\n wait = 250,\n { immediate = false, instance = null, async = false } = {}\n) {\n let timeout\n let recall\n let resolvePromise\n let rejectPromise\n let canceled = false\n const customCancels = []\n\n const cancel = () => {\n canceled = true\n\n clearTimeout(timeout)\n resolvePromise?.()\n\n customCancels.forEach((fn) => {\n fn()\n })\n }\n\n const addCancelEvent = (fn) => {\n if (!customCancels.includes(fn)) {\n customCancels.push(fn)\n }\n\n return () => {\n return canceled\n }\n }\n\n function executedFunction(...args) {\n if (typeof recall === 'function') {\n recall()\n }\n\n canceled = false\n\n const inst = instance || this || {}\n inst.cancel = cancel\n inst.addCancelEvent = addCancelEvent\n\n const later = (callNow) => {\n timeout = null\n if (callNow || !immediate) {\n try {\n recall = debouncedFunction.apply(inst, args)\n resolvePromise?.(recall)\n } catch (error) {\n rejectPromise?.(error)\n }\n }\n }\n\n const callNow = immediate && !timeout\n\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n\n if (callNow) {\n later(true)\n }\n\n if (async) {\n return new Promise((resolve, reject) => {\n resolvePromise = resolve\n rejectPromise = reject\n })\n }\n\n return recall\n }\n\n executedFunction.cancel = cancel\n executedFunction.addCancelEvent = addCancelEvent\n\n return executedFunction\n}\n\n/**\n * Debounces a function in async to be executed after a specified wait time.\n *\n * @param {Function} debouncedFunction - The function to be debounced.\n * @param {number} [wait=250] - The wait time in milliseconds before executing the debounced function.\n * @param {Object} [options] - Additional options for the debounced function.\n * @param {boolean} [options.immediate=false] - Whether to execute the debounced function immediately.\n * @param {Object} [options.instance=null] - The instance to bind the debounced function to.\n * @returns {Promise} - The debounced promise that resolves with the result of the debounced function.\n * @memberof helpers\n */\nexport function debounceAsync(debouncedFunction, wait = 250, opts = null) {\n return debounce(debouncedFunction, wait, { ...opts, async: true })\n}\n"],"mappings":";;;AAYA,OAAO,SAASA,QAAQA,CACtBC,iBAAiB,EACjBC,IAAI,GAAG,GAAG,EACV;EAAEC,SAAS,GAAG,KAAK;EAAEC,QAAQ,GAAG,IAAI;EAAEC,KAAK,GAAG;AAAM,CAAC,GAAG,CAAC,CAAC,EAC1D;EACA,IAAIC,OAAO;EACX,IAAIC,MAAM;EACV,IAAIC,cAAc;EAClB,IAAIC,aAAa;EACjB,IAAIC,QAAQ,GAAG,KAAK;EACpB,MAAMC,aAAa,GAAG,EAAE;EAExB,MAAMC,MAAM,GAAGA,CAAA,KAAM;IAAA,IAAAC,eAAA;IACnBH,QAAQ,GAAG,IAAI;IAEfI,YAAY,CAACR,OAAO,CAAC;IACrB,CAAAO,eAAA,GAAAL,cAAc,cAAAK,eAAA,uBAAdA,eAAA,CAAiB,CAAC;IAElBF,aAAa,CAACI,OAAO,CAAEC,EAAE,IAAK;MAC5BA,EAAE,CAAC,CAAC;IACN,CAAC,CAAC;EACJ,CAAC;EAED,MAAMC,cAAc,GAAID,EAAE,IAAK;IAC7B,IAAI,CAACL,aAAa,CAACO,QAAQ,CAACF,EAAE,CAAC,EAAE;MAC/BL,aAAa,CAACQ,IAAI,CAACH,EAAE,CAAC;IACxB;IAEA,OAAO,MAAM;MACX,OAAON,QAAQ;IACjB,CAAC;EACH,CAAC;EAED,SAASU,gBAAgBA,CAAC,GAAGC,IAAI,EAAE;IACjC,IAAI,OAAOd,MAAM,KAAK,UAAU,EAAE;MAChCA,MAAM,CAAC,CAAC;IACV;IAEAG,QAAQ,GAAG,KAAK;IAEhB,MAAMY,IAAI,GAAGlB,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC;IACnCkB,IAAI,CAACV,MAAM,GAAGA,MAAM;IACpBU,IAAI,CAACL,cAAc,GAAGA,cAAc;IAEpC,MAAMM,KAAK,GAAIC,OAAO,IAAK;MACzBlB,OAAO,GAAG,IAAI;MACd,IAAIkB,OAAO,IAAI,CAACrB,SAAS,EAAE;QACzB,IAAI;UAAA,IAAAsB,gBAAA;UACFlB,MAAM,GAAGN,iBAAiB,CAACyB,KAAK,CAACJ,IAAI,EAAED,IAAI,CAAC;UAC5C,CAAAI,gBAAA,GAAAjB,cAAc,cAAAiB,gBAAA,uBAAdA,gBAAA,CAAiBlB,MAAM,CAAC;QAC1B,CAAC,CAAC,OAAOoB,KAAK,EAAE;UAAA,IAAAC,cAAA;UACd,CAAAA,cAAA,GAAAnB,aAAa,cAAAmB,cAAA,uBAAbA,cAAA,CAAgBD,KAAK,CAAC;QACxB;MACF;IACF,CAAC;IAED,MAAMH,OAAO,GAAGrB,SAAS,IAAI,CAACG,OAAO;IAErCQ,YAAY,CAACR,OAAO,CAAC;IACrBA,OAAO,GAAGuB,UAAU,CAACN,KAAK,EAAErB,IAAI,CAAC;IAEjC,IAAIsB,OAAO,EAAE;MACXD,KAAK,CAAC,IAAI,CAAC;IACb;IAEA,IAAIlB,KAAK,EAAE;MACT,OAAO,IAAIyB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;QACtCxB,cAAc,GAAGuB,OAAO;QACxBtB,aAAa,GAAGuB,MAAM;MACxB,CAAC,CAAC;IACJ;IAEA,OAAOzB,MAAM;EACf;EAEAa,gBAAgB,CAACR,MAAM,GAAGA,MAAM;EAChCQ,gBAAgB,CAACH,cAAc,GAAGA,cAAc;EAEhD,OAAOG,gBAAgB;AACzB;AAaA,OAAO,SAASa,aAAaA,CAAChC,iBAAiB,EAAEC,IAAI,GAAG,GAAG,EAAEgC,IAAI,GAAG,IAAI,EAAE;EACxE,OAAOlC,QAAQ,CAACC,iBAAiB,EAAEC,IAAI,EAAAiC,aAAA,CAAAA,aAAA,KAAOD,IAAI;IAAE7B,KAAK,EAAE;EAAI,EAAE,CAAC;AACpE"}
@@ -7,7 +7,7 @@
7
7
  * @param excludeKeys object with keys that should be excluded
8
8
  * @returns filtered properties
9
9
  */
10
- export declare function filterValidProps<Props>(props: Props, validKeys?: Record<string, unknown>, excludeKeys?: Record<string, unknown>): Props;
10
+ export declare function filterValidProps<T extends Record<string, unknown>>(props: T | any, validKeys?: Record<string, unknown>, excludeKeys?: Record<string, unknown>): T;
11
11
  /**
12
12
  * Filters out props from a given object/context
13
13
  * It returns a new object, with keys defined in validKeys
@@ -16,7 +16,7 @@ export declare function filterValidProps<Props>(props: Props, validKeys?: Record
16
16
  * @param excludeProps object with keys that should be excluded
17
17
  * @returns filtered properties
18
18
  */
19
- export declare function pickFormElementProps(props: FormElementProps, excludeProps?: Record<string, unknown>): FormElementProps;
19
+ export declare function pickFormElementProps(props: FormElementProps, excludeProps?: Record<string, unknown>): Record<string, unknown>;
20
20
  export declare function prepareFormElementContext<Props>(props: Props & FormElementProps): Props & FormElementProps;
21
21
  export type FormElementProps = {
22
22
  vertical?: boolean;
@@ -1,7 +1,7 @@
1
1
  import { isTrue } from '../component-helper';
2
2
  export function filterValidProps(props, validKeys, excludeKeys) {
3
- const res = {},
4
- o = Object.prototype.hasOwnProperty;
3
+ const res = {};
4
+ const o = Object.prototype.hasOwnProperty;
5
5
  for (const key in props) {
6
6
  if ((!validKeys || validKeys && o.call(validKeys, key)) && (!excludeKeys || excludeKeys && !o.call(excludeKeys, key))) {
7
7
  res[key] = props[key];
@@ -1 +1 @@
1
- {"version":3,"file":"filterValidProps.js","names":["isTrue","filterValidProps","props","validKeys","excludeKeys","res","o","Object","prototype","hasOwnProperty","key","call","pickFormElementProps","excludeProps","validFormElementProps","prepareFormElementContext","vertical","labelDirection","label_direction","skeleton","disabled"],"sources":["../../../../src/shared/helpers/filterValidProps.tsx"],"sourcesContent":["import { isTrue } from '../component-helper'\n\n/**\n * Filters out props from a given object/context\n * It returns a new object, with keys defined in validKeys\n *\n * @param props object of component properties\n * @param validKeys object with keys that should get returned\n * @param excludeKeys object with keys that should be excluded\n * @returns filtered properties\n */\nexport function filterValidProps<Props>(\n props: Props,\n validKeys?: Record<string, unknown>,\n excludeKeys?: Record<string, unknown>\n) {\n const res = {} as Props,\n o = Object.prototype.hasOwnProperty\n\n for (const key in props) {\n if (\n (!validKeys || (validKeys && o.call(validKeys, key))) &&\n (!excludeKeys || (excludeKeys && !o.call(excludeKeys, key)))\n ) {\n res[key] = props[key]\n }\n }\n\n return res\n}\n\n/**\n * Filters out props from a given object/context\n * It returns a new object, with keys defined in validKeys\n *\n * @param props object of form component properties\n * @param excludeProps object with keys that should be excluded\n * @returns filtered properties\n */\nexport function pickFormElementProps(\n props: FormElementProps,\n excludeProps?: Record<string, unknown>\n) {\n return filterValidProps(props, validFormElementProps, excludeProps)\n}\nexport function prepareFormElementContext<Props>(\n props: Props & FormElementProps\n) {\n if (isTrue(props.vertical)) {\n if (typeof props.labelDirection === 'undefined') {\n props.labelDirection = 'vertical'\n }\n if (typeof props.label_direction === 'undefined') {\n props.label_direction = 'vertical'\n }\n }\n return props\n}\nexport type FormElementProps = {\n vertical?: boolean\n labelDirection?: 'vertical' | 'horizontal'\n\n /** @deprecated use labelDirection instead */\n label_direction?: 'vertical' | 'horizontal'\n}\nconst validFormElementProps = {\n skeleton: null,\n disabled: null,\n vertical: null,\n labelDirection: null,\n\n /** @deprecated use labelDirection instead */\n label_direction: null,\n}\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAW5C,OAAO,SAASC,gBAAgBA,CAC9BC,KAAY,EACZC,SAAmC,EACnCC,WAAqC,EACrC;EACA,MAAMC,GAAG,GAAG,CAAC,CAAU;IACrBC,CAAC,GAAGC,MAAM,CAACC,SAAS,CAACC,cAAc;EAErC,KAAK,MAAMC,GAAG,IAAIR,KAAK,EAAE;IACvB,IACE,CAAC,CAACC,SAAS,IAAKA,SAAS,IAAIG,CAAC,CAACK,IAAI,CAACR,SAAS,EAAEO,GAAG,CAAE,MACnD,CAACN,WAAW,IAAKA,WAAW,IAAI,CAACE,CAAC,CAACK,IAAI,CAACP,WAAW,EAAEM,GAAG,CAAE,CAAC,EAC5D;MACAL,GAAG,CAACK,GAAG,CAAC,GAAGR,KAAK,CAACQ,GAAG,CAAC;IACvB;EACF;EAEA,OAAOL,GAAG;AACZ;AAUA,OAAO,SAASO,oBAAoBA,CAClCV,KAAuB,EACvBW,YAAsC,EACtC;EACA,OAAOZ,gBAAgB,CAACC,KAAK,EAAEY,qBAAqB,EAAED,YAAY,CAAC;AACrE;AACA,OAAO,SAASE,yBAAyBA,CACvCb,KAA+B,EAC/B;EACA,IAAIF,MAAM,CAACE,KAAK,CAACc,QAAQ,CAAC,EAAE;IAC1B,IAAI,OAAOd,KAAK,CAACe,cAAc,KAAK,WAAW,EAAE;MAC/Cf,KAAK,CAACe,cAAc,GAAG,UAAU;IACnC;IACA,IAAI,OAAOf,KAAK,CAACgB,eAAe,KAAK,WAAW,EAAE;MAChDhB,KAAK,CAACgB,eAAe,GAAG,UAAU;IACpC;EACF;EACA,OAAOhB,KAAK;AACd;AAQA,MAAMY,qBAAqB,GAAG;EAC5BK,QAAQ,EAAE,IAAI;EACdC,QAAQ,EAAE,IAAI;EACdJ,QAAQ,EAAE,IAAI;EACdC,cAAc,EAAE,IAAI;EAGpBC,eAAe,EAAE;AACnB,CAAC"}
1
+ {"version":3,"file":"filterValidProps.js","names":["isTrue","filterValidProps","props","validKeys","excludeKeys","res","o","Object","prototype","hasOwnProperty","key","call","pickFormElementProps","excludeProps","validFormElementProps","prepareFormElementContext","vertical","labelDirection","label_direction","skeleton","disabled"],"sources":["../../../../src/shared/helpers/filterValidProps.tsx"],"sourcesContent":["import { isTrue } from '../component-helper'\n\n/**\n * Filters out props from a given object/context\n * It returns a new object, with keys defined in validKeys\n *\n * @param props object of component properties\n * @param validKeys object with keys that should get returned\n * @param excludeKeys object with keys that should be excluded\n * @returns filtered properties\n */\nexport function filterValidProps<T extends Record<string, unknown>>(\n props: T | any,\n validKeys?: Record<string, unknown>,\n excludeKeys?: Record<string, unknown>\n): T {\n const res = {}\n const o = Object.prototype.hasOwnProperty\n\n for (const key in props) {\n if (\n (!validKeys || (validKeys && o.call(validKeys, key))) &&\n (!excludeKeys || (excludeKeys && !o.call(excludeKeys, key)))\n ) {\n res[key] = props[key]\n }\n }\n\n return res as T\n}\n\n/**\n * Filters out props from a given object/context\n * It returns a new object, with keys defined in validKeys\n *\n * @param props object of form component properties\n * @param excludeProps object with keys that should be excluded\n * @returns filtered properties\n */\nexport function pickFormElementProps(\n props: FormElementProps,\n excludeProps?: Record<string, unknown>\n) {\n return filterValidProps(props, validFormElementProps, excludeProps)\n}\nexport function prepareFormElementContext<Props>(\n props: Props & FormElementProps\n) {\n if (isTrue(props.vertical)) {\n if (typeof props.labelDirection === 'undefined') {\n props.labelDirection = 'vertical'\n }\n if (typeof props.label_direction === 'undefined') {\n props.label_direction = 'vertical'\n }\n }\n return props\n}\nexport type FormElementProps = {\n vertical?: boolean\n labelDirection?: 'vertical' | 'horizontal'\n\n /** @deprecated use labelDirection instead */\n label_direction?: 'vertical' | 'horizontal'\n}\nconst validFormElementProps = {\n skeleton: null,\n disabled: null,\n vertical: null,\n labelDirection: null,\n\n /** @deprecated use labelDirection instead */\n label_direction: null,\n}\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAW5C,OAAO,SAASC,gBAAgBA,CAC9BC,KAAc,EACdC,SAAmC,EACnCC,WAAqC,EAClC;EACH,MAAMC,GAAG,GAAG,CAAC,CAAC;EACd,MAAMC,CAAC,GAAGC,MAAM,CAACC,SAAS,CAACC,cAAc;EAEzC,KAAK,MAAMC,GAAG,IAAIR,KAAK,EAAE;IACvB,IACE,CAAC,CAACC,SAAS,IAAKA,SAAS,IAAIG,CAAC,CAACK,IAAI,CAACR,SAAS,EAAEO,GAAG,CAAE,MACnD,CAACN,WAAW,IAAKA,WAAW,IAAI,CAACE,CAAC,CAACK,IAAI,CAACP,WAAW,EAAEM,GAAG,CAAE,CAAC,EAC5D;MACAL,GAAG,CAACK,GAAG,CAAC,GAAGR,KAAK,CAACQ,GAAG,CAAC;IACvB;EACF;EAEA,OAAOL,GAAG;AACZ;AAUA,OAAO,SAASO,oBAAoBA,CAClCV,KAAuB,EACvBW,YAAsC,EACtC;EACA,OAAOZ,gBAAgB,CAACC,KAAK,EAAEY,qBAAqB,EAAED,YAAY,CAAC;AACrE;AACA,OAAO,SAASE,yBAAyBA,CACvCb,KAA+B,EAC/B;EACA,IAAIF,MAAM,CAACE,KAAK,CAACc,QAAQ,CAAC,EAAE;IAC1B,IAAI,OAAOd,KAAK,CAACe,cAAc,KAAK,WAAW,EAAE;MAC/Cf,KAAK,CAACe,cAAc,GAAG,UAAU;IACnC;IACA,IAAI,OAAOf,KAAK,CAACgB,eAAe,KAAK,WAAW,EAAE;MAChDhB,KAAK,CAACgB,eAAe,GAAG,UAAU;IACpC;EACF;EACA,OAAOhB,KAAK;AACd;AAQA,MAAMY,qBAAqB,GAAG;EAC5BK,QAAQ,EAAE,IAAI;EACdC,QAAQ,EAAE,IAAI;EACdJ,QAAQ,EAAE,IAAI;EACdC,cAAc,EAAE,IAAI;EAGpBC,eAAe,EAAE;AACnB,CAAC"}
@@ -15,6 +15,7 @@ export declare function useSharedState<Data>(id: SharedStateId, initialData?: Da
15
15
  update: (newData: Data) => void;
16
16
  set: (newData: Data) => void;
17
17
  extend: (newData: Data) => void;
18
+ sync: (newData: Data) => void;
18
19
  };
19
20
  type Subscriber = () => void;
20
21
  interface SharedStateInstance<Data> {
@@ -3,14 +3,44 @@
3
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
4
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
- import { useCallback, useEffect, useMemo, useReducer } from 'react';
6
+ import React, { useCallback, useEffect, useMemo, useReducer, useRef } from 'react';
7
+ import useMounted from '../../extensions/forms/hooks/useMounted';
8
+ const useLayoutEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;
7
9
  export function useSharedState(id, initialData = undefined, onChange = null) {
8
10
  var _sharedState$get;
9
11
  const [, forceUpdate] = useReducer(() => ({}), {});
10
- const sharedState = useMemo(() => id && createSharedState(id, initialData), [id, initialData]);
11
- const sharedFunc = useMemo(() => id && createSharedState(id + '-onChange', {
12
- onChange
13
- }), [id, onChange]);
12
+ const hasMounted = useMounted();
13
+ const waitForMountedRef = useRef(false);
14
+ const forceRerender = useCallback(() => {
15
+ if (hasMounted.current) {
16
+ forceUpdate();
17
+ } else {
18
+ waitForMountedRef.current = true;
19
+ }
20
+ }, [hasMounted]);
21
+ useLayoutEffect(() => {
22
+ if (waitForMountedRef.current) {
23
+ forceUpdate();
24
+ }
25
+ }, []);
26
+ const sharedState = useMemo(() => {
27
+ if (id) {
28
+ return createSharedState(id, initialData);
29
+ }
30
+ }, [id, initialData]);
31
+ const sharedAttachment = useMemo(() => {
32
+ if (id) {
33
+ return createSharedState(id + '-oc', {
34
+ onChange
35
+ });
36
+ }
37
+ }, [id, onChange]);
38
+ const sync = useCallback(newData => {
39
+ if (id) {
40
+ var _sharedAttachment$dat, _sharedAttachment$dat2;
41
+ (_sharedAttachment$dat = sharedAttachment.data) === null || _sharedAttachment$dat === void 0 ? void 0 : (_sharedAttachment$dat2 = _sharedAttachment$dat.onChange) === null || _sharedAttachment$dat2 === void 0 ? void 0 : _sharedAttachment$dat2.call(_sharedAttachment$dat, newData);
42
+ }
43
+ }, [id, sharedAttachment]);
14
44
  const update = useCallback(newData => {
15
45
  if (id) {
16
46
  sharedState.update(newData);
@@ -18,42 +48,41 @@ export function useSharedState(id, initialData = undefined, onChange = null) {
18
48
  }, [id, sharedState]);
19
49
  const set = useCallback(newData => {
20
50
  if (id) {
21
- var _sharedFunc$get, _sharedFunc$get$onCha;
22
51
  sharedState.set(newData);
23
- (_sharedFunc$get = sharedFunc.get()) === null || _sharedFunc$get === void 0 ? void 0 : (_sharedFunc$get$onCha = _sharedFunc$get.onChange) === null || _sharedFunc$get$onCha === void 0 ? void 0 : _sharedFunc$get$onCha.call(_sharedFunc$get, newData);
52
+ sync(newData);
24
53
  }
25
- }, [id, sharedState, sharedFunc]);
54
+ }, [id, sharedState, sync]);
26
55
  const extend = useCallback(newData => {
27
56
  if (id) {
28
- var _sharedFunc$get2, _sharedFunc$get2$onCh;
29
57
  sharedState.extend(newData);
30
- (_sharedFunc$get2 = sharedFunc.get()) === null || _sharedFunc$get2 === void 0 ? void 0 : (_sharedFunc$get2$onCh = _sharedFunc$get2.onChange) === null || _sharedFunc$get2$onCh === void 0 ? void 0 : _sharedFunc$get2$onCh.call(_sharedFunc$get2, newData);
58
+ sync(newData);
31
59
  }
32
- }, [id, sharedState, sharedFunc]);
33
- useEffect(() => {
60
+ }, [id, sharedState, sync]);
61
+ useLayoutEffect(() => {
34
62
  if (!id) {
35
63
  return;
36
64
  }
37
- sharedState.subscribe(forceUpdate);
65
+ sharedState.subscribe(forceRerender);
38
66
  return () => {
39
- sharedState.unsubscribe(forceUpdate);
67
+ sharedState.unsubscribe(forceRerender);
40
68
  };
41
- }, [id, sharedState]);
69
+ }, [forceRerender, id, onChange, sharedState]);
42
70
  useEffect(() => {
43
- var _sharedFunc$get3;
44
- if (id && onChange && !((_sharedFunc$get3 = sharedFunc.get()) !== null && _sharedFunc$get3 !== void 0 && _sharedFunc$get3.onChange)) {
45
- sharedFunc.set({
71
+ var _sharedAttachment$dat3;
72
+ if (id && onChange && !((_sharedAttachment$dat3 = sharedAttachment.data) !== null && _sharedAttachment$dat3 !== void 0 && _sharedAttachment$dat3.onChange)) {
73
+ sharedAttachment.set({
46
74
  onChange
47
75
  });
48
76
  }
49
- }, [id, onChange, sharedFunc]);
77
+ }, [id, onChange, sharedAttachment]);
50
78
  return {
51
79
  get: sharedState === null || sharedState === void 0 ? void 0 : sharedState.get,
52
80
  data: sharedState === null || sharedState === void 0 ? void 0 : (_sharedState$get = sharedState.get) === null || _sharedState$get === void 0 ? void 0 : _sharedState$get.call(sharedState),
53
81
  hadInitialData: sharedState === null || sharedState === void 0 ? void 0 : sharedState.hadInitialData,
54
82
  update,
55
83
  set,
56
- extend
84
+ extend,
85
+ sync
57
86
  };
58
87
  }
59
88
  const sharedStates = {};
@@ -1 +1 @@
1
- {"version":3,"file":"useSharedState.js","names":["useCallback","useEffect","useMemo","useReducer","useSharedState","id","initialData","undefined","onChange","_sharedState$get","forceUpdate","sharedState","createSharedState","sharedFunc","update","newData","set","_sharedFunc$get","_sharedFunc$get$onCha","get","call","extend","_sharedFunc$get2","_sharedFunc$get2$onCh","subscribe","unsubscribe","_sharedFunc$get3","data","hadInitialData","sharedStates","subscribers","_objectSpread","forEach","subscriber","push","filter","sub","Boolean"],"sources":["../../../../src/shared/helpers/useSharedState.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from 'react'\n\nexport type SharedStateId = string\n\n/**\n * Custom hook that provides shared state functionality.\n *\n * @template Data - The type of data stored in the shared state.\n * @param {SharedStateId} id - The identifier for the shared state.\n * @param {Data} initialData - The initial data for the shared state.\n * @param {Function} onChange - Optional callback function to be called when the shared state is set from another instance/component.\n * @returns {Object} - An object containing the shared state data, update function, extend function, and set function.\n */\nexport function useSharedState<Data>(\n id: SharedStateId,\n initialData: Data = undefined,\n onChange = null\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n const sharedState = useMemo(\n () => id && createSharedState<Data>(id, initialData),\n [id, initialData]\n )\n const sharedFunc = useMemo(\n () => id && createSharedState(id + '-onChange', { onChange }),\n [id, onChange]\n )\n\n const update = useCallback(\n (newData: Data) => {\n if (id) {\n sharedState.update(newData)\n }\n },\n [id, sharedState]\n )\n\n const set = useCallback(\n (newData: Data) => {\n if (id) {\n sharedState.set(newData)\n sharedFunc.get()?.onChange?.(newData)\n }\n },\n [id, sharedState, sharedFunc]\n )\n\n const extend = useCallback(\n (newData: Data) => {\n if (id) {\n sharedState.extend(newData)\n sharedFunc.get()?.onChange?.(newData)\n }\n },\n [id, sharedState, sharedFunc]\n )\n\n useEffect(() => {\n if (!id) {\n return\n }\n\n sharedState.subscribe(forceUpdate)\n\n return () => {\n sharedState.unsubscribe(forceUpdate)\n }\n }, [id, sharedState])\n\n useEffect(() => {\n // Set the onChange function in case it is not set yet\n if (id && onChange && !sharedFunc.get()?.onChange) {\n sharedFunc.set({ onChange })\n }\n }, [id, onChange, sharedFunc])\n\n return {\n get: sharedState?.get,\n data: sharedState?.get?.() as Data,\n hadInitialData: sharedState?.hadInitialData,\n update,\n set,\n extend,\n }\n}\n\ntype Subscriber = () => void\n\ninterface SharedStateInstance<Data> {\n data: Data\n get: () => Data\n set: (newData: Partial<Data>) => void\n extend: (newData: Partial<Data>) => void\n update: (newData: Partial<Data>) => void\n subscribe: (subscriber: Subscriber) => void\n unsubscribe: (subscriber: Subscriber) => void\n hadInitialData: boolean\n}\n\nconst sharedStates: Record<SharedStateId, SharedStateInstance<any>> = {}\n\n/**\n * Creates a shared state instance with the specified ID and initial data.\n * @template Data The type of data stored in the shared state.\n * @param id The ID of the shared state.\n * @param initialData The initial data for the shared state.\n * @returns The created shared state instance.\n */\nexport function createSharedState<Data>(\n id: SharedStateId,\n initialData?: Data\n): SharedStateInstance<Data> {\n if (!sharedStates[id]) {\n let subscribers: Subscriber[] = []\n\n const get = () => sharedStates[id].data\n\n const extend = (newData: Data) => {\n sharedStates[id].data = { ...sharedStates[id].data, ...newData }\n subscribers.forEach((subscriber) => subscriber())\n }\n\n const set = (newData: Partial<Data>) => {\n sharedStates[id].data = { ...newData }\n }\n\n const update = (newData: Partial<Data>) => {\n set(newData)\n subscribers.forEach((subscriber) => subscriber())\n }\n\n const subscribe = (subscriber: Subscriber) => {\n subscribers.push(subscriber)\n }\n\n const unsubscribe = (subscriber: Subscriber) => {\n subscribers = subscribers.filter((sub) => sub !== subscriber)\n }\n\n sharedStates[id] = {\n data: undefined,\n get,\n set,\n extend,\n update,\n subscribe,\n unsubscribe,\n hadInitialData: Boolean(initialData),\n } as SharedStateInstance<Data>\n\n if (initialData) {\n extend(initialData)\n }\n } else if (\n sharedStates[id].data === undefined &&\n initialData !== undefined\n ) {\n sharedStates[id].data = { ...initialData }\n }\n\n return sharedStates[id]\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useSharedState.js","names":["React","useCallback","useEffect","useMemo","useReducer","useRef","useMounted","useLayoutEffect","window","useSharedState","id","initialData","undefined","onChange","_sharedState$get","forceUpdate","hasMounted","waitForMountedRef","forceRerender","current","sharedState","createSharedState","sharedAttachment","sync","newData","_sharedAttachment$dat","_sharedAttachment$dat2","data","call","update","set","extend","subscribe","unsubscribe","_sharedAttachment$dat3","get","hadInitialData","sharedStates","subscribers","_objectSpread","forEach","subscriber","push","filter","sub","Boolean"],"sources":["../../../../src/shared/helpers/useSharedState.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport useMounted from '../../extensions/forms/hooks/useMounted'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type SharedStateId = string\n\n/**\n * Custom hook that provides shared state functionality.\n *\n * @template Data - The type of data stored in the shared state.\n * @param {SharedStateId} id - The identifier for the shared state.\n * @param {Data} initialData - The initial data for the shared state.\n * @param {Function} onChange - Optional callback function to be called when the shared state is set from another instance/component.\n * @returns {Object} - An object containing the shared state data, update function, extend function, and set function.\n */\nexport function useSharedState<Data>(\n id: SharedStateId,\n initialData: Data = undefined,\n onChange = null\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n const hasMounted = useMounted()\n const waitForMountedRef = useRef(false)\n\n const forceRerender = useCallback(() => {\n if (hasMounted.current) {\n forceUpdate()\n } else {\n waitForMountedRef.current = true\n }\n }, [hasMounted])\n\n useLayoutEffect(() => {\n if (waitForMountedRef.current) {\n forceUpdate()\n }\n }, [])\n\n const sharedState = useMemo(() => {\n if (id) {\n return createSharedState<Data>(id, initialData)\n }\n }, [id, initialData])\n const sharedAttachment = useMemo(() => {\n if (id) {\n return createSharedState(id + '-oc', { onChange })\n }\n }, [id, onChange])\n\n const sync = useCallback(\n (newData: Data) => {\n if (id) {\n sharedAttachment.data?.onChange?.(newData)\n }\n },\n [id, sharedAttachment]\n )\n\n const update = useCallback(\n (newData: Data) => {\n if (id) {\n sharedState.update(newData)\n }\n },\n [id, sharedState]\n )\n\n const set = useCallback(\n (newData: Data) => {\n if (id) {\n sharedState.set(newData)\n sync(newData)\n }\n },\n [id, sharedState, sync]\n )\n\n const extend = useCallback(\n (newData: Data) => {\n if (id) {\n sharedState.extend(newData)\n sync(newData)\n }\n },\n [id, sharedState, sync]\n )\n\n useLayoutEffect(() => {\n if (!id) {\n return\n }\n\n sharedState.subscribe(forceRerender)\n\n return () => {\n sharedState.unsubscribe(forceRerender)\n }\n }, [forceRerender, id, onChange, sharedState])\n\n useEffect(() => {\n // Set the onChange function in case it is not set yet\n if (id && onChange && !sharedAttachment.data?.onChange) {\n sharedAttachment.set({ onChange })\n }\n }, [id, onChange, sharedAttachment])\n\n return {\n get: sharedState?.get,\n data: sharedState?.get?.() as Data,\n hadInitialData: sharedState?.hadInitialData,\n update,\n set,\n extend,\n sync,\n }\n}\n\ntype Subscriber = () => void\n\ninterface SharedStateInstance<Data> {\n data: Data\n get: () => Data\n set: (newData: Partial<Data>) => void\n extend: (newData: Partial<Data>) => void\n update: (newData: Partial<Data>) => void\n subscribe: (subscriber: Subscriber) => void\n unsubscribe: (subscriber: Subscriber) => void\n hadInitialData: boolean\n}\n\nconst sharedStates: Record<SharedStateId, SharedStateInstance<any>> = {}\n\n/**\n * Creates a shared state instance with the specified ID and initial data.\n * @template Data The type of data stored in the shared state.\n * @param id The ID of the shared state.\n * @param initialData The initial data for the shared state.\n * @returns The created shared state instance.\n */\nexport function createSharedState<Data>(\n id: SharedStateId,\n initialData?: Data\n): SharedStateInstance<Data> {\n if (!sharedStates[id]) {\n let subscribers: Subscriber[] = []\n\n const get = () => sharedStates[id].data\n\n const extend = (newData: Data) => {\n sharedStates[id].data = { ...sharedStates[id].data, ...newData }\n subscribers.forEach((subscriber) => subscriber())\n }\n\n const set = (newData: Partial<Data>) => {\n sharedStates[id].data = { ...newData }\n }\n\n const update = (newData: Partial<Data>) => {\n set(newData)\n subscribers.forEach((subscriber) => subscriber())\n }\n\n const subscribe = (subscriber: Subscriber) => {\n subscribers.push(subscriber)\n }\n\n const unsubscribe = (subscriber: Subscriber) => {\n subscribers = subscribers.filter((sub) => sub !== subscriber)\n }\n\n sharedStates[id] = {\n data: undefined,\n get,\n set,\n extend,\n update,\n subscribe,\n unsubscribe,\n hadInitialData: Boolean(initialData),\n } as SharedStateInstance<Data>\n\n if (initialData) {\n extend(initialData)\n }\n } else if (\n sharedStates[id].data === undefined &&\n initialData !== undefined\n ) {\n sharedStates[id].data = { ...initialData }\n }\n\n return sharedStates[id]\n}\n"],"mappings":"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"}
@@ -19,6 +19,13 @@ export declare function withCamelCaseProps<TBase, P>(Base: React.FunctionCompone
19
19
  * @returns extended function or class
20
20
  */
21
21
  export declare function classWithCamelCaseProps<TBase extends React.ComponentClass>(Base: TBase): typeof Base;
22
+ /**
23
+ * Converts camel case props to snake case props.
24
+ *
25
+ * @template P - The type of the props object.
26
+ * @param {P} props - The props object to convert.
27
+ * @returns {P} - The converted props object.
28
+ */
22
29
  export declare function convertCamelCaseProps<P>(props: P): P;
23
30
  /**
24
31
  * Convert recursively Types from snake_case to camelCase
@@ -29,7 +36,8 @@ export declare function convertCamelCaseProps<P>(props: P): P;
29
36
  * Disclaimer: Be careful using these with required props
30
37
  * - ToCamelCase makes the required snake_case props also required in camelCase
31
38
  * - ToCamelCasePartial removes required for the camelCase props
32
- *
39
+ * - ToCamelCaseFlat is like ToCamelCase, but it will not convert nested objects for performance boost
40
+ * - ToCamelCasePartialFlat is like ToCamelCasePartial, but it will not convert nested objects for performance boost
33
41
  */
34
42
  export type ToCamelCasePartial<T> = Partial<ToCamelCase<T>>;
35
43
  export type ToCamelCase<T> = T extends object ? {
@@ -37,4 +45,9 @@ export type ToCamelCase<T> = T extends object ? {
37
45
  } : T;
38
46
  export type IncludeCamelCase<T> = Partial<T> & ToCamelCasePartial<T>;
39
47
  type ConvertSnakeToCamelCase<S extends string> = S extends `${infer T}_${infer U}` ? `${T}${Capitalize<ConvertSnakeToCamelCase<U>>}` : S;
48
+ type ConvertObjectKeysToCamelCase<T> = {
49
+ [K in keyof T as ConvertSnakeToCamelCase<K & string>]: T[K];
50
+ };
51
+ export type ToCamelCaseFlat<T> = T extends object ? ConvertObjectKeysToCamelCase<T> : T;
52
+ export type ToCamelCasePartialFlat<T> = Partial<ToCamelCaseFlat<T>>;
40
53
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"withCamelCaseProps.js","names":["React","toSnakeCase","withCamelCaseProps","Base","Component","Derived","props","createElement","convertCamelCaseProps","Object","defineProperty","value","name","classWithCamelCaseProps","constructor","args","_defineProperty","componentDidMount","render","_prevProps","_elem","displayName","isFrozen","newProps","_objectSpread","key","test","freeze"],"sources":["../../../../src/shared/helpers/withCamelCaseProps.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport React from 'react'\nimport { toSnakeCase } from '../component-helper'\n\n/**\n * withCamelCaseProps is a HOC for function components\n * it will return a React Component where all snake_case props gets converted to camelCase\n *\n * Use the same for TypeScript types by using: ToCamelCase\n *\n * @param Base the original function or class\n * @returns extended function or class\n */\nexport function withCamelCaseProps<TBase, P>(\n Base: React.FunctionComponent<P> & TBase\n): typeof Base {\n const Component: React.ComponentType = Base\n\n const Derived = (props: P) => {\n return <Component {...convertCamelCaseProps(props)} />\n }\n\n Object.defineProperty(Derived, 'name', {\n value: Base.name,\n })\n\n for (const name in Base) {\n Object.defineProperty(Derived, name, {\n value: Base[name],\n })\n }\n\n // @ts-ignore\n return Derived\n}\n\n/**\n * withCamelCaseProps is a HOC for classes\n * it will return a React Component where all snake_case props gets converted to camelCase\n *\n * Use the same for TypeScript types by using: ToCamelCase\n *\n * @param Base the original function or class\n * @returns extended function or class\n */\nexport function classWithCamelCaseProps<\n TBase extends React.ComponentClass,\n>(Base: TBase): typeof Base {\n const Component: React.ComponentClass = Base\n\n // Bug? https://github.com/microsoft/TypeScript/issues/37142\n // @ts-ignore\n class Derived extends Base {\n _prevProps: Record<string, unknown>\n _elem: React.ReactElement\n\n componentDidMount() {\n // ensures we do not run componentDidMount twice\n }\n\n render() {\n if (this.props !== this._prevProps) {\n this._prevProps = this.props\n this._elem = (\n // @ts-ignore\n <Component {...convertCamelCaseProps(this.props)} />\n )\n }\n\n return this._elem\n }\n }\n\n Object.defineProperty(Derived, 'name', {\n value: Base.name,\n })\n\n Object.defineProperty(Derived, 'displayName', {\n value: Base.displayName || Base.name,\n })\n\n return Derived\n}\n\nexport function convertCamelCaseProps<P>(props: P) {\n const isFrozen = Object.isFrozen(props)\n const newProps = isFrozen ? { ...props } : props\n\n for (const key in props) {\n switch (key) {\n case 'className': {\n continue\n }\n }\n\n if (/^[a-z]+[A-Z]/.test(key)) {\n newProps[toSnakeCase(key)] = props[key]\n delete newProps[key]\n }\n }\n\n return isFrozen ? Object.freeze(newProps) : newProps\n}\n\n/**\n * Convert recursively Types from snake_case to camelCase\n *\n * Use it like so:\n * OriginalProps & ToCamelCase<OriginalProps>\n *\n * Disclaimer: Be careful using these with required props\n * - ToCamelCase makes the required snake_case props also required in camelCase\n * - ToCamelCasePartial removes required for the camelCase props\n *\n */\nexport type ToCamelCasePartial<T> = Partial<ToCamelCase<T>>\nexport type ToCamelCase<T> = T extends object\n ? {\n [K in keyof T as ConvertSnakeToCamelCase<K & string>]:\n | T[K]\n | ToCamelCase<T[K]>\n }\n : T\nexport type IncludeCamelCase<T> = Partial<T> & ToCamelCasePartial<T>\ntype ConvertSnakeToCamelCase<S extends string> =\n S extends `${infer T}_${infer U}`\n ? `${T}${Capitalize<ConvertSnakeToCamelCase<U>>}`\n : S\n"],"mappings":";;;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,qBAAqB;AAWjD,OAAO,SAASC,kBAAkBA,CAChCC,IAAwC,EAC3B;EACb,MAAMC,SAA8B,GAAGD,IAAI;EAE3C,MAAME,OAAO,GAAIC,KAAQ,IAAK;IAC5B,OAAON,KAAA,CAAAO,aAAA,CAACH,SAAS,EAAKI,qBAAqB,CAACF,KAAK,CAAI,CAAC;EACxD,CAAC;EAEDG,MAAM,CAACC,cAAc,CAACL,OAAO,EAAE,MAAM,EAAE;IACrCM,KAAK,EAAER,IAAI,CAACS;EACd,CAAC,CAAC;EAEF,KAAK,MAAMA,IAAI,IAAIT,IAAI,EAAE;IACvBM,MAAM,CAACC,cAAc,CAACL,OAAO,EAAEO,IAAI,EAAE;MACnCD,KAAK,EAAER,IAAI,CAACS,IAAI;IAClB,CAAC,CAAC;EACJ;EAGA,OAAOP,OAAO;AAChB;AAWA,OAAO,SAASQ,uBAAuBA,CAErCV,IAAW,EAAe;EAC1B,MAAMC,SAA+B,GAAGD,IAAI;EAI5C,MAAME,OAAO,SAASF,IAAI,CAAC;IAAAW,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAC,eAAA;MAAAA,eAAA;IAAA;IAIzBC,iBAAiBA,CAAA,EAAG,CAEpB;IAEAC,MAAMA,CAAA,EAAG;MACP,IAAI,IAAI,CAACZ,KAAK,KAAK,IAAI,CAACa,UAAU,EAAE;QAClC,IAAI,CAACA,UAAU,GAAG,IAAI,CAACb,KAAK;QAC5B,IAAI,CAACc,KAAK,GAERpB,KAAA,CAAAO,aAAA,CAACH,SAAS,EAAKI,qBAAqB,CAAC,IAAI,CAACF,KAAK,CAAI,CACpD;MACH;MAEA,OAAO,IAAI,CAACc,KAAK;IACnB;EACF;EAEAX,MAAM,CAACC,cAAc,CAACL,OAAO,EAAE,MAAM,EAAE;IACrCM,KAAK,EAAER,IAAI,CAACS;EACd,CAAC,CAAC;EAEFH,MAAM,CAACC,cAAc,CAACL,OAAO,EAAE,aAAa,EAAE;IAC5CM,KAAK,EAAER,IAAI,CAACkB,WAAW,IAAIlB,IAAI,CAACS;EAClC,CAAC,CAAC;EAEF,OAAOP,OAAO;AAChB;AAEA,OAAO,SAASG,qBAAqBA,CAAIF,KAAQ,EAAE;EACjD,MAAMgB,QAAQ,GAAGb,MAAM,CAACa,QAAQ,CAAChB,KAAK,CAAC;EACvC,MAAMiB,QAAQ,GAAGD,QAAQ,GAAAE,aAAA,KAAQlB,KAAK,IAAKA,KAAK;EAEhD,KAAK,MAAMmB,GAAG,IAAInB,KAAK,EAAE;IACvB,QAAQmB,GAAG;MACT,KAAK,WAAW;QAAE;UAChB;QACF;IACF;IAEA,IAAI,cAAc,CAACC,IAAI,CAACD,GAAG,CAAC,EAAE;MAC5BF,QAAQ,CAACtB,WAAW,CAACwB,GAAG,CAAC,CAAC,GAAGnB,KAAK,CAACmB,GAAG,CAAC;MACvC,OAAOF,QAAQ,CAACE,GAAG,CAAC;IACtB;EACF;EAEA,OAAOH,QAAQ,GAAGb,MAAM,CAACkB,MAAM,CAACJ,QAAQ,CAAC,GAAGA,QAAQ;AACtD"}
1
+ {"version":3,"file":"withCamelCaseProps.js","names":["React","toSnakeCase","withCamelCaseProps","Base","Component","Derived","props","createElement","convertCamelCaseProps","Object","defineProperty","value","name","classWithCamelCaseProps","constructor","args","_defineProperty","componentDidMount","render","_prevProps","_elem","displayName","isFrozen","newProps","_objectSpread","key","test","freeze"],"sources":["../../../../src/shared/helpers/withCamelCaseProps.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport React from 'react'\nimport { toSnakeCase } from '../component-helper'\n\n/**\n * withCamelCaseProps is a HOC for function components\n * it will return a React Component where all snake_case props gets converted to camelCase\n *\n * Use the same for TypeScript types by using: ToCamelCase\n *\n * @param Base the original function or class\n * @returns extended function or class\n */\nexport function withCamelCaseProps<TBase, P>(\n Base: React.FunctionComponent<P> & TBase\n): typeof Base {\n const Component: React.ComponentType = Base\n\n const Derived = (props: P) => {\n return <Component {...convertCamelCaseProps(props)} />\n }\n\n Object.defineProperty(Derived, 'name', {\n value: Base.name,\n })\n\n for (const name in Base) {\n Object.defineProperty(Derived, name, {\n value: Base[name],\n })\n }\n\n // @ts-ignore\n return Derived\n}\n\n/**\n * withCamelCaseProps is a HOC for classes\n * it will return a React Component where all snake_case props gets converted to camelCase\n *\n * Use the same for TypeScript types by using: ToCamelCase\n *\n * @param Base the original function or class\n * @returns extended function or class\n */\nexport function classWithCamelCaseProps<\n TBase extends React.ComponentClass,\n>(Base: TBase): typeof Base {\n const Component: React.ComponentClass = Base\n\n // Bug? https://github.com/microsoft/TypeScript/issues/37142\n // @ts-ignore\n class Derived extends Base {\n _prevProps: Record<string, unknown>\n _elem: React.ReactElement\n\n componentDidMount() {\n // ensures we do not run componentDidMount twice\n }\n\n render() {\n if (this.props !== this._prevProps) {\n this._prevProps = this.props\n this._elem = (\n // @ts-ignore\n <Component {...convertCamelCaseProps(this.props)} />\n )\n }\n\n return this._elem\n }\n }\n\n Object.defineProperty(Derived, 'name', {\n value: Base.name,\n })\n\n Object.defineProperty(Derived, 'displayName', {\n value: Base.displayName || Base.name,\n })\n\n return Derived\n}\n\n/**\n * Converts camel case props to snake case props.\n *\n * @template P - The type of the props object.\n * @param {P} props - The props object to convert.\n * @returns {P} - The converted props object.\n */\nexport function convertCamelCaseProps<P>(props: P) {\n const isFrozen = Object.isFrozen(props)\n const newProps = isFrozen ? { ...props } : props\n\n for (const key in props) {\n switch (key) {\n case 'className': {\n continue\n }\n }\n\n if (/^[a-z]+[A-Z]/.test(key)) {\n newProps[toSnakeCase(key)] = props[key]\n delete newProps[key]\n }\n }\n\n return isFrozen ? Object.freeze(newProps) : newProps\n}\n\n/**\n * Convert recursively Types from snake_case to camelCase\n *\n * Use it like so:\n * OriginalProps & ToCamelCase<OriginalProps>\n *\n * Disclaimer: Be careful using these with required props\n * - ToCamelCase makes the required snake_case props also required in camelCase\n * - ToCamelCasePartial removes required for the camelCase props\n * - ToCamelCaseFlat is like ToCamelCase, but it will not convert nested objects for performance boost\n * - ToCamelCasePartialFlat is like ToCamelCasePartial, but it will not convert nested objects for performance boost\n */\nexport type ToCamelCasePartial<T> = Partial<ToCamelCase<T>>\nexport type ToCamelCase<T> = T extends object\n ? {\n [K in keyof T as ConvertSnakeToCamelCase<K & string>]:\n | T[K]\n | ToCamelCase<T[K]>\n }\n : T\nexport type IncludeCamelCase<T> = Partial<T> & ToCamelCasePartial<T>\ntype ConvertSnakeToCamelCase<S extends string> =\n S extends `${infer T}_${infer U}`\n ? `${T}${Capitalize<ConvertSnakeToCamelCase<U>>}`\n : S\n\ntype ConvertObjectKeysToCamelCase<T> = {\n [K in keyof T as ConvertSnakeToCamelCase<K & string>]: T[K]\n}\nexport type ToCamelCaseFlat<T> = T extends object\n ? ConvertObjectKeysToCamelCase<T>\n : T\nexport type ToCamelCasePartialFlat<T> = Partial<ToCamelCaseFlat<T>>\n"],"mappings":";;;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,qBAAqB;AAWjD,OAAO,SAASC,kBAAkBA,CAChCC,IAAwC,EAC3B;EACb,MAAMC,SAA8B,GAAGD,IAAI;EAE3C,MAAME,OAAO,GAAIC,KAAQ,IAAK;IAC5B,OAAON,KAAA,CAAAO,aAAA,CAACH,SAAS,EAAKI,qBAAqB,CAACF,KAAK,CAAI,CAAC;EACxD,CAAC;EAEDG,MAAM,CAACC,cAAc,CAACL,OAAO,EAAE,MAAM,EAAE;IACrCM,KAAK,EAAER,IAAI,CAACS;EACd,CAAC,CAAC;EAEF,KAAK,MAAMA,IAAI,IAAIT,IAAI,EAAE;IACvBM,MAAM,CAACC,cAAc,CAACL,OAAO,EAAEO,IAAI,EAAE;MACnCD,KAAK,EAAER,IAAI,CAACS,IAAI;IAClB,CAAC,CAAC;EACJ;EAGA,OAAOP,OAAO;AAChB;AAWA,OAAO,SAASQ,uBAAuBA,CAErCV,IAAW,EAAe;EAC1B,MAAMC,SAA+B,GAAGD,IAAI;EAI5C,MAAME,OAAO,SAASF,IAAI,CAAC;IAAAW,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAC,eAAA;MAAAA,eAAA;IAAA;IAIzBC,iBAAiBA,CAAA,EAAG,CAEpB;IAEAC,MAAMA,CAAA,EAAG;MACP,IAAI,IAAI,CAACZ,KAAK,KAAK,IAAI,CAACa,UAAU,EAAE;QAClC,IAAI,CAACA,UAAU,GAAG,IAAI,CAACb,KAAK;QAC5B,IAAI,CAACc,KAAK,GAERpB,KAAA,CAAAO,aAAA,CAACH,SAAS,EAAKI,qBAAqB,CAAC,IAAI,CAACF,KAAK,CAAI,CACpD;MACH;MAEA,OAAO,IAAI,CAACc,KAAK;IACnB;EACF;EAEAX,MAAM,CAACC,cAAc,CAACL,OAAO,EAAE,MAAM,EAAE;IACrCM,KAAK,EAAER,IAAI,CAACS;EACd,CAAC,CAAC;EAEFH,MAAM,CAACC,cAAc,CAACL,OAAO,EAAE,aAAa,EAAE;IAC5CM,KAAK,EAAER,IAAI,CAACkB,WAAW,IAAIlB,IAAI,CAACS;EAClC,CAAC,CAAC;EAEF,OAAOP,OAAO;AAChB;AASA,OAAO,SAASG,qBAAqBA,CAAIF,KAAQ,EAAE;EACjD,MAAMgB,QAAQ,GAAGb,MAAM,CAACa,QAAQ,CAAChB,KAAK,CAAC;EACvC,MAAMiB,QAAQ,GAAGD,QAAQ,GAAAE,aAAA,KAAQlB,KAAK,IAAKA,KAAK;EAEhD,KAAK,MAAMmB,GAAG,IAAInB,KAAK,EAAE;IACvB,QAAQmB,GAAG;MACT,KAAK,WAAW;QAAE;UAChB;QACF;IACF;IAEA,IAAI,cAAc,CAACC,IAAI,CAACD,GAAG,CAAC,EAAE;MAC5BF,QAAQ,CAACtB,WAAW,CAACwB,GAAG,CAAC,CAAC,GAAGnB,KAAK,CAACmB,GAAG,CAAC;MACvC,OAAOF,QAAQ,CAACE,GAAG,CAAC;IACtB;EACF;EAEA,OAAOH,QAAQ,GAAGb,MAAM,CAACkB,MAAM,CAACJ,QAAQ,CAAC,GAAGA,QAAQ;AACtD"}
@@ -7,36 +7,11 @@ export function scrollToLocationHashId({ offset, delay, onCompletion, }?: {
7
7
  delay?: any;
8
8
  onCompletion?: any;
9
9
  }): HTMLElement;
10
- /**
11
- * More or less classical debounce function
12
- *
13
- * Calling this function will return a new function, that, as long as it continues to be invoked, will not
14
- * be triggered. The function will be called after it stops being called for
15
- * N milliseconds. If `immediate` is passed, trigger the function on the
16
- * leading edge, instead of the trailing.
17
- *
18
- * @param {function} func The function to execute
19
- * @param {number} wait The time (milliseconds) before the first given function executes, if the returned one, not got called
20
- * @param {object} options The options object
21
- * @property {boolean} immediate If true, the function will execute immediately. Defaults to false
22
- * @property {instance} instance Defines the instance "this" to use on the executed function
23
- * @returns The function to invalidate the execution
24
- */
25
- export function debounce(func: Function, wait?: number, { immediate, instance }?: object): {
26
- (...args: any[]): any;
27
- cancel: () => void;
28
- };
29
10
  export function insertElementBeforeSelection(elem: any): void;
30
11
  export function getSelectedText(): string;
31
12
  export function hasSelectedText(): boolean;
32
13
  export function getSelectedElement(): Node;
33
14
  export function copyToClipboard(string: any): Promise<any>;
34
- /**
35
- * Global helpers
36
- *
37
- * NB: Do not import other deps in this file.
38
- * Just to have things clean and one directional.
39
- */
40
15
  export const PLATFORM_MAC: "Mac|iPad|iPhone|iPod";
41
16
  export const PLATFORM_WIN: "Win";
42
17
  export const PLATFORM_ANDROID: "Android";
@@ -57,3 +32,4 @@ export function isiOS(): boolean;
57
32
  export function isSafari(): boolean;
58
33
  export function isEdge(): boolean;
59
34
  export function warn(...params: any[]): void;
35
+ export { debounce, debounceAsync } from "./helpers/debounce";
@@ -1,3 +1,4 @@
1
+ export { debounce, debounceAsync } from './helpers/debounce';
1
2
  export const PLATFORM_MAC = 'Mac|iPad|iPhone|iPod';
2
3
  export const PLATFORM_WIN = 'Win';
3
4
  export const PLATFORM_ANDROID = 'Android';
@@ -181,35 +182,6 @@ export function scrollToLocationHashId({
181
182
  }
182
183
  }
183
184
  }
184
- export function debounce(func, wait = 250, {
185
- immediate = false,
186
- instance = null
187
- } = {}) {
188
- let timeout;
189
- let recall;
190
- const cancel = () => clearTimeout(timeout);
191
- function executedFunction(...args) {
192
- let inst = this;
193
- if (typeof recall === 'function') {
194
- recall();
195
- }
196
- const later = () => {
197
- timeout = null;
198
- if (!immediate) {
199
- recall = func.apply(instance || inst, args);
200
- }
201
- };
202
- const callNow = immediate && !timeout;
203
- clearTimeout(timeout);
204
- timeout = setTimeout(later, wait);
205
- if (callNow) {
206
- recall = func.apply(instance || inst, args);
207
- }
208
- return recall;
209
- }
210
- executedFunction.cancel = cancel;
211
- return executedFunction;
212
- }
213
185
  export function insertElementBeforeSelection(elem) {
214
186
  try {
215
187
  const selection = window.getSelection();
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["PLATFORM_MAC","PLATFORM_WIN","PLATFORM_ANDROID","PLATFORM_LINUX","PLATFORM_IOS","IS_EDGE","IS_IOS","IS_SAFARI","IS_WIN","IS_MAC","IS_ANDROID","IS_LINUX","isMac","_navigator","navigator","RegExp","test","platform","isWin","_navigator2","isAndroid","_navigator3","userAgent","isLinux","_navigator4","isiOS","_navigator5","isSafari","_navigator6","_navigator7","isEdge","_navigator8","pageFocusElements","setPageFocusElement","selectorOrElement","key","applyPageFocus","selector","callback","element","document","querySelector","HTMLElement","role","getAttribute","list","isInteractive","includes","String","nodeName","toLowerCase","hasTabIndex","hasAttribute","hasNoFocus","classList","contains","setAttribute","add","focus","onBlur","removeAttribute","remove","addEventListener","once","e","warn","getOffsetTop","elem","offsetTop","isNaN","offsetParent","getOffsetLeft","offsetLeft","scrollToLocationHashId","offset","delay","onCompletion","window","location","_timeout","id","hash","replace","length","handleScroll","runScroll","totalOffset","top","IntersectionObserver","intersectionObserver","entries","entry","isIntersecting","unobserve","observe","scrollTo","behavior","scrollTop","clearTimeout","setTimeout","getElementById","readyState","debounce","func","wait","immediate","instance","timeout","recall","cancel","executedFunction","args","inst","later","apply","callNow","insertElementBeforeSelection","selection","getSelection","range","getRangeAt","cloneRange","insertNode","addRange","getSelectedText","toString","hasSelectedText","getSelectedElement","rangeCount","startContainer","parentNode","copyToClipboard","string","_navigator9","resetSelection","removeAllRanges","copyFallback","createElement","value","contentEditable","readOnly","style","position","body","appendChild","success","execCommand","removeChild","clipboard","writeText","newTry","params","process","env","NODE_ENV","console","log","isBrowser","styles","join"],"sources":["../../../src/shared/helpers.js"],"sourcesContent":["/**\n * Global helpers\n *\n * NB: Do not import other deps in this file.\n * Just to have things clean and one directional.\n */\n\nexport const PLATFORM_MAC = 'Mac|iPad|iPhone|iPod'\nexport const PLATFORM_WIN = 'Win'\nexport const PLATFORM_ANDROID = 'Android'\nexport const PLATFORM_LINUX = 'Linux'\nexport const PLATFORM_IOS = 'iOS|iPhone|iPad|iPod'\n\nexport let IS_EDGE = false\nexport let IS_IOS = false\nexport let IS_SAFARI = false\nexport let IS_WIN = false\nexport let IS_MAC = false\nexport let IS_ANDROID = false\nexport let IS_LINUX = false\n\nexport const isMac = () =>\n (IS_MAC =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_MAC, 'i').test(navigator?.platform))\n\nexport const isWin = () =>\n (IS_WIN =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_WIN, 'i').test(navigator?.platform))\n\nexport const isAndroid = () =>\n (IS_ANDROID =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_ANDROID, 'i').test(navigator?.userAgent))\n\nexport const isLinux = () =>\n (IS_LINUX =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_LINUX, 'i').test(navigator?.platform))\n\nexport const isiOS = () =>\n (IS_IOS =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_IOS, 'i').test(navigator?.platform))\n\nexport const isSafari = () =>\n (IS_SAFARI =\n typeof navigator !== 'undefined' &&\n /safari/i.test(navigator?.userAgent) &&\n !/chrome/i.test(navigator?.userAgent))\n\nexport const isEdge = () =>\n (IS_EDGE =\n typeof navigator !== 'undefined' && /edge/i.test(navigator?.userAgent))\n\nisEdge()\nisiOS()\nisSafari()\nisWin()\nisAndroid()\nisMac()\nisLinux()\n\nconst pageFocusElements = {}\nexport function setPageFocusElement(selectorOrElement, key = 'default') {\n return (pageFocusElements[key] = selectorOrElement)\n}\n\nexport function applyPageFocus(selector = 'default', callback = null) {\n try {\n let element = /^[.#]/.test(selector)\n ? selector\n : pageFocusElements[selector]\n if (typeof element === 'string' && typeof document !== 'undefined') {\n element = document.querySelector(element)\n } else if (!element && typeof document !== 'undefined') {\n element = document.querySelector('.dnb-no-focus')\n }\n\n if (!(element instanceof HTMLElement)) {\n return // stop here\n }\n\n const role = element.getAttribute('role')\n const list = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'label',\n 'menu',\n ]\n const isInteractive =\n list.includes(String(element.nodeName).toLowerCase()) ||\n list.includes(String(role).toLowerCase())\n const hasTabIndex = element.hasAttribute('tabindex')\n const hasNoFocus = element.classList.contains('dnb-no-focus')\n\n if (!isInteractive) {\n if (!hasTabIndex) {\n element.setAttribute('tabindex', '-1')\n }\n if (!hasNoFocus) {\n element.classList.add('dnb-no-focus')\n }\n }\n\n element.focus()\n\n const onBlur = () => {\n if (!isInteractive) {\n if (!hasTabIndex) {\n element.removeAttribute('tabindex')\n }\n if (!hasNoFocus) {\n element.classList.remove('dnb-no-focus')\n }\n }\n }\n element.addEventListener('blur', onBlur, { once: true })\n\n if (typeof callback === 'function') {\n callback(element)\n }\n } catch (e) {\n warn('Error on applyPageFocus:', e)\n }\n}\n\nexport function getOffsetTop(elem) {\n let offsetTop = 0\n if (elem) {\n do {\n if (!isNaN(elem.offsetTop)) {\n offsetTop += elem.offsetTop\n }\n } while ((elem = elem.offsetParent))\n }\n return offsetTop\n}\n\nexport function getOffsetLeft(elem) {\n let offsetLeft = 0\n if (elem) {\n do {\n if (!isNaN(elem.offsetLeft)) {\n offsetLeft += elem.offsetLeft\n }\n } while ((elem = elem.offsetParent))\n }\n return offsetLeft\n}\n\nexport function scrollToLocationHashId({\n offset = 0,\n delay = null,\n onCompletion = null,\n} = {}) {\n if (\n typeof document !== 'undefined' &&\n typeof window !== 'undefined' &&\n window.location\n ) {\n try {\n let _timeout\n const id = String(window.location.hash).replace('#', '')\n if (id.length > 0) {\n const handleScroll = () => {\n const runScroll = () => {\n const totalOffset = getOffsetTop(elem)\n\n if (totalOffset <= 0) {\n return // stop here\n }\n\n const top = totalOffset - offset\n\n try {\n if (typeof IntersectionObserver !== 'undefined') {\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n const [entry] = entries\n if (entry.isIntersecting) {\n intersectionObserver.unobserve(elem)\n if (typeof onCompletion === 'function') {\n onCompletion(elem)\n }\n }\n }\n )\n // start observing\n intersectionObserver.observe(elem)\n }\n\n if (window.scrollTo) {\n window.scrollTo({\n top,\n behavior: 'smooth',\n })\n } else {\n window.scrollTop = top\n }\n } catch (e) {\n warn('Error on scrollToLocationHashId:', e)\n }\n }\n\n if (delay > 0) {\n clearTimeout(_timeout)\n _timeout = setTimeout(runScroll, delay) // to make sure we run our scrollTo after the native anchor\n } else {\n runScroll()\n }\n }\n\n const elem = document.getElementById(id)\n if (elem instanceof HTMLElement) {\n window.addEventListener('beforeunload', () =>\n clearTimeout(_timeout)\n )\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', handleScroll)\n } else {\n handleScroll()\n }\n }\n\n return elem\n }\n } catch (e) {\n warn('Error on scrollToLocationHashId:', e)\n }\n }\n}\n\n/**\n * More or less classical debounce function\n *\n * Calling this function will return a new function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n *\n * @param {function} func The function to execute\n * @param {number} wait The time (milliseconds) before the first given function executes, if the returned one, not got called\n * @param {object} options The options object\n * @property {boolean} immediate If true, the function will execute immediately. Defaults to false\n * @property {instance} instance Defines the instance \"this\" to use on the executed function\n * @returns The function to invalidate the execution\n */\nexport function debounce(\n func,\n wait = 250,\n { immediate = false, instance = null } = {}\n) {\n let timeout\n let recall\n\n const cancel = () => clearTimeout(timeout)\n\n // This is the function that is actually executed when\n // the DOM event is triggered.\n function executedFunction(...args) {\n // Store the instance of this and any\n // parameters passed to executedFunction\n let inst = this\n\n // console.log('instance', instance)\n\n if (typeof recall === 'function') {\n recall()\n }\n\n // The function to be called after\n // the debounce time has elapsed\n const later = () => {\n // null timeout to indicate the debounce ended\n timeout = null\n\n // Call function now if you did not on the leading end\n if (!immediate) {\n recall = func.apply(instance || inst, args)\n }\n }\n\n // Determine if you should call the function\n // on the leading or trail end\n const callNow = immediate && !timeout\n\n // This will reset the waiting every function execution.\n // This is the step that prevents the function from\n // being executed because it will never reach the\n // inside of the previous setTimeout\n clearTimeout(timeout)\n\n // Restart the debounce waiting period.\n // setTimeout returns a truthy value (it differs in web vs node)\n timeout = setTimeout(later, wait)\n\n // Call immediately if you're dong a leading\n // end execution\n if (callNow) {\n recall = func.apply(instance || inst, args)\n }\n\n return recall\n }\n\n executedFunction.cancel = cancel\n\n return executedFunction\n}\n\nexport function insertElementBeforeSelection(elem) {\n try {\n const selection = window.getSelection()\n const range = selection.getRangeAt(0)\n range.cloneRange().insertNode(elem)\n selection.addRange(range) // Restore the original selection - this is a Safari fix!\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // const range = document.selection.createRange()\n // range.collapse(true)\n // range.pasteHTML(elem.outerHTML)\n } catch (e) {\n //\n }\n}\n\nexport function getSelectedText() {\n try {\n return window.getSelection().toString()\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // return document.selection.createRange().text\n } catch (e) {\n //\n }\n return ''\n}\n\nexport function hasSelectedText() {\n return getSelectedText().length > 0\n}\n\nexport function getSelectedElement() {\n try {\n const selection = window.getSelection()\n if (selection.rangeCount > 0) {\n let elem = selection.getRangeAt(0).startContainer\n if (elem && typeof elem === 'object') {\n elem = elem.parentNode\n }\n return elem\n }\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // return document.selection.createRange().parentElement()\n } catch (e) {\n //\n }\n\n return null\n}\n\nexport async function copyToClipboard(string) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return false\n }\n\n // get the selection range\n const selection = window.getSelection()\n const range =\n selection.rangeCount > 0 // Check if there is any content selected previously\n ? selection.getRangeAt(0) // Store selection if found\n : false // Mark as false to know no selection existed before\n\n const resetSelection = () => {\n try {\n // If a selection existed before copying\n selection.removeAllRanges() // Unselect everything on the HTML document\n selection.addRange(range) // Restore the original selection\n } catch (e) {\n //\n }\n }\n\n const copyFallback = () => {\n try {\n // create the focusable element\n const elem = document.createElement('textarea')\n elem.value = String(string)\n elem.contentEditable = true\n elem.readOnly = false\n elem.style.position = 'fixed'\n elem.style.top = '-1000px'\n document.body.appendChild(elem)\n\n // iOS helper\n // But right now, we do not use that\n // if (IS_IOS) {\n // const newRange = document.createRange()\n // newRange.selectNodeContents(elem)\n // const sel = window.getSelection()\n // sel.removeAllRanges()\n // sel.addRange(newRange)\n // elem.setSelectionRange(0, 999999)\n // } else {\n // elem.select()\n // }\n\n // NB: copy only works as a result of a user action (e.g. click events)\n const success = document.execCommand('copy')\n\n // Cleanup\n document.body.removeChild(elem)\n\n resetSelection()\n\n if (success) {\n return true\n }\n } catch (e) {\n return e\n }\n\n return `Could not copy! Unknown reason. ${string}`\n }\n\n let success\n\n if (typeof navigator !== 'undefined' && navigator?.clipboard) {\n try {\n await navigator.clipboard.writeText(String(string))\n success = true\n resetSelection()\n } catch (e) {\n success = e\n const newTry = copyFallback()\n if (newTry === true) {\n success = newTry\n }\n }\n } else {\n // use the fallback as the primary, because we get\n success = copyFallback()\n }\n\n return success\n}\n\n/**\n * Uses console.log to warn about Eufemia usage issues\n *\n * It uses log instead of warn,\n * because of the stack track some browser do add\n * which takes a lot of visual space in the console\n *\n * @param {...any} params Send in what ever you would\n */\nexport const warn = (...params) => {\n if (\n typeof process !== 'undefined' &&\n process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n typeof console.log === 'function'\n ) {\n const isBrowser =\n typeof window !== 'undefined' && process.env.NODE_ENV !== 'test'\n\n if (isBrowser) {\n const styles = [\n `padding: 0.125rem 0.5rem ${IS_SAFARI ? '' : '0'}`,\n 'font-weight: bold',\n 'color: #00343E',\n 'background: #A5E1D2',\n ].join(';')\n console.log('%cEufemia', styles, ...params)\n } else {\n console.log(\n // How to generate it: JSON.stringify(chalk.reset.bold.hex('#00343E').bgHex('#A5E1D2')('Eufemia'))\n '\\u001b[0m\\u001b[1m\\u001b[38;5;23m\\u001b[48;5;152mEufemia\\u001b[49m\\u001b[39m\\u001b[22m\\u001b[0m',\n ...params\n )\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["debounce","debounceAsync","PLATFORM_MAC","PLATFORM_WIN","PLATFORM_ANDROID","PLATFORM_LINUX","PLATFORM_IOS","IS_EDGE","IS_IOS","IS_SAFARI","IS_WIN","IS_MAC","IS_ANDROID","IS_LINUX","isMac","_navigator","navigator","RegExp","test","platform","isWin","_navigator2","isAndroid","_navigator3","userAgent","isLinux","_navigator4","isiOS","_navigator5","isSafari","_navigator6","_navigator7","isEdge","_navigator8","pageFocusElements","setPageFocusElement","selectorOrElement","key","applyPageFocus","selector","callback","element","document","querySelector","HTMLElement","role","getAttribute","list","isInteractive","includes","String","nodeName","toLowerCase","hasTabIndex","hasAttribute","hasNoFocus","classList","contains","setAttribute","add","focus","onBlur","removeAttribute","remove","addEventListener","once","e","warn","getOffsetTop","elem","offsetTop","isNaN","offsetParent","getOffsetLeft","offsetLeft","scrollToLocationHashId","offset","delay","onCompletion","window","location","_timeout","id","hash","replace","length","handleScroll","runScroll","totalOffset","top","IntersectionObserver","intersectionObserver","entries","entry","isIntersecting","unobserve","observe","scrollTo","behavior","scrollTop","clearTimeout","setTimeout","getElementById","readyState","insertElementBeforeSelection","selection","getSelection","range","getRangeAt","cloneRange","insertNode","addRange","getSelectedText","toString","hasSelectedText","getSelectedElement","rangeCount","startContainer","parentNode","copyToClipboard","string","_navigator9","resetSelection","removeAllRanges","copyFallback","createElement","value","contentEditable","readOnly","style","position","body","appendChild","success","execCommand","removeChild","clipboard","writeText","newTry","params","process","env","NODE_ENV","console","log","isBrowser","styles","join"],"sources":["../../../src/shared/helpers.js"],"sourcesContent":["/**\n * Global helpers\n *\n */\n\n// For backward compatibility\nexport { debounce, debounceAsync } from './helpers/debounce'\n\nexport const PLATFORM_MAC = 'Mac|iPad|iPhone|iPod'\nexport const PLATFORM_WIN = 'Win'\nexport const PLATFORM_ANDROID = 'Android'\nexport const PLATFORM_LINUX = 'Linux'\nexport const PLATFORM_IOS = 'iOS|iPhone|iPad|iPod'\n\nexport let IS_EDGE = false\nexport let IS_IOS = false\nexport let IS_SAFARI = false\nexport let IS_WIN = false\nexport let IS_MAC = false\nexport let IS_ANDROID = false\nexport let IS_LINUX = false\n\nexport const isMac = () =>\n (IS_MAC =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_MAC, 'i').test(navigator?.platform))\n\nexport const isWin = () =>\n (IS_WIN =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_WIN, 'i').test(navigator?.platform))\n\nexport const isAndroid = () =>\n (IS_ANDROID =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_ANDROID, 'i').test(navigator?.userAgent))\n\nexport const isLinux = () =>\n (IS_LINUX =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_LINUX, 'i').test(navigator?.platform))\n\nexport const isiOS = () =>\n (IS_IOS =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_IOS, 'i').test(navigator?.platform))\n\nexport const isSafari = () =>\n (IS_SAFARI =\n typeof navigator !== 'undefined' &&\n /safari/i.test(navigator?.userAgent) &&\n !/chrome/i.test(navigator?.userAgent))\n\nexport const isEdge = () =>\n (IS_EDGE =\n typeof navigator !== 'undefined' && /edge/i.test(navigator?.userAgent))\n\nisEdge()\nisiOS()\nisSafari()\nisWin()\nisAndroid()\nisMac()\nisLinux()\n\nconst pageFocusElements = {}\nexport function setPageFocusElement(selectorOrElement, key = 'default') {\n return (pageFocusElements[key] = selectorOrElement)\n}\n\nexport function applyPageFocus(selector = 'default', callback = null) {\n try {\n let element = /^[.#]/.test(selector)\n ? selector\n : pageFocusElements[selector]\n if (typeof element === 'string' && typeof document !== 'undefined') {\n element = document.querySelector(element)\n } else if (!element && typeof document !== 'undefined') {\n element = document.querySelector('.dnb-no-focus')\n }\n\n if (!(element instanceof HTMLElement)) {\n return // stop here\n }\n\n const role = element.getAttribute('role')\n const list = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'label',\n 'menu',\n ]\n const isInteractive =\n list.includes(String(element.nodeName).toLowerCase()) ||\n list.includes(String(role).toLowerCase())\n const hasTabIndex = element.hasAttribute('tabindex')\n const hasNoFocus = element.classList.contains('dnb-no-focus')\n\n if (!isInteractive) {\n if (!hasTabIndex) {\n element.setAttribute('tabindex', '-1')\n }\n if (!hasNoFocus) {\n element.classList.add('dnb-no-focus')\n }\n }\n\n element.focus()\n\n const onBlur = () => {\n if (!isInteractive) {\n if (!hasTabIndex) {\n element.removeAttribute('tabindex')\n }\n if (!hasNoFocus) {\n element.classList.remove('dnb-no-focus')\n }\n }\n }\n element.addEventListener('blur', onBlur, { once: true })\n\n if (typeof callback === 'function') {\n callback(element)\n }\n } catch (e) {\n warn('Error on applyPageFocus:', e)\n }\n}\n\nexport function getOffsetTop(elem) {\n let offsetTop = 0\n if (elem) {\n do {\n if (!isNaN(elem.offsetTop)) {\n offsetTop += elem.offsetTop\n }\n } while ((elem = elem.offsetParent))\n }\n return offsetTop\n}\n\nexport function getOffsetLeft(elem) {\n let offsetLeft = 0\n if (elem) {\n do {\n if (!isNaN(elem.offsetLeft)) {\n offsetLeft += elem.offsetLeft\n }\n } while ((elem = elem.offsetParent))\n }\n return offsetLeft\n}\n\nexport function scrollToLocationHashId({\n offset = 0,\n delay = null,\n onCompletion = null,\n} = {}) {\n if (\n typeof document !== 'undefined' &&\n typeof window !== 'undefined' &&\n window.location\n ) {\n try {\n let _timeout\n const id = String(window.location.hash).replace('#', '')\n if (id.length > 0) {\n const handleScroll = () => {\n const runScroll = () => {\n const totalOffset = getOffsetTop(elem)\n\n if (totalOffset <= 0) {\n return // stop here\n }\n\n const top = totalOffset - offset\n\n try {\n if (typeof IntersectionObserver !== 'undefined') {\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n const [entry] = entries\n if (entry.isIntersecting) {\n intersectionObserver.unobserve(elem)\n if (typeof onCompletion === 'function') {\n onCompletion(elem)\n }\n }\n }\n )\n // start observing\n intersectionObserver.observe(elem)\n }\n\n if (window.scrollTo) {\n window.scrollTo({\n top,\n behavior: 'smooth',\n })\n } else {\n window.scrollTop = top\n }\n } catch (e) {\n warn('Error on scrollToLocationHashId:', e)\n }\n }\n\n if (delay > 0) {\n clearTimeout(_timeout)\n _timeout = setTimeout(runScroll, delay) // to make sure we run our scrollTo after the native anchor\n } else {\n runScroll()\n }\n }\n\n const elem = document.getElementById(id)\n if (elem instanceof HTMLElement) {\n window.addEventListener('beforeunload', () =>\n clearTimeout(_timeout)\n )\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', handleScroll)\n } else {\n handleScroll()\n }\n }\n\n return elem\n }\n } catch (e) {\n warn('Error on scrollToLocationHashId:', e)\n }\n }\n}\n\nexport function insertElementBeforeSelection(elem) {\n try {\n const selection = window.getSelection()\n const range = selection.getRangeAt(0)\n range.cloneRange().insertNode(elem)\n selection.addRange(range) // Restore the original selection - this is a Safari fix!\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // const range = document.selection.createRange()\n // range.collapse(true)\n // range.pasteHTML(elem.outerHTML)\n } catch (e) {\n //\n }\n}\n\nexport function getSelectedText() {\n try {\n return window.getSelection().toString()\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // return document.selection.createRange().text\n } catch (e) {\n //\n }\n return ''\n}\n\nexport function hasSelectedText() {\n return getSelectedText().length > 0\n}\n\nexport function getSelectedElement() {\n try {\n const selection = window.getSelection()\n if (selection.rangeCount > 0) {\n let elem = selection.getRangeAt(0).startContainer\n if (elem && typeof elem === 'object') {\n elem = elem.parentNode\n }\n return elem\n }\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // return document.selection.createRange().parentElement()\n } catch (e) {\n //\n }\n\n return null\n}\n\nexport async function copyToClipboard(string) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return false\n }\n\n // get the selection range\n const selection = window.getSelection()\n const range =\n selection.rangeCount > 0 // Check if there is any content selected previously\n ? selection.getRangeAt(0) // Store selection if found\n : false // Mark as false to know no selection existed before\n\n const resetSelection = () => {\n try {\n // If a selection existed before copying\n selection.removeAllRanges() // Unselect everything on the HTML document\n selection.addRange(range) // Restore the original selection\n } catch (e) {\n //\n }\n }\n\n const copyFallback = () => {\n try {\n // create the focusable element\n const elem = document.createElement('textarea')\n elem.value = String(string)\n elem.contentEditable = true\n elem.readOnly = false\n elem.style.position = 'fixed'\n elem.style.top = '-1000px'\n document.body.appendChild(elem)\n\n // iOS helper\n // But right now, we do not use that\n // if (IS_IOS) {\n // const newRange = document.createRange()\n // newRange.selectNodeContents(elem)\n // const sel = window.getSelection()\n // sel.removeAllRanges()\n // sel.addRange(newRange)\n // elem.setSelectionRange(0, 999999)\n // } else {\n // elem.select()\n // }\n\n // NB: copy only works as a result of a user action (e.g. click events)\n const success = document.execCommand('copy')\n\n // Cleanup\n document.body.removeChild(elem)\n\n resetSelection()\n\n if (success) {\n return true\n }\n } catch (e) {\n return e\n }\n\n return `Could not copy! Unknown reason. ${string}`\n }\n\n let success\n\n if (typeof navigator !== 'undefined' && navigator?.clipboard) {\n try {\n await navigator.clipboard.writeText(String(string))\n success = true\n resetSelection()\n } catch (e) {\n success = e\n const newTry = copyFallback()\n if (newTry === true) {\n success = newTry\n }\n }\n } else {\n // use the fallback as the primary, because we get\n success = copyFallback()\n }\n\n return success\n}\n\n/**\n * Uses console.log to warn about Eufemia usage issues\n *\n * It uses log instead of warn,\n * because of the stack track some browser do add\n * which takes a lot of visual space in the console\n *\n * @param {...any} params Send in what ever you would\n */\nexport const warn = (...params) => {\n if (\n typeof process !== 'undefined' &&\n process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n typeof console.log === 'function'\n ) {\n const isBrowser =\n typeof window !== 'undefined' && process.env.NODE_ENV !== 'test'\n\n if (isBrowser) {\n const styles = [\n `padding: 0.125rem 0.5rem ${IS_SAFARI ? '' : '0'}`,\n 'font-weight: bold',\n 'color: #00343E',\n 'background: #A5E1D2',\n ].join(';')\n console.log('%cEufemia', styles, ...params)\n } else {\n console.log(\n // How to generate it: JSON.stringify(chalk.reset.bold.hex('#00343E').bgHex('#A5E1D2')('Eufemia'))\n '\\u001b[0m\\u001b[1m\\u001b[38;5;23m\\u001b[48;5;152mEufemia\\u001b[49m\\u001b[39m\\u001b[22m\\u001b[0m',\n ...params\n )\n }\n }\n}\n"],"mappings":"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"}