@dnb/eufemia 10.4.1 → 10.5.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 (282) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/cjs/components/anchor/style/anchor-mixins.scss +17 -23
  3. package/cjs/components/anchor/style/dnb-anchor.css +26 -15
  4. package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
  5. package/cjs/components/anchor/style/dnb-anchor.scss +1 -1
  6. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +40 -21
  7. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  8. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +2 -7
  9. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.css +20 -10
  10. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  11. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.scss +4 -9
  12. package/cjs/components/autocomplete/Autocomplete.js +2 -2
  13. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  14. package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
  15. package/cjs/components/dialog/Dialog.d.ts +1 -1
  16. package/cjs/components/dialog/DialogContent.d.ts +1 -1
  17. package/cjs/components/dialog/DialogContent.js +4 -2
  18. package/cjs/components/dialog/DialogContent.js.map +1 -1
  19. package/cjs/components/dialog/parts/DialogAction.d.ts +5 -1
  20. package/cjs/components/dialog/parts/DialogAction.js +3 -2
  21. package/cjs/components/dialog/parts/DialogAction.js.map +1 -1
  22. package/cjs/components/form-row/FormRow.js.map +1 -1
  23. package/cjs/components/form-row/style/dnb-form-row.scss +2 -2
  24. package/cjs/components/form-set/FormSet.js.map +1 -1
  25. package/cjs/components/height-animation/HeightAnimation.d.ts +1 -1
  26. package/cjs/components/height-animation/HeightAnimation.js.map +1 -1
  27. package/cjs/components/height-animation/HeightAnimationInstance.js +14 -10
  28. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  29. package/cjs/components/height-animation/useHeightAnimation.js.map +1 -1
  30. package/cjs/components/icon/lib/SvgComparison.js.map +1 -1
  31. package/cjs/components/input/style/dnb-input.scss +1 -1
  32. package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
  33. package/cjs/components/input-masked/TextMask.js.map +1 -1
  34. package/cjs/components/modal/Modal.js +0 -2
  35. package/cjs/components/modal/Modal.js.map +1 -1
  36. package/cjs/components/modal/bodyScrollLock.js.map +1 -1
  37. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  38. package/cjs/components/number-format/style/dnb-number-format.css +0 -7
  39. package/cjs/components/number-format/style/dnb-number-format.scss +0 -1
  40. package/cjs/components/pagination/PaginationInfinity.js.map +1 -1
  41. package/cjs/components/radio/Radio.js.map +1 -1
  42. package/cjs/components/section/style/themes/dnb-section-theme-ui.css +14 -7
  43. package/cjs/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  44. package/cjs/components/slider/hooks/useSliderEvents.js.map +1 -1
  45. package/cjs/components/slider/types.d.ts +1 -1
  46. package/cjs/components/slider/types.js.map +1 -1
  47. package/cjs/components/space/SpacingHelper.js.map +1 -1
  48. package/cjs/components/table/TableAccordion.js.map +1 -1
  49. package/cjs/components/table/TableTr.js.map +1 -1
  50. package/cjs/components/tabs/Tabs.js +29 -23
  51. package/cjs/components/tabs/Tabs.js.map +1 -1
  52. package/cjs/components/textarea/Textarea.js.map +1 -1
  53. package/cjs/components/toggle-button/ToggleButton.js.map +1 -1
  54. package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  55. package/cjs/components/tooltip/TooltipContainer.js.map +1 -1
  56. package/cjs/components/upload/Upload.js +2 -2
  57. package/cjs/components/upload/Upload.js.map +1 -1
  58. package/cjs/components/upload/useUpload.d.ts +1 -1
  59. package/cjs/components/upload/useUpload.js +2 -2
  60. package/cjs/components/upload/useUpload.js.map +1 -1
  61. package/cjs/elements/blockquote/Blockquote.d.ts +1 -1
  62. package/cjs/elements/blockquote/Blockquote.js.map +1 -1
  63. package/cjs/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +0 -2
  64. package/cjs/extensions/payment-card/utils/Types.js.map +1 -1
  65. package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
  66. package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  67. package/cjs/shared/Eufemia.d.ts +1 -1
  68. package/cjs/shared/Eufemia.js +2 -2
  69. package/cjs/shared/Eufemia.js.map +1 -1
  70. package/cjs/shared/VisibilityByTheme.d.ts +1 -1
  71. package/cjs/shared/VisibilityByTheme.js.map +1 -1
  72. package/cjs/shared/helpers.d.ts +2 -2
  73. package/cjs/shared/helpers.js.map +1 -1
  74. package/cjs/style/dnb-ui-components.css +26 -22
  75. package/cjs/style/dnb-ui-components.min.css +1 -1
  76. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +17 -11
  77. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  78. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +60 -39
  79. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  80. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -7
  81. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +80 -50
  82. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  83. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +0 -7
  84. package/cjs/style/themes/theme-ui/ui-theme-basis.css +17 -11
  85. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  86. package/cjs/style/themes/theme-ui/ui-theme-components.css +60 -39
  87. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  88. package/cjs/style/themes/theme-ui/ui-theme-elements.css +17 -11
  89. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  90. package/cjs/style/themes/theme-ui/ui-theme-tags.css +23 -11
  91. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  92. package/components/anchor/style/anchor-mixins.scss +17 -23
  93. package/components/anchor/style/dnb-anchor.css +26 -15
  94. package/components/anchor/style/dnb-anchor.min.css +1 -1
  95. package/components/anchor/style/dnb-anchor.scss +1 -1
  96. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +40 -21
  97. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  98. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +2 -7
  99. package/components/anchor/style/themes/dnb-anchor-theme-ui.css +20 -10
  100. package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  101. package/components/anchor/style/themes/dnb-anchor-theme-ui.scss +4 -9
  102. package/components/autocomplete/Autocomplete.js +2 -2
  103. package/components/autocomplete/Autocomplete.js.map +1 -1
  104. package/components/date-picker/DatePickerCalendar.js.map +1 -1
  105. package/components/dialog/Dialog.d.ts +1 -1
  106. package/components/dialog/DialogContent.d.ts +1 -1
  107. package/components/dialog/DialogContent.js +4 -2
  108. package/components/dialog/DialogContent.js.map +1 -1
  109. package/components/dialog/parts/DialogAction.d.ts +5 -1
  110. package/components/dialog/parts/DialogAction.js +3 -2
  111. package/components/dialog/parts/DialogAction.js.map +1 -1
  112. package/components/form-row/FormRow.js.map +1 -1
  113. package/components/form-row/style/dnb-form-row.scss +2 -2
  114. package/components/form-set/FormSet.js.map +1 -1
  115. package/components/height-animation/HeightAnimation.d.ts +1 -1
  116. package/components/height-animation/HeightAnimation.js.map +1 -1
  117. package/components/height-animation/HeightAnimationInstance.js +14 -10
  118. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  119. package/components/height-animation/useHeightAnimation.js.map +1 -1
  120. package/components/icon/lib/SvgComparison.js.map +1 -1
  121. package/components/input/style/dnb-input.scss +1 -1
  122. package/components/input-masked/InputMaskedUtils.js.map +1 -1
  123. package/components/input-masked/TextMask.js.map +1 -1
  124. package/components/modal/Modal.js +0 -2
  125. package/components/modal/Modal.js.map +1 -1
  126. package/components/modal/bodyScrollLock.js.map +1 -1
  127. package/components/number-format/NumberUtils.js.map +1 -1
  128. package/components/number-format/style/dnb-number-format.css +0 -7
  129. package/components/number-format/style/dnb-number-format.scss +0 -1
  130. package/components/pagination/PaginationInfinity.js.map +1 -1
  131. package/components/radio/Radio.js.map +1 -1
  132. package/components/section/style/themes/dnb-section-theme-ui.css +14 -7
  133. package/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  134. package/components/slider/hooks/useSliderEvents.js.map +1 -1
  135. package/components/slider/types.d.ts +1 -1
  136. package/components/slider/types.js.map +1 -1
  137. package/components/space/SpacingHelper.js.map +1 -1
  138. package/components/table/TableAccordion.js.map +1 -1
  139. package/components/table/TableTr.js.map +1 -1
  140. package/components/tabs/Tabs.js +29 -23
  141. package/components/tabs/Tabs.js.map +1 -1
  142. package/components/textarea/Textarea.js.map +1 -1
  143. package/components/toggle-button/ToggleButton.js.map +1 -1
  144. package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  145. package/components/tooltip/TooltipContainer.js.map +1 -1
  146. package/components/upload/Upload.js +2 -2
  147. package/components/upload/Upload.js.map +1 -1
  148. package/components/upload/useUpload.d.ts +1 -1
  149. package/components/upload/useUpload.js +2 -2
  150. package/components/upload/useUpload.js.map +1 -1
  151. package/elements/blockquote/Blockquote.d.ts +1 -1
  152. package/elements/blockquote/Blockquote.js.map +1 -1
  153. package/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +0 -2
  154. package/es/components/anchor/style/anchor-mixins.scss +17 -23
  155. package/es/components/anchor/style/dnb-anchor.css +26 -15
  156. package/es/components/anchor/style/dnb-anchor.min.css +1 -1
  157. package/es/components/anchor/style/dnb-anchor.scss +1 -1
  158. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +40 -21
  159. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  160. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +2 -7
  161. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +20 -10
  162. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  163. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.scss +4 -9
  164. package/es/components/autocomplete/Autocomplete.js +2 -2
  165. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  166. package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
  167. package/es/components/dialog/Dialog.d.ts +1 -1
  168. package/es/components/dialog/DialogContent.d.ts +1 -1
  169. package/es/components/dialog/DialogContent.js +4 -2
  170. package/es/components/dialog/DialogContent.js.map +1 -1
  171. package/es/components/dialog/parts/DialogAction.d.ts +5 -1
  172. package/es/components/dialog/parts/DialogAction.js +3 -2
  173. package/es/components/dialog/parts/DialogAction.js.map +1 -1
  174. package/es/components/form-row/FormRow.js.map +1 -1
  175. package/es/components/form-row/style/dnb-form-row.scss +2 -2
  176. package/es/components/form-set/FormSet.js.map +1 -1
  177. package/es/components/height-animation/HeightAnimation.d.ts +1 -1
  178. package/es/components/height-animation/HeightAnimation.js.map +1 -1
  179. package/es/components/height-animation/HeightAnimationInstance.js +14 -10
  180. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  181. package/es/components/height-animation/useHeightAnimation.js.map +1 -1
  182. package/es/components/icon/lib/SvgComparison.js.map +1 -1
  183. package/es/components/input/style/dnb-input.scss +1 -1
  184. package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
  185. package/es/components/input-masked/TextMask.js.map +1 -1
  186. package/es/components/modal/Modal.js +0 -2
  187. package/es/components/modal/Modal.js.map +1 -1
  188. package/es/components/modal/bodyScrollLock.js.map +1 -1
  189. package/es/components/number-format/NumberUtils.js.map +1 -1
  190. package/es/components/number-format/style/dnb-number-format.css +0 -7
  191. package/es/components/number-format/style/dnb-number-format.scss +0 -1
  192. package/es/components/pagination/PaginationInfinity.js.map +1 -1
  193. package/es/components/radio/Radio.js.map +1 -1
  194. package/es/components/section/style/themes/dnb-section-theme-ui.css +14 -7
  195. package/es/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  196. package/es/components/slider/hooks/useSliderEvents.js.map +1 -1
  197. package/es/components/slider/types.d.ts +1 -1
  198. package/es/components/slider/types.js.map +1 -1
  199. package/es/components/space/SpacingHelper.js.map +1 -1
  200. package/es/components/table/TableAccordion.js.map +1 -1
  201. package/es/components/table/TableTr.js.map +1 -1
  202. package/es/components/tabs/Tabs.js +29 -23
  203. package/es/components/tabs/Tabs.js.map +1 -1
  204. package/es/components/textarea/Textarea.js.map +1 -1
  205. package/es/components/toggle-button/ToggleButton.js.map +1 -1
  206. package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  207. package/es/components/tooltip/TooltipContainer.js.map +1 -1
  208. package/es/components/upload/Upload.js +2 -2
  209. package/es/components/upload/Upload.js.map +1 -1
  210. package/es/components/upload/useUpload.d.ts +1 -1
  211. package/es/components/upload/useUpload.js +2 -2
  212. package/es/components/upload/useUpload.js.map +1 -1
  213. package/es/elements/blockquote/Blockquote.d.ts +1 -1
  214. package/es/elements/blockquote/Blockquote.js.map +1 -1
  215. package/es/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +0 -2
  216. package/es/extensions/payment-card/utils/Types.js.map +1 -1
  217. package/es/fragments/drawer-list/DrawerList.js.map +1 -1
  218. package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  219. package/es/shared/Eufemia.d.ts +1 -1
  220. package/es/shared/Eufemia.js +2 -2
  221. package/es/shared/Eufemia.js.map +1 -1
  222. package/es/shared/VisibilityByTheme.d.ts +1 -1
  223. package/es/shared/VisibilityByTheme.js.map +1 -1
  224. package/es/shared/helpers.d.ts +2 -2
  225. package/es/shared/helpers.js.map +1 -1
  226. package/es/style/dnb-ui-components.css +26 -22
  227. package/es/style/dnb-ui-components.min.css +1 -1
  228. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +17 -11
  229. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  230. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +60 -39
  231. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  232. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -7
  233. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +80 -50
  234. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  235. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +0 -7
  236. package/es/style/themes/theme-ui/ui-theme-basis.css +17 -11
  237. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  238. package/es/style/themes/theme-ui/ui-theme-components.css +60 -39
  239. package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  240. package/es/style/themes/theme-ui/ui-theme-elements.css +17 -11
  241. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  242. package/es/style/themes/theme-ui/ui-theme-tags.css +23 -11
  243. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  244. package/esm/dnb-ui-basis.min.mjs +1 -1
  245. package/esm/dnb-ui-components.min.mjs +1 -1
  246. package/esm/dnb-ui-elements.min.mjs +1 -1
  247. package/esm/dnb-ui-extensions.min.mjs +1 -1
  248. package/esm/dnb-ui-lib.min.mjs +1 -1
  249. package/extensions/payment-card/utils/Types.js.map +1 -1
  250. package/fragments/drawer-list/DrawerList.js.map +1 -1
  251. package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  252. package/package.json +1 -1
  253. package/shared/Eufemia.d.ts +1 -1
  254. package/shared/Eufemia.js +2 -2
  255. package/shared/Eufemia.js.map +1 -1
  256. package/shared/VisibilityByTheme.d.ts +1 -1
  257. package/shared/VisibilityByTheme.js.map +1 -1
  258. package/shared/helpers.d.ts +2 -2
  259. package/shared/helpers.js.map +1 -1
  260. package/style/dnb-ui-components.css +26 -22
  261. package/style/dnb-ui-components.min.css +1 -1
  262. package/style/themes/theme-eiendom/eiendom-theme-basis.css +17 -11
  263. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  264. package/style/themes/theme-eiendom/eiendom-theme-components.css +60 -39
  265. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  266. package/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -7
  267. package/style/themes/theme-sbanken/sbanken-theme-components.css +80 -50
  268. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  269. package/style/themes/theme-sbanken/sbanken-theme-elements.css +0 -7
  270. package/style/themes/theme-ui/ui-theme-basis.css +17 -11
  271. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  272. package/style/themes/theme-ui/ui-theme-components.css +60 -39
  273. package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  274. package/style/themes/theme-ui/ui-theme-elements.css +17 -11
  275. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  276. package/style/themes/theme-ui/ui-theme-tags.css +23 -11
  277. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  278. package/umd/dnb-ui-basis.min.js +1 -1
  279. package/umd/dnb-ui-components.min.js +1 -1
  280. package/umd/dnb-ui-elements.min.js +1 -1
  281. package/umd/dnb-ui-extensions.min.js +1 -1
  282. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"HeightAnimation.js","names":["React","classnames","useHeightAnimation","Space","HeightAnimation","_ref","open","animate","keepInDOM","showOverflow","element","duration","className","innerRef","children","onInit","onOpen","onAnimationEnd","rest","_objectWithoutProperties","_excluded","ref","useRef","props","isInDOM","isVisible","isVisibleParallax","isAnimating","style","createElement","_extends","undefined"],"sources":["../../../../src/components/height-animation/HeightAnimation.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n useHeightAnimation,\n useHeightAnimationOptions,\n} from './useHeightAnimation'\nimport Space, { SpaceProps } from '../space/Space'\n\nimport type { DynamicElement } from '../../shared/types'\n\nexport type HeightAnimationProps = {\n /**\n * Wheter the nested children content should be kept in the DOM or not.\n * Default: false\n */\n keepInDOM?: boolean\n\n /**\n * Set to `true` to omit the usage of \"overflow: hidden;\"\n * Default: false\n */\n showOverflow?: boolean\n\n /**\n * Set to `true` ensure the nested children content will be kept in the DOM.\n * Default: 400\n */\n duration?: number\n\n /**\n * Define a custom HTML Element.\n * Default: div\n */\n element?: DynamicElement\n\n /**\n * Send along a custom React Ref.\n * Default: null\n */\n innerRef?: React.RefObject<HTMLElement>\n} & useHeightAnimationOptions\n\nexport type HeightAnimationAllProps = HeightAnimationProps &\n SpacingProps &\n Omit<React.HTMLProps<HTMLElement>, 'ref'>\n\nexport default function HeightAnimation({\n open = true,\n animate = true,\n keepInDOM = false,\n showOverflow = false,\n element,\n duration,\n className,\n innerRef,\n children,\n onInit = null,\n onOpen = null,\n onAnimationEnd = null,\n ...rest\n}: HeightAnimationAllProps) {\n const ref = React.useRef<HTMLElement>()\n const props = rest as SpaceProps\n\n const { isInDOM, isVisible, isVisibleParallax, isAnimating } =\n useHeightAnimation(innerRef || ref, {\n open,\n animate,\n children,\n onInit,\n onOpen,\n onAnimationEnd,\n })\n\n if (!isInDOM && !keepInDOM) {\n return null\n }\n\n const style: React.CSSProperties = {}\n if (duration) {\n style['--duration'] = `${duration}ms`\n }\n\n return (\n <Space\n innerRef={innerRef || ref}\n element={element || 'div'}\n className={classnames(\n 'dnb-height-animation',\n isInDOM && 'dnb-height-animation--is-in-dom',\n isVisible && 'dnb-height-animation--is-visible',\n isVisibleParallax && 'dnb-height-animation--parallax',\n isAnimating && 'dnb-height-animation--animating',\n !isVisible &&\n !isAnimating &&\n !open &&\n 'dnb-height-animation--hidden',\n showOverflow && 'dnb-height-animation--show-overflow',\n className\n )}\n style={style}\n aria-hidden={keepInDOM ? !open : undefined}\n {...props}\n >\n {children}\n </Space>\n )\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAEnC,SACEC,kBAAkB,QAEb,sBAAsB;AAC7B,OAAOC,KAAK,MAAsB,gBAAgB;AAwClD,eAAe,SAASC,eAAeA,CAAAC,IAAA,EAcX;EAAA,IAdY;MACtCC,IAAI,GAAG,IAAI;MACXC,OAAO,GAAG,IAAI;MACdC,SAAS,GAAG,KAAK;MACjBC,YAAY,GAAG,KAAK;MACpBC,OAAO;MACPC,QAAQ;MACRC,SAAS;MACTC,QAAQ;MACRC,QAAQ;MACRC,MAAM,GAAG,IAAI;MACbC,MAAM,GAAG,IAAI;MACbC,cAAc,GAAG;IAEM,CAAC,GAAAZ,IAAA;IADrBa,IAAI,GAAAC,wBAAA,CAAAd,IAAA,EAAAe,SAAA;EAEP,MAAMC,GAAG,GAAGrB,KAAK,CAACsB,MAAM,CAAc,CAAC;EACvC,MAAMC,KAAK,GAAGL,IAAkB;EAEhC,MAAM;IAAEM,OAAO;IAAEC,SAAS;IAAEC,iBAAiB;IAAEC;EAAY,CAAC,GAC1DzB,kBAAkB,CAACW,QAAQ,IAAIQ,GAAG,EAAE;IAClCf,IAAI;IACJC,OAAO;IACPO,QAAQ;IACRC,MAAM;IACNC,MAAM;IACNC;EACF,CAAC,CAAC;EAEJ,IAAI,CAACO,OAAO,IAAI,CAAChB,SAAS,EAAE;IAC1B,OAAO,IAAI;EACb;EAEA,MAAMoB,KAA0B,GAAG,CAAC,CAAC;EACrC,IAAIjB,QAAQ,EAAE;IACZiB,KAAK,CAAC,YAAY,CAAC,GAAI,GAAEjB,QAAS,IAAG;EACvC;EAEA,OACEX,KAAA,CAAA6B,aAAA,CAAC1B,KAAK,EAAA2B,QAAA;IACJjB,QAAQ,EAAEA,QAAQ,IAAIQ,GAAI;IAC1BX,OAAO,EAAEA,OAAO,IAAI,KAAM;IAC1BE,SAAS,EAAEX,UAAU,CACnB,sBAAsB,EAUtBW,SAAS,EARTa,SAAS,GAAI,kCAAkC,GAI7C,CAACE,WAAW,IACZ,CAACrB,IAAI,IACL,8BAA8B,EAPhCkB,OAAO,IAAI,iCAAiC,EAE5CE,iBAAiB,IAAI,gCAAgC,EACrDC,WAAW,IAAI,iCAAiC,EAKhDlB,YAAY,IAAI,qCAElB,CAAE;IACFmB,KAAK,EAAEA,KAAM;IACb,eAAapB,SAAS,GAAG,CAACF,IAAI,GAAGyB;EAAU,GACvCR,KAAK,GAERT,QACI,CAAC;AAEZ"}
1
+ {"version":3,"file":"HeightAnimation.js","names":["React","classnames","useHeightAnimation","Space","HeightAnimation","_ref","open","animate","keepInDOM","showOverflow","element","duration","className","innerRef","children","onInit","onOpen","onAnimationEnd","rest","_objectWithoutProperties","_excluded","ref","useRef","props","isInDOM","isVisible","isVisibleParallax","isAnimating","style","createElement","_extends","undefined"],"sources":["../../../../src/components/height-animation/HeightAnimation.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n useHeightAnimation,\n useHeightAnimationOptions,\n} from './useHeightAnimation'\nimport Space, { SpaceProps } from '../space/Space'\n\nimport type { DynamicElement } from '../../shared/types'\n\nexport type HeightAnimationProps = {\n /**\n * Whether the nested children content should be kept in the DOM or not.\n * Default: false\n */\n keepInDOM?: boolean\n\n /**\n * Set to `true` to omit the usage of \"overflow: hidden;\"\n * Default: false\n */\n showOverflow?: boolean\n\n /**\n * Set to `true` ensure the nested children content will be kept in the DOM.\n * Default: 400\n */\n duration?: number\n\n /**\n * Define a custom HTML Element.\n * Default: div\n */\n element?: DynamicElement\n\n /**\n * Send along a custom React Ref.\n * Default: null\n */\n innerRef?: React.RefObject<HTMLElement>\n} & useHeightAnimationOptions\n\nexport type HeightAnimationAllProps = HeightAnimationProps &\n SpacingProps &\n Omit<React.HTMLProps<HTMLElement>, 'ref'>\n\nexport default function HeightAnimation({\n open = true,\n animate = true,\n keepInDOM = false,\n showOverflow = false,\n element,\n duration,\n className,\n innerRef,\n children,\n onInit = null,\n onOpen = null,\n onAnimationEnd = null,\n ...rest\n}: HeightAnimationAllProps) {\n const ref = React.useRef<HTMLElement>()\n const props = rest as SpaceProps\n\n const { isInDOM, isVisible, isVisibleParallax, isAnimating } =\n useHeightAnimation(innerRef || ref, {\n open,\n animate,\n children,\n onInit,\n onOpen,\n onAnimationEnd,\n })\n\n if (!isInDOM && !keepInDOM) {\n return null\n }\n\n const style: React.CSSProperties = {}\n if (duration) {\n style['--duration'] = `${duration}ms`\n }\n\n return (\n <Space\n innerRef={innerRef || ref}\n element={element || 'div'}\n className={classnames(\n 'dnb-height-animation',\n isInDOM && 'dnb-height-animation--is-in-dom',\n isVisible && 'dnb-height-animation--is-visible',\n isVisibleParallax && 'dnb-height-animation--parallax',\n isAnimating && 'dnb-height-animation--animating',\n !isVisible &&\n !isAnimating &&\n !open &&\n 'dnb-height-animation--hidden',\n showOverflow && 'dnb-height-animation--show-overflow',\n className\n )}\n style={style}\n aria-hidden={keepInDOM ? !open : undefined}\n {...props}\n >\n {children}\n </Space>\n )\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAEnC,SACEC,kBAAkB,QAEb,sBAAsB;AAC7B,OAAOC,KAAK,MAAsB,gBAAgB;AAwClD,eAAe,SAASC,eAAeA,CAAAC,IAAA,EAcX;EAAA,IAdY;MACtCC,IAAI,GAAG,IAAI;MACXC,OAAO,GAAG,IAAI;MACdC,SAAS,GAAG,KAAK;MACjBC,YAAY,GAAG,KAAK;MACpBC,OAAO;MACPC,QAAQ;MACRC,SAAS;MACTC,QAAQ;MACRC,QAAQ;MACRC,MAAM,GAAG,IAAI;MACbC,MAAM,GAAG,IAAI;MACbC,cAAc,GAAG;IAEM,CAAC,GAAAZ,IAAA;IADrBa,IAAI,GAAAC,wBAAA,CAAAd,IAAA,EAAAe,SAAA;EAEP,MAAMC,GAAG,GAAGrB,KAAK,CAACsB,MAAM,CAAc,CAAC;EACvC,MAAMC,KAAK,GAAGL,IAAkB;EAEhC,MAAM;IAAEM,OAAO;IAAEC,SAAS;IAAEC,iBAAiB;IAAEC;EAAY,CAAC,GAC1DzB,kBAAkB,CAACW,QAAQ,IAAIQ,GAAG,EAAE;IAClCf,IAAI;IACJC,OAAO;IACPO,QAAQ;IACRC,MAAM;IACNC,MAAM;IACNC;EACF,CAAC,CAAC;EAEJ,IAAI,CAACO,OAAO,IAAI,CAAChB,SAAS,EAAE;IAC1B,OAAO,IAAI;EACb;EAEA,MAAMoB,KAA0B,GAAG,CAAC,CAAC;EACrC,IAAIjB,QAAQ,EAAE;IACZiB,KAAK,CAAC,YAAY,CAAC,GAAI,GAAEjB,QAAS,IAAG;EACvC;EAEA,OACEX,KAAA,CAAA6B,aAAA,CAAC1B,KAAK,EAAA2B,QAAA;IACJjB,QAAQ,EAAEA,QAAQ,IAAIQ,GAAI;IAC1BX,OAAO,EAAEA,OAAO,IAAI,KAAM;IAC1BE,SAAS,EAAEX,UAAU,CACnB,sBAAsB,EAUtBW,SAAS,EARTa,SAAS,GAAI,kCAAkC,GAI7C,CAACE,WAAW,IACZ,CAACrB,IAAI,IACL,8BAA8B,EAPhCkB,OAAO,IAAI,iCAAiC,EAE5CE,iBAAiB,IAAI,gCAAgC,EACrDC,WAAW,IAAI,iCAAiC,EAKhDlB,YAAY,IAAI,qCAElB,CAAE;IACFmB,KAAK,EAAEA,KAAM;IACb,eAAapB,SAAS,GAAG,CAACF,IAAI,GAAGyB;EAAU,GACvCR,KAAK,GAERT,QACI,CAAC;AAEZ"}
@@ -23,11 +23,13 @@ export default class HeightAnimation {
23
23
  this.opts = opts;
24
24
  }
25
25
  _callOnStart() {
26
- this.onStartStack.forEach(fn => {
27
- if (typeof fn === 'function') {
28
- fn(this.state);
29
- }
30
- });
26
+ if (this.onStartStack) {
27
+ this.onStartStack.forEach(fn => {
28
+ if (typeof fn === 'function') {
29
+ fn(this.state);
30
+ }
31
+ });
32
+ }
31
33
  }
32
34
  _callOnEnd() {
33
35
  this.isAnimating = false;
@@ -35,11 +37,13 @@ export default class HeightAnimation {
35
37
  delete this.__currentHeight;
36
38
  }
37
39
  this._removeEndEvents();
38
- this.onEndStack.forEach(fn => {
39
- if (typeof fn === 'function') {
40
- fn(this.state);
41
- }
42
- });
40
+ if (this.onEndStack) {
41
+ this.onEndStack.forEach(fn => {
42
+ if (typeof fn === 'function') {
43
+ fn(this.state);
44
+ }
45
+ });
46
+ }
43
47
  }
44
48
  reset() {
45
49
  this.state = 'init';
@@ -1 +1 @@
1
- {"version":3,"file":"HeightAnimationInstance.js","names":["warn","HeightAnimation","constructor","opts","_defineProperty","isInBrowser","window","state","onStartStack","onEndStack","events","_callOnStart","forEach","fn","_callOnEnd","isAnimating","__currentHeight","_removeEndEvents","reset","_restore","elem","parentElement","style","position","visibility","height","width","_addEndEvents","listener","push","addEventListener","i","removeEventListener","splice","_emitTransitionEnd","event","CustomEvent","dispatchEvent","e","setElement","_this$elem","document","createElement","String","nodeName","toLowerCase","remove","stop","onResize","clearTimeout","resizeTimeout","getHeight","_this$elem2","parseFloat","clientHeight","getWidth","getComputedStyle","getUnknownHeight","onStart","onEnd","start","fromHeight","toHeight","animate","_window","_window$location","_window$location$href","_this$opts","location","href","includes","requestAnimationFrame","reqId1","reqId2","cancelAnimationFrame","adjustFrom","adjustTo","target","currentTarget","open","close"],"sources":["../../../../src/components/height-animation/HeightAnimationInstance.ts"],"sourcesContent":["import { warn } from '../../shared/component-helper'\n\nexport 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 isInBrowser: boolean\n state: HeightAnimationStates\n onStartStack: HeightAnimationOnStartStack\n onEndStack: HeightAnimationOnEndStack\n events: HeightAnimationEvents\n opts: HeightAnimationOptions\n elem: HeightAnimationElement\n reqId1: number\n reqId2: number\n resizeTimeout: NodeJS.Timeout\n isAnimating: boolean\n __currentHeight: number\n onResize: () => void\n\n constructor(opts: HeightAnimationOptions = {}) {\n this.isInBrowser = typeof window !== 'undefined'\n this.state = 'init'\n this.onStartStack = []\n this.onEndStack = []\n this.events = []\n this.opts = opts\n }\n\n // Private methods\n _callOnStart() {\n this.onStartStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n _callOnEnd() {\n this.isAnimating = false\n\n if (this.state !== 'opened') {\n delete this.__currentHeight\n }\n\n this._removeEndEvents()\n\n this.onEndStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n reset() {\n this.state = 'init'\n this.isAnimating = false\n this._removeEndEvents()\n this._restore()\n }\n _restore() {\n if (this.elem.parentElement) {\n this.elem.parentElement.style.position = ''\n }\n this.elem.style.position = ''\n this.elem.style.visibility = ''\n this.elem.style.height = '' // not sure about this\n this.elem.style.width = ''\n }\n _addEndEvents(listener: HeightAnimationEventListener) {\n this._removeEndEvents() // also, remove events on every open (but not on close!)\n\n this.events.push(listener)\n this.elem.addEventListener('transitionend', listener)\n }\n _removeEndEvents() {\n if (!this.elem) {\n return // stop here\n }\n\n this.events.forEach((listener, i) => {\n this.elem.removeEventListener('transitionend', listener)\n this.events.splice(i, 1)\n })\n }\n _emitTransitionEnd() {\n try {\n const event = new CustomEvent('transitionend')\n this.elem.dispatchEvent(event)\n } catch (e) {\n warn(e)\n }\n }\n\n // Public methods\n setElement(elem: HeightAnimationElement) {\n this._removeEndEvents() // in case element gets set several times\n\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 remove() {\n this.stop()\n this._removeEndEvents()\n this.isAnimating = false\n this.onStartStack = null\n this.onEndStack = null\n this.elem = null\n this.state = 'init'\n if (this.onResize && this.isInBrowser) {\n clearTimeout(this.resizeTimeout)\n window.removeEventListener('resize', this.onResize)\n }\n }\n getHeight() {\n return parseFloat(String(this.elem?.clientHeight)) || null\n }\n getWidth() {\n if (!this.isInBrowser) {\n return null\n }\n return window.getComputedStyle(this.elem).width\n }\n getUnknownHeight() {\n if (!this.elem) {\n return null\n }\n\n if (this.isAnimating && this.__currentHeight) {\n return this.__currentHeight\n }\n\n this.elem.style.width = this.getWidth()\n\n if (this.elem.parentElement) {\n this.elem.parentElement.style.position = 'relative'\n }\n this.elem.style.position = 'absolute'\n this.elem.style.visibility = 'hidden'\n this.elem.style.height = 'auto'\n\n this.__currentHeight = this.getHeight()\n\n this._restore()\n\n return this.__currentHeight\n }\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 { animate = true }: HeightAnimationOptions = {}\n ) {\n if (window?.location?.href?.includes('data-visual-test')) {\n animate = false\n }\n\n if (\n fromHeight === toHeight ||\n animate === false ||\n this.opts?.animate === false\n ) {\n this.elem.style.height = `${toHeight}px`\n\n this._callOnStart()\n\n this._emitTransitionEnd()\n\n return // stop here\n }\n\n if (\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n ) {\n this.stop()\n\n this.isAnimating = true\n\n // call the callbacks here, because then we do not call this during startup. This way we get an instant startup\n this._callOnStart()\n\n // make the animation\n this.reqId1 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return // stop here\n }\n\n this.elem.style.height = `${fromHeight}px`\n\n this.reqId2 = window.requestAnimationFrame(() => {\n this.elem.style.height = `${toHeight}px`\n })\n })\n }\n }\n stop() {\n if (\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n ) {\n window.cancelAnimationFrame(this.reqId1)\n window.cancelAnimationFrame(this.reqId2)\n }\n }\n /**\n * Deprecated\n * \"adjustFrom\" is only used by GlobalStatus.js\n * it should be replaced with \"useHeightAnimation\"\n */\n adjustFrom(height: HeightAnimationFromHeight = null) {\n if (!this.elem) {\n return\n }\n\n height = height || this.getHeight()\n this.elem.style.height = `${height}px`\n return height\n }\n adjustTo(\n fromHeight: HeightAnimationFromHeight = null,\n toHeight: HeightAnimationToHeight = null,\n { animate = true }: HeightAnimationOptions = {}\n ) {\n if (!this.elem) {\n return\n }\n\n if (fromHeight === null) {\n fromHeight = this.getHeight()\n }\n if (toHeight === null) {\n toHeight = this.getUnknownHeight()\n }\n\n this._addEndEvents((e) => {\n if (e.target === e.currentTarget) {\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n\n this.state = 'adjusted'\n this._callOnEnd()\n }\n })\n\n this.state = 'adjusting'\n this.start(fromHeight, toHeight, { animate })\n }\n open({ animate = true }: HeightAnimationOptions = {}) {\n if (\n !this.elem ||\n this.state === 'opened' ||\n this.state === 'opening'\n ) {\n return\n }\n\n const height = this.getUnknownHeight()\n\n this._addEndEvents((e) => {\n if (e.target === e.currentTarget) {\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n\n this.state = 'opened'\n this._callOnEnd()\n }\n })\n\n this.state = 'opening'\n this.start(0, height, { animate })\n }\n close({ animate = true }: HeightAnimationOptions = {}) {\n if (\n !this.elem ||\n this.state === 'closed' ||\n this.state === 'closing'\n ) {\n return\n }\n\n let height = this.getHeight()\n if (this.state === 'init') {\n height = this.getUnknownHeight()\n }\n\n this._addEndEvents((e) => {\n if (e.target === e.currentTarget) {\n if (this.elem) {\n this.elem.style.visibility = 'hidden'\n }\n\n this.state = 'closed'\n this._callOnEnd()\n }\n })\n\n this.state = 'closing'\n this.start(height, 0, { animate })\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"HeightAnimationInstance.js","names":["warn","HeightAnimation","constructor","opts","_defineProperty","isInBrowser","window","state","onStartStack","onEndStack","events","_callOnStart","forEach","fn","_callOnEnd","isAnimating","__currentHeight","_removeEndEvents","reset","_restore","elem","parentElement","style","position","visibility","height","width","_addEndEvents","listener","push","addEventListener","i","removeEventListener","splice","_emitTransitionEnd","event","CustomEvent","dispatchEvent","e","setElement","_this$elem","document","createElement","String","nodeName","toLowerCase","remove","stop","onResize","clearTimeout","resizeTimeout","getHeight","_this$elem2","parseFloat","clientHeight","getWidth","getComputedStyle","getUnknownHeight","onStart","onEnd","start","fromHeight","toHeight","animate","_window","_window$location","_window$location$href","_this$opts","location","href","includes","requestAnimationFrame","reqId1","reqId2","cancelAnimationFrame","adjustFrom","adjustTo","target","currentTarget","open","close"],"sources":["../../../../src/components/height-animation/HeightAnimationInstance.ts"],"sourcesContent":["import { warn } from '../../shared/component-helper'\n\nexport 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 isInBrowser: boolean\n state: HeightAnimationStates\n onStartStack: HeightAnimationOnStartStack\n onEndStack: HeightAnimationOnEndStack\n events: HeightAnimationEvents\n opts: HeightAnimationOptions\n elem: HeightAnimationElement\n reqId1: number\n reqId2: number\n resizeTimeout: NodeJS.Timeout\n isAnimating: boolean\n __currentHeight: number\n onResize: () => void\n\n constructor(opts: HeightAnimationOptions = {}) {\n this.isInBrowser = typeof window !== 'undefined'\n this.state = 'init'\n this.onStartStack = []\n this.onEndStack = []\n this.events = []\n this.opts = opts\n }\n\n // Private methods\n _callOnStart() {\n if (this.onStartStack) {\n this.onStartStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n }\n _callOnEnd() {\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 reset() {\n this.state = 'init'\n this.isAnimating = false\n this._removeEndEvents()\n this._restore()\n }\n _restore() {\n if (this.elem.parentElement) {\n this.elem.parentElement.style.position = ''\n }\n this.elem.style.position = ''\n this.elem.style.visibility = ''\n this.elem.style.height = '' // not sure about this\n this.elem.style.width = ''\n }\n _addEndEvents(listener: HeightAnimationEventListener) {\n this._removeEndEvents() // also, remove events on every open (but not on close!)\n\n this.events.push(listener)\n this.elem.addEventListener('transitionend', listener)\n }\n _removeEndEvents() {\n if (!this.elem) {\n return // stop here\n }\n\n this.events.forEach((listener, i) => {\n this.elem.removeEventListener('transitionend', listener)\n this.events.splice(i, 1)\n })\n }\n _emitTransitionEnd() {\n try {\n const event = new CustomEvent('transitionend')\n this.elem.dispatchEvent(event)\n } catch (e) {\n warn(e)\n }\n }\n\n // Public methods\n setElement(elem: HeightAnimationElement) {\n this._removeEndEvents() // in case element gets set several times\n\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 remove() {\n this.stop()\n this._removeEndEvents()\n this.isAnimating = false\n this.onStartStack = null\n this.onEndStack = null\n this.elem = null\n this.state = 'init'\n if (this.onResize && this.isInBrowser) {\n clearTimeout(this.resizeTimeout)\n window.removeEventListener('resize', this.onResize)\n }\n }\n getHeight() {\n return parseFloat(String(this.elem?.clientHeight)) || null\n }\n getWidth() {\n if (!this.isInBrowser) {\n return null\n }\n return window.getComputedStyle(this.elem).width\n }\n getUnknownHeight() {\n if (!this.elem) {\n return null\n }\n\n if (this.isAnimating && this.__currentHeight) {\n return this.__currentHeight\n }\n\n this.elem.style.width = this.getWidth()\n\n if (this.elem.parentElement) {\n this.elem.parentElement.style.position = 'relative'\n }\n this.elem.style.position = 'absolute'\n this.elem.style.visibility = 'hidden'\n this.elem.style.height = 'auto'\n\n this.__currentHeight = this.getHeight()\n\n this._restore()\n\n return this.__currentHeight\n }\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 { animate = true }: HeightAnimationOptions = {}\n ) {\n if (window?.location?.href?.includes('data-visual-test')) {\n animate = false\n }\n\n if (\n fromHeight === toHeight ||\n animate === false ||\n this.opts?.animate === false\n ) {\n this.elem.style.height = `${toHeight}px`\n\n this._callOnStart()\n\n this._emitTransitionEnd()\n\n return // stop here\n }\n\n if (\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n ) {\n this.stop()\n\n this.isAnimating = true\n\n // call the callbacks here, because then we do not call this during startup. This way we get an instant startup\n this._callOnStart()\n\n // make the animation\n this.reqId1 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return // stop here\n }\n\n this.elem.style.height = `${fromHeight}px`\n\n this.reqId2 = window.requestAnimationFrame(() => {\n this.elem.style.height = `${toHeight}px`\n })\n })\n }\n }\n stop() {\n if (\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n ) {\n window.cancelAnimationFrame(this.reqId1)\n window.cancelAnimationFrame(this.reqId2)\n }\n }\n /**\n * Deprecated\n * \"adjustFrom\" is only used by GlobalStatus.js\n * it should be replaced with \"useHeightAnimation\"\n */\n adjustFrom(height: HeightAnimationFromHeight = null) {\n if (!this.elem) {\n return\n }\n\n height = height || this.getHeight()\n this.elem.style.height = `${height}px`\n return height\n }\n adjustTo(\n fromHeight: HeightAnimationFromHeight = null,\n toHeight: HeightAnimationToHeight = null,\n { animate = true }: HeightAnimationOptions = {}\n ) {\n if (!this.elem) {\n return\n }\n\n if (fromHeight === null) {\n fromHeight = this.getHeight()\n }\n if (toHeight === null) {\n toHeight = this.getUnknownHeight()\n }\n\n this._addEndEvents((e) => {\n if (e.target === e.currentTarget) {\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n\n this.state = 'adjusted'\n this._callOnEnd()\n }\n })\n\n this.state = 'adjusting'\n this.start(fromHeight, toHeight, { animate })\n }\n open({ animate = true }: HeightAnimationOptions = {}) {\n if (\n !this.elem ||\n this.state === 'opened' ||\n this.state === 'opening'\n ) {\n return\n }\n\n const height = this.getUnknownHeight()\n\n this._addEndEvents((e) => {\n if (e.target === e.currentTarget) {\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n\n this.state = 'opened'\n this._callOnEnd()\n }\n })\n\n this.state = 'opening'\n this.start(0, height, { animate })\n }\n close({ animate = true }: HeightAnimationOptions = {}) {\n if (\n !this.elem ||\n this.state === 'closed' ||\n this.state === 'closing'\n ) {\n return\n }\n\n let height = this.getHeight()\n if (this.state === 'init') {\n height = this.getUnknownHeight()\n }\n\n this._addEndEvents((e) => {\n if (e.target === e.currentTarget) {\n if (this.elem) {\n this.elem.style.visibility = 'hidden'\n }\n\n this.state = 'closed'\n this._callOnEnd()\n }\n })\n\n this.state = 'closing'\n this.start(height, 0, { animate })\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useHeightAnimation.js","names":["React","HeightAnimationInstance","useLayoutEffect","window","useEffect","useHeightAnimation","targetRef","open","animate","children","onInit","onOpen","onAnimationEnd","animRef","useRef","isOpen","setIsOpen","useState","isVisible","setIsVisible","isAnimating","setIsAnimating","isVisibleParallax","setParallax","isInitialRender","setIsMounted","global","IS_TEST","current","onStart","state","onEnd","_animRef$current","remove","useOpenClose","useAdjust","isInDOM","anim","setElement","close","fromHeight","shouldAdjust","_animRef$current2","useMemo","_animRef$current3","getHeight","elem","style","height","adjustTo"],"sources":["../../../../src/components/height-animation/useHeightAnimation.tsx"],"sourcesContent":["import React 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 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 onAnimationEnd = null,\n }: useHeightAnimationOptions = {}\n) {\n const animRef = React.useRef<HeightAnimationInstance>(null)\n const [isOpen, setIsOpen] = React.useState(open)\n const [isVisible, setIsVisible] = React.useState(false)\n const [isAnimating, setIsAnimating] = React.useState(false)\n const [isVisibleParallax, setParallax] = React.useState(open)\n const [isInitialRender, setIsMounted] = React.useState(true)\n\n if (typeof global !== 'undefined' && global.IS_TEST) {\n animate = false\n }\n\n React.useEffect(() => setIsMounted(false), []) // eslint-disable-line\n\n useLayoutEffect(() => {\n animRef.current = new HeightAnimationInstance({ animate })\n\n if (isInitialRender && onInit) {\n onInit(animRef.current)\n }\n\n if (isInitialRender && isOpen) {\n onOpen?.(true)\n }\n\n if (animate) {\n animRef.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\n animRef.current.onEnd((state: HeightAnimationOnEndTypes) => {\n switch (state) {\n case 'opened':\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 onAnimationEnd?.(state)\n })\n }\n\n return () => animRef.current?.remove()\n }, [animate]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useOpenClose({ open, animRef, targetRef, isInitialRender })\n useAdjust({ children, animRef, isInitialRender })\n\n return {\n open,\n isOpen,\n isInDOM: open || isVisible,\n isVisible,\n isVisibleParallax,\n isAnimating,\n }\n}\n\nfunction useOpenClose({ open, animRef, targetRef, isInitialRender }) {\n useLayoutEffect(() => {\n if (!targetRef.current) {\n return // stop here\n }\n\n const anim = animRef.current\n\n anim.setElement(targetRef.current)\n\n if (open) {\n anim.open({ animate: !isInitialRender })\n } else if (anim.state === 'init') {\n anim.close({ animate: false })\n } else {\n anim.close()\n }\n }, [open, targetRef, animRef]) // eslint-disable-line\n}\n\nfunction useAdjust({ children, animRef, isInitialRender }) {\n const fromHeight = React.useRef(0)\n\n const shouldAdjust = () => {\n switch (animRef.current?.state) {\n case 'opened':\n case 'adjusted':\n case 'adjusting':\n return !isInitialRender\n }\n\n return false\n }\n\n React.useMemo(() => {\n if (shouldAdjust()) {\n fromHeight.current = animRef.current?.getHeight()\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n if (shouldAdjust()) {\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 relaying on \"getUnknownHeight\" inside of adjustTo\n */\n animRef.current.elem.style.height = ''\n\n animRef.current.adjustTo(\n fromHeight.current,\n animRef.current.getHeight() // use getHeight instead of getUnknownHeight because of the additional, disturbing DOM manipupation\n )\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","HeightAnimationInstance","useLayoutEffect","window","useEffect","useHeightAnimation","targetRef","open","animate","children","onInit","onOpen","onAnimationEnd","animRef","useRef","isOpen","setIsOpen","useState","isVisible","setIsVisible","isAnimating","setIsAnimating","isVisibleParallax","setParallax","isInitialRender","setIsMounted","global","IS_TEST","current","onStart","state","onEnd","_animRef$current","remove","useOpenClose","useAdjust","isInDOM","anim","setElement","close","fromHeight","shouldAdjust","_animRef$current2","useMemo","_animRef$current3","getHeight","elem","style","height","adjustTo"],"sources":["../../../../src/components/height-animation/useHeightAnimation.tsx"],"sourcesContent":["import React 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 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 onAnimationEnd = null,\n }: useHeightAnimationOptions = {}\n) {\n const animRef = React.useRef<HeightAnimationInstance>(null)\n const [isOpen, setIsOpen] = React.useState(open)\n const [isVisible, setIsVisible] = React.useState(false)\n const [isAnimating, setIsAnimating] = React.useState(false)\n const [isVisibleParallax, setParallax] = React.useState(open)\n const [isInitialRender, setIsMounted] = React.useState(true)\n\n if (typeof global !== 'undefined' && global.IS_TEST) {\n animate = false\n }\n\n React.useEffect(() => setIsMounted(false), []) // eslint-disable-line\n\n useLayoutEffect(() => {\n animRef.current = new HeightAnimationInstance({ animate })\n\n if (isInitialRender && onInit) {\n onInit(animRef.current)\n }\n\n if (isInitialRender && isOpen) {\n onOpen?.(true)\n }\n\n if (animate) {\n animRef.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\n animRef.current.onEnd((state: HeightAnimationOnEndTypes) => {\n switch (state) {\n case 'opened':\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 onAnimationEnd?.(state)\n })\n }\n\n return () => animRef.current?.remove()\n }, [animate]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useOpenClose({ open, animRef, targetRef, isInitialRender })\n useAdjust({ children, animRef, isInitialRender })\n\n return {\n open,\n isOpen,\n isInDOM: open || isVisible,\n isVisible,\n isVisibleParallax,\n isAnimating,\n }\n}\n\nfunction useOpenClose({ open, animRef, targetRef, isInitialRender }) {\n useLayoutEffect(() => {\n if (!targetRef.current) {\n return // stop here\n }\n\n const anim = animRef.current\n\n anim.setElement(targetRef.current)\n\n if (open) {\n anim.open({ animate: !isInitialRender })\n } else if (anim.state === 'init') {\n anim.close({ animate: false })\n } else {\n anim.close()\n }\n }, [open, targetRef, animRef]) // eslint-disable-line\n}\n\nfunction useAdjust({ children, animRef, isInitialRender }) {\n const fromHeight = React.useRef(0)\n\n const shouldAdjust = () => {\n switch (animRef.current?.state) {\n case 'opened':\n case 'adjusted':\n case 'adjusting':\n return !isInitialRender\n }\n\n return false\n }\n\n React.useMemo(() => {\n if (shouldAdjust()) {\n fromHeight.current = animRef.current?.getHeight()\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n if (shouldAdjust()) {\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 relaying on \"getUnknownHeight\" inside of adjustTo\n */\n animRef.current.elem.style.height = ''\n\n animRef.current.adjustTo(\n fromHeight.current,\n animRef.current.getHeight() // use getHeight instead of getUnknownHeight because of the additional, disturbing DOM manipulation\n )\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SvgComparison.js","names":["React","SvgComparison","props","createElement","Fragment","_extends","width","height","_path","d","stroke","fill","strokeweight","strokeLinecap","strokeLinejoin","_path2","clipRule","_path3","_path4","_path5","fillRule","_path6","_path7"],"sources":["../../../../../src/components/icon/lib/SvgComparison.js"],"sourcesContent":["/**\n * I used this tools:\n * to convert https://svg2jsx.herokuapp.com\n * to otimize https://jakearchibald.github.io/svgomg/\n */\n\nimport React from 'react'\n\nconst SvgComparison = (props) => (\n <React.Fragment>\n <svg width=\"24\" height=\"24\" {...props}>\n <path\n d=\"M.5 23.56h23\"\n stroke=\"black\"\n fill=\"white\"\n strokeweight=\"40\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n clipRule=\"evenodd\"\n d=\"M4.5 19.24a.49.49 0 0 0-.5-.48H2a.49.49 0 0 0-.5.48v4.32h3v-4.32zM10.5 14.44a.49.49 0 0 0-.5-.48H8a.49.49 0 0 0-.5.48v9.12h3v-9.12zM16.5 16.36a.49.49 0 0 0-.5-.48h-2a.49.49 0 0 0-.5.48v7.2h3v-7.2zM22.5 9.64a.49.49 0 0 0-.5-.48h-2a.49.49 0 0 0-.5.48v13.92h3V9.64zM3 13.48c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44zM9 8.68c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44zM15 10.6c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44zM21 4.36c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44z\"\n stroke=\"black\"\n fill=\"white\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4.261 11.032l3.587-2.87M10.424 7.695l3.153 1.009M19.8 3.784l-3.759 4.21\"\n stroke=\"black\"\n fill=\"white\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <svg width=\"24\" height=\"24\" {...props}>\n <path d=\"M.5 23.06a.5.5 0 1 0 0 1v-1zm23 1a.5.5 0 0 0 0-1v1zm-22-.5H1a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zm3 0H7a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zm3 0H13a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zm3 0H19a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zM3.949 10.642a.5.5 0 0 0 .624.78l-.624-.78zm4.211-2.09a.5.5 0 1 0-.624-.78l.624.78zm2.416-1.333a.5.5 0 1 0-.304.952l.304-.952zm2.849 1.961a.5.5 0 1 0 .304-.952l-.304.952zm6.748-5.063a.5.5 0 0 0-.746-.666l.746.666zm-4.505 3.544a.5.5 0 1 0 .746.666l-.746-.666zM.5 24.06h23v-1H.5v1zM5 19.24c0-.56-.467-.98-1-.98v1l.007.001a.02.02 0 0 1-.004-.006A.038.038 0 0 1 4 19.24h1zm-1-.98H2v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1l-.003.015a.02.02 0 0 1-.004.006L2 19.26v-1zm-1 .98v4.32h1v-4.32H1zm.5 4.82h3v-1h-3v1zm3.5-.5v-4.32H4v4.32h1zm6-9.12c0-.56-.467-.98-1-.98v1l.007.001-.004-.006A.04.04 0 0 1 10 14.44h1zm-1-.98H8v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1l-.003.015a.02.02 0 0 1-.004.006L8 14.46v-1zm-1 .98v9.12h1v-9.12H7zm.5 9.62h3v-1h-3v1zm3.5-.5v-9.12h-1v9.12h1zm6-7.2c0-.56-.467-.98-1-.98v1l.007.001-.004-.006A.04.04 0 0 1 16 16.36h1zm-1-.98h-2v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1a.04.04 0 0 1-.003.015.022.022 0 0 1-.004.006L14 16.38v-1zm-1 .98v7.2h1v-7.2h-1zm.5 7.7h3v-1h-3v1zm3.5-.5v-7.2h-1v7.2h1zm6-13.92c0-.56-.467-.98-1-.98v1l.007.001-.004-.006A.04.04 0 0 1 22 9.64h1zm-1-.98h-2v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1a.04.04 0 0 1-.003.015.022.022 0 0 1-.004.006L20 9.66v-1zm-1 .98v13.92h1V9.64h-1zm.5 14.42h3v-1h-3v1zm3.5-.5V9.64h-1v13.92h1zM3 13.98c1.085 0 2-.85 2-1.94H4c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zM3 10.1c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zm-2 1.94c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94H1zm8-2.86c1.085 0 2-.85 2-1.94h-1c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zM9 5.3c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zM7 7.24c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94H7zm8 3.86c1.085 0 2-.85 2-1.94h-1c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zm-2-1.94c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zm-2 1.94c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94h-1zm8-4.3c1.085 0 2-.85 2-1.94h-1c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zM21 .98c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zm-2 1.94c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94h-1zM4.573 11.422l3.587-2.87-.624-.78-3.587 2.87.624.78zm5.699-3.25l3.153 1.008.304-.952-3.153-1.01-.304.953zm9.155-4.721l-3.759 4.21.746.666 3.759-4.21-.746-.666z\" />\n </svg>\n <svg width=\"24\" height=\"24\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M.5 23.08a.5.5 0 0 1 .5-.5h23a.5.5 0 1 1 0 1H1a.5.5 0 0 1-.5-.5z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.5 18.76c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v4.32a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4.32zm1 .02v3.8h2v-3.8h-2zM7.5 13.96c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v9.12a.5.5 0 0 1-.5.5H8a.5.5 0 0 1-.5-.5v-9.12zm1 .02v8.6h2v-8.6h-2zM13.5 15.88c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v7.2a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-7.2zm1 .02v6.68h2V15.9h-2zM19.5 9.16c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v13.92a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V9.16zm1 .02v13.4h2V9.18h-2zM1.5 11.56c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94zM7.5 6.76c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94zM13.5 8.68c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94zM19.5 2.44c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.738 7.37a.5.5 0 0 1-.078.702l-3.587 2.87a.5.5 0 0 1-.624-.78l3.587-2.87a.5.5 0 0 1 .702.077zM10.448 7.063a.5.5 0 0 1 .628-.324l3.153 1.009a.5.5 0 1 1-.304.952l-3.153-1.009a.5.5 0 0 1-.324-.628zM20.633 2.931a.5.5 0 0 1 .04.706l-3.759 4.21a.5.5 0 0 1-.746-.666l3.76-4.21a.5.5 0 0 1 .705-.04z\"\n />\n </svg>\n </React.Fragment>\n)\n\nexport default SvgComparison\n"],"mappings":";;AAMA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,aAAa,GAAIC,KAAK,IAC1BF,KAAA,CAAAG,aAAA,CAACH,KAAK,CAACI,QAAQ,QACbJ,KAAA,CAAAG,aAAA,QAAAE,QAAA;EAAKC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC;AAAI,GAAKL,KAAK,GAAAM,KAAA,KAAAA,KAAA,GACnCR,KAAA,CAAAG,aAAA;EACEM,CAAC,EAAC,cAAc;EAChBC,MAAM,EAAC,OAAO;EACdC,IAAI,EAAC,OAAO;EACZC,YAAY,EAAC,IAAI;EACjBC,aAAa,EAAC,OAAO;EACrBC,cAAc,EAAC;AAAO,CACvB,CAAC,GAAAC,MAAA,KAAAA,MAAA,GACFf,KAAA,CAAAG,aAAA;EACEa,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC,mqBAAmqB;EACrqBC,MAAM,EAAC,OAAO;EACdC,IAAI,EAAC,OAAO;EACZE,aAAa,EAAC,OAAO;EACrBC,cAAc,EAAC;AAAO,CACvB,CAAC,GAAAG,MAAA,KAAAA,MAAA,GACFjB,KAAA,CAAAG,aAAA;EACEM,CAAC,EAAC,0EAA0E;EAC5EC,MAAM,EAAC,OAAO;EACdC,IAAI,EAAC,OAAO;EACZE,aAAa,EAAC,OAAO;EACrBC,cAAc,EAAC;AAAO,CACvB,CAAC,CACC,CAAC,EACNd,KAAA,CAAAG,aAAA,QAAAE,QAAA;EAAKC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC;AAAI,GAAKL,KAAK,GAAAgB,MAAA,KAAAA,MAAA,GACnClB,KAAA,CAAAG,aAAA;EAAMM,CAAC,EAAC;AAAo/E,CAAE,CAAC,CAC5/E,CAAC,EACNT,KAAA,CAAAG,aAAA,QAAAE,QAAA;EAAKC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC;AAAI,GAAKL,KAAK,GAAAiB,MAAA,KAAAA,MAAA,GACnCnB,KAAA,CAAAG,aAAA;EACEiB,QAAQ,EAAC,SAAS;EAClBJ,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC;AAAkE,CACrE,CAAC,GAAAY,MAAA,KAAAA,MAAA,GACFrB,KAAA,CAAAG,aAAA;EACEiB,QAAQ,EAAC,SAAS;EAClBJ,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC;AAAgoC,CACnoC,CAAC,GAAAa,MAAA,KAAAA,MAAA,GACFtB,KAAA,CAAAG,aAAA;EACEiB,QAAQ,EAAC,SAAS;EAClBJ,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC;AAAsS,CACzS,CAAC,CACC,CACS,CACjB;AAED,eAAeR,aAAa"}
1
+ {"version":3,"file":"SvgComparison.js","names":["React","SvgComparison","props","createElement","Fragment","_extends","width","height","_path","d","stroke","fill","strokeweight","strokeLinecap","strokeLinejoin","_path2","clipRule","_path3","_path4","_path5","fillRule","_path6","_path7"],"sources":["../../../../../src/components/icon/lib/SvgComparison.js"],"sourcesContent":["/**\n * I used this tools:\n * to convert https://svg2jsx.herokuapp.com\n * to optimize https://jakearchibald.github.io/svgomg/\n */\n\nimport React from 'react'\n\nconst SvgComparison = (props) => (\n <React.Fragment>\n <svg width=\"24\" height=\"24\" {...props}>\n <path\n d=\"M.5 23.56h23\"\n stroke=\"black\"\n fill=\"white\"\n strokeweight=\"40\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n clipRule=\"evenodd\"\n d=\"M4.5 19.24a.49.49 0 0 0-.5-.48H2a.49.49 0 0 0-.5.48v4.32h3v-4.32zM10.5 14.44a.49.49 0 0 0-.5-.48H8a.49.49 0 0 0-.5.48v9.12h3v-9.12zM16.5 16.36a.49.49 0 0 0-.5-.48h-2a.49.49 0 0 0-.5.48v7.2h3v-7.2zM22.5 9.64a.49.49 0 0 0-.5-.48h-2a.49.49 0 0 0-.5.48v13.92h3V9.64zM3 13.48c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44zM9 8.68c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44zM15 10.6c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44zM21 4.36c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44z\"\n stroke=\"black\"\n fill=\"white\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4.261 11.032l3.587-2.87M10.424 7.695l3.153 1.009M19.8 3.784l-3.759 4.21\"\n stroke=\"black\"\n fill=\"white\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <svg width=\"24\" height=\"24\" {...props}>\n <path d=\"M.5 23.06a.5.5 0 1 0 0 1v-1zm23 1a.5.5 0 0 0 0-1v1zm-22-.5H1a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zm3 0H7a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zm3 0H13a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zm3 0H19a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zM3.949 10.642a.5.5 0 0 0 .624.78l-.624-.78zm4.211-2.09a.5.5 0 1 0-.624-.78l.624.78zm2.416-1.333a.5.5 0 1 0-.304.952l.304-.952zm2.849 1.961a.5.5 0 1 0 .304-.952l-.304.952zm6.748-5.063a.5.5 0 0 0-.746-.666l.746.666zm-4.505 3.544a.5.5 0 1 0 .746.666l-.746-.666zM.5 24.06h23v-1H.5v1zM5 19.24c0-.56-.467-.98-1-.98v1l.007.001a.02.02 0 0 1-.004-.006A.038.038 0 0 1 4 19.24h1zm-1-.98H2v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1l-.003.015a.02.02 0 0 1-.004.006L2 19.26v-1zm-1 .98v4.32h1v-4.32H1zm.5 4.82h3v-1h-3v1zm3.5-.5v-4.32H4v4.32h1zm6-9.12c0-.56-.467-.98-1-.98v1l.007.001-.004-.006A.04.04 0 0 1 10 14.44h1zm-1-.98H8v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1l-.003.015a.02.02 0 0 1-.004.006L8 14.46v-1zm-1 .98v9.12h1v-9.12H7zm.5 9.62h3v-1h-3v1zm3.5-.5v-9.12h-1v9.12h1zm6-7.2c0-.56-.467-.98-1-.98v1l.007.001-.004-.006A.04.04 0 0 1 16 16.36h1zm-1-.98h-2v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1a.04.04 0 0 1-.003.015.022.022 0 0 1-.004.006L14 16.38v-1zm-1 .98v7.2h1v-7.2h-1zm.5 7.7h3v-1h-3v1zm3.5-.5v-7.2h-1v7.2h1zm6-13.92c0-.56-.467-.98-1-.98v1l.007.001-.004-.006A.04.04 0 0 1 22 9.64h1zm-1-.98h-2v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1a.04.04 0 0 1-.003.015.022.022 0 0 1-.004.006L20 9.66v-1zm-1 .98v13.92h1V9.64h-1zm.5 14.42h3v-1h-3v1zm3.5-.5V9.64h-1v13.92h1zM3 13.98c1.085 0 2-.85 2-1.94H4c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zM3 10.1c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zm-2 1.94c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94H1zm8-2.86c1.085 0 2-.85 2-1.94h-1c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zM9 5.3c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zM7 7.24c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94H7zm8 3.86c1.085 0 2-.85 2-1.94h-1c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zm-2-1.94c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zm-2 1.94c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94h-1zm8-4.3c1.085 0 2-.85 2-1.94h-1c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zM21 .98c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zm-2 1.94c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94h-1zM4.573 11.422l3.587-2.87-.624-.78-3.587 2.87.624.78zm5.699-3.25l3.153 1.008.304-.952-3.153-1.01-.304.953zm9.155-4.721l-3.759 4.21.746.666 3.759-4.21-.746-.666z\" />\n </svg>\n <svg width=\"24\" height=\"24\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M.5 23.08a.5.5 0 0 1 .5-.5h23a.5.5 0 1 1 0 1H1a.5.5 0 0 1-.5-.5z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.5 18.76c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v4.32a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4.32zm1 .02v3.8h2v-3.8h-2zM7.5 13.96c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v9.12a.5.5 0 0 1-.5.5H8a.5.5 0 0 1-.5-.5v-9.12zm1 .02v8.6h2v-8.6h-2zM13.5 15.88c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v7.2a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-7.2zm1 .02v6.68h2V15.9h-2zM19.5 9.16c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v13.92a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V9.16zm1 .02v13.4h2V9.18h-2zM1.5 11.56c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94zM7.5 6.76c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94zM13.5 8.68c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94zM19.5 2.44c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.738 7.37a.5.5 0 0 1-.078.702l-3.587 2.87a.5.5 0 0 1-.624-.78l3.587-2.87a.5.5 0 0 1 .702.077zM10.448 7.063a.5.5 0 0 1 .628-.324l3.153 1.009a.5.5 0 1 1-.304.952l-3.153-1.009a.5.5 0 0 1-.324-.628zM20.633 2.931a.5.5 0 0 1 .04.706l-3.759 4.21a.5.5 0 0 1-.746-.666l3.76-4.21a.5.5 0 0 1 .705-.04z\"\n />\n </svg>\n </React.Fragment>\n)\n\nexport default SvgComparison\n"],"mappings":";;AAMA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,aAAa,GAAIC,KAAK,IAC1BF,KAAA,CAAAG,aAAA,CAACH,KAAK,CAACI,QAAQ,QACbJ,KAAA,CAAAG,aAAA,QAAAE,QAAA;EAAKC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC;AAAI,GAAKL,KAAK,GAAAM,KAAA,KAAAA,KAAA,GACnCR,KAAA,CAAAG,aAAA;EACEM,CAAC,EAAC,cAAc;EAChBC,MAAM,EAAC,OAAO;EACdC,IAAI,EAAC,OAAO;EACZC,YAAY,EAAC,IAAI;EACjBC,aAAa,EAAC,OAAO;EACrBC,cAAc,EAAC;AAAO,CACvB,CAAC,GAAAC,MAAA,KAAAA,MAAA,GACFf,KAAA,CAAAG,aAAA;EACEa,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC,mqBAAmqB;EACrqBC,MAAM,EAAC,OAAO;EACdC,IAAI,EAAC,OAAO;EACZE,aAAa,EAAC,OAAO;EACrBC,cAAc,EAAC;AAAO,CACvB,CAAC,GAAAG,MAAA,KAAAA,MAAA,GACFjB,KAAA,CAAAG,aAAA;EACEM,CAAC,EAAC,0EAA0E;EAC5EC,MAAM,EAAC,OAAO;EACdC,IAAI,EAAC,OAAO;EACZE,aAAa,EAAC,OAAO;EACrBC,cAAc,EAAC;AAAO,CACvB,CAAC,CACC,CAAC,EACNd,KAAA,CAAAG,aAAA,QAAAE,QAAA;EAAKC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC;AAAI,GAAKL,KAAK,GAAAgB,MAAA,KAAAA,MAAA,GACnClB,KAAA,CAAAG,aAAA;EAAMM,CAAC,EAAC;AAAo/E,CAAE,CAAC,CAC5/E,CAAC,EACNT,KAAA,CAAAG,aAAA,QAAAE,QAAA;EAAKC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC;AAAI,GAAKL,KAAK,GAAAiB,MAAA,KAAAA,MAAA,GACnCnB,KAAA,CAAAG,aAAA;EACEiB,QAAQ,EAAC,SAAS;EAClBJ,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC;AAAkE,CACrE,CAAC,GAAAY,MAAA,KAAAA,MAAA,GACFrB,KAAA,CAAAG,aAAA;EACEiB,QAAQ,EAAC,SAAS;EAClBJ,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC;AAAgoC,CACnoC,CAAC,GAAAa,MAAA,KAAAA,MAAA,GACFtB,KAAA,CAAAG,aAAA;EACEiB,QAAQ,EAAC,SAAS;EAClBJ,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC;AAAsS,CACzS,CAAC,CACC,CACS,CACjB;AAED,eAAeR,aAAa"}
@@ -100,7 +100,7 @@
100
100
  left: 0;
101
101
  overflow: hidden;
102
102
 
103
- // NB: We may considder moving this part to include &__input
103
+ // NB: We may consider moving this part to include &__input
104
104
  white-space: nowrap;
105
105
  text-overflow: ellipsis;
106
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InputMaskedUtils.js","names":["format","getDecimalSeparator","getThousandsSeparator","warn","IS_ANDROID","IS_IOS","safeSetSelection","enableLocaleSupportWhen","enableNumberMaskWhen","invisibleSpace","isRequestingLocaleSupport","props","Object","entries","some","k","v","includes","isRequestingNumberMask","correctNumberValue","localValue","locale","maskParams","value","String","isNaN","parseFloat","decimalPos","indexOf","integerLimit","limit","integers","split","isNegative","length","decimals","slice","shouldHaveDecimals","allowDecimal","decimalLimit","number_format","options","_objectSpread","decimalSymbol","replace","localNumberValue","numberValue","endsWithDecimal","endsWith","endsWithZeroAndDecimal","startsWith","test","correctCaretPosition","element","correction","suffix","prefix","start","selectionStart","end","selectionEnd","suffixStart","suffixEnd","pos","undefined","placeholderChar","prefixStart","prefixEnd","char","mask","chars","l","i","RegExp","n","_mask$test","call","e","window","requestAnimationFrame","handlePercentMask","_String","_String$match","percent","match","handleCurrencyMask","mask_options","currency_mask","showMask","fix","currency","handleNumberMask","number_mask","getInputModeFromMask","allowNegative","instanceOf","handleThousandsSeparator","handleDecimalSeparator","fromJSON","str","fallback","JSON","parse"],"sources":["../../../../src/components/input-masked/InputMaskedUtils.js"],"sourcesContent":["/**\n * Web InputMasked Component\n *\n */\n\nimport {\n format,\n getDecimalSeparator,\n getThousandsSeparator,\n} from '../number-format/NumberUtils'\nimport { warn } from '../../shared/component-helper'\nimport { IS_ANDROID, IS_IOS } from '../../shared/helpers'\nimport { safeSetSelection } from './text-mask/createTextMaskInputElement'\n\nconst enableLocaleSupportWhen = ['as_number', 'as_percent', 'as_currency']\nconst enableNumberMaskWhen = [\n 'as_number',\n 'as_percent',\n 'as_currency',\n 'number_mask',\n 'currency_mask',\n]\n\nexport const invisibleSpace = '\\u200B'\n\n/**\n * Will return true if a prop needs Locale support\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingLocaleSupport = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableLocaleSupportWhen.includes(k)\n )\n}\n\n/**\n * Will return true if a prop will enable the internal NumberMask\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingNumberMask = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableNumberMaskWhen.includes(k)\n )\n}\n\n/**\n * Probably the most complex part of this component\n * It will modify a given value based on certain criteria's\n *\n * @param {object} param0 object with properties\n * @property {string} localValue optional – if given, it will uses its ending to determine of what to return\n * @property {number|string} value component property value\n * @property {object} context Eufemia Context\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns string Value\n */\nexport const correctNumberValue = ({\n localValue = null,\n props,\n locale,\n maskParams,\n}) => {\n let value = String(props.value)\n\n if (isNaN(parseFloat(value))) {\n return value\n }\n\n const decimalPos = value.indexOf('.')\n\n if (\n maskParams.integerLimit &&\n typeof maskParams.integerLimit === 'number'\n ) {\n const limit = maskParams.integerLimit\n const integers = value.split('.')[0]\n const isNegative = parseFloat(integers) < 0\n if (integers.length - (isNegative ? 1 : 0) > limit) {\n const decimals = decimalPos > 0 ? value.slice(decimalPos) : ''\n value = integers.slice(0, limit + (isNegative ? 1 : 0)) + decimals\n }\n }\n\n const shouldHaveDecimals =\n maskParams.allowDecimal ||\n (maskParams.decimalLimit > 0 && maskParams.allowDecimal !== false)\n\n if (!shouldHaveDecimals) {\n if (decimalPos > -1) {\n value = value.slice(0, decimalPos)\n }\n }\n\n /**\n * This only runs IF \"number_format\" is set – we do not use it else\n */\n if (props.number_format) {\n const options = {\n locale,\n decimals: 0,\n ...props.number_format,\n }\n if (shouldHaveDecimals) {\n options.decimals = maskParams.decimalLimit\n }\n value = format(value, options)\n }\n\n const decimalSymbol = maskParams.decimalSymbol\n value = value.replace('.', decimalSymbol)\n\n if (localValue !== null) {\n const localNumberValue = localValue.replace(/[^\\d,.-]/g, '')\n const numberValue = value.replace(/[^\\d,.-]/g, '')\n\n const endsWithDecimal = localNumberValue.endsWith(decimalSymbol)\n const endsWithZeroAndDecimal = localNumberValue.endsWith(\n `${decimalSymbol}0`\n )\n\n if (endsWithDecimal) {\n value = `${value}${decimalSymbol}`\n } else if (\n endsWithZeroAndDecimal &&\n !numberValue.endsWith(`${decimalSymbol}0`)\n ) {\n /**\n * When the users has 20,02, then hits \"backspace\",\n * the returned {numberValue} in the onChange event would then be \"20\",\n * but we want it to be 20,0\n */\n value = `${value}${decimalSymbol}0`\n }\n\n /**\n * If the user removes a leading digit and we have left a leading zero.\n *\n * The users enters these steps:\n * Step 1. 1012\n * Step 2. 012 -> user removes 1, now use \"localValue\"\n * Step 3. 2012\n *\n * If a dev listens on_change and sends the number value back in,\n * for this, we also ensure that \"numberValue\" and \"localNumberValue\" is the same.\n */\n if (\n localNumberValue !== '0' &&\n localNumberValue.startsWith('0') &&\n parseFloat(numberValue.replace(decimalSymbol, '.')) ===\n parseFloat(localNumberValue.replace(decimalSymbol, '.'))\n ) {\n value = localValue\n }\n\n /**\n * While typing;\n * If the local value is - or -0 we use it.\n * Also, because of invisible whitespace we remove everyting else\n */\n if (/^(-|-0)$/.test(localValue.replace(/[^\\d-0]/g, ''))) {\n value = localValue\n } else if (localNumberValue === '' && numberValue === '0') {\n value = ''\n }\n }\n\n return value\n}\n\n/**\n * This is a helper for setting the cursor position,\n * when it is on a not allowed position\n *\n * @param {Element} element Input Element\n * @param {Object} maskParams Mask parameters, containing eventually suffix or prefix\n */\nexport const correctCaretPosition = (element, maskParams, props) => {\n const correction = () => {\n try {\n const suffix = maskParams?.suffix\n const prefix = maskParams?.prefix\n\n const start = element.selectionStart\n const end = element.selectionEnd\n\n if (start !== end) {\n return // stop here\n }\n\n if (suffix || prefix) {\n const suffixStart = element.value.indexOf(suffix)\n const suffixEnd = suffixStart + suffix?.length\n let pos = undefined\n\n if (start >= suffixStart && start <= suffixEnd) {\n pos = suffixStart\n\n // If there is a placeholder,\n // and the user clicks after the suffix\n // we want the position to be \"before\" the placeholderChar\n if (\n maskParams.placeholderChar !== invisibleSpace &&\n element.value.length - 1 === String(suffix + prefix).length\n ) {\n pos = pos - 1\n }\n } else {\n const prefixStart = element.value.indexOf(prefix)\n const prefixEnd = prefixStart + prefix?.length || 0\n\n if (start >= prefixStart && start <= prefixEnd) {\n pos = prefixEnd\n }\n }\n\n const char = element.value.slice(pos - 1, pos)\n if (char === invisibleSpace) {\n pos = suffixStart - 1\n }\n\n if (!isNaN(parseFloat(pos))) {\n safeSetSelection(element, pos)\n }\n } else if (props?.mask && element.value.length === end) {\n const chars = element.value.split('')\n\n for (let l = chars.length, i = l - 1; i >= 0; i--) {\n const char = chars[i]\n const mask = props.mask[i]\n if (\n char &&\n char !== invisibleSpace &&\n mask instanceof RegExp &&\n mask.test(char)\n ) {\n for (let n = i + 1; n < l; n++) {\n const mask = props.mask[n]\n if (mask?.test?.(mask) === false) {\n safeSetSelection(element, n)\n break\n }\n }\n\n break\n }\n }\n }\n } catch (e) {\n warn(e)\n }\n }\n\n if (typeof window !== 'undefined') {\n window.requestAnimationFrame(correction)\n }\n}\n\n/**\n * Manipulate needed mask for handle: percent\n *\n * @param {object} param0 object with properties\n * @property {object} props Component property\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns object maskParams\n */\nexport const handlePercentMask = ({ props, locale, maskParams }) => {\n const value = format(props.value, { locale, percent: true })\n maskParams.suffix = String(value)?.match(/((\\s|)%)$/g, '$1')?.[0] || ' %'\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: currency\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} currency_mask Component property for change the currency parameters\n * @returns object maskParams\n */\nexport const handleCurrencyMask = ({ mask_options, currency_mask }) => {\n const maskParams = {\n showMask: true,\n placeholderChar: null,\n allowDecimal: true,\n decimalLimit: 2,\n decimalSymbol: ',',\n ...mask_options,\n ...currency_mask,\n }\n\n const fix =\n typeof currency_mask === 'string'\n ? currency_mask\n : typeof maskParams.currency === 'string'\n ? maskParams.currency\n : 'kr'\n\n maskParams.suffix = ` ${fix}`\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: number\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} number_mask Component property for change the number parameters\n * @returns object maskParams\n */\nexport const handleNumberMask = ({ mask_options, number_mask }) => {\n const maskParams = {\n decimalSymbol: ',',\n ...mask_options,\n ...number_mask,\n }\n\n if (typeof maskParams.allowDecimal === 'undefined') {\n maskParams.allowDecimal = maskParams.decimalLimit > 0\n }\n\n return maskParams\n}\n\n/**\n * Returns the type of what inputMode should be used\n *\n * @param {function} mask mask function\n * @returns undefined|decimal|numeric\n */\nexport function getInputModeFromMask(mask) {\n const maskParams = mask?.maskParams\n\n // because of the missing minus key, we still have to use text on Android and iOS\n if ((IS_ANDROID || IS_IOS) && maskParams?.allowNegative !== false) {\n return undefined\n }\n\n if (maskParams && mask?.instanceOf === 'createNumberMask') {\n return maskParams.allowDecimal && maskParams.decimalLimit !== 0\n ? 'decimal'\n : 'numeric'\n }\n return undefined\n}\n\n/**\n * Returns the thousands separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleThousandsSeparator(locale) {\n return getThousandsSeparator(locale).replace(' ', ' ') // replace non-breaking space with a regular space\n}\n\n/**\n * Returns the decimal separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleDecimalSeparator(locale) {\n let decimalSymbol = getDecimalSeparator(locale)\n\n return decimalSymbol\n}\n\n/**\n * Will take a JSON and return it parsed\n *\n * @param {string} str\n * @param {*} fallback optional fallback\n * @returns parsed json\n */\nexport function fromJSON(str, fallback = null) {\n if (typeof str === 'string' && str[0] === '{') {\n return JSON.parse(str)\n }\n\n return str || fallback\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"InputMaskedUtils.js","names":["format","getDecimalSeparator","getThousandsSeparator","warn","IS_ANDROID","IS_IOS","safeSetSelection","enableLocaleSupportWhen","enableNumberMaskWhen","invisibleSpace","isRequestingLocaleSupport","props","Object","entries","some","k","v","includes","isRequestingNumberMask","correctNumberValue","localValue","locale","maskParams","value","String","isNaN","parseFloat","decimalPos","indexOf","integerLimit","limit","integers","split","isNegative","length","decimals","slice","shouldHaveDecimals","allowDecimal","decimalLimit","number_format","options","_objectSpread","decimalSymbol","replace","localNumberValue","numberValue","endsWithDecimal","endsWith","endsWithZeroAndDecimal","startsWith","test","correctCaretPosition","element","correction","suffix","prefix","start","selectionStart","end","selectionEnd","suffixStart","suffixEnd","pos","undefined","placeholderChar","prefixStart","prefixEnd","char","mask","chars","l","i","RegExp","n","_mask$test","call","e","window","requestAnimationFrame","handlePercentMask","_String","_String$match","percent","match","handleCurrencyMask","mask_options","currency_mask","showMask","fix","currency","handleNumberMask","number_mask","getInputModeFromMask","allowNegative","instanceOf","handleThousandsSeparator","handleDecimalSeparator","fromJSON","str","fallback","JSON","parse"],"sources":["../../../../src/components/input-masked/InputMaskedUtils.js"],"sourcesContent":["/**\n * Web InputMasked Component\n *\n */\n\nimport {\n format,\n getDecimalSeparator,\n getThousandsSeparator,\n} from '../number-format/NumberUtils'\nimport { warn } from '../../shared/component-helper'\nimport { IS_ANDROID, IS_IOS } from '../../shared/helpers'\nimport { safeSetSelection } from './text-mask/createTextMaskInputElement'\n\nconst enableLocaleSupportWhen = ['as_number', 'as_percent', 'as_currency']\nconst enableNumberMaskWhen = [\n 'as_number',\n 'as_percent',\n 'as_currency',\n 'number_mask',\n 'currency_mask',\n]\n\nexport const invisibleSpace = '\\u200B'\n\n/**\n * Will return true if a prop needs Locale support\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingLocaleSupport = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableLocaleSupportWhen.includes(k)\n )\n}\n\n/**\n * Will return true if a prop will enable the internal NumberMask\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingNumberMask = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableNumberMaskWhen.includes(k)\n )\n}\n\n/**\n * Probably the most complex part of this component\n * It will modify a given value based on certain criteria's\n *\n * @param {object} param0 object with properties\n * @property {string} localValue optional – if given, it will uses its ending to determine of what to return\n * @property {number|string} value component property value\n * @property {object} context Eufemia Context\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns string Value\n */\nexport const correctNumberValue = ({\n localValue = null,\n props,\n locale,\n maskParams,\n}) => {\n let value = String(props.value)\n\n if (isNaN(parseFloat(value))) {\n return value\n }\n\n const decimalPos = value.indexOf('.')\n\n if (\n maskParams.integerLimit &&\n typeof maskParams.integerLimit === 'number'\n ) {\n const limit = maskParams.integerLimit\n const integers = value.split('.')[0]\n const isNegative = parseFloat(integers) < 0\n if (integers.length - (isNegative ? 1 : 0) > limit) {\n const decimals = decimalPos > 0 ? value.slice(decimalPos) : ''\n value = integers.slice(0, limit + (isNegative ? 1 : 0)) + decimals\n }\n }\n\n const shouldHaveDecimals =\n maskParams.allowDecimal ||\n (maskParams.decimalLimit > 0 && maskParams.allowDecimal !== false)\n\n if (!shouldHaveDecimals) {\n if (decimalPos > -1) {\n value = value.slice(0, decimalPos)\n }\n }\n\n /**\n * This only runs IF \"number_format\" is set – we do not use it else\n */\n if (props.number_format) {\n const options = {\n locale,\n decimals: 0,\n ...props.number_format,\n }\n if (shouldHaveDecimals) {\n options.decimals = maskParams.decimalLimit\n }\n value = format(value, options)\n }\n\n const decimalSymbol = maskParams.decimalSymbol\n value = value.replace('.', decimalSymbol)\n\n if (localValue !== null) {\n const localNumberValue = localValue.replace(/[^\\d,.-]/g, '')\n const numberValue = value.replace(/[^\\d,.-]/g, '')\n\n const endsWithDecimal = localNumberValue.endsWith(decimalSymbol)\n const endsWithZeroAndDecimal = localNumberValue.endsWith(\n `${decimalSymbol}0`\n )\n\n if (endsWithDecimal) {\n value = `${value}${decimalSymbol}`\n } else if (\n endsWithZeroAndDecimal &&\n !numberValue.endsWith(`${decimalSymbol}0`)\n ) {\n /**\n * When the users has 20,02, then hits \"backspace\",\n * the returned {numberValue} in the onChange event would then be \"20\",\n * but we want it to be 20,0\n */\n value = `${value}${decimalSymbol}0`\n }\n\n /**\n * If the user removes a leading digit and we have left a leading zero.\n *\n * The users enters these steps:\n * Step 1. 1012\n * Step 2. 012 -> user removes 1, now use \"localValue\"\n * Step 3. 2012\n *\n * If a dev listens on_change and sends the number value back in,\n * for this, we also ensure that \"numberValue\" and \"localNumberValue\" is the same.\n */\n if (\n localNumberValue !== '0' &&\n localNumberValue.startsWith('0') &&\n parseFloat(numberValue.replace(decimalSymbol, '.')) ===\n parseFloat(localNumberValue.replace(decimalSymbol, '.'))\n ) {\n value = localValue\n }\n\n /**\n * While typing;\n * If the local value is - or -0 we use it.\n * Also, because of invisible whitespace we remove everything else\n */\n if (/^(-|-0)$/.test(localValue.replace(/[^\\d-0]/g, ''))) {\n value = localValue\n } else if (localNumberValue === '' && numberValue === '0') {\n value = ''\n }\n }\n\n return value\n}\n\n/**\n * This is a helper for setting the cursor position,\n * when it is on a not allowed position\n *\n * @param {Element} element Input Element\n * @param {Object} maskParams Mask parameters, containing eventually suffix or prefix\n */\nexport const correctCaretPosition = (element, maskParams, props) => {\n const correction = () => {\n try {\n const suffix = maskParams?.suffix\n const prefix = maskParams?.prefix\n\n const start = element.selectionStart\n const end = element.selectionEnd\n\n if (start !== end) {\n return // stop here\n }\n\n if (suffix || prefix) {\n const suffixStart = element.value.indexOf(suffix)\n const suffixEnd = suffixStart + suffix?.length\n let pos = undefined\n\n if (start >= suffixStart && start <= suffixEnd) {\n pos = suffixStart\n\n // If there is a placeholder,\n // and the user clicks after the suffix\n // we want the position to be \"before\" the placeholderChar\n if (\n maskParams.placeholderChar !== invisibleSpace &&\n element.value.length - 1 === String(suffix + prefix).length\n ) {\n pos = pos - 1\n }\n } else {\n const prefixStart = element.value.indexOf(prefix)\n const prefixEnd = prefixStart + prefix?.length || 0\n\n if (start >= prefixStart && start <= prefixEnd) {\n pos = prefixEnd\n }\n }\n\n const char = element.value.slice(pos - 1, pos)\n if (char === invisibleSpace) {\n pos = suffixStart - 1\n }\n\n if (!isNaN(parseFloat(pos))) {\n safeSetSelection(element, pos)\n }\n } else if (props?.mask && element.value.length === end) {\n const chars = element.value.split('')\n\n for (let l = chars.length, i = l - 1; i >= 0; i--) {\n const char = chars[i]\n const mask = props.mask[i]\n if (\n char &&\n char !== invisibleSpace &&\n mask instanceof RegExp &&\n mask.test(char)\n ) {\n for (let n = i + 1; n < l; n++) {\n const mask = props.mask[n]\n if (mask?.test?.(mask) === false) {\n safeSetSelection(element, n)\n break\n }\n }\n\n break\n }\n }\n }\n } catch (e) {\n warn(e)\n }\n }\n\n if (typeof window !== 'undefined') {\n window.requestAnimationFrame(correction)\n }\n}\n\n/**\n * Manipulate needed mask for handle: percent\n *\n * @param {object} param0 object with properties\n * @property {object} props Component property\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns object maskParams\n */\nexport const handlePercentMask = ({ props, locale, maskParams }) => {\n const value = format(props.value, { locale, percent: true })\n maskParams.suffix = String(value)?.match(/((\\s|)%)$/g, '$1')?.[0] || ' %'\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: currency\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} currency_mask Component property for change the currency parameters\n * @returns object maskParams\n */\nexport const handleCurrencyMask = ({ mask_options, currency_mask }) => {\n const maskParams = {\n showMask: true,\n placeholderChar: null,\n allowDecimal: true,\n decimalLimit: 2,\n decimalSymbol: ',',\n ...mask_options,\n ...currency_mask,\n }\n\n const fix =\n typeof currency_mask === 'string'\n ? currency_mask\n : typeof maskParams.currency === 'string'\n ? maskParams.currency\n : 'kr'\n\n maskParams.suffix = ` ${fix}`\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: number\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} number_mask Component property for change the number parameters\n * @returns object maskParams\n */\nexport const handleNumberMask = ({ mask_options, number_mask }) => {\n const maskParams = {\n decimalSymbol: ',',\n ...mask_options,\n ...number_mask,\n }\n\n if (typeof maskParams.allowDecimal === 'undefined') {\n maskParams.allowDecimal = maskParams.decimalLimit > 0\n }\n\n return maskParams\n}\n\n/**\n * Returns the type of what inputMode should be used\n *\n * @param {function} mask mask function\n * @returns undefined|decimal|numeric\n */\nexport function getInputModeFromMask(mask) {\n const maskParams = mask?.maskParams\n\n // because of the missing minus key, we still have to use text on Android and iOS\n if ((IS_ANDROID || IS_IOS) && maskParams?.allowNegative !== false) {\n return undefined\n }\n\n if (maskParams && mask?.instanceOf === 'createNumberMask') {\n return maskParams.allowDecimal && maskParams.decimalLimit !== 0\n ? 'decimal'\n : 'numeric'\n }\n return undefined\n}\n\n/**\n * Returns the thousands separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleThousandsSeparator(locale) {\n return getThousandsSeparator(locale).replace(' ', ' ') // replace non-breaking space with a regular space\n}\n\n/**\n * Returns the decimal separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleDecimalSeparator(locale) {\n let decimalSymbol = getDecimalSeparator(locale)\n\n return decimalSymbol\n}\n\n/**\n * Will take a JSON and return it parsed\n *\n * @param {string} str\n * @param {*} fallback optional fallback\n * @returns parsed json\n */\nexport function fromJSON(str, fallback = null) {\n if (typeof str === 'string' && str[0] === '{') {\n return JSON.parse(str)\n }\n\n return str || fallback\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextMask.js","names":["React","PropTypes","createTextMaskInputElement","isNil","TextMask","PureComponent","constructor","props","_defineProperty","event","textMaskInputElement","update","onChange","inputRef","createRef","componentDidMount","initTextMask","value","_objectSpread","inputElement","current","componentDidUpdate","prevProps","pipe","mask","guide","placeholderChar","showMask","settings","isPipeChanged","toString","isMaskChanged","isSettingChanged","Object","keys","some","prop","isValueChanged","render","_this$props","keepCharPositions","_objectWithoutProperties","_excluded","params","defaultValue","cloneElement","createElement","_extends","ref","process","env","NODE_ENV","propTypes","oneOfType","array","func","bool","shape","isRequired","object","node","string","number"],"sources":["../../../../src/components/input-masked/TextMask.js"],"sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport createTextMaskInputElement from './text-mask/createTextMaskInputElement'\nimport { isNil } from './text-mask/utilities'\n\nexport default class TextMask extends React.PureComponent {\n static propTypes = {\n mask: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.func,\n PropTypes.bool,\n PropTypes.shape({\n mask: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n pipe: PropTypes.func,\n }),\n ]).isRequired,\n inputRef: PropTypes.object,\n inputElement: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n onChange: PropTypes.func,\n guide: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n pipe: PropTypes.func,\n placeholderChar: PropTypes.string,\n keepCharPositions: PropTypes.bool,\n showMask: PropTypes.bool,\n }\n\n static defaultProps = {\n inputElement: null,\n inputRef: null,\n onChange: null,\n guide: null,\n value: null,\n pipe: null,\n placeholderChar: null,\n keepCharPositions: null,\n showMask: null,\n }\n\n constructor(props) {\n super(props)\n\n this.inputRef = props.inputRef || React.createRef()\n }\n\n componentDidMount() {\n this.initTextMask()\n }\n\n initTextMask() {\n const {\n props,\n props: { value },\n } = this\n\n this.textMaskInputElement = createTextMaskInputElement({\n ...props,\n inputElement: this.inputRef.current,\n })\n this.textMaskInputElement.update(value)\n }\n\n onChange = (event) => {\n this.textMaskInputElement.update()\n\n if (typeof this.props.onChange === 'function') {\n return this.props.onChange(event)\n }\n }\n\n componentDidUpdate(prevProps) {\n // Getting props affecting value\n const { value, pipe, mask, guide, placeholderChar, showMask } =\n this.props\n\n // Сalculate that settings was changed:\n // - `pipe` converting to string, to compare function content\n // - `mask` converting to string, to compare values or function content\n // - `keepCharPositions` exludes, because it affect only cursor position\n const settings = { guide, placeholderChar, showMask }\n const isPipeChanged =\n typeof pipe === 'function' && typeof prevProps.pipe === 'function'\n ? pipe.toString() !== prevProps.pipe.toString()\n : (isNil(pipe) && !isNil(prevProps.pipe)) ||\n (!isNil(pipe) && isNil(prevProps.pipe))\n const isMaskChanged = mask.toString() !== prevProps.mask.toString()\n const isSettingChanged =\n Object.keys(settings).some(\n (prop) => settings[prop] !== prevProps[prop]\n ) ||\n isMaskChanged ||\n isPipeChanged\n\n // Сalculate that value was changed\n const isValueChanged =\n value !== this.inputRef.current.value || prevProps.value !== value\n\n // Check value and settings to prevent duplicating update() call\n if (isValueChanged || isSettingChanged) {\n this.initTextMask()\n }\n }\n\n render() {\n const {\n inputElement,\n inputRef, // eslint-disable-line\n mask, // eslint-disable-line\n guide, // eslint-disable-line\n pipe, // eslint-disable-line\n placeholderChar, // eslint-disable-line\n keepCharPositions, // eslint-disable-line\n value, // eslint-disable-line\n onChange, // eslint-disable-line\n showMask, // eslint-disable-line\n\n ...props\n } = this.props\n\n const params = {\n onChange: this.onChange,\n defaultValue: this.props.value,\n ...props,\n }\n\n return inputElement ? (\n React.cloneElement(inputElement, params)\n ) : (\n <input ref={this.inputRef} {...params} />\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TextMask.js","names":["React","PropTypes","createTextMaskInputElement","isNil","TextMask","PureComponent","constructor","props","_defineProperty","event","textMaskInputElement","update","onChange","inputRef","createRef","componentDidMount","initTextMask","value","_objectSpread","inputElement","current","componentDidUpdate","prevProps","pipe","mask","guide","placeholderChar","showMask","settings","isPipeChanged","toString","isMaskChanged","isSettingChanged","Object","keys","some","prop","isValueChanged","render","_this$props","keepCharPositions","_objectWithoutProperties","_excluded","params","defaultValue","cloneElement","createElement","_extends","ref","process","env","NODE_ENV","propTypes","oneOfType","array","func","bool","shape","isRequired","object","node","string","number"],"sources":["../../../../src/components/input-masked/TextMask.js"],"sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport createTextMaskInputElement from './text-mask/createTextMaskInputElement'\nimport { isNil } from './text-mask/utilities'\n\nexport default class TextMask extends React.PureComponent {\n static propTypes = {\n mask: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.func,\n PropTypes.bool,\n PropTypes.shape({\n mask: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n pipe: PropTypes.func,\n }),\n ]).isRequired,\n inputRef: PropTypes.object,\n inputElement: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n onChange: PropTypes.func,\n guide: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n pipe: PropTypes.func,\n placeholderChar: PropTypes.string,\n keepCharPositions: PropTypes.bool,\n showMask: PropTypes.bool,\n }\n\n static defaultProps = {\n inputElement: null,\n inputRef: null,\n onChange: null,\n guide: null,\n value: null,\n pipe: null,\n placeholderChar: null,\n keepCharPositions: null,\n showMask: null,\n }\n\n constructor(props) {\n super(props)\n\n this.inputRef = props.inputRef || React.createRef()\n }\n\n componentDidMount() {\n this.initTextMask()\n }\n\n initTextMask() {\n const {\n props,\n props: { value },\n } = this\n\n this.textMaskInputElement = createTextMaskInputElement({\n ...props,\n inputElement: this.inputRef.current,\n })\n this.textMaskInputElement.update(value)\n }\n\n onChange = (event) => {\n this.textMaskInputElement.update()\n\n if (typeof this.props.onChange === 'function') {\n return this.props.onChange(event)\n }\n }\n\n componentDidUpdate(prevProps) {\n // Getting props affecting value\n const { value, pipe, mask, guide, placeholderChar, showMask } =\n this.props\n\n // Сalculate that settings was changed:\n // - `pipe` converting to string, to compare function content\n // - `mask` converting to string, to compare values or function content\n // - `keepCharPositions` excludes, because it affect only cursor position\n const settings = { guide, placeholderChar, showMask }\n const isPipeChanged =\n typeof pipe === 'function' && typeof prevProps.pipe === 'function'\n ? pipe.toString() !== prevProps.pipe.toString()\n : (isNil(pipe) && !isNil(prevProps.pipe)) ||\n (!isNil(pipe) && isNil(prevProps.pipe))\n const isMaskChanged = mask.toString() !== prevProps.mask.toString()\n const isSettingChanged =\n Object.keys(settings).some(\n (prop) => settings[prop] !== prevProps[prop]\n ) ||\n isMaskChanged ||\n isPipeChanged\n\n // Сalculate that value was changed\n const isValueChanged =\n value !== this.inputRef.current.value || prevProps.value !== value\n\n // Check value and settings to prevent duplicating update() call\n if (isValueChanged || isSettingChanged) {\n this.initTextMask()\n }\n }\n\n render() {\n const {\n inputElement,\n inputRef, // eslint-disable-line\n mask, // eslint-disable-line\n guide, // eslint-disable-line\n pipe, // eslint-disable-line\n placeholderChar, // eslint-disable-line\n keepCharPositions, // eslint-disable-line\n value, // eslint-disable-line\n onChange, // eslint-disable-line\n showMask, // eslint-disable-line\n\n ...props\n } = this.props\n\n const params = {\n onChange: this.onChange,\n defaultValue: this.props.value,\n ...props,\n }\n\n return inputElement ? (\n React.cloneElement(inputElement, params)\n ) : (\n <input ref={this.inputRef} {...params} />\n )\n }\n}\n"],"mappings":"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"}
@@ -248,7 +248,6 @@ class Modal extends React.PureComponent {
248
248
  }
249
249
  try {
250
250
  document.documentElement.removeAttribute('data-dnb-modal-active');
251
- document.body.setAttribute('data-dnb-modal-active', 'false');
252
251
  } catch (e) {
253
252
  warn('Modal: Error on remove "data-dnb-modal-active"', e);
254
253
  }
@@ -260,7 +259,6 @@ class Modal extends React.PureComponent {
260
259
  if (typeof document !== 'undefined') {
261
260
  try {
262
261
  document.documentElement.setAttribute('data-dnb-modal-active', modalId);
263
- document.body.setAttribute('data-dnb-modal-active', 'true');
264
262
  } catch (e) {
265
263
  warn('Modal: Error on set "data-dnb-modal-active"', e);
266
264
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","names":["React","classnames","SuffixContext","Context","warn","isTrue","makeUniqueId","extendPropsWithContextInClassComponent","processChildren","dispatchCustomElementEvent","createSpacingClasses","HelpButtonInstance","getListOfModalRoots","getModalRoot","ModalInner","ModalHeader","ModalHeaderBar","CloseButton","ModalRoot","classWithCamelCaseProps","ANIMATION_DURATION","Modal","PureComponent","getContent","props","modal_content","getDerivedStateFromProps","state","open_state","_open_state","hide","no_animation","modalActive","constructor","_defineProperty","event","showModal","preventDefault","toggleNow","animation_duration","timeoutDuration","parseFloat","isInTransition","doItNow","setState","handleSideEffects","_closeTimeout","setTimeout","waitBeforeOpen","open_delay","delay","_openTimeout","clearTimeout","open_modal","fn","_onUnmount","push","close_modal","toggleOpenClose","setActiveState","_id","_this$_triggerRef","focus","elem","setAttribute","preventScroll","Promise","resolve","removeAttribute","String","_triggerRef","current","activeElement","HTMLElement","then","e","removeActiveState","ifIsLatest","triggeredBy","prevent_close","id","close","list","length","last","createRef","componentDidMount","openBasedOnStateUpdate","componentWillUnmount","forEach","componentDidUpdate","prevProps","document","documentElement","body","modalId","render","defaultProps","context","getTranslation","root_id","content_id","disabled","labelled_by","focus_selector","header_content","bar_content","bypass_invalidation_selectors","omit_trigger_button","trigger","trigger_attributes","rest","_objectWithoutProperties","_excluded","children","Object","freeze","_objectSpread","suffixProps","triggerAttributes","hidden","variant","icon_position","fallbackTitle","title","translation","HelpButton","TriggerButton","text","createElement","Fragment","_extends","onClick","innerRef","className","class","Consumer","spacing","dialog_title","close_title","hide_close_button","close_button_attributes","prevent_core_style","no_animation_on_mobile","fullscreen","min_width","max_width","align_content","container_placement","direct_dom_return","on_open","on_close","on_close_prevent","overlay_class","content_class","OriginalComponent"],"sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport { SuffixContext } from '../../shared/helpers/Suffix'\nimport Context, { ContextProps } from '../../shared/Context'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n extendPropsWithContextInClassComponent,\n processChildren,\n dispatchCustomElementEvent,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport HelpButtonInstance from '../help-button/HelpButtonInstance'\nimport { getListOfModalRoots, getModalRoot } from './helpers'\nimport ModalInner from './parts/ModalInner'\nimport { ModalProps } from './types'\n\nimport ModalHeader from './parts/ModalHeader'\nimport ModalHeaderBar from './parts/ModalHeaderBar'\nimport { ScrollViewAllProps } from '../../fragments/scroll-view/ScrollView'\nimport CloseButton from './parts/CloseButton'\nimport ModalRoot from './ModalRoot'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n classWithCamelCaseProps,\n ToCamelCasePartial,\n} from '../../shared/helpers/withCamelCaseProps'\nimport type { ButtonProps } from '../button/Button'\n\nexport const ANIMATION_DURATION = 300\n\ninterface ModalState {\n hide: boolean\n modalActive: boolean\n}\n\nexport type ModalPropTypes = ModalProps &\n SpacingProps &\n Omit<ScrollViewAllProps, 'children'>\n\nclass Modal extends React.PureComponent<\n ModalPropTypes & ToCamelCasePartial<ModalPropTypes>,\n ModalState\n> {\n static contextType = Context\n\n context!: ContextProps\n\n static Bar = ModalHeaderBar\n static Header = ModalHeader\n static Content = ModalInner\n\n static getContent(props) {\n if (typeof props.modal_content === 'string') {\n return props.modal_content\n } else if (typeof props.modal_content === 'function') {\n return props.modal_content(props)\n }\n return processChildren(props)\n }\n\n _id: string\n _triggerRef: React.RefObject<any>\n _onUnmount: Array<() => void>\n _openTimeout: NodeJS.Timeout\n _closeTimeout: NodeJS.Timeout\n _sideEffectsTimeout: NodeJS.Timeout\n _tryToOpenTimeout: NodeJS.Timeout\n activeElement: Element\n isInTransition: boolean\n\n state = {\n hide: false,\n modalActive: false,\n }\n\n static defaultProps = {\n id: null,\n focus_selector: null,\n labelled_by: null,\n title: null,\n disabled: null,\n spacing: true,\n open_delay: null,\n content_id: null,\n dialog_title: 'Vindu',\n close_title: 'Lukk', // Close Modal Window\n hide_close_button: false,\n close_button_attributes: null,\n prevent_close: false,\n prevent_core_style: false,\n animation_duration: ANIMATION_DURATION,\n no_animation: false,\n no_animation_on_mobile: false,\n fullscreen: 'auto',\n min_width: null,\n max_width: null,\n align_content: 'left',\n container_placement: null,\n open_state: null,\n direct_dom_return: false,\n class: null,\n root_id: 'root',\n omit_trigger_button: false,\n\n className: null,\n children: null,\n\n on_open: null,\n on_close: null,\n on_close_prevent: null,\n open_modal: null,\n close_modal: null,\n\n trigger: null,\n trigger_attributes: null,\n\n overlay_class: null,\n content_class: null,\n\n modal_content: null,\n header_content: null,\n bar_content: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.open_state !== state._open_state) {\n switch (props.open_state) {\n case 'opened':\n case true:\n state.hide = false\n if (isTrue(props.no_animation)) {\n state.modalActive = true\n }\n break\n case 'closed':\n case false:\n state.hide = true\n if (isTrue(props.no_animation)) {\n state.modalActive = false\n }\n break\n }\n }\n state._open_state = props.open_state\n\n return state\n }\n\n constructor(props) {\n super(props)\n this._id = props.id || makeUniqueId('modal-')\n\n this._triggerRef = React.createRef()\n\n this._onUnmount = []\n }\n\n componentDidMount() {\n this.openBasedOnStateUpdate()\n }\n\n componentWillUnmount() {\n clearTimeout(this._openTimeout)\n clearTimeout(this._closeTimeout)\n\n this.removeActiveState()\n\n this._onUnmount.forEach((fn) => {\n if (typeof fn === 'function') {\n fn()\n }\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps !== this.props) {\n this.openBasedOnStateUpdate()\n }\n }\n\n openBasedOnStateUpdate() {\n const { hide } = this.state\n const { open_state } = this.props\n\n if (!this.activeElement && typeof document !== 'undefined') {\n this.activeElement = document.activeElement\n }\n\n if (!hide && (open_state === 'opened' || open_state === true)) {\n this.toggleOpenClose(null, true)\n } else if (hide && (open_state === 'closed' || open_state === false)) {\n this.toggleOpenClose(null, false)\n }\n }\n\n toggleOpenClose = (event = null, showModal = null) => {\n if (event && event.preventDefault) {\n event.preventDefault()\n }\n\n const toggleNow = () => {\n const {\n animation_duration = ANIMATION_DURATION,\n no_animation = false,\n } = this.props\n const timeoutDuration =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n const modalActive =\n typeof showModal === 'boolean'\n ? showModal\n : !this.state.modalActive\n\n this.isInTransition = true\n\n const doItNow = () => {\n this.setState(\n {\n hide: false,\n modalActive,\n },\n () => {\n this.isInTransition = false\n this.handleSideEffects()\n }\n )\n }\n\n if (modalActive === false && !isTrue(no_animation)) {\n this.setState({\n hide: true,\n })\n\n this._closeTimeout = setTimeout(doItNow, timeoutDuration) // delay because of the animation\n } else {\n doItNow()\n }\n }\n\n const waitBeforeOpen = () => {\n const { open_delay, no_animation } = this.props\n const delay =\n typeof open_delay === 'string'\n ? parseFloat(open_delay)\n : open_delay\n if (delay > 0 && !isTrue(no_animation)) {\n this._openTimeout = setTimeout(toggleNow, delay) // custom delay\n } else {\n toggleNow()\n }\n }\n\n clearTimeout(this._closeTimeout)\n clearTimeout(this._openTimeout)\n\n const { open_modal } = this.props\n if (typeof open_modal === 'function') {\n const fn = open_modal(waitBeforeOpen, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n } else {\n waitBeforeOpen()\n }\n }\n\n handleSideEffects = () => {\n const { modalActive } = this.state\n const { close_modal, open_state, animation_duration } = this.props\n\n if (modalActive) {\n if (typeof close_modal === 'function') {\n const fn = close_modal(() => {\n this.toggleOpenClose(null, false)\n }, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n }\n\n this.setActiveState(this._id)\n } else if (modalActive === false) {\n const focus = (elem: HTMLElement) => {\n // So we can omit showing a Tooltip on the trigger button\n elem.setAttribute('data-autofocus', 'true')\n\n elem.focus({ preventScroll: true })\n\n return new Promise<void>((resolve) => {\n setTimeout(() => {\n elem?.removeAttribute('data-autofocus')\n resolve()\n }, parseFloat(String(animation_duration)) / 3)\n })\n }\n\n if (this._triggerRef?.current) {\n focus(this._triggerRef.current)\n }\n\n // because the open_state was set to opened, we force\n if (\n (open_state === 'opened' || open_state === true) &&\n this.activeElement instanceof HTMLElement\n ) {\n try {\n focus(this.activeElement).then(() => {\n this.activeElement = null\n })\n } catch (e) {\n //\n }\n }\n\n this.removeActiveState()\n }\n }\n\n open = (e: Event) => {\n this.toggleOpenClose(e, true)\n }\n\n close = (\n event: Event,\n { ifIsLatest, triggeredBy = null } = { ifIsLatest: true }\n ) => {\n const { prevent_close = false } = this.props\n\n if (isTrue(prevent_close)) {\n const id = this._id\n dispatchCustomElementEvent(this, 'on_close_prevent', {\n id,\n event,\n triggeredBy,\n close: (e) => {\n this.toggleOpenClose(e, false)\n },\n })\n } else {\n if (ifIsLatest) {\n const list = getListOfModalRoots()\n if (list.length > 1) {\n const last = getModalRoot(-1)\n if (last !== this) {\n return // stop here\n }\n }\n }\n\n this.toggleOpenClose(event, false)\n }\n }\n\n removeActiveState() {\n const last = getModalRoot(-1)\n\n // If this instance is not the last one,\n // make the current one to as the active one\n if (last?._id && last._id !== this._id) {\n return this.setActiveState(last._id)\n }\n\n try {\n document.documentElement.removeAttribute('data-dnb-modal-active')\n\n // Deprecated\n document.body.setAttribute('data-dnb-modal-active', 'false')\n } catch (e) {\n warn('Modal: Error on remove \"data-dnb-modal-active\"', e)\n }\n }\n\n /**\n * Prevent scrolling on the background\n * But checks if this instance was the last one or not\n *\n * @param {string} modalId Will remove the attribute if false is given\n */\n setActiveState(modalId: string) {\n if (!modalId) {\n warn('Modal: A valid modalId is required')\n }\n // prevent scrolling on the background\n if (typeof document !== 'undefined') {\n try {\n document.documentElement.setAttribute(\n 'data-dnb-modal-active',\n modalId\n )\n\n // Deprecated\n document.body.setAttribute('data-dnb-modal-active', 'true')\n } catch (e) {\n warn('Modal: Error on set \"data-dnb-modal-active\"', e)\n }\n }\n }\n\n render() {\n // use only the props from context, who are available here anyway\n const props = extendPropsWithContextInClassComponent(\n this.props,\n Modal.defaultProps,\n this.context.getTranslation(this.props).Modal,\n this.context.Modal\n )\n\n const {\n root_id = 'root',\n content_id = null,\n disabled = null,\n labelled_by = null,\n focus_selector = null,\n header_content = null,\n bar_content = null,\n bypass_invalidation_selectors = null,\n\n id, // eslint-disable-line\n open_state, // eslint-disable-line\n open_delay, // eslint-disable-line\n\n omit_trigger_button = false,\n trigger = null,\n trigger_attributes = null,\n ...rest\n } = props\n\n const { hide, modalActive } = this.state\n const modal_content = Modal.getContent(\n typeof this.props.children === 'function'\n ? Object.freeze({ ...this.props, close: this.close })\n : this.props\n )\n\n const render = (suffixProps) => {\n const triggerAttributes = {\n hidden: false,\n variant: 'secondary',\n icon_position: 'left',\n ...trigger_attributes,\n } as ButtonProps\n\n if (isTrue(disabled)) {\n triggerAttributes.disabled = true\n }\n\n if (triggerAttributes.id) {\n this._id = triggerAttributes.id\n }\n\n let fallbackTitle: string\n if (triggerAttributes.title) {\n fallbackTitle = triggerAttributes.title\n }\n // in case the modal is used in suffix and no title is given\n // suffixProps.label is also available, so we could use that too\n else if (suffixProps) {\n fallbackTitle = this.context.translation.HelpButton.title\n }\n\n const TriggerButton = trigger\n ? (trigger as React.FC)\n : HelpButtonInstance\n\n const title = (\n !triggerAttributes.text ? rest.title || fallbackTitle : null\n ) as string\n\n return (\n <>\n {TriggerButton && !isTrue(omit_trigger_button) && (\n <TriggerButton\n {...triggerAttributes}\n id={this._id}\n title={title}\n onClick={this.toggleOpenClose}\n innerRef={this._triggerRef}\n className={classnames(\n 'dnb-modal__trigger',\n createSpacingClasses(props),\n triggerAttributes.class,\n triggerAttributes.className\n )}\n />\n )}\n\n {modalActive && modal_content && (\n <ModalRoot\n {...rest}\n id={this._id}\n root_id={root_id}\n content_id={content_id || `dnb-modal-${this._id}`}\n labelled_by={labelled_by}\n focus_selector={focus_selector}\n modal_content={modal_content}\n header_content={header_content}\n bar_content={bar_content}\n bypass_invalidation_selectors={bypass_invalidation_selectors}\n close={this.close}\n hide={hide}\n title={rest.title || fallbackTitle}\n />\n )}\n </>\n )\n }\n\n return <SuffixContext.Consumer>{render}</SuffixContext.Consumer>\n }\n}\n\nexport { CloseButton, Modal as OriginalComponent }\n\nexport default classWithCamelCaseProps(Modal)\n"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","names":["React","classnames","SuffixContext","Context","warn","isTrue","makeUniqueId","extendPropsWithContextInClassComponent","processChildren","dispatchCustomElementEvent","createSpacingClasses","HelpButtonInstance","getListOfModalRoots","getModalRoot","ModalInner","ModalHeader","ModalHeaderBar","CloseButton","ModalRoot","classWithCamelCaseProps","ANIMATION_DURATION","Modal","PureComponent","getContent","props","modal_content","getDerivedStateFromProps","state","open_state","_open_state","hide","no_animation","modalActive","constructor","_defineProperty","event","showModal","preventDefault","toggleNow","animation_duration","timeoutDuration","parseFloat","isInTransition","doItNow","setState","handleSideEffects","_closeTimeout","setTimeout","waitBeforeOpen","open_delay","delay","_openTimeout","clearTimeout","open_modal","fn","_onUnmount","push","close_modal","toggleOpenClose","setActiveState","_id","_this$_triggerRef","focus","elem","setAttribute","preventScroll","Promise","resolve","removeAttribute","String","_triggerRef","current","activeElement","HTMLElement","then","e","removeActiveState","ifIsLatest","triggeredBy","prevent_close","id","close","list","length","last","createRef","componentDidMount","openBasedOnStateUpdate","componentWillUnmount","forEach","componentDidUpdate","prevProps","document","documentElement","modalId","render","defaultProps","context","getTranslation","root_id","content_id","disabled","labelled_by","focus_selector","header_content","bar_content","bypass_invalidation_selectors","omit_trigger_button","trigger","trigger_attributes","rest","_objectWithoutProperties","_excluded","children","Object","freeze","_objectSpread","suffixProps","triggerAttributes","hidden","variant","icon_position","fallbackTitle","title","translation","HelpButton","TriggerButton","text","createElement","Fragment","_extends","onClick","innerRef","className","class","Consumer","spacing","dialog_title","close_title","hide_close_button","close_button_attributes","prevent_core_style","no_animation_on_mobile","fullscreen","min_width","max_width","align_content","container_placement","direct_dom_return","on_open","on_close","on_close_prevent","overlay_class","content_class","OriginalComponent"],"sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport { SuffixContext } from '../../shared/helpers/Suffix'\nimport Context, { ContextProps } from '../../shared/Context'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n extendPropsWithContextInClassComponent,\n processChildren,\n dispatchCustomElementEvent,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport HelpButtonInstance from '../help-button/HelpButtonInstance'\nimport { getListOfModalRoots, getModalRoot } from './helpers'\nimport ModalInner from './parts/ModalInner'\nimport { ModalProps } from './types'\n\nimport ModalHeader from './parts/ModalHeader'\nimport ModalHeaderBar from './parts/ModalHeaderBar'\nimport { ScrollViewAllProps } from '../../fragments/scroll-view/ScrollView'\nimport CloseButton from './parts/CloseButton'\nimport ModalRoot from './ModalRoot'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n classWithCamelCaseProps,\n ToCamelCasePartial,\n} from '../../shared/helpers/withCamelCaseProps'\nimport type { ButtonProps } from '../button/Button'\n\nexport const ANIMATION_DURATION = 300\n\ninterface ModalState {\n hide: boolean\n modalActive: boolean\n}\n\nexport type ModalPropTypes = ModalProps &\n SpacingProps &\n Omit<ScrollViewAllProps, 'children'>\n\nclass Modal extends React.PureComponent<\n ModalPropTypes & ToCamelCasePartial<ModalPropTypes>,\n ModalState\n> {\n static contextType = Context\n\n context!: ContextProps\n\n static Bar = ModalHeaderBar\n static Header = ModalHeader\n static Content = ModalInner\n\n static getContent(props) {\n if (typeof props.modal_content === 'string') {\n return props.modal_content\n } else if (typeof props.modal_content === 'function') {\n return props.modal_content(props)\n }\n return processChildren(props)\n }\n\n _id: string\n _triggerRef: React.RefObject<any>\n _onUnmount: Array<() => void>\n _openTimeout: NodeJS.Timeout\n _closeTimeout: NodeJS.Timeout\n _sideEffectsTimeout: NodeJS.Timeout\n _tryToOpenTimeout: NodeJS.Timeout\n activeElement: Element\n isInTransition: boolean\n\n state = {\n hide: false,\n modalActive: false,\n }\n\n static defaultProps = {\n id: null,\n focus_selector: null,\n labelled_by: null,\n title: null,\n disabled: null,\n spacing: true,\n open_delay: null,\n content_id: null,\n dialog_title: 'Vindu',\n close_title: 'Lukk', // Close Modal Window\n hide_close_button: false,\n close_button_attributes: null,\n prevent_close: false,\n prevent_core_style: false,\n animation_duration: ANIMATION_DURATION,\n no_animation: false,\n no_animation_on_mobile: false,\n fullscreen: 'auto',\n min_width: null,\n max_width: null,\n align_content: 'left',\n container_placement: null,\n open_state: null,\n direct_dom_return: false,\n class: null,\n root_id: 'root',\n omit_trigger_button: false,\n\n className: null,\n children: null,\n\n on_open: null,\n on_close: null,\n on_close_prevent: null,\n open_modal: null,\n close_modal: null,\n\n trigger: null,\n trigger_attributes: null,\n\n overlay_class: null,\n content_class: null,\n\n modal_content: null,\n header_content: null,\n bar_content: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.open_state !== state._open_state) {\n switch (props.open_state) {\n case 'opened':\n case true:\n state.hide = false\n if (isTrue(props.no_animation)) {\n state.modalActive = true\n }\n break\n case 'closed':\n case false:\n state.hide = true\n if (isTrue(props.no_animation)) {\n state.modalActive = false\n }\n break\n }\n }\n state._open_state = props.open_state\n\n return state\n }\n\n constructor(props) {\n super(props)\n this._id = props.id || makeUniqueId('modal-')\n\n this._triggerRef = React.createRef()\n\n this._onUnmount = []\n }\n\n componentDidMount() {\n this.openBasedOnStateUpdate()\n }\n\n componentWillUnmount() {\n clearTimeout(this._openTimeout)\n clearTimeout(this._closeTimeout)\n\n this.removeActiveState()\n\n this._onUnmount.forEach((fn) => {\n if (typeof fn === 'function') {\n fn()\n }\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps !== this.props) {\n this.openBasedOnStateUpdate()\n }\n }\n\n openBasedOnStateUpdate() {\n const { hide } = this.state\n const { open_state } = this.props\n\n if (!this.activeElement && typeof document !== 'undefined') {\n this.activeElement = document.activeElement\n }\n\n if (!hide && (open_state === 'opened' || open_state === true)) {\n this.toggleOpenClose(null, true)\n } else if (hide && (open_state === 'closed' || open_state === false)) {\n this.toggleOpenClose(null, false)\n }\n }\n\n toggleOpenClose = (event = null, showModal = null) => {\n if (event && event.preventDefault) {\n event.preventDefault()\n }\n\n const toggleNow = () => {\n const {\n animation_duration = ANIMATION_DURATION,\n no_animation = false,\n } = this.props\n const timeoutDuration =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n const modalActive =\n typeof showModal === 'boolean'\n ? showModal\n : !this.state.modalActive\n\n this.isInTransition = true\n\n const doItNow = () => {\n this.setState(\n {\n hide: false,\n modalActive,\n },\n () => {\n this.isInTransition = false\n this.handleSideEffects()\n }\n )\n }\n\n if (modalActive === false && !isTrue(no_animation)) {\n this.setState({\n hide: true,\n })\n\n this._closeTimeout = setTimeout(doItNow, timeoutDuration) // delay because of the animation\n } else {\n doItNow()\n }\n }\n\n const waitBeforeOpen = () => {\n const { open_delay, no_animation } = this.props\n const delay =\n typeof open_delay === 'string'\n ? parseFloat(open_delay)\n : open_delay\n if (delay > 0 && !isTrue(no_animation)) {\n this._openTimeout = setTimeout(toggleNow, delay) // custom delay\n } else {\n toggleNow()\n }\n }\n\n clearTimeout(this._closeTimeout)\n clearTimeout(this._openTimeout)\n\n const { open_modal } = this.props\n if (typeof open_modal === 'function') {\n const fn = open_modal(waitBeforeOpen, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n } else {\n waitBeforeOpen()\n }\n }\n\n handleSideEffects = () => {\n const { modalActive } = this.state\n const { close_modal, open_state, animation_duration } = this.props\n\n if (modalActive) {\n if (typeof close_modal === 'function') {\n const fn = close_modal(() => {\n this.toggleOpenClose(null, false)\n }, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n }\n\n this.setActiveState(this._id)\n } else if (modalActive === false) {\n const focus = (elem: HTMLElement) => {\n // So we can omit showing a Tooltip on the trigger button\n elem.setAttribute('data-autofocus', 'true')\n\n elem.focus({ preventScroll: true })\n\n return new Promise<void>((resolve) => {\n setTimeout(() => {\n elem?.removeAttribute('data-autofocus')\n resolve()\n }, parseFloat(String(animation_duration)) / 3)\n })\n }\n\n if (this._triggerRef?.current) {\n focus(this._triggerRef.current)\n }\n\n // because the open_state was set to opened, we force\n if (\n (open_state === 'opened' || open_state === true) &&\n this.activeElement instanceof HTMLElement\n ) {\n try {\n focus(this.activeElement).then(() => {\n this.activeElement = null\n })\n } catch (e) {\n //\n }\n }\n\n this.removeActiveState()\n }\n }\n\n open = (e: Event) => {\n this.toggleOpenClose(e, true)\n }\n\n close = (\n event: Event,\n { ifIsLatest, triggeredBy = null } = { ifIsLatest: true }\n ) => {\n const { prevent_close = false } = this.props\n\n if (isTrue(prevent_close)) {\n const id = this._id\n dispatchCustomElementEvent(this, 'on_close_prevent', {\n id,\n event,\n triggeredBy,\n close: (e) => {\n this.toggleOpenClose(e, false)\n },\n })\n } else {\n if (ifIsLatest) {\n const list = getListOfModalRoots()\n if (list.length > 1) {\n const last = getModalRoot(-1)\n if (last !== this) {\n return // stop here\n }\n }\n }\n\n this.toggleOpenClose(event, false)\n }\n }\n\n removeActiveState() {\n const last = getModalRoot(-1)\n\n // If this instance is not the last one,\n // make the current one to as the active one\n if (last?._id && last._id !== this._id) {\n return this.setActiveState(last._id)\n }\n\n try {\n document.documentElement.removeAttribute('data-dnb-modal-active')\n } catch (e) {\n warn('Modal: Error on remove \"data-dnb-modal-active\"', e)\n }\n }\n\n /**\n * Prevent scrolling on the background\n * But checks if this instance was the last one or not\n *\n * @param {string} modalId Will remove the attribute if false is given\n */\n setActiveState(modalId: string) {\n if (!modalId) {\n warn('Modal: A valid modalId is required')\n }\n // prevent scrolling on the background\n if (typeof document !== 'undefined') {\n try {\n document.documentElement.setAttribute(\n 'data-dnb-modal-active',\n modalId\n )\n } catch (e) {\n warn('Modal: Error on set \"data-dnb-modal-active\"', e)\n }\n }\n }\n\n render() {\n // use only the props from context, who are available here anyway\n const props = extendPropsWithContextInClassComponent(\n this.props,\n Modal.defaultProps,\n this.context.getTranslation(this.props).Modal,\n this.context.Modal\n )\n\n const {\n root_id = 'root',\n content_id = null,\n disabled = null,\n labelled_by = null,\n focus_selector = null,\n header_content = null,\n bar_content = null,\n bypass_invalidation_selectors = null,\n\n id, // eslint-disable-line\n open_state, // eslint-disable-line\n open_delay, // eslint-disable-line\n\n omit_trigger_button = false,\n trigger = null,\n trigger_attributes = null,\n ...rest\n } = props\n\n const { hide, modalActive } = this.state\n const modal_content = Modal.getContent(\n typeof this.props.children === 'function'\n ? Object.freeze({ ...this.props, close: this.close })\n : this.props\n )\n\n const render = (suffixProps) => {\n const triggerAttributes = {\n hidden: false,\n variant: 'secondary',\n icon_position: 'left',\n ...trigger_attributes,\n } as ButtonProps\n\n if (isTrue(disabled)) {\n triggerAttributes.disabled = true\n }\n\n if (triggerAttributes.id) {\n this._id = triggerAttributes.id\n }\n\n let fallbackTitle: string\n if (triggerAttributes.title) {\n fallbackTitle = triggerAttributes.title\n }\n // in case the modal is used in suffix and no title is given\n // suffixProps.label is also available, so we could use that too\n else if (suffixProps) {\n fallbackTitle = this.context.translation.HelpButton.title\n }\n\n const TriggerButton = trigger\n ? (trigger as React.FC)\n : HelpButtonInstance\n\n const title = (\n !triggerAttributes.text ? rest.title || fallbackTitle : null\n ) as string\n\n return (\n <>\n {TriggerButton && !isTrue(omit_trigger_button) && (\n <TriggerButton\n {...triggerAttributes}\n id={this._id}\n title={title}\n onClick={this.toggleOpenClose}\n innerRef={this._triggerRef}\n className={classnames(\n 'dnb-modal__trigger',\n createSpacingClasses(props),\n triggerAttributes.class,\n triggerAttributes.className\n )}\n />\n )}\n\n {modalActive && modal_content && (\n <ModalRoot\n {...rest}\n id={this._id}\n root_id={root_id}\n content_id={content_id || `dnb-modal-${this._id}`}\n labelled_by={labelled_by}\n focus_selector={focus_selector}\n modal_content={modal_content}\n header_content={header_content}\n bar_content={bar_content}\n bypass_invalidation_selectors={bypass_invalidation_selectors}\n close={this.close}\n hide={hide}\n title={rest.title || fallbackTitle}\n />\n )}\n </>\n )\n }\n\n return <SuffixContext.Consumer>{render}</SuffixContext.Consumer>\n }\n}\n\nexport { CloseButton, Modal as OriginalComponent }\n\nexport default classWithCamelCaseProps(Modal)\n"],"mappings":"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"}