@dnb/eufemia 10.35.0 → 10.37.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 (464) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/cjs/components/accordion/Accordion.d.ts +15 -3
  3. package/cjs/components/accordion/Accordion.js +7 -0
  4. package/cjs/components/accordion/Accordion.js.map +1 -1
  5. package/cjs/components/accordion/AccordionDocs.d.ts +4 -0
  6. package/cjs/components/accordion/AccordionDocs.js +161 -0
  7. package/cjs/components/accordion/AccordionDocs.js.map +1 -0
  8. package/cjs/components/accordion/AccordionGroup.js +13 -3
  9. package/cjs/components/accordion/AccordionGroup.js.map +1 -1
  10. package/cjs/components/accordion/AccordionHeader.d.ts +5 -5
  11. package/cjs/components/accordion/AccordionHeader.js +3 -2
  12. package/cjs/components/accordion/AccordionHeader.js.map +1 -1
  13. package/cjs/components/accordion/AccordionProviderContext.d.ts +2 -0
  14. package/cjs/components/accordion/AccordionProviderContext.js.map +1 -1
  15. package/cjs/components/anchor/Anchor.d.ts +20 -0
  16. package/cjs/components/anchor/Anchor.js +13 -4
  17. package/cjs/components/anchor/Anchor.js.map +1 -1
  18. package/cjs/components/anchor/AnchorDocs.d.ts +3 -0
  19. package/cjs/components/anchor/AnchorDocs.js +82 -0
  20. package/cjs/components/anchor/AnchorDocs.js.map +1 -0
  21. package/cjs/components/autocomplete/Autocomplete.js +18 -4
  22. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  23. package/cjs/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  24. package/cjs/components/height-animation/HeightAnimationInstance.d.ts +3 -3
  25. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  26. package/cjs/components/height-animation/useHeightAnimation.d.ts +5 -1
  27. package/cjs/components/height-animation/useHeightAnimation.js.map +1 -1
  28. package/cjs/components/icon/Icon.d.ts +493 -61
  29. package/cjs/components/icon/Icon.js +97 -134
  30. package/cjs/components/icon/Icon.js.map +1 -1
  31. package/cjs/components/icon/IconHelpers.d.ts +2 -1
  32. package/cjs/components/icon/IconHelpers.js +1 -1
  33. package/cjs/components/icon/IconHelpers.js.map +1 -1
  34. package/cjs/components/icon/IconPrimary.d.ts +2 -2
  35. package/cjs/components/icon/IconPrimary.js.map +1 -1
  36. package/cjs/components/icon-primary/IconPrimary.d.ts +8 -11
  37. package/cjs/components/icon-primary/IconPrimary.js +37 -38
  38. package/cjs/components/icon-primary/IconPrimary.js.map +1 -1
  39. package/cjs/components/step-indicator/StepIndicatorContext.js +66 -59
  40. package/cjs/components/step-indicator/StepIndicatorContext.js.map +1 -1
  41. package/cjs/components/step-indicator/StepIndicatorItem.js +15 -23
  42. package/cjs/components/step-indicator/StepIndicatorItem.js.map +1 -1
  43. package/cjs/components/step-indicator/StepIndicatorModal.js +5 -5
  44. package/cjs/components/step-indicator/StepIndicatorModal.js.map +1 -1
  45. package/cjs/components/step-indicator/StepIndicatorSidebar.js +10 -9
  46. package/cjs/components/step-indicator/StepIndicatorSidebar.js.map +1 -1
  47. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  48. package/cjs/components/table/Table.d.ts +1 -1
  49. package/cjs/components/table/Table.js.map +1 -1
  50. package/cjs/components/table/TableContext.d.ts +12 -2
  51. package/cjs/components/table/TableContext.js +1 -3
  52. package/cjs/components/table/TableContext.js.map +1 -1
  53. package/cjs/components/table/TableDocs.d.ts +7 -0
  54. package/cjs/components/table/TableDocs.js +202 -0
  55. package/cjs/components/table/TableDocs.js.map +1 -0
  56. package/cjs/components/table/TableTd.d.ts +3 -3
  57. package/cjs/components/table/TableTd.js +2 -2
  58. package/cjs/components/table/TableTd.js.map +1 -1
  59. package/cjs/components/table/TableTr.d.ts +9 -5
  60. package/cjs/components/table/TableTr.js +4 -4
  61. package/cjs/components/table/TableTr.js.map +1 -1
  62. package/cjs/components/table/table-accordion/TableAccordionContent.d.ts +15 -0
  63. package/cjs/components/table/{TableAccordionTd.js → table-accordion/TableAccordionContent.js} +52 -17
  64. package/cjs/components/table/table-accordion/TableAccordionContent.js.map +1 -0
  65. package/cjs/components/table/table-accordion/TableAccordionContext.d.ts +16 -0
  66. package/cjs/components/table/table-accordion/TableAccordionContext.js +11 -0
  67. package/cjs/components/table/table-accordion/TableAccordionContext.js.map +1 -0
  68. package/cjs/components/table/table-accordion/TableAccordionHead.d.ts +8 -0
  69. package/cjs/components/table/{TableAccordion.js → table-accordion/TableAccordionHead.js} +17 -18
  70. package/cjs/components/table/table-accordion/TableAccordionHead.js.map +1 -0
  71. package/{es/components/table → cjs/components/table/table-accordion}/useTableAnimationHandler.d.ts +7 -3
  72. package/cjs/components/table/{useTableAnimationHandler.js → table-accordion/useTableAnimationHandler.js} +4 -4
  73. package/cjs/components/table/table-accordion/useTableAnimationHandler.js.map +1 -0
  74. package/cjs/components/tabs/Tabs.d.ts +0 -3
  75. package/cjs/components/tabs/TabsDocs.d.ts +1 -0
  76. package/cjs/components/tabs/TabsDocs.js +32 -4
  77. package/cjs/components/tabs/TabsDocs.js.map +1 -1
  78. package/cjs/components/toggle-button/ToggleButtonGroup.js +2 -2
  79. package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  80. package/cjs/components/toggle-button/style/dnb-toggle-button.css +15 -6
  81. package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  82. package/cjs/components/toggle-button/style/dnb-toggle-button.scss +16 -9
  83. package/cjs/extensions/forms/DataContext/Provider/Provider.js +1 -1
  84. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  85. package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +2 -2
  86. package/cjs/extensions/forms/Form/Visibility/Visibility.js +20 -72
  87. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  88. package/cjs/extensions/forms/Form/Visibility/useVisibility.d.ts +5 -0
  89. package/cjs/extensions/forms/Form/Visibility/useVisibility.js +101 -0
  90. package/cjs/extensions/forms/Form/Visibility/useVisibility.js.map +1 -0
  91. package/cjs/extensions/forms/Value/Date/Date.d.ts +5 -1
  92. package/cjs/extensions/forms/Value/Date/Date.js +26 -3
  93. package/cjs/extensions/forms/Value/Date/Date.js.map +1 -1
  94. package/cjs/extensions/forms/Value/Date/DateDocs.d.ts +2 -0
  95. package/cjs/extensions/forms/Value/Date/DateDocs.js +20 -0
  96. package/cjs/extensions/forms/Value/Date/DateDocs.js.map +1 -0
  97. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +15 -9
  98. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  99. package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +4 -0
  100. package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  101. package/cjs/extensions/forms/Wizard/Step/Step.d.ts +5 -0
  102. package/cjs/extensions/forms/Wizard/Step/Step.js +6 -2
  103. package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
  104. package/cjs/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  105. package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  106. package/cjs/extensions/forms/Wizard/hooks/useNextRouter.js +1 -1
  107. package/cjs/extensions/forms/Wizard/hooks/useNextRouter.js.map +1 -1
  108. package/cjs/extensions/forms/Wizard/hooks/useQueryLocator.js +1 -1
  109. package/cjs/extensions/forms/Wizard/hooks/useQueryLocator.js.map +1 -1
  110. package/cjs/extensions/forms/Wizard/hooks/useReachRouter.js +1 -1
  111. package/cjs/extensions/forms/Wizard/hooks/useReachRouter.js.map +1 -1
  112. package/cjs/extensions/forms/Wizard/hooks/useReactRouter.js +1 -1
  113. package/cjs/extensions/forms/Wizard/hooks/useReactRouter.js.map +1 -1
  114. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +7 -9
  115. package/cjs/extensions/forms/constants/locales/en-GB.js +7 -9
  116. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  117. package/cjs/extensions/forms/constants/locales/en-US.d.ts +7 -9
  118. package/cjs/extensions/forms/constants/locales/index.d.ts +14 -18
  119. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +7 -9
  120. package/cjs/extensions/forms/constants/locales/nb-NO.js +7 -9
  121. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  122. package/cjs/shared/Context.d.ts +4 -0
  123. package/cjs/shared/Context.js.map +1 -1
  124. package/cjs/shared/Eufemia.d.ts +1 -1
  125. package/cjs/shared/Eufemia.js +2 -2
  126. package/cjs/shared/Eufemia.js.map +1 -1
  127. package/cjs/shared/component-helper.js +1 -1
  128. package/cjs/shared/component-helper.js.map +1 -1
  129. package/cjs/style/core/scopes.scss +1 -1
  130. package/cjs/style/dnb-ui-basis.css +1 -1
  131. package/cjs/style/dnb-ui-basis.min.css +1 -1
  132. package/cjs/style/dnb-ui-body.css +1 -1
  133. package/cjs/style/dnb-ui-body.min.css +1 -1
  134. package/cjs/style/dnb-ui-components.css +15 -6
  135. package/cjs/style/dnb-ui-components.min.css +1 -1
  136. package/cjs/style/dnb-ui-core.css +1 -1
  137. package/cjs/style/dnb-ui-core.min.css +1 -1
  138. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +15 -6
  139. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  140. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +15 -6
  141. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  142. package/cjs/style/themes/theme-ui/ui-theme-components.css +15 -6
  143. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  144. package/components/accordion/Accordion.d.ts +15 -3
  145. package/components/accordion/Accordion.js +7 -0
  146. package/components/accordion/Accordion.js.map +1 -1
  147. package/components/accordion/AccordionDocs.d.ts +4 -0
  148. package/components/accordion/AccordionDocs.js +152 -0
  149. package/components/accordion/AccordionDocs.js.map +1 -0
  150. package/components/accordion/AccordionGroup.js +14 -4
  151. package/components/accordion/AccordionGroup.js.map +1 -1
  152. package/components/accordion/AccordionHeader.d.ts +5 -5
  153. package/components/accordion/AccordionHeader.js +3 -2
  154. package/components/accordion/AccordionHeader.js.map +1 -1
  155. package/components/accordion/AccordionProviderContext.d.ts +2 -0
  156. package/components/accordion/AccordionProviderContext.js.map +1 -1
  157. package/components/anchor/Anchor.d.ts +20 -0
  158. package/components/anchor/Anchor.js +13 -4
  159. package/components/anchor/Anchor.js.map +1 -1
  160. package/components/anchor/AnchorDocs.d.ts +3 -0
  161. package/components/anchor/AnchorDocs.js +74 -0
  162. package/components/anchor/AnchorDocs.js.map +1 -0
  163. package/components/autocomplete/Autocomplete.js +19 -5
  164. package/components/autocomplete/Autocomplete.js.map +1 -1
  165. package/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  166. package/components/height-animation/HeightAnimationInstance.d.ts +3 -3
  167. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  168. package/components/height-animation/useHeightAnimation.d.ts +5 -1
  169. package/components/height-animation/useHeightAnimation.js.map +1 -1
  170. package/components/icon/Icon.d.ts +493 -61
  171. package/components/icon/Icon.js +89 -127
  172. package/components/icon/Icon.js.map +1 -1
  173. package/components/icon/IconHelpers.d.ts +2 -1
  174. package/components/icon/IconHelpers.js +1 -1
  175. package/components/icon/IconHelpers.js.map +1 -1
  176. package/components/icon/IconPrimary.d.ts +2 -2
  177. package/components/icon/IconPrimary.js.map +1 -1
  178. package/components/icon-primary/IconPrimary.d.ts +8 -11
  179. package/components/icon-primary/IconPrimary.js +25 -31
  180. package/components/icon-primary/IconPrimary.js.map +1 -1
  181. package/components/step-indicator/StepIndicatorContext.js +67 -60
  182. package/components/step-indicator/StepIndicatorContext.js.map +1 -1
  183. package/components/step-indicator/StepIndicatorItem.js +16 -24
  184. package/components/step-indicator/StepIndicatorItem.js.map +1 -1
  185. package/components/step-indicator/StepIndicatorModal.js +6 -6
  186. package/components/step-indicator/StepIndicatorModal.js.map +1 -1
  187. package/components/step-indicator/StepIndicatorSidebar.js +11 -10
  188. package/components/step-indicator/StepIndicatorSidebar.js.map +1 -1
  189. package/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  190. package/components/table/Table.d.ts +1 -1
  191. package/components/table/Table.js.map +1 -1
  192. package/components/table/TableContext.d.ts +12 -2
  193. package/components/table/TableContext.js +0 -1
  194. package/components/table/TableContext.js.map +1 -1
  195. package/components/table/TableDocs.d.ts +7 -0
  196. package/components/table/TableDocs.js +190 -0
  197. package/components/table/TableDocs.js.map +1 -0
  198. package/components/table/TableTd.d.ts +3 -3
  199. package/components/table/TableTd.js +2 -2
  200. package/components/table/TableTd.js.map +1 -1
  201. package/components/table/TableTr.d.ts +9 -5
  202. package/components/table/TableTr.js +4 -4
  203. package/components/table/TableTr.js.map +1 -1
  204. package/components/table/table-accordion/TableAccordionContent.d.ts +15 -0
  205. package/components/table/table-accordion/TableAccordionContent.js +95 -0
  206. package/components/table/table-accordion/TableAccordionContent.js.map +1 -0
  207. package/components/table/table-accordion/TableAccordionContext.d.ts +16 -0
  208. package/components/table/table-accordion/TableAccordionContext.js +3 -0
  209. package/components/table/table-accordion/TableAccordionContext.js.map +1 -0
  210. package/components/table/table-accordion/TableAccordionHead.d.ts +8 -0
  211. package/components/table/{TableAccordion.js → table-accordion/TableAccordionHead.js} +14 -15
  212. package/components/table/table-accordion/TableAccordionHead.js.map +1 -0
  213. package/{cjs/components/table → components/table/table-accordion}/useTableAnimationHandler.d.ts +7 -3
  214. package/components/table/{useTableAnimationHandler.js → table-accordion/useTableAnimationHandler.js} +3 -3
  215. package/components/table/table-accordion/useTableAnimationHandler.js.map +1 -0
  216. package/components/tabs/Tabs.d.ts +0 -3
  217. package/components/tabs/TabsDocs.d.ts +1 -0
  218. package/components/tabs/TabsDocs.js +30 -3
  219. package/components/tabs/TabsDocs.js.map +1 -1
  220. package/components/toggle-button/ToggleButtonGroup.js +2 -2
  221. package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  222. package/components/toggle-button/style/dnb-toggle-button.css +15 -6
  223. package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  224. package/components/toggle-button/style/dnb-toggle-button.scss +16 -9
  225. package/es/components/accordion/Accordion.d.ts +15 -3
  226. package/es/components/accordion/Accordion.js +7 -0
  227. package/es/components/accordion/Accordion.js.map +1 -1
  228. package/es/components/accordion/AccordionDocs.d.ts +4 -0
  229. package/es/components/accordion/AccordionDocs.js +152 -0
  230. package/es/components/accordion/AccordionDocs.js.map +1 -0
  231. package/es/components/accordion/AccordionGroup.js +14 -4
  232. package/es/components/accordion/AccordionGroup.js.map +1 -1
  233. package/es/components/accordion/AccordionHeader.d.ts +5 -5
  234. package/es/components/accordion/AccordionHeader.js +3 -2
  235. package/es/components/accordion/AccordionHeader.js.map +1 -1
  236. package/es/components/accordion/AccordionProviderContext.d.ts +2 -0
  237. package/es/components/accordion/AccordionProviderContext.js.map +1 -1
  238. package/es/components/anchor/Anchor.d.ts +20 -0
  239. package/es/components/anchor/Anchor.js +13 -4
  240. package/es/components/anchor/Anchor.js.map +1 -1
  241. package/es/components/anchor/AnchorDocs.d.ts +3 -0
  242. package/es/components/anchor/AnchorDocs.js +74 -0
  243. package/es/components/anchor/AnchorDocs.js.map +1 -0
  244. package/es/components/autocomplete/Autocomplete.js +19 -5
  245. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  246. package/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  247. package/es/components/height-animation/HeightAnimationInstance.d.ts +3 -3
  248. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  249. package/es/components/height-animation/useHeightAnimation.d.ts +5 -1
  250. package/es/components/height-animation/useHeightAnimation.js.map +1 -1
  251. package/es/components/icon/Icon.d.ts +493 -61
  252. package/es/components/icon/Icon.js +82 -116
  253. package/es/components/icon/Icon.js.map +1 -1
  254. package/es/components/icon/IconHelpers.d.ts +2 -1
  255. package/es/components/icon/IconHelpers.js +1 -1
  256. package/es/components/icon/IconHelpers.js.map +1 -1
  257. package/es/components/icon/IconPrimary.d.ts +2 -2
  258. package/es/components/icon/IconPrimary.js.map +1 -1
  259. package/es/components/icon-primary/IconPrimary.d.ts +8 -11
  260. package/es/components/icon-primary/IconPrimary.js +25 -31
  261. package/es/components/icon-primary/IconPrimary.js.map +1 -1
  262. package/es/components/step-indicator/StepIndicatorContext.js +67 -60
  263. package/es/components/step-indicator/StepIndicatorContext.js.map +1 -1
  264. package/es/components/step-indicator/StepIndicatorItem.js +17 -25
  265. package/es/components/step-indicator/StepIndicatorItem.js.map +1 -1
  266. package/es/components/step-indicator/StepIndicatorModal.js +6 -6
  267. package/es/components/step-indicator/StepIndicatorModal.js.map +1 -1
  268. package/es/components/step-indicator/StepIndicatorSidebar.js +11 -10
  269. package/es/components/step-indicator/StepIndicatorSidebar.js.map +1 -1
  270. package/es/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  271. package/es/components/table/Table.d.ts +1 -1
  272. package/es/components/table/Table.js.map +1 -1
  273. package/es/components/table/TableContext.d.ts +12 -2
  274. package/es/components/table/TableContext.js +0 -1
  275. package/es/components/table/TableContext.js.map +1 -1
  276. package/es/components/table/TableDocs.d.ts +7 -0
  277. package/es/components/table/TableDocs.js +190 -0
  278. package/es/components/table/TableDocs.js.map +1 -0
  279. package/es/components/table/TableTd.d.ts +3 -3
  280. package/es/components/table/TableTd.js +2 -2
  281. package/es/components/table/TableTd.js.map +1 -1
  282. package/es/components/table/TableTr.d.ts +9 -5
  283. package/es/components/table/TableTr.js +4 -4
  284. package/es/components/table/TableTr.js.map +1 -1
  285. package/es/components/table/table-accordion/TableAccordionContent.d.ts +15 -0
  286. package/es/components/table/table-accordion/TableAccordionContent.js +92 -0
  287. package/es/components/table/table-accordion/TableAccordionContent.js.map +1 -0
  288. package/es/components/table/table-accordion/TableAccordionContext.d.ts +16 -0
  289. package/es/components/table/table-accordion/TableAccordionContext.js +3 -0
  290. package/es/components/table/table-accordion/TableAccordionContext.js.map +1 -0
  291. package/es/components/table/table-accordion/TableAccordionHead.d.ts +8 -0
  292. package/es/components/table/{TableAccordion.js → table-accordion/TableAccordionHead.js} +14 -15
  293. package/es/components/table/table-accordion/TableAccordionHead.js.map +1 -0
  294. package/{components/table → es/components/table/table-accordion}/useTableAnimationHandler.d.ts +7 -3
  295. package/es/components/table/{useTableAnimationHandler.js → table-accordion/useTableAnimationHandler.js} +3 -3
  296. package/es/components/table/table-accordion/useTableAnimationHandler.js.map +1 -0
  297. package/es/components/tabs/Tabs.d.ts +0 -3
  298. package/es/components/tabs/TabsDocs.d.ts +1 -0
  299. package/es/components/tabs/TabsDocs.js +30 -3
  300. package/es/components/tabs/TabsDocs.js.map +1 -1
  301. package/es/components/toggle-button/ToggleButtonGroup.js +2 -2
  302. package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  303. package/es/components/toggle-button/style/dnb-toggle-button.css +15 -6
  304. package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  305. package/es/components/toggle-button/style/dnb-toggle-button.scss +16 -9
  306. package/es/extensions/forms/DataContext/Provider/Provider.js +1 -1
  307. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  308. package/es/extensions/forms/Form/Visibility/Visibility.d.ts +2 -2
  309. package/es/extensions/forms/Form/Visibility/Visibility.js +20 -71
  310. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  311. package/es/extensions/forms/Form/Visibility/useVisibility.d.ts +5 -0
  312. package/es/extensions/forms/Form/Visibility/useVisibility.js +94 -0
  313. package/es/extensions/forms/Form/Visibility/useVisibility.js.map +1 -0
  314. package/es/extensions/forms/Value/Date/Date.d.ts +5 -1
  315. package/es/extensions/forms/Value/Date/Date.js +25 -3
  316. package/es/extensions/forms/Value/Date/Date.js.map +1 -1
  317. package/es/extensions/forms/Value/Date/DateDocs.d.ts +2 -0
  318. package/es/extensions/forms/Value/Date/DateDocs.js +13 -0
  319. package/es/extensions/forms/Value/Date/DateDocs.js.map +1 -0
  320. package/es/extensions/forms/Wizard/Container/WizardContainer.js +15 -9
  321. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  322. package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +4 -0
  323. package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  324. package/es/extensions/forms/Wizard/Step/Step.d.ts +5 -0
  325. package/es/extensions/forms/Wizard/Step/Step.js +6 -2
  326. package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
  327. package/es/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  328. package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  329. package/es/extensions/forms/Wizard/hooks/useNextRouter.js +1 -1
  330. package/es/extensions/forms/Wizard/hooks/useNextRouter.js.map +1 -1
  331. package/es/extensions/forms/Wizard/hooks/useQueryLocator.js +1 -1
  332. package/es/extensions/forms/Wizard/hooks/useQueryLocator.js.map +1 -1
  333. package/es/extensions/forms/Wizard/hooks/useReachRouter.js +1 -1
  334. package/es/extensions/forms/Wizard/hooks/useReachRouter.js.map +1 -1
  335. package/es/extensions/forms/Wizard/hooks/useReactRouter.js +1 -1
  336. package/es/extensions/forms/Wizard/hooks/useReactRouter.js.map +1 -1
  337. package/es/extensions/forms/constants/locales/en-GB.d.ts +7 -9
  338. package/es/extensions/forms/constants/locales/en-GB.js +7 -9
  339. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  340. package/es/extensions/forms/constants/locales/en-US.d.ts +7 -9
  341. package/es/extensions/forms/constants/locales/index.d.ts +14 -18
  342. package/es/extensions/forms/constants/locales/nb-NO.d.ts +7 -9
  343. package/es/extensions/forms/constants/locales/nb-NO.js +7 -9
  344. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  345. package/es/shared/Context.d.ts +4 -0
  346. package/es/shared/Context.js.map +1 -1
  347. package/es/shared/Eufemia.d.ts +1 -1
  348. package/es/shared/Eufemia.js +2 -2
  349. package/es/shared/Eufemia.js.map +1 -1
  350. package/es/shared/component-helper.js +1 -1
  351. package/es/shared/component-helper.js.map +1 -1
  352. package/es/style/core/scopes.scss +1 -1
  353. package/es/style/dnb-ui-basis.css +1 -1
  354. package/es/style/dnb-ui-basis.min.css +1 -1
  355. package/es/style/dnb-ui-body.css +1 -1
  356. package/es/style/dnb-ui-body.min.css +1 -1
  357. package/es/style/dnb-ui-components.css +15 -6
  358. package/es/style/dnb-ui-components.min.css +1 -1
  359. package/es/style/dnb-ui-core.css +1 -1
  360. package/es/style/dnb-ui-core.min.css +1 -1
  361. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +15 -6
  362. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  363. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +15 -6
  364. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  365. package/es/style/themes/theme-ui/ui-theme-components.css +15 -6
  366. package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  367. package/esm/dnb-ui-basis.min.mjs +1 -1
  368. package/esm/dnb-ui-components.min.mjs +1 -1
  369. package/esm/dnb-ui-elements.min.mjs +1 -1
  370. package/esm/dnb-ui-extensions.min.mjs +5 -5
  371. package/esm/dnb-ui-lib.min.mjs +1 -1
  372. package/extensions/forms/DataContext/Provider/Provider.js +1 -1
  373. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  374. package/extensions/forms/Form/Visibility/Visibility.d.ts +2 -2
  375. package/extensions/forms/Form/Visibility/Visibility.js +20 -71
  376. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  377. package/extensions/forms/Form/Visibility/useVisibility.d.ts +5 -0
  378. package/extensions/forms/Form/Visibility/useVisibility.js +95 -0
  379. package/extensions/forms/Form/Visibility/useVisibility.js.map +1 -0
  380. package/extensions/forms/Value/Date/Date.d.ts +5 -1
  381. package/extensions/forms/Value/Date/Date.js +25 -3
  382. package/extensions/forms/Value/Date/Date.js.map +1 -1
  383. package/extensions/forms/Value/Date/DateDocs.d.ts +2 -0
  384. package/extensions/forms/Value/Date/DateDocs.js +13 -0
  385. package/extensions/forms/Value/Date/DateDocs.js.map +1 -0
  386. package/extensions/forms/Wizard/Container/WizardContainer.js +15 -9
  387. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  388. package/extensions/forms/Wizard/Context/WizardContext.d.ts +4 -0
  389. package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  390. package/extensions/forms/Wizard/Step/Step.d.ts +5 -0
  391. package/extensions/forms/Wizard/Step/Step.js +6 -2
  392. package/extensions/forms/Wizard/Step/Step.js.map +1 -1
  393. package/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  394. package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  395. package/extensions/forms/Wizard/hooks/useNextRouter.js +1 -1
  396. package/extensions/forms/Wizard/hooks/useNextRouter.js.map +1 -1
  397. package/extensions/forms/Wizard/hooks/useQueryLocator.js +1 -1
  398. package/extensions/forms/Wizard/hooks/useQueryLocator.js.map +1 -1
  399. package/extensions/forms/Wizard/hooks/useReachRouter.js +1 -1
  400. package/extensions/forms/Wizard/hooks/useReachRouter.js.map +1 -1
  401. package/extensions/forms/Wizard/hooks/useReactRouter.js +1 -1
  402. package/extensions/forms/Wizard/hooks/useReactRouter.js.map +1 -1
  403. package/extensions/forms/constants/locales/en-GB.d.ts +7 -9
  404. package/extensions/forms/constants/locales/en-GB.js +7 -9
  405. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  406. package/extensions/forms/constants/locales/en-US.d.ts +7 -9
  407. package/extensions/forms/constants/locales/index.d.ts +14 -18
  408. package/extensions/forms/constants/locales/nb-NO.d.ts +7 -9
  409. package/extensions/forms/constants/locales/nb-NO.js +7 -9
  410. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  411. package/package.json +1 -1
  412. package/shared/Context.d.ts +4 -0
  413. package/shared/Context.js.map +1 -1
  414. package/shared/Eufemia.d.ts +1 -1
  415. package/shared/Eufemia.js +2 -2
  416. package/shared/Eufemia.js.map +1 -1
  417. package/shared/component-helper.js +1 -1
  418. package/shared/component-helper.js.map +1 -1
  419. package/style/core/scopes.scss +1 -1
  420. package/style/dnb-ui-basis.css +1 -1
  421. package/style/dnb-ui-basis.min.css +1 -1
  422. package/style/dnb-ui-body.css +1 -1
  423. package/style/dnb-ui-body.min.css +1 -1
  424. package/style/dnb-ui-components.css +15 -6
  425. package/style/dnb-ui-components.min.css +1 -1
  426. package/style/dnb-ui-core.css +1 -1
  427. package/style/dnb-ui-core.min.css +1 -1
  428. package/style/themes/theme-eiendom/eiendom-theme-components.css +15 -6
  429. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  430. package/style/themes/theme-sbanken/sbanken-theme-components.css +15 -6
  431. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  432. package/style/themes/theme-ui/ui-theme-components.css +15 -6
  433. package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  434. package/umd/dnb-ui-basis.min.js +1 -1
  435. package/umd/dnb-ui-components.min.js +1 -1
  436. package/umd/dnb-ui-elements.min.js +1 -1
  437. package/umd/dnb-ui-extensions.min.js +5 -5
  438. package/umd/dnb-ui-lib.min.js +1 -1
  439. package/cjs/components/table/TableAccordion.d.ts +0 -8
  440. package/cjs/components/table/TableAccordion.js.map +0 -1
  441. package/cjs/components/table/TableAccordionTd.d.ts +0 -9
  442. package/cjs/components/table/TableAccordionTd.js.map +0 -1
  443. package/cjs/components/table/TableAccordionTr.d.ts +0 -13
  444. package/cjs/components/table/TableAccordionTr.js +0 -61
  445. package/cjs/components/table/TableAccordionTr.js.map +0 -1
  446. package/cjs/components/table/useTableAnimationHandler.js.map +0 -1
  447. package/components/table/TableAccordion.d.ts +0 -8
  448. package/components/table/TableAccordion.js.map +0 -1
  449. package/components/table/TableAccordionTd.d.ts +0 -9
  450. package/components/table/TableAccordionTd.js +0 -61
  451. package/components/table/TableAccordionTd.js.map +0 -1
  452. package/components/table/TableAccordionTr.d.ts +0 -13
  453. package/components/table/TableAccordionTr.js +0 -51
  454. package/components/table/TableAccordionTr.js.map +0 -1
  455. package/components/table/useTableAnimationHandler.js.map +0 -1
  456. package/es/components/table/TableAccordion.d.ts +0 -8
  457. package/es/components/table/TableAccordion.js.map +0 -1
  458. package/es/components/table/TableAccordionTd.d.ts +0 -9
  459. package/es/components/table/TableAccordionTd.js +0 -61
  460. package/es/components/table/TableAccordionTd.js.map +0 -1
  461. package/es/components/table/TableAccordionTr.d.ts +0 -13
  462. package/es/components/table/TableAccordionTr.js +0 -51
  463. package/es/components/table/TableAccordionTr.js.map +0 -1
  464. package/es/components/table/useTableAnimationHandler.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbItem.js","names":["React","Button","Anchor","IconPrimary","P","homeIcon","useMediaQuery","Context","extendPropsWithContext","filterProps","useLayoutEffect","window","useEffect","defaultProps","text","href","icon","onClick","variant","skeleton","determineIcon","isSmallScreen","BreadcrumbItem","localProps","context","useContext","theme","translation","Breadcrumb","homeText","_extendPropsWithConte","itemNr","props","_objectWithoutProperties","_excluded","matchOnSSR","when","max","currentIcon","setCurrentIcon","useState","currentText","isInteractive","to","style","String","iconToUse","createElement","className","undefined","name","_extends","icon_position","on_click","Fragment","key","includes","space","_supportsSpacingProps"],"sources":["../../../../src/components/breadcrumb/BreadcrumbItem.tsx"],"sourcesContent":["import React from 'react'\n\n// Components\nimport Button, { ButtonProps } from '../Button'\nimport Anchor, { AnchorAllProps } from '../Anchor'\nimport IconPrimary from '../icon-primary/IconPrimary'\nimport type { DataAttributeTypes } from '../../shared/types'\nimport type { IconIcon } from '../icon/Icon'\n\n// Elements\nimport P from '../../elements/P'\n\n// Icons\nimport homeIcon from '../../icons/home'\n\n// Shared\nimport { useMediaQuery } from '../../shared'\nimport Context from '../../shared/Context'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport {\n extendPropsWithContext,\n filterProps,\n} from '../../shared/component-helper'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type BreadcrumbItemProps = {\n /**\n * Text displaying the title of the item's corresponding page\n * Default: If variant='home', default is \"Home\". Otherwise it is required.\n */\n text?: React.ReactNode\n\n /**\n * Icon displaying on the left side\n * Default: HomeIcon / chevron_right\n */\n icon?: IconIcon\n\n /**\n * Href should be the link to the item's corresponding page.\n * Default: null\n */\n href?: string\n\n /**\n * Set a custom click event. In this case, you should not define the prop href.\n * Default: null\n */\n onClick?: React.MouseEventHandler<HTMLAnchorElement | HTMLButtonElement>\n\n /**\n * The component variant. Variant 'current' should correspond to the current page and 'home' to the root page.\n * Default: null\n */\n variant?: 'home' | 'previous' | 'current'\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /** Internal */\n itemNr?: number\n} & (AnchorAllProps & Omit<ButtonProps, 'variant'>) &\n DataAttributeTypes\n\nconst defaultProps = {\n text: null,\n href: null,\n icon: null,\n onClick: null,\n variant: null,\n skeleton: null,\n}\n\nconst determineIcon: IconIcon = (\n variant: string,\n isSmallScreen: boolean\n) => {\n switch (variant) {\n case 'home':\n return 'home-icon'\n case 'single':\n case 'collapse':\n return 'chevron_left'\n default:\n return isSmallScreen ? 'chevron_left' : 'chevron_right'\n }\n}\n\nconst BreadcrumbItem = (localProps: BreadcrumbItemProps) => {\n // Every component should have a context\n const context = React.useContext(Context)\n const {\n theme,\n translation: {\n Breadcrumb: { homeText },\n },\n } = context\n\n // Extract additional props from global context\n const {\n text,\n href,\n icon,\n onClick,\n variant,\n skeleton,\n itemNr,\n ...props\n } = extendPropsWithContext(\n localProps,\n defaultProps,\n context?.BreadcrumbItem\n )\n\n const isSmallScreen = useMediaQuery({\n matchOnSSR: true,\n when: { max: 'medium' },\n })\n\n const [currentIcon, setCurrentIcon] =\n React.useState<IconIcon>('chevron_left')\n\n useLayoutEffect(() => {\n if (!icon) {\n setCurrentIcon(determineIcon(variant, isSmallScreen))\n } else {\n if (variant !== 'home') {\n setCurrentIcon(icon ?? 'chevron_left')\n }\n }\n }, [icon, isSmallScreen, variant])\n\n const currentText = text || (variant === 'home' && homeText) || ''\n const isInteractive =\n (href || onClick || props.to) && variant !== 'current'\n const style = { '--delay': String(itemNr) } as React.CSSProperties\n\n const iconToUse =\n variant === 'home' || currentIcon === 'home-icon'\n ? homeIcon\n : currentIcon\n\n return (\n <li\n className=\"dnb-breadcrumb__item\"\n aria-current={variant === 'current' ? 'page' : undefined}\n style={style}\n >\n {isInteractive ? (\n theme?.name === 'sbanken' ? (\n <Button\n variant=\"tertiary\"\n href={href}\n icon={iconToUse}\n icon_position=\"left\"\n on_click={onClick}\n text={currentText}\n skeleton={skeleton}\n {...props}\n />\n ) : (\n <>\n {variant !== 'home' && (\n <IconPrimary\n icon={iconToUse}\n className=\"dnb-breadcrumb__item__span__icon\"\n />\n )}\n <Anchor\n href={href}\n onClick={onClick}\n icon={variant === 'home' ? iconToUse : null}\n skeleton={skeleton}\n {...props}\n >\n {currentText}\n </Anchor>\n </>\n )\n ) : (\n <span\n className=\"dnb-breadcrumb__item__span\"\n // TODO: Consider deprecating passing down props to span in v11\n {...filterProps(props, (key) => !key.includes('-'))}\n >\n <IconPrimary\n icon={iconToUse}\n className=\"dnb-breadcrumb__item__span__icon\"\n />\n <P space=\"0\">{currentText}</P>\n </span>\n )}\n </li>\n )\n}\n\nBreadcrumbItem._supportsSpacingProps = true\n\nexport default BreadcrumbItem\n"],"mappings":"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"}
1
+ {"version":3,"file":"BreadcrumbItem.js","names":["React","Button","Anchor","IconPrimary","P","homeIcon","useMediaQuery","Context","extendPropsWithContext","filterProps","useLayoutEffect","window","useEffect","defaultProps","text","href","icon","onClick","variant","skeleton","determineIcon","isSmallScreen","BreadcrumbItem","localProps","context","useContext","theme","translation","Breadcrumb","homeText","_extendPropsWithConte","itemNr","props","_objectWithoutProperties","_excluded","matchOnSSR","when","max","currentIcon","setCurrentIcon","useState","currentText","isInteractive","to","style","String","iconToUse","createElement","className","undefined","name","_extends","icon_position","on_click","Fragment","key","includes","space","_supportsSpacingProps"],"sources":["../../../../src/components/breadcrumb/BreadcrumbItem.tsx"],"sourcesContent":["import React from 'react'\n\n// Components\nimport Button, { ButtonProps } from '../Button'\nimport Anchor, { AnchorAllProps } from '../Anchor'\nimport IconPrimary from '../icon-primary/IconPrimary'\nimport type { DataAttributeTypes } from '../../shared/types'\nimport type { IconIcon } from '../icon/Icon'\n\n// Elements\nimport P from '../../elements/P'\n\n// Icons\nimport homeIcon from '../../icons/home'\n\n// Shared\nimport { useMediaQuery } from '../../shared'\nimport Context from '../../shared/Context'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport {\n extendPropsWithContext,\n filterProps,\n} from '../../shared/component-helper'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type BreadcrumbItemProps = {\n /**\n * Text displaying the title of the item's corresponding page\n * Default: If variant='home', default is \"Home\". Otherwise it is required.\n */\n text?: React.ReactNode\n\n /**\n * Icon displaying on the left side\n * Default: HomeIcon / chevron_right\n */\n icon?: IconIcon\n\n /**\n * Href should be the link to the item's corresponding page.\n * Default: null\n */\n href?: string\n\n /**\n * Set a custom click event. In this case, you should not define the prop href.\n * Default: null\n */\n onClick?: React.MouseEventHandler<HTMLAnchorElement | HTMLButtonElement>\n\n /**\n * The component variant. Variant 'current' should correspond to the current page and 'home' to the root page.\n * Default: null\n */\n variant?: 'home' | 'previous' | 'current'\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /** Internal */\n itemNr?: number\n} & (AnchorAllProps & Omit<ButtonProps, 'variant'>) &\n DataAttributeTypes\n\nconst defaultProps = {\n text: null,\n href: null,\n icon: null,\n onClick: null,\n variant: null,\n skeleton: null,\n}\n\nconst determineIcon = (variant: string, isSmallScreen: boolean) => {\n switch (variant) {\n case 'home':\n return 'home-icon'\n case 'single':\n case 'collapse':\n return 'chevron_left'\n default:\n return isSmallScreen ? 'chevron_left' : 'chevron_right'\n }\n}\n\nconst BreadcrumbItem = (localProps: BreadcrumbItemProps) => {\n // Every component should have a context\n const context = React.useContext(Context)\n const {\n theme,\n translation: {\n Breadcrumb: { homeText },\n },\n } = context\n\n // Extract additional props from global context\n const {\n text,\n href,\n icon,\n onClick,\n variant,\n skeleton,\n itemNr,\n ...props\n } = extendPropsWithContext(\n localProps,\n defaultProps,\n context?.BreadcrumbItem\n )\n\n const isSmallScreen = useMediaQuery({\n matchOnSSR: true,\n when: { max: 'medium' },\n })\n\n const [currentIcon, setCurrentIcon] =\n React.useState<IconIcon>('chevron_left')\n\n useLayoutEffect(() => {\n if (!icon) {\n setCurrentIcon(determineIcon(variant, isSmallScreen))\n } else {\n if (variant !== 'home') {\n setCurrentIcon(icon ?? 'chevron_left')\n }\n }\n }, [icon, isSmallScreen, variant])\n\n const currentText = text || (variant === 'home' && homeText) || ''\n const isInteractive =\n (href || onClick || props.to) && variant !== 'current'\n const style = { '--delay': String(itemNr) } as React.CSSProperties\n\n const iconToUse =\n variant === 'home' || currentIcon === 'home-icon'\n ? homeIcon\n : currentIcon\n\n return (\n <li\n className=\"dnb-breadcrumb__item\"\n aria-current={variant === 'current' ? 'page' : undefined}\n style={style}\n >\n {isInteractive ? (\n theme?.name === 'sbanken' ? (\n <Button\n variant=\"tertiary\"\n href={href}\n icon={iconToUse}\n icon_position=\"left\"\n on_click={onClick}\n text={currentText}\n skeleton={skeleton}\n {...props}\n />\n ) : (\n <>\n {variant !== 'home' && (\n <IconPrimary\n icon={iconToUse}\n className=\"dnb-breadcrumb__item__span__icon\"\n />\n )}\n <Anchor\n href={href}\n onClick={onClick}\n icon={variant === 'home' ? iconToUse : null}\n skeleton={skeleton}\n {...props}\n >\n {currentText}\n </Anchor>\n </>\n )\n ) : (\n <span\n className=\"dnb-breadcrumb__item__span\"\n // TODO: Consider deprecating passing down props to span in v11\n {...filterProps(props, (key) => !key.includes('-'))}\n >\n <IconPrimary\n icon={iconToUse}\n className=\"dnb-breadcrumb__item__span__icon\"\n />\n <P space=\"0\">{currentText}</P>\n </span>\n )}\n </li>\n )\n}\n\nBreadcrumbItem._supportsSpacingProps = true\n\nexport default BreadcrumbItem\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,OAAOC,MAAM,MAAuB,WAAW;AAC/C,OAAOC,MAAM,MAA0B,WAAW;AAClD,OAAOC,WAAW,MAAM,6BAA6B;AAKrD,OAAOC,CAAC,MAAM,kBAAkB;AAGhC,OAAOC,QAAQ,MAAM,kBAAkB;AAGvC,SAASC,aAAa,QAAQ,cAAc;AAC5C,OAAOC,OAAO,MAAM,sBAAsB;AAE1C,SACEC,sBAAsB,EACtBC,WAAW,QACN,+BAA+B;AAGtC,MAAMC,eAAe,GACnB,OAAOC,MAAM,KAAK,WAAW,GAAGX,KAAK,CAACY,SAAS,GAAGZ,KAAK,CAACU,eAAe;AA4CzE,MAAMG,YAAY,GAAG;EACnBC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE,IAAI;EACVC,OAAO,EAAE,IAAI;EACbC,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,aAAa,GAAGA,CAACF,OAAe,EAAEG,aAAsB,KAAK;EACjE,QAAQH,OAAO;IACb,KAAK,MAAM;MACT,OAAO,WAAW;IACpB,KAAK,QAAQ;IACb,KAAK,UAAU;MACb,OAAO,cAAc;IACvB;MACE,OAAOG,aAAa,GAAG,cAAc,GAAG,eAAe;EAC3D;AACF,CAAC;AAED,MAAMC,cAAc,GAAIC,UAA+B,IAAK;EAE1D,MAAMC,OAAO,GAAGxB,KAAK,CAACyB,UAAU,CAAClB,OAAO,CAAC;EACzC,MAAM;IACJmB,KAAK;IACLC,WAAW,EAAE;MACXC,UAAU,EAAE;QAAEC;MAAS;IACzB;EACF,CAAC,GAAGL,OAAO;EAGX,MAAAM,qBAAA,GASItB,sBAAsB,CACxBe,UAAU,EACVV,YAAY,EACZW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEF,cACX,CAAC;IAbK;MACJR,IAAI;MACJC,IAAI;MACJC,IAAI;MACJC,OAAO;MACPC,OAAO;MACPC,QAAQ;MACRY;IAEF,CAAC,GAAAD,qBAAA;IADIE,KAAK,GAAAC,wBAAA,CAAAH,qBAAA,EAAAI,SAAA;EAOV,MAAMb,aAAa,GAAGf,aAAa,CAAC;IAClC6B,UAAU,EAAE,IAAI;IAChBC,IAAI,EAAE;MAAEC,GAAG,EAAE;IAAS;EACxB,CAAC,CAAC;EAEF,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GACjCvC,KAAK,CAACwC,QAAQ,CAAW,cAAc,CAAC;EAE1C9B,eAAe,CAAC,MAAM;IACpB,IAAI,CAACM,IAAI,EAAE;MACTuB,cAAc,CAACnB,aAAa,CAACF,OAAO,EAAEG,aAAa,CAAC,CAAC;IACvD,CAAC,MAAM;MACL,IAAIH,OAAO,KAAK,MAAM,EAAE;QACtBqB,cAAc,CAACvB,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,cAAc,CAAC;MACxC;IACF;EACF,CAAC,EAAE,CAACA,IAAI,EAAEK,aAAa,EAAEH,OAAO,CAAC,CAAC;EAElC,MAAMuB,WAAW,GAAG3B,IAAI,IAAKI,OAAO,KAAK,MAAM,IAAIW,QAAS,IAAI,EAAE;EAClE,MAAMa,aAAa,GACjB,CAAC3B,IAAI,IAAIE,OAAO,IAAIe,KAAK,CAACW,EAAE,KAAKzB,OAAO,KAAK,SAAS;EACxD,MAAM0B,KAAK,GAAG;IAAE,SAAS,EAAEC,MAAM,CAACd,MAAM;EAAE,CAAwB;EAElE,MAAMe,SAAS,GACb5B,OAAO,KAAK,MAAM,IAAIoB,WAAW,KAAK,WAAW,GAC7CjC,QAAQ,GACRiC,WAAW;EAEjB,OACEtC,KAAA,CAAA+C,aAAA;IACEC,SAAS,EAAC,sBAAsB;IAChC,gBAAc9B,OAAO,KAAK,SAAS,GAAG,MAAM,GAAG+B,SAAU;IACzDL,KAAK,EAAEA;EAAM,GAEZF,aAAa,GACZ,CAAAhB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEwB,IAAI,MAAK,SAAS,GACvBlD,KAAA,CAAA+C,aAAA,CAAC9C,MAAM,EAAAkD,QAAA;IACLjC,OAAO,EAAC,UAAU;IAClBH,IAAI,EAAEA,IAAK;IACXC,IAAI,EAAE8B,SAAU;IAChBM,aAAa,EAAC,MAAM;IACpBC,QAAQ,EAAEpC,OAAQ;IAClBH,IAAI,EAAE2B,WAAY;IAClBtB,QAAQ,EAAEA;EAAS,GACfa,KAAK,CACV,CAAC,GAEFhC,KAAA,CAAA+C,aAAA,CAAA/C,KAAA,CAAAsD,QAAA,QACGpC,OAAO,KAAK,MAAM,IACjBlB,KAAA,CAAA+C,aAAA,CAAC5C,WAAW;IACVa,IAAI,EAAE8B,SAAU;IAChBE,SAAS,EAAC;EAAkC,CAC7C,CACF,EACDhD,KAAA,CAAA+C,aAAA,CAAC7C,MAAM,EAAAiD,QAAA;IACLpC,IAAI,EAAEA,IAAK;IACXE,OAAO,EAAEA,OAAQ;IACjBD,IAAI,EAAEE,OAAO,KAAK,MAAM,GAAG4B,SAAS,GAAG,IAAK;IAC5C3B,QAAQ,EAAEA;EAAS,GACfa,KAAK,GAERS,WACK,CACR,CACH,GAEDzC,KAAA,CAAA+C,aAAA,SAAAI,QAAA;IACEH,SAAS,EAAC;EAA4B,GAElCvC,WAAW,CAACuB,KAAK,EAAGuB,GAAG,IAAK,CAACA,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAEnDxD,KAAA,CAAA+C,aAAA,CAAC5C,WAAW;IACVa,IAAI,EAAE8B,SAAU;IAChBE,SAAS,EAAC;EAAkC,CAC7C,CAAC,EACFhD,KAAA,CAAA+C,aAAA,CAAC3C,CAAC;IAACqD,KAAK,EAAC;EAAG,GAAEhB,WAAe,CACzB,CAEN,CAAC;AAET,CAAC;AAEDnB,cAAc,CAACoC,qBAAqB,GAAG,IAAI;AAE3C,eAAepC,cAAc"}
@@ -33,9 +33,9 @@ export default class HeightAnimation {
33
33
  isAnimating: boolean;
34
34
  __currentHeight: number;
35
35
  firstPaintStyle: {
36
- visibility: string;
37
- opacity: string;
38
- height: string;
36
+ readonly visibility: "hidden";
37
+ readonly opacity: "0";
38
+ readonly height: "auto";
39
39
  };
40
40
  constructor(opts?: HeightAnimationOptions);
41
41
  callAnimationStart(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"HeightAnimationInstance.js","names":["HeightAnimation","constructor","opts","_defineProperty","animate","visibility","opacity","height","isInBrowser","window","setState","setOptions","callAnimationStart","startTime","Date","now","firstTime","onStartStack","forEach","fn","state","callAnimationEnd","isAnimating","__currentHeight","removeEndEvents","onEndStack","addEndEvent","listener","_this$elem","_this$elem$addEventLi","handleTransitionEnd","e","canFinish","delay","duration","timeouts","push","setTimeout","events","elem","addEventListener","call","_this$elem2","_this$elem2$removeEve","removeEventListener","setElement","_this$elem3","_globalThis$animation","document","createElement","String","nodeName","toLowerCase","parentElement","globalThis","animationDuration","parseFloat","getComputedStyle","transitionDuration","Object","freeze","_objectSpread","getOptions","remove","stop","undefined","setAsOpen","setAsClosed","getHeight","_this$elem4","clientHeight","getUnknownHeight","_this$elem$parentNode","_clonedElem$parentNod","clonedElem","cloneNode","inputs","querySelectorAll","input","removeAttribute","key","firstPaintStyle","style","position","parentNode","insertBefore","nextSibling","elemWidth","clientWidth","clonedWidth","getAttribute","width","removeChild","onStart","onEnd","start","fromHeight","toHeight","requestAnimationFrame","reqId1","reqId2","id","clearTimeout","cancelAnimationFrame","open","shouldBypassAnimation","target","currentTarget","overflowY","readjust","close","adjustTo","endHeight","newHeight","_globalThis$animation2","Boolean","_globalThis$bypassTim","IS_TEST","bypassTime"],"sources":["../../../../src/components/height-animation/HeightAnimationInstance.ts"],"sourcesContent":["export type HeightAnimationOnStartStates =\n | 'opening'\n | 'closing'\n | 'adjusting'\nexport type HeightAnimationOnEndStates = 'opened' | 'closed' | 'adjusted'\nexport type HeightAnimationStates =\n | HeightAnimationOnStartStates\n | HeightAnimationOnEndStates\n | 'init'\nexport type HeightAnimationOptions = {\n animate?: boolean\n}\nexport type HeightAnimationOnStartCallback = (\n state: HeightAnimationStates\n) => void\nexport type HeightAnimationOnEndCallback = (\n state: HeightAnimationStates\n) => void\nexport type HeightAnimationOnStartStack =\n Array<HeightAnimationOnStartCallback>\nexport type HeightAnimationOnEndStack = Array<HeightAnimationOnEndCallback>\nexport type HeightAnimationEventListener = (e: Event) => void\nexport type HeightAnimationEvents = Array<HeightAnimationEventListener>\nexport type HeightAnimationElement = HTMLElement\nexport type HeightAnimationContainer = HTMLElement\nexport type HeightAnimationFromHeight = number\nexport type HeightAnimationToHeight = number\n\nexport default class HeightAnimation {\n private state: Readonly<HeightAnimationStates>\n isInBrowser: boolean\n onStartStack: HeightAnimationOnStartStack = []\n onEndStack: HeightAnimationOnEndStack = []\n events: HeightAnimationEvents = []\n opts: HeightAnimationOptions = { animate: true }\n elem: HeightAnimationElement\n reqId1: number\n reqId2: number\n resizeTimeout: NodeJS.Timeout\n timeouts: NodeJS.Timeout[] = []\n firstTime?: number = 0\n startTime?: number = 0\n duration?: number = 0\n isAnimating: boolean\n __currentHeight: number\n\n firstPaintStyle = {\n visibility: 'hidden',\n opacity: '0', // prevents before/after elements to be visible\n height: 'auto',\n }\n\n constructor(opts: HeightAnimationOptions = {}) {\n this.isInBrowser = typeof window !== 'undefined'\n this.setState('init')\n this.setOptions(opts)\n }\n\n callAnimationStart() {\n this.startTime = Date.now()\n if (!this.firstTime) {\n this.firstTime = this.startTime\n }\n if (this.onStartStack) {\n this.onStartStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n }\n callAnimationEnd() {\n this.isAnimating = false\n\n if (this.state !== 'opened') {\n delete this.__currentHeight\n }\n\n this.removeEndEvents()\n\n if (this.onEndStack) {\n this.onEndStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n }\n addEndEvent(listener: HeightAnimationEventListener) {\n this.removeEndEvents() // also, remove events on every open (but not on close!)\n\n const handleTransitionEnd = (e) => {\n if (this.canFinish()) {\n listener(e)\n } else {\n const delay = this.duration - (Date.now() - this.startTime)\n\n if (delay === -1) {\n listener(e)\n } else {\n this.timeouts.push(setTimeout(() => listener(e), delay))\n }\n }\n }\n\n this.events.push(handleTransitionEnd)\n this.elem?.addEventListener?.('transitionend', handleTransitionEnd)\n }\n removeEndEvents() {\n this.events.forEach((listener) => {\n this.elem?.removeEventListener?.('transitionend', listener)\n })\n this.events = []\n }\n\n // Public methods\n setElement(elem: HeightAnimationElement) {\n this.elem =\n elem ||\n (typeof document !== 'undefined' && document.createElement('div'))\n\n // TODO: remove when responsive tables are supported\n if (String(this.elem?.nodeName).toLowerCase() === 'td') {\n this.elem = this.elem.parentElement\n }\n\n this.duration =\n globalThis.animationDuration ??\n (parseFloat(window.getComputedStyle(this.elem).transitionDuration) *\n 1000 ||\n 400) // The default duration\n }\n setState(state: HeightAnimationStates) {\n this.state = Object.freeze(state)\n }\n setOptions(opts: HeightAnimationOptions) {\n this.opts = Object.freeze({ ...this.opts, ...opts })\n }\n getOptions() {\n return this.opts\n }\n remove() {\n this.stop()\n this.removeEndEvents()\n this.setState('init')\n this.isAnimating = false\n this.onEndStack = []\n this.onStartStack = []\n this.__currentHeight = undefined\n this.elem = undefined\n }\n setAsOpen() {\n if (this.state === 'opened') {\n return\n }\n this.setState('opening')\n this.callAnimationStart()\n this.setState('opened')\n this.callAnimationEnd()\n }\n setAsClosed() {\n if (this.state === 'closed') {\n return\n }\n this.setState('closing')\n this.callAnimationStart()\n this.setState('closed')\n this.callAnimationEnd()\n }\n getHeight() {\n return parseFloat(String(this.elem?.clientHeight)) || null\n }\n getUnknownHeight() {\n if (!this.elem) {\n return null\n }\n\n if (this.isAnimating && typeof this.__currentHeight !== 'undefined') {\n return this.__currentHeight\n }\n\n const clonedElem = this.elem.cloneNode(true) as HTMLElement\n const inputs = clonedElem.querySelectorAll('input')\n inputs.forEach((input) => {\n input.removeAttribute('name') // because type=\"radio\" will be else effected negatively\n input.removeAttribute('id') // don't put IDs twice in the DOM\n })\n\n // Hide the cloned element\n for (const key in this.firstPaintStyle) {\n clonedElem.style[key] = this.firstPaintStyle[key]\n }\n clonedElem.style.position = 'absolute' // not a part of the \"firstPaintStyle\"\n\n this.elem.parentNode?.insertBefore(clonedElem, this.elem.nextSibling)\n\n // When text is wrapped, we get different widths,\n // so we need to set the width to the original width\n const elemWidth = this.elem.clientWidth\n const clonedWidth =\n clonedElem.clientWidth ||\n // data-width is used for mockup testing with \"mockHeight\"\n parseFloat(clonedElem.getAttribute('data-width')) ||\n 0\n\n if (clonedWidth > elemWidth) {\n clonedElem.style.width = `${elemWidth}px`\n }\n\n const height =\n clonedElem.clientHeight ||\n // data-height is used for mockup testing with \"mockHeight\"\n parseFloat(clonedElem.getAttribute('data-height')) ||\n null\n\n clonedElem.parentNode?.removeChild(clonedElem)\n\n if (height) {\n this.__currentHeight = height\n }\n\n return height\n }\n onStart(fn: HeightAnimationOnStartCallback) {\n this.onStartStack.push(fn)\n }\n onEnd(fn: HeightAnimationOnEndCallback) {\n this.onEndStack.push(fn)\n }\n start(\n fromHeight: HeightAnimationFromHeight,\n toHeight: HeightAnimationToHeight\n ) {\n if (\n !this.elem ||\n !(\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n )\n ) {\n return\n }\n\n const opts = this.getOptions()\n if (opts.animate === false) {\n return\n }\n\n this.stop()\n this.isAnimating = true\n\n // make the animation\n this.reqId1 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return\n }\n\n this.elem.style.height = `${fromHeight}px`\n\n this.reqId2 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return\n }\n\n this.elem.style.height = `${toHeight}px`\n })\n })\n }\n stop() {\n this.timeouts.forEach((id) => clearTimeout(id))\n this.timeouts = []\n\n if (\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n ) {\n window.cancelAnimationFrame(this.reqId1)\n window.cancelAnimationFrame(this.reqId2)\n }\n }\n open() {\n if (\n this.state === 'opened' ||\n this.state === 'opening' ||\n this.shouldBypassAnimation()\n ) {\n this.setAsOpen()\n return\n }\n\n this.setState('opening')\n this.callAnimationStart()\n\n const toHeight = this.getUnknownHeight()\n\n this.addEndEvent((e) => {\n if (e.target === e.currentTarget || !e.currentTarget) {\n if (this.elem) {\n this.elem.style.overflowY = ''\n }\n this.setState('opened')\n this.readjust()\n }\n })\n\n this.start(0, toHeight)\n }\n close() {\n if (\n this.state === 'closed' ||\n this.state === 'closing' ||\n this.shouldBypassAnimation()\n ) {\n this.setAsClosed()\n return\n }\n\n this.setState('closing')\n this.callAnimationStart()\n\n const fromHeight = this.getHeight()\n\n this.addEndEvent((e) => {\n if (e.target === e.currentTarget || !e.currentTarget) {\n if (this.elem) {\n this.elem.style.visibility = 'hidden'\n this.elem.style.overflowY = 'clip'\n }\n this.setState('closed')\n this.callAnimationEnd()\n }\n })\n\n this.start(fromHeight, 0)\n }\n adjustTo(\n fromHeight: HeightAnimationFromHeight = null,\n toHeight: HeightAnimationToHeight = null\n ) {\n const opts = this.getOptions()\n\n if (\n !this.elem ||\n opts.animate === false ||\n this.state === 'opening' ||\n this.state === 'closing'\n ) {\n return\n }\n\n if (fromHeight === 0 || fromHeight === null) {\n fromHeight = this.getHeight()\n }\n if (toHeight === null) {\n toHeight = this.getUnknownHeight()\n }\n\n if (fromHeight === toHeight) {\n this.setState('adjusted')\n return\n }\n\n this.setState('adjusting')\n this.callAnimationStart()\n\n this.addEndEvent((e) => {\n if (\n this.state === 'adjusting' &&\n (e.target === e.currentTarget || !e.currentTarget)\n ) {\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n this.setState('adjusted')\n this.callAnimationEnd()\n }\n })\n\n this.start(fromHeight, toHeight)\n }\n readjust() {\n const endHeight = this.getHeight()\n\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n\n this.__currentHeight = undefined\n const newHeight = this.getUnknownHeight()\n\n // If the height has changed during the animation, we need to adjust it\n if (endHeight !== newHeight) {\n this.adjustTo(endHeight, newHeight)\n } else {\n this.callAnimationEnd()\n }\n }\n /**\n * Determines whether the animation can finish.\n * Check for certain states and if the time passed is too short.\n * With a so short first state change, we do not call animation end.\n */\n canFinish() {\n return Boolean(\n this.startTime &&\n Date.now() - this.startTime >\n (globalThis.animationDuration ?? this.duration)\n )\n }\n /**\n * Determines whether the animation should be bypassed.\n * Check for certain states and if the time passed is too short to be correct.\n * With a very short first state change, we skip animation.\n */\n shouldBypassAnimation() {\n const opts = this.getOptions()\n\n if (!this.elem || opts.animate === false) {\n return true\n }\n\n if (\n this.isInBrowser &&\n (globalThis.IS_TEST || globalThis.bypassTime === -1)\n ) {\n return false\n }\n\n return Boolean(\n this.firstTime &&\n Date.now() - this.firstTime < (globalThis.bypassTime ?? 100)\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"HeightAnimationInstance.js","names":["HeightAnimation","constructor","opts","_defineProperty","animate","visibility","opacity","height","isInBrowser","window","setState","setOptions","callAnimationStart","startTime","Date","now","firstTime","onStartStack","forEach","fn","state","callAnimationEnd","isAnimating","__currentHeight","removeEndEvents","onEndStack","addEndEvent","listener","_this$elem","_this$elem$addEventLi","handleTransitionEnd","e","canFinish","delay","duration","timeouts","push","setTimeout","events","elem","addEventListener","call","_this$elem2","_this$elem2$removeEve","removeEventListener","setElement","_this$elem3","_globalThis$animation","document","createElement","String","nodeName","toLowerCase","parentElement","globalThis","animationDuration","parseFloat","getComputedStyle","transitionDuration","Object","freeze","_objectSpread","getOptions","remove","stop","undefined","setAsOpen","setAsClosed","getHeight","_this$elem4","clientHeight","getUnknownHeight","_this$elem$parentNode","_clonedElem$parentNod","clonedElem","cloneNode","inputs","querySelectorAll","input","removeAttribute","key","firstPaintStyle","style","position","parentNode","insertBefore","nextSibling","elemWidth","clientWidth","clonedWidth","getAttribute","width","removeChild","onStart","onEnd","start","fromHeight","toHeight","requestAnimationFrame","reqId1","reqId2","id","clearTimeout","cancelAnimationFrame","open","shouldBypassAnimation","target","currentTarget","overflowY","readjust","close","adjustTo","endHeight","newHeight","_globalThis$animation2","Boolean","_globalThis$bypassTim","IS_TEST","bypassTime"],"sources":["../../../../src/components/height-animation/HeightAnimationInstance.ts"],"sourcesContent":["export type HeightAnimationOnStartStates =\n | 'opening'\n | 'closing'\n | 'adjusting'\nexport type HeightAnimationOnEndStates = 'opened' | 'closed' | 'adjusted'\nexport type HeightAnimationStates =\n | HeightAnimationOnStartStates\n | HeightAnimationOnEndStates\n | 'init'\nexport type HeightAnimationOptions = {\n animate?: boolean\n}\nexport type HeightAnimationOnStartCallback = (\n state: HeightAnimationStates\n) => void\nexport type HeightAnimationOnEndCallback = (\n state: HeightAnimationStates\n) => void\nexport type HeightAnimationOnStartStack =\n Array<HeightAnimationOnStartCallback>\nexport type HeightAnimationOnEndStack = Array<HeightAnimationOnEndCallback>\nexport type HeightAnimationEventListener = (e: Event) => void\nexport type HeightAnimationEvents = Array<HeightAnimationEventListener>\nexport type HeightAnimationElement = HTMLElement\nexport type HeightAnimationContainer = HTMLElement\nexport type HeightAnimationFromHeight = number\nexport type HeightAnimationToHeight = number\n\nexport default class HeightAnimation {\n private state: Readonly<HeightAnimationStates>\n isInBrowser: boolean\n onStartStack: HeightAnimationOnStartStack = []\n onEndStack: HeightAnimationOnEndStack = []\n events: HeightAnimationEvents = []\n opts: HeightAnimationOptions = { animate: true }\n elem: HeightAnimationElement\n reqId1: number\n reqId2: number\n resizeTimeout: NodeJS.Timeout\n timeouts: NodeJS.Timeout[] = []\n firstTime?: number = 0\n startTime?: number = 0\n duration?: number = 0\n isAnimating: boolean\n __currentHeight: number\n\n firstPaintStyle = {\n visibility: 'hidden',\n opacity: '0', // prevents before/after elements to be visible\n height: 'auto',\n } as const\n\n constructor(opts: HeightAnimationOptions = {}) {\n this.isInBrowser = typeof window !== 'undefined'\n this.setState('init')\n this.setOptions(opts)\n }\n\n callAnimationStart() {\n this.startTime = Date.now()\n if (!this.firstTime) {\n this.firstTime = this.startTime\n }\n if (this.onStartStack) {\n this.onStartStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n }\n callAnimationEnd() {\n this.isAnimating = false\n\n if (this.state !== 'opened') {\n delete this.__currentHeight\n }\n\n this.removeEndEvents()\n\n if (this.onEndStack) {\n this.onEndStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n }\n addEndEvent(listener: HeightAnimationEventListener) {\n this.removeEndEvents() // also, remove events on every open (but not on close!)\n\n const handleTransitionEnd = (e) => {\n if (this.canFinish()) {\n listener(e)\n } else {\n const delay = this.duration - (Date.now() - this.startTime)\n\n if (delay === -1) {\n listener(e)\n } else {\n this.timeouts.push(setTimeout(() => listener(e), delay))\n }\n }\n }\n\n this.events.push(handleTransitionEnd)\n this.elem?.addEventListener?.('transitionend', handleTransitionEnd)\n }\n removeEndEvents() {\n this.events.forEach((listener) => {\n this.elem?.removeEventListener?.('transitionend', listener)\n })\n this.events = []\n }\n\n // Public methods\n setElement(elem: HeightAnimationElement) {\n this.elem =\n elem ||\n (typeof document !== 'undefined' && document.createElement('div'))\n\n // TODO: remove when responsive tables are supported\n if (String(this.elem?.nodeName).toLowerCase() === 'td') {\n this.elem = this.elem.parentElement\n }\n\n this.duration =\n globalThis.animationDuration ??\n (parseFloat(window.getComputedStyle(this.elem).transitionDuration) *\n 1000 ||\n 400) // The default duration\n }\n setState(state: HeightAnimationStates) {\n this.state = Object.freeze(state)\n }\n setOptions(opts: HeightAnimationOptions) {\n this.opts = Object.freeze({ ...this.opts, ...opts })\n }\n getOptions() {\n return this.opts\n }\n remove() {\n this.stop()\n this.removeEndEvents()\n this.setState('init')\n this.isAnimating = false\n this.onEndStack = []\n this.onStartStack = []\n this.__currentHeight = undefined\n this.elem = undefined\n }\n setAsOpen() {\n if (this.state === 'opened') {\n return\n }\n this.setState('opening')\n this.callAnimationStart()\n this.setState('opened')\n this.callAnimationEnd()\n }\n setAsClosed() {\n if (this.state === 'closed') {\n return\n }\n this.setState('closing')\n this.callAnimationStart()\n this.setState('closed')\n this.callAnimationEnd()\n }\n getHeight() {\n return parseFloat(String(this.elem?.clientHeight)) || null\n }\n getUnknownHeight() {\n if (!this.elem) {\n return null\n }\n\n if (this.isAnimating && typeof this.__currentHeight !== 'undefined') {\n return this.__currentHeight\n }\n\n const clonedElem = this.elem.cloneNode(true) as HTMLElement\n const inputs = clonedElem.querySelectorAll('input')\n inputs.forEach((input) => {\n input.removeAttribute('name') // because type=\"radio\" will be else effected negatively\n input.removeAttribute('id') // don't put IDs twice in the DOM\n })\n\n // Hide the cloned element\n for (const key in this.firstPaintStyle) {\n clonedElem.style[key] = this.firstPaintStyle[key]\n }\n clonedElem.style.position = 'absolute' // not a part of the \"firstPaintStyle\"\n\n this.elem.parentNode?.insertBefore(clonedElem, this.elem.nextSibling)\n\n // When text is wrapped, we get different widths,\n // so we need to set the width to the original width\n const elemWidth = this.elem.clientWidth\n const clonedWidth =\n clonedElem.clientWidth ||\n // data-width is used for mockup testing with \"mockHeight\"\n parseFloat(clonedElem.getAttribute('data-width')) ||\n 0\n\n if (clonedWidth > elemWidth) {\n clonedElem.style.width = `${elemWidth}px`\n }\n\n const height =\n clonedElem.clientHeight ||\n // data-height is used for mockup testing with \"mockHeight\"\n parseFloat(clonedElem.getAttribute('data-height')) ||\n null\n\n clonedElem.parentNode?.removeChild(clonedElem)\n\n if (height) {\n this.__currentHeight = height\n }\n\n return height\n }\n onStart(fn: HeightAnimationOnStartCallback) {\n this.onStartStack.push(fn)\n }\n onEnd(fn: HeightAnimationOnEndCallback) {\n this.onEndStack.push(fn)\n }\n start(\n fromHeight: HeightAnimationFromHeight,\n toHeight: HeightAnimationToHeight\n ) {\n if (\n !this.elem ||\n !(\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n )\n ) {\n return\n }\n\n const opts = this.getOptions()\n if (opts.animate === false) {\n return\n }\n\n this.stop()\n this.isAnimating = true\n\n // make the animation\n this.reqId1 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return\n }\n\n this.elem.style.height = `${fromHeight}px`\n\n this.reqId2 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return\n }\n\n this.elem.style.height = `${toHeight}px`\n })\n })\n }\n stop() {\n this.timeouts.forEach((id) => clearTimeout(id))\n this.timeouts = []\n\n if (\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n ) {\n window.cancelAnimationFrame(this.reqId1)\n window.cancelAnimationFrame(this.reqId2)\n }\n }\n open() {\n if (\n this.state === 'opened' ||\n this.state === 'opening' ||\n this.shouldBypassAnimation()\n ) {\n this.setAsOpen()\n return\n }\n\n this.setState('opening')\n this.callAnimationStart()\n\n const toHeight = this.getUnknownHeight()\n\n this.addEndEvent((e) => {\n if (e.target === e.currentTarget || !e.currentTarget) {\n if (this.elem) {\n this.elem.style.overflowY = ''\n }\n this.setState('opened')\n this.readjust()\n }\n })\n\n this.start(0, toHeight)\n }\n close() {\n if (\n this.state === 'closed' ||\n this.state === 'closing' ||\n this.shouldBypassAnimation()\n ) {\n this.setAsClosed()\n return\n }\n\n this.setState('closing')\n this.callAnimationStart()\n\n const fromHeight = this.getHeight()\n\n this.addEndEvent((e) => {\n if (e.target === e.currentTarget || !e.currentTarget) {\n if (this.elem) {\n this.elem.style.visibility = 'hidden'\n this.elem.style.overflowY = 'clip'\n }\n this.setState('closed')\n this.callAnimationEnd()\n }\n })\n\n this.start(fromHeight, 0)\n }\n adjustTo(\n fromHeight: HeightAnimationFromHeight = null,\n toHeight: HeightAnimationToHeight = null\n ) {\n const opts = this.getOptions()\n\n if (\n !this.elem ||\n opts.animate === false ||\n this.state === 'opening' ||\n this.state === 'closing'\n ) {\n return\n }\n\n if (fromHeight === 0 || fromHeight === null) {\n fromHeight = this.getHeight()\n }\n if (toHeight === null) {\n toHeight = this.getUnknownHeight()\n }\n\n if (fromHeight === toHeight) {\n this.setState('adjusted')\n return\n }\n\n this.setState('adjusting')\n this.callAnimationStart()\n\n this.addEndEvent((e) => {\n if (\n this.state === 'adjusting' &&\n (e.target === e.currentTarget || !e.currentTarget)\n ) {\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n this.setState('adjusted')\n this.callAnimationEnd()\n }\n })\n\n this.start(fromHeight, toHeight)\n }\n readjust() {\n const endHeight = this.getHeight()\n\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n\n this.__currentHeight = undefined\n const newHeight = this.getUnknownHeight()\n\n // If the height has changed during the animation, we need to adjust it\n if (endHeight !== newHeight) {\n this.adjustTo(endHeight, newHeight)\n } else {\n this.callAnimationEnd()\n }\n }\n /**\n * Determines whether the animation can finish.\n * Check for certain states and if the time passed is too short.\n * With a so short first state change, we do not call animation end.\n */\n canFinish() {\n return Boolean(\n this.startTime &&\n Date.now() - this.startTime >\n (globalThis.animationDuration ?? this.duration)\n )\n }\n /**\n * Determines whether the animation should be bypassed.\n * Check for certain states and if the time passed is too short to be correct.\n * With a very short first state change, we skip animation.\n */\n shouldBypassAnimation() {\n const opts = this.getOptions()\n\n if (!this.elem || opts.animate === false) {\n return true\n }\n\n if (\n this.isInBrowser &&\n (globalThis.IS_TEST || globalThis.bypassTime === -1)\n ) {\n return false\n }\n\n return Boolean(\n this.firstTime &&\n Date.now() - this.firstTime < (globalThis.bypassTime ?? 100)\n )\n }\n}\n"],"mappings":"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"}
@@ -41,5 +41,9 @@ export declare function useHeightAnimation(targetRef: React.RefObject<HTMLElemen
41
41
  isVisible: boolean;
42
42
  isVisibleParallax: boolean;
43
43
  isAnimating: boolean;
44
- firstPaintStyle: React.CSSProperties;
44
+ firstPaintStyle: {
45
+ readonly visibility: "hidden";
46
+ readonly opacity: "0";
47
+ readonly height: "auto";
48
+ } | Record<string, never>;
45
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useHeightAnimation.js","names":["React","useMemo","useRef","useState","HeightAnimationInstance","useLayoutEffect","window","useEffect","useHeightAnimation","targetRef","open","animate","children","onInit","onOpen","onAnimationStart","onAnimationEnd","_instRef$current2","instRef","isInitialRenderRef","globalThis","readjustTime","isOpen","setIsOpen","isVisible","setIsVisible","isAnimating","setIsAnimating","isVisibleParallax","setParallax","current","_instRef$current","remove","setOptions","global","IS_TEST","onStart","state","onEnd","useOpenClose","useAdjust","firstPaintStyle","isInDOM","isTest","process","env","NODE_ENV","setElement","setAsOpen","setAsClosed","close","_targetRef$current","event","CustomEvent","dispatchEvent","run","bypassTime","_window$requestAnimat","_window","requestAnimationFrame","call","fromHeight","timer","Date","now","shouldAdjust","_instRef$current3","_instRef$current4","getHeight","elem","style","height","toHeight","adjustTo"],"sources":["../../../../src/components/height-animation/useHeightAnimation.tsx"],"sourcesContent":["import React, { useMemo, useRef, useState } from 'react'\nimport HeightAnimationInstance from './HeightAnimationInstance'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type useHeightAnimationOptions = {\n /**\n * Set to `true`, when initially `false` was given, to animate from 0px to auto.\n * Default: true\n */\n open?: boolean\n\n /**\n * Set to `false` to omit the animation.\n * Default: true\n */\n animate?: boolean\n\n /**\n * In order to let the Hook know when children has changed\n */\n children?: React.ReactNode | HTMLElement\n\n /**\n * Is called once before mounting the component (useLayoutEffect)\n */\n onInit?: (instance: HeightAnimationInstance) => void\n\n /**\n * Is called when fully opened or closed\n */\n onOpen?: (isOpen: boolean) => void\n\n /**\n * Is called when animation has started.\n */\n onAnimationStart?: (state: HeightAnimationOnStartTypes) => void\n\n /**\n * Is called when animation is done and the full height is reached.\n */\n onAnimationEnd?: (state: HeightAnimationOnEndTypes) => void\n}\n\nexport type HeightAnimationOnStartTypes =\n | 'opening'\n | 'closing'\n | 'adjusting'\n\nexport type HeightAnimationOnEndTypes = 'opened' | 'closed' | 'adjusted'\n\nexport function useHeightAnimation(\n targetRef: React.RefObject<HTMLElement>,\n {\n open = true,\n animate = true,\n children = null,\n onInit = null,\n onOpen = null,\n onAnimationStart = null,\n onAnimationEnd = null,\n }: useHeightAnimationOptions = {}\n) {\n const instRef = useRef<HeightAnimationInstance>(null)\n const isInitialRenderRef = useRef(\n typeof globalThis !== 'undefined'\n ? globalThis.readjustTime !== -1\n : true\n )\n\n const [isOpen, setIsOpen] = useState(open)\n const [isVisible, setIsVisible] = useState(false)\n const [isAnimating, setIsAnimating] = useState(false)\n const [isVisibleParallax, setParallax] = useState(open)\n\n useLayoutEffect(() => {\n instRef.current = new HeightAnimationInstance()\n onInit?.(instRef.current)\n return () => {\n instRef.current?.remove()\n instRef.current = null\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n instRef.current.setOptions({ animate })\n\n if (typeof global !== 'undefined' && globalThis.IS_TEST) {\n instRef.current.setOptions({ animate: false })\n }\n }, [animate])\n\n useLayoutEffect(() => {\n instRef.current.onStart((state: HeightAnimationOnStartTypes) => {\n switch (state) {\n case 'opening':\n setIsVisible(true)\n setParallax(true)\n setIsAnimating(true)\n break\n\n case 'closing':\n setParallax(false)\n setIsAnimating(true)\n break\n\n case 'adjusting':\n setIsAnimating(true)\n break\n }\n\n if (!isInitialRenderRef.current) {\n onAnimationStart?.(state)\n }\n })\n\n instRef.current.onEnd((state: HeightAnimationOnEndTypes) => {\n switch (state) {\n case 'opened':\n setIsVisible(true)\n setIsOpen(true)\n setIsAnimating(false)\n onOpen?.(true)\n break\n\n case 'closed':\n setIsVisible(false)\n setIsOpen(false)\n setParallax(false)\n setIsAnimating(false)\n onOpen?.(false)\n break\n\n case 'adjusted':\n setIsAnimating(false)\n break\n }\n\n if (!isInitialRenderRef.current) {\n onAnimationEnd?.(state)\n }\n })\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useOpenClose({ open, instRef, isInitialRenderRef, targetRef })\n useAdjust({ children, instRef, isInitialRenderRef, targetRef })\n\n /**\n * Returns the first paint style, to be used for the initial render,\n * to avoid flickering.\n */\n const firstPaintStyle = ((open &&\n !isVisible &&\n !isAnimating &&\n instRef.current?.firstPaintStyle) ||\n {}) as React.CSSProperties\n const isInDOM = open || isVisible\n\n return {\n open,\n isOpen,\n isInDOM,\n isVisible,\n isVisibleParallax,\n isAnimating,\n firstPaintStyle,\n }\n}\n\nfunction useOpenClose({ open, instRef, isInitialRenderRef, targetRef }) {\n const isTest =\n typeof process !== 'undefined' &&\n process.env.NODE_ENV === 'test' &&\n typeof globalThis.IS_TEST === 'undefined'\n\n useLayoutEffect(() => {\n instRef.current.setElement(targetRef.current)\n\n if (\n !targetRef.current ||\n (instRef.current.state === 'init' && isInitialRenderRef.current)\n ) {\n if (open) {\n instRef.current.setAsOpen()\n } else {\n instRef.current.setAsClosed()\n }\n } else {\n if (open) {\n instRef.current.open()\n } else {\n instRef.current.close()\n }\n }\n\n // For testing purposes, we need to trigger the transitionend event\n if (isTest) {\n const event = new CustomEvent('transitionend')\n targetRef.current?.dispatchEvent(event)\n }\n }, [open, targetRef, instRef, isInitialRenderRef, isTest])\n\n useLayoutEffect(() => {\n const run = () => {\n isInitialRenderRef.current = false\n }\n if (globalThis.bypassTime === -1 || isTest) {\n run()\n } else {\n window.requestAnimationFrame?.(run)\n }\n }, [isInitialRenderRef, isTest])\n}\n\nfunction useAdjust({ children, instRef, isInitialRenderRef, targetRef }) {\n const fromHeight = useRef(0)\n\n const [timer] = useState(() => Date.now())\n\n /**\n * Wait for some criteria and a certain time, before we adjust the height,\n * so it will not run when a open/close animation is running.\n */\n const shouldAdjust = () => {\n switch (instRef.current?.state) {\n case 'opened':\n case 'adjusted':\n case 'adjusting':\n return (\n !isInitialRenderRef.current &&\n Date.now() - timer > (globalThis.readjustTime || 100)\n )\n }\n\n return false\n }\n\n useMemo(() => {\n if (shouldAdjust()) {\n fromHeight.current = instRef.current?.getHeight()\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n if (shouldAdjust()) {\n /**\n * In certain cases, the targetRef.current is outdated, so we need to set it again.\n * E.g. in Tabs.js, when we switch tabs, the targetRef.current is not updated.\n */\n instRef.current.setElement(targetRef.current)\n\n /**\n * Ensure we don't have height, while we get the \"toHeight\" again.\n * We may move this inside of the HeightAnimationInstance class later,\n * but the \"GlobalStatus\" is currently relying on \"getUnknownHeight\" inside of adjustTo.\n */\n instRef.current.elem.style.height = ''\n\n /**\n * Use getHeight instead of getUnknownHeight because of the additional,\n * disturbing DOM manipulation.\n */\n const toHeight = instRef.current.getHeight()\n\n instRef.current.adjustTo(fromHeight.current, toHeight)\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useHeightAnimation.js","names":["React","useMemo","useRef","useState","HeightAnimationInstance","useLayoutEffect","window","useEffect","useHeightAnimation","targetRef","open","animate","children","onInit","onOpen","onAnimationStart","onAnimationEnd","_instRef$current2","instRef","isInitialRenderRef","globalThis","readjustTime","isOpen","setIsOpen","isVisible","setIsVisible","isAnimating","setIsAnimating","isVisibleParallax","setParallax","current","_instRef$current","remove","setOptions","global","IS_TEST","onStart","state","onEnd","useOpenClose","useAdjust","firstPaintStyle","isInDOM","isTest","process","env","NODE_ENV","setElement","setAsOpen","setAsClosed","close","_targetRef$current","event","CustomEvent","dispatchEvent","run","bypassTime","_window$requestAnimat","_window","requestAnimationFrame","call","fromHeight","timer","Date","now","shouldAdjust","_instRef$current3","_instRef$current4","getHeight","elem","style","height","toHeight","adjustTo"],"sources":["../../../../src/components/height-animation/useHeightAnimation.tsx"],"sourcesContent":["import React, { useMemo, useRef, useState } from 'react'\nimport HeightAnimationInstance from './HeightAnimationInstance'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type useHeightAnimationOptions = {\n /**\n * Set to `true`, when initially `false` was given, to animate from 0px to auto.\n * Default: true\n */\n open?: boolean\n\n /**\n * Set to `false` to omit the animation.\n * Default: true\n */\n animate?: boolean\n\n /**\n * In order to let the Hook know when children has changed\n */\n children?: React.ReactNode | HTMLElement\n\n /**\n * Is called once before mounting the component (useLayoutEffect)\n */\n onInit?: (instance: HeightAnimationInstance) => void\n\n /**\n * Is called when fully opened or closed\n */\n onOpen?: (isOpen: boolean) => void\n\n /**\n * Is called when animation has started.\n */\n onAnimationStart?: (state: HeightAnimationOnStartTypes) => void\n\n /**\n * Is called when animation is done and the full height is reached.\n */\n onAnimationEnd?: (state: HeightAnimationOnEndTypes) => void\n}\n\nexport type HeightAnimationOnStartTypes =\n | 'opening'\n | 'closing'\n | 'adjusting'\n\nexport type HeightAnimationOnEndTypes = 'opened' | 'closed' | 'adjusted'\n\nexport function useHeightAnimation(\n targetRef: React.RefObject<HTMLElement>,\n {\n open = true,\n animate = true,\n children = null,\n onInit = null,\n onOpen = null,\n onAnimationStart = null,\n onAnimationEnd = null,\n }: useHeightAnimationOptions = {}\n) {\n const instRef = useRef<HeightAnimationInstance>(null)\n const isInitialRenderRef = useRef(\n typeof globalThis !== 'undefined'\n ? globalThis.readjustTime !== -1\n : true\n )\n\n const [isOpen, setIsOpen] = useState(open)\n const [isVisible, setIsVisible] = useState(false)\n const [isAnimating, setIsAnimating] = useState(false)\n const [isVisibleParallax, setParallax] = useState(open)\n\n useLayoutEffect(() => {\n instRef.current = new HeightAnimationInstance()\n onInit?.(instRef.current)\n return () => {\n instRef.current?.remove()\n instRef.current = null\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n instRef.current.setOptions({ animate })\n\n if (typeof global !== 'undefined' && globalThis.IS_TEST) {\n instRef.current.setOptions({ animate: false })\n }\n }, [animate])\n\n useLayoutEffect(() => {\n instRef.current.onStart((state: HeightAnimationOnStartTypes) => {\n switch (state) {\n case 'opening':\n setIsVisible(true)\n setParallax(true)\n setIsAnimating(true)\n break\n\n case 'closing':\n setParallax(false)\n setIsAnimating(true)\n break\n\n case 'adjusting':\n setIsAnimating(true)\n break\n }\n\n if (!isInitialRenderRef.current) {\n onAnimationStart?.(state)\n }\n })\n\n instRef.current.onEnd((state: HeightAnimationOnEndTypes) => {\n switch (state) {\n case 'opened':\n setIsVisible(true)\n setIsOpen(true)\n setIsAnimating(false)\n onOpen?.(true)\n break\n\n case 'closed':\n setIsVisible(false)\n setIsOpen(false)\n setParallax(false)\n setIsAnimating(false)\n onOpen?.(false)\n break\n\n case 'adjusted':\n setIsAnimating(false)\n break\n }\n\n if (!isInitialRenderRef.current) {\n onAnimationEnd?.(state)\n }\n })\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useOpenClose({ open, instRef, isInitialRenderRef, targetRef })\n useAdjust({ children, instRef, isInitialRenderRef, targetRef })\n\n /**\n * Returns the first paint style, to be used for the initial render,\n * to avoid flickering.\n */\n const firstPaintStyle:\n | typeof instRef.current.firstPaintStyle\n | Record<string, never> =\n (open &&\n !isVisible &&\n !isAnimating &&\n instRef.current?.firstPaintStyle) ||\n {}\n const isInDOM = open || isVisible\n\n return {\n open,\n isOpen,\n isInDOM,\n isVisible,\n isVisibleParallax,\n isAnimating,\n firstPaintStyle,\n }\n}\n\nfunction useOpenClose({ open, instRef, isInitialRenderRef, targetRef }) {\n const isTest =\n typeof process !== 'undefined' &&\n process.env.NODE_ENV === 'test' &&\n typeof globalThis.IS_TEST === 'undefined'\n\n useLayoutEffect(() => {\n instRef.current.setElement(targetRef.current)\n\n if (\n !targetRef.current ||\n (instRef.current.state === 'init' && isInitialRenderRef.current)\n ) {\n if (open) {\n instRef.current.setAsOpen()\n } else {\n instRef.current.setAsClosed()\n }\n } else {\n if (open) {\n instRef.current.open()\n } else {\n instRef.current.close()\n }\n }\n\n // For testing purposes, we need to trigger the transitionend event\n if (isTest) {\n const event = new CustomEvent('transitionend')\n targetRef.current?.dispatchEvent(event)\n }\n }, [open, targetRef, instRef, isInitialRenderRef, isTest])\n\n useLayoutEffect(() => {\n const run = () => {\n isInitialRenderRef.current = false\n }\n if (globalThis.bypassTime === -1 || isTest) {\n run()\n } else {\n window.requestAnimationFrame?.(run)\n }\n }, [isInitialRenderRef, isTest])\n}\n\nfunction useAdjust({ children, instRef, isInitialRenderRef, targetRef }) {\n const fromHeight = useRef(0)\n\n const [timer] = useState(() => Date.now())\n\n /**\n * Wait for some criteria and a certain time, before we adjust the height,\n * so it will not run when a open/close animation is running.\n */\n const shouldAdjust = () => {\n switch (instRef.current?.state) {\n case 'opened':\n case 'adjusted':\n case 'adjusting':\n return (\n !isInitialRenderRef.current &&\n Date.now() - timer > (globalThis.readjustTime || 100)\n )\n }\n\n return false\n }\n\n useMemo(() => {\n if (shouldAdjust()) {\n fromHeight.current = instRef.current?.getHeight()\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n if (shouldAdjust()) {\n /**\n * In certain cases, the targetRef.current is outdated, so we need to set it again.\n * E.g. in Tabs.js, when we switch tabs, the targetRef.current is not updated.\n */\n instRef.current.setElement(targetRef.current)\n\n /**\n * Ensure we don't have height, while we get the \"toHeight\" again.\n * We may move this inside of the HeightAnimationInstance class later,\n * but the \"GlobalStatus\" is currently relying on \"getUnknownHeight\" inside of adjustTo.\n */\n instRef.current.elem.style.height = ''\n\n /**\n * Use getHeight instead of getUnknownHeight because of the additional,\n * disturbing DOM manipulation.\n */\n const toHeight = instRef.current.getHeight()\n\n instRef.current.adjustTo(fromHeight.current, toHeight)\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n"],"mappings":"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"}