@dnb/eufemia 10.63.1 → 10.63.2

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 (159) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/cjs/components/modal/Modal.d.ts +2 -1
  3. package/cjs/components/modal/Modal.js +10 -4
  4. package/cjs/components/modal/Modal.js.map +1 -1
  5. package/cjs/components/modal/ModalContent.d.ts +10 -8
  6. package/cjs/components/modal/ModalContent.js +48 -23
  7. package/cjs/components/modal/ModalContent.js.map +1 -1
  8. package/cjs/components/modal/ModalRoot.d.ts +2 -0
  9. package/cjs/components/modal/ModalRoot.js.map +1 -1
  10. package/cjs/components/modal/types.d.ts +11 -3
  11. package/cjs/components/modal/types.js.map +1 -1
  12. package/cjs/elements/code/style/code-mixins.scss +4 -0
  13. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -1
  14. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  15. package/cjs/extensions/forms/DataContext/Provider/Provider.js +2 -2
  16. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  17. package/cjs/extensions/forms/Form/data-context/useValidation.js +1 -1
  18. package/cjs/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  19. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  20. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  21. package/cjs/extensions/forms/hooks/useExternalValue.js +2 -2
  22. package/cjs/extensions/forms/hooks/useExternalValue.js.map +1 -1
  23. package/cjs/extensions/forms/hooks/useFieldProps.js +23 -16
  24. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  25. package/cjs/shared/Eufemia.d.ts +1 -1
  26. package/cjs/shared/Eufemia.js +2 -2
  27. package/cjs/shared/Eufemia.js.map +1 -1
  28. package/cjs/style/core/scopes.scss +1 -1
  29. package/cjs/style/dnb-ui-basis.css +1 -1
  30. package/cjs/style/dnb-ui-basis.min.css +1 -1
  31. package/cjs/style/dnb-ui-body.css +1 -1
  32. package/cjs/style/dnb-ui-body.min.css +1 -1
  33. package/cjs/style/dnb-ui-core.css +1 -1
  34. package/cjs/style/dnb-ui-core.min.css +1 -1
  35. package/cjs/style/dnb-ui-elements.css +3 -0
  36. package/cjs/style/dnb-ui-elements.min.css +1 -1
  37. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -0
  38. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  39. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -0
  40. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  41. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +3 -0
  42. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  43. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +3 -0
  44. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  45. package/cjs/style/themes/theme-ui/ui-theme-basis.css +3 -0
  46. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  47. package/cjs/style/themes/theme-ui/ui-theme-elements.css +3 -0
  48. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  49. package/cjs/style/themes/theme-ui/ui-theme-tags.css +3 -0
  50. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  51. package/components/modal/Modal.d.ts +2 -1
  52. package/components/modal/Modal.js +10 -4
  53. package/components/modal/Modal.js.map +1 -1
  54. package/components/modal/ModalContent.d.ts +10 -8
  55. package/components/modal/ModalContent.js +48 -23
  56. package/components/modal/ModalContent.js.map +1 -1
  57. package/components/modal/ModalRoot.d.ts +2 -0
  58. package/components/modal/ModalRoot.js.map +1 -1
  59. package/components/modal/types.d.ts +11 -3
  60. package/components/modal/types.js.map +1 -1
  61. package/elements/code/style/code-mixins.scss +4 -0
  62. package/es/components/modal/Modal.d.ts +2 -1
  63. package/es/components/modal/Modal.js +10 -4
  64. package/es/components/modal/Modal.js.map +1 -1
  65. package/es/components/modal/ModalContent.d.ts +10 -8
  66. package/es/components/modal/ModalContent.js +44 -20
  67. package/es/components/modal/ModalContent.js.map +1 -1
  68. package/es/components/modal/ModalRoot.d.ts +2 -0
  69. package/es/components/modal/ModalRoot.js.map +1 -1
  70. package/es/components/modal/types.d.ts +11 -3
  71. package/es/components/modal/types.js.map +1 -1
  72. package/es/elements/code/style/code-mixins.scss +4 -0
  73. package/es/extensions/forms/DataContext/Context.d.ts +1 -1
  74. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  75. package/es/extensions/forms/DataContext/Provider/Provider.js +2 -2
  76. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  77. package/es/extensions/forms/Form/data-context/useValidation.js +1 -1
  78. package/es/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  79. package/es/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  80. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  81. package/es/extensions/forms/hooks/useExternalValue.js +2 -2
  82. package/es/extensions/forms/hooks/useExternalValue.js.map +1 -1
  83. package/es/extensions/forms/hooks/useFieldProps.js +23 -16
  84. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  85. package/es/shared/Eufemia.d.ts +1 -1
  86. package/es/shared/Eufemia.js +2 -2
  87. package/es/shared/Eufemia.js.map +1 -1
  88. package/es/style/core/scopes.scss +1 -1
  89. package/es/style/dnb-ui-basis.css +1 -1
  90. package/es/style/dnb-ui-basis.min.css +1 -1
  91. package/es/style/dnb-ui-body.css +1 -1
  92. package/es/style/dnb-ui-body.min.css +1 -1
  93. package/es/style/dnb-ui-core.css +1 -1
  94. package/es/style/dnb-ui-core.min.css +1 -1
  95. package/es/style/dnb-ui-elements.css +3 -0
  96. package/es/style/dnb-ui-elements.min.css +1 -1
  97. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -0
  98. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  99. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -0
  100. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  101. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +3 -0
  102. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  103. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +3 -0
  104. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  105. package/es/style/themes/theme-ui/ui-theme-basis.css +3 -0
  106. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  107. package/es/style/themes/theme-ui/ui-theme-elements.css +3 -0
  108. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  109. package/es/style/themes/theme-ui/ui-theme-tags.css +3 -0
  110. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  111. package/esm/dnb-ui-basis.min.mjs +1 -1
  112. package/esm/dnb-ui-components.min.mjs +1 -1
  113. package/esm/dnb-ui-elements.min.mjs +1 -1
  114. package/esm/dnb-ui-extensions.min.mjs +1 -1
  115. package/esm/dnb-ui-lib.min.mjs +1 -1
  116. package/extensions/forms/DataContext/Context.d.ts +1 -1
  117. package/extensions/forms/DataContext/Context.js.map +1 -1
  118. package/extensions/forms/DataContext/Provider/Provider.js +2 -2
  119. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  120. package/extensions/forms/Form/data-context/useValidation.js +1 -1
  121. package/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  122. package/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  123. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  124. package/extensions/forms/hooks/useExternalValue.js +2 -2
  125. package/extensions/forms/hooks/useExternalValue.js.map +1 -1
  126. package/extensions/forms/hooks/useFieldProps.js +23 -16
  127. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  128. package/package.json +1 -1
  129. package/shared/Eufemia.d.ts +1 -1
  130. package/shared/Eufemia.js +2 -2
  131. package/shared/Eufemia.js.map +1 -1
  132. package/style/core/scopes.scss +1 -1
  133. package/style/dnb-ui-basis.css +1 -1
  134. package/style/dnb-ui-basis.min.css +1 -1
  135. package/style/dnb-ui-body.css +1 -1
  136. package/style/dnb-ui-body.min.css +1 -1
  137. package/style/dnb-ui-core.css +1 -1
  138. package/style/dnb-ui-core.min.css +1 -1
  139. package/style/dnb-ui-elements.css +3 -0
  140. package/style/dnb-ui-elements.min.css +1 -1
  141. package/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -0
  142. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  143. package/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -0
  144. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  145. package/style/themes/theme-sbanken/sbanken-theme-basis.css +3 -0
  146. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  147. package/style/themes/theme-sbanken/sbanken-theme-elements.css +3 -0
  148. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  149. package/style/themes/theme-ui/ui-theme-basis.css +3 -0
  150. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  151. package/style/themes/theme-ui/ui-theme-elements.css +3 -0
  152. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  153. package/style/themes/theme-ui/ui-theme-tags.css +3 -0
  154. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  155. package/umd/dnb-ui-basis.min.js +1 -1
  156. package/umd/dnb-ui-components.min.js +1 -1
  157. package/umd/dnb-ui-elements.min.js +1 -1
  158. package/umd/dnb-ui-extensions.min.js +2 -2
  159. package/umd/dnb-ui-lib.min.js +1 -1
@@ -22,6 +22,10 @@
22
22
  color: inherit;
23
23
 
24
24
  border-radius: 0.1875em;
25
+
26
+ & .dnb-anchor {
27
+ font-size: inherit;
28
+ }
25
29
  }
26
30
 
27
31
  @mixin preStyle() {
@@ -36,6 +36,7 @@ declare class Modal extends React.PureComponent<ModalPropTypes & ToCamelCasePart
36
36
  _tryToOpenTimeout: NodeJS.Timeout;
37
37
  activeElement: Element;
38
38
  isInTransition: boolean;
39
+ modalContentCloseRef: React.RefObject<any>;
39
40
  state: {
40
41
  hide: boolean;
41
42
  modalActive: boolean;
@@ -97,7 +98,7 @@ declare class Modal extends React.PureComponent<ModalPropTypes & ToCamelCasePart
97
98
  open: (e: Event) => void;
98
99
  close: (event: Event, { ifIsLatest, triggeredBy }?: {
99
100
  ifIsLatest: boolean;
100
- triggeredBy?: any;
101
+ triggeredBy?: string;
101
102
  }) => void;
102
103
  removeActiveState(): void;
103
104
  /**
@@ -3,7 +3,7 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
5
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
6
- const _excluded = ["root_id", "content_id", "disabled", "labelled_by", "focus_selector", "header_content", "bar_content", "bypass_invalidation_selectors", "vertical_alignment", "id", "open_state", "open_delay", "omit_trigger_button", "trigger", "trigger_attributes"];
6
+ const _excluded = ["root_id", "content_id", "disabled", "labelled_by", "focus_selector", "header_content", "bar_content", "bypass_invalidation_selectors", "vertical_alignment", "id", "open_delay", "omit_trigger_button", "trigger", "trigger_attributes"];
7
7
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
8
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
9
  import React from 'react';
@@ -71,6 +71,7 @@ class Modal extends React.PureComponent {
71
71
  _defineProperty(this, "_tryToOpenTimeout", void 0);
72
72
  _defineProperty(this, "activeElement", void 0);
73
73
  _defineProperty(this, "isInTransition", void 0);
74
+ _defineProperty(this, "modalContentCloseRef", void 0);
74
75
  _defineProperty(this, "state", {
75
76
  hide: false,
76
77
  modalActive: false,
@@ -193,10 +194,14 @@ class Modal extends React.PureComponent {
193
194
  });
194
195
  _defineProperty(this, "close", (event, {
195
196
  ifIsLatest,
196
- triggeredBy = null
197
+ triggeredBy = 'handler'
197
198
  } = {
198
199
  ifIsLatest: true
199
200
  }) => {
201
+ var _this$modalContentClo, _this$modalContentClo2;
202
+ (_this$modalContentClo = (_this$modalContentClo2 = this.modalContentCloseRef).current) === null || _this$modalContentClo === void 0 ? void 0 : _this$modalContentClo.call(_this$modalContentClo2, event, {
203
+ triggeredBy
204
+ });
200
205
  const {
201
206
  prevent_close = false
202
207
  } = this.props;
@@ -225,6 +230,7 @@ class Modal extends React.PureComponent {
225
230
  });
226
231
  this._id = props.id || makeUniqueId('modal-');
227
232
  this._triggerRef = React.createRef();
233
+ this.modalContentCloseRef = React.createRef();
228
234
  this._onUnmount = [];
229
235
  }
230
236
  componentDidMount() {
@@ -301,7 +307,6 @@ class Modal extends React.PureComponent {
301
307
  bypass_invalidation_selectors = null,
302
308
  vertical_alignment = 'center',
303
309
  id,
304
- open_state,
305
310
  open_delay,
306
311
  omit_trigger_button = false,
307
312
  trigger = null,
@@ -354,7 +359,8 @@ class Modal extends React.PureComponent {
354
359
  bypass_invalidation_selectors: bypass_invalidation_selectors,
355
360
  close: this.close,
356
361
  hide: hide,
357
- title: rest.title || fallbackTitle
362
+ title: rest.title || fallbackTitle,
363
+ modalContentCloseRef: this.modalContentCloseRef
358
364
  })));
359
365
  };
360
366
  return React.createElement(SuffixContext.Consumer, null, render);
@@ -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","window","animation_duration","no_animation","open_state","_open_state","hide","modalActive","constructor","_defineProperty","preventAutoFocus","event","showModal","preventDefault","toggleNow","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","visualTestsPropsOverride","defaultProps","context","getTranslation","root_id","content_id","disabled","labelled_by","focus_selector","header_content","bar_content","bypass_invalidation_selectors","vertical_alignment","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 preventAutoFocus: 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 preventAutoFocus: true,\n animation_duration: ANIMATION_DURATION,\n no_animation: 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 vertical_alignment: null,\n open_state: null,\n direct_dom_return: false,\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 (typeof window !== 'undefined' && window['IS_TEST']) {\n state.animation_duration = 0\n state.no_animation = true\n } else {\n state.animation_duration = props.animation_duration\n state.no_animation = props.no_animation\n }\n\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(state.no_animation)) {\n state.modalActive = true\n }\n break\n case 'closed':\n case false:\n state.hide = true\n if (isTrue(state.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.state\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 } = this.props\n const { no_animation } = this.state\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, preventAutoFocus, animation_duration } =\n this.state\n const { close_modal, open_state } = 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 this.setActiveState(this._id)\n } else if (modalActive === false && !preventAutoFocus) {\n const focus = (elem: HTMLElement) => {\n // So we can omit showing a Tooltip on the trigger button\n elem.setAttribute('data-autofocus', 'true')\n elem.focus({ preventScroll: true })\n\n return new Promise<void>((resolve) => {\n setTimeout(\n () => {\n elem?.removeAttribute('data-autofocus')\n resolve()\n },\n parseFloat(String(animation_duration)) / 3\n )\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 if (preventAutoFocus) {\n this.setState({ preventAutoFocus: false })\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 const visualTestsPropsOverride =\n typeof window !== 'undefined' && window['IS_TEST']\n ? {\n animation_duration: 0,\n no_animation: true,\n }\n : {}\n\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 visualTestsPropsOverride\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 vertical_alignment = 'center',\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.className,\n\n // @deprecated – can be removed in v11\n triggerAttributes.class\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 vertical_alignment={vertical_alignment}\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","window","animation_duration","no_animation","open_state","_open_state","hide","modalActive","constructor","_defineProperty","preventAutoFocus","event","showModal","preventDefault","toggleNow","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","_this$modalContentClo","_this$modalContentClo2","modalContentCloseRef","call","prevent_close","id","close","list","length","last","createRef","componentDidMount","openBasedOnStateUpdate","componentWillUnmount","forEach","componentDidUpdate","prevProps","document","documentElement","modalId","render","visualTestsPropsOverride","defaultProps","context","getTranslation","root_id","content_id","disabled","labelled_by","focus_selector","header_content","bar_content","bypass_invalidation_selectors","vertical_alignment","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 preventAutoFocus: 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 modalContentCloseRef: React.RefObject<any>\n\n state = {\n hide: false,\n modalActive: false,\n preventAutoFocus: true,\n animation_duration: ANIMATION_DURATION,\n no_animation: 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 vertical_alignment: null,\n open_state: null,\n direct_dom_return: false,\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 (typeof window !== 'undefined' && window['IS_TEST']) {\n state.animation_duration = 0\n state.no_animation = true\n } else {\n state.animation_duration = props.animation_duration\n state.no_animation = props.no_animation\n }\n\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(state.no_animation)) {\n state.modalActive = true\n }\n break\n case 'closed':\n case false:\n state.hide = true\n if (isTrue(state.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 this.modalContentCloseRef = 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.state\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 } = this.props\n const { no_animation } = this.state\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, preventAutoFocus, animation_duration } =\n this.state\n const { close_modal, open_state } = 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 this.setActiveState(this._id)\n } else if (modalActive === false && !preventAutoFocus) {\n const focus = (elem: HTMLElement) => {\n // So we can omit showing a Tooltip on the trigger button\n elem.setAttribute('data-autofocus', 'true')\n elem.focus({ preventScroll: true })\n\n return new Promise<void>((resolve) => {\n setTimeout(\n () => {\n elem?.removeAttribute('data-autofocus')\n resolve()\n },\n parseFloat(String(animation_duration)) / 3\n )\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 if (preventAutoFocus) {\n this.setState({ preventAutoFocus: false })\n }\n }\n\n open = (e: Event) => {\n this.toggleOpenClose(e, true)\n }\n\n close = (\n event: Event,\n { ifIsLatest, triggeredBy = 'handler' } = {\n ifIsLatest: true,\n }\n ) => {\n this.modalContentCloseRef.current?.(event, { triggeredBy })\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 const visualTestsPropsOverride =\n typeof window !== 'undefined' && window['IS_TEST']\n ? {\n animation_duration: 0,\n no_animation: true,\n }\n : {}\n\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 visualTestsPropsOverride\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 vertical_alignment = 'center',\n\n id, // 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.className,\n\n // @deprecated – can be removed in v11\n triggerAttributes.class\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 vertical_alignment={vertical_alignment}\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 modalContentCloseRef={this.modalContentCloseRef}\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":";;;;;;;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,6BAA6B;AAC3D,OAAOC,OAAO,MAAwB,sBAAsB;AAC5D,SACEC,IAAI,EACJC,MAAM,EACNC,YAAY,EACZC,sCAAsC,EACtCC,eAAe,EACfC,0BAA0B,QACrB,+BAA+B;AACtC,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,OAAOC,kBAAkB,MAAM,mCAAmC;AAClE,SAASC,mBAAmB,EAAEC,YAAY,QAAQ,WAAW;AAC7D,OAAOC,UAAU,MAAM,oBAAoB;AAG3C,OAAOC,WAAW,MAAM,qBAAqB;AAC7C,OAAOC,cAAc,MAAM,wBAAwB;AAEnD,OAAOC,WAAW,MAAM,qBAAqB;AAC7C,OAAOC,SAAS,MAAM,aAAa;AAEnC,SACEC,uBAAuB,QAElB,yCAAyC;AAGhD,OAAO,MAAMC,kBAAkB,GAAG,GAAG;AAYrC,MAAMC,KAAK,SAASrB,KAAK,CAACsB,aAAa,CAGrC;EASA,OAAOC,UAAUA,CAACC,KAAK,EAAE;IACvB,IAAI,OAAOA,KAAK,CAACC,aAAa,KAAK,QAAQ,EAAE;MAC3C,OAAOD,KAAK,CAACC,aAAa;IAC5B,CAAC,MAAM,IAAI,OAAOD,KAAK,CAACC,aAAa,KAAK,UAAU,EAAE;MACpD,OAAOD,KAAK,CAACC,aAAa,CAACD,KAAK,CAAC;IACnC;IACA,OAAOhB,eAAe,CAACgB,KAAK,CAAC;EAC/B;EAsEA,OAAOE,wBAAwBA,CAACF,KAAK,EAAEG,KAAK,EAAE;IAC5C,IAAI,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAAC,SAAS,CAAC,EAAE;MACtDD,KAAK,CAACE,kBAAkB,GAAG,CAAC;MAC5BF,KAAK,CAACG,YAAY,GAAG,IAAI;IAC3B,CAAC,MAAM;MACLH,KAAK,CAACE,kBAAkB,GAAGL,KAAK,CAACK,kBAAkB;MACnDF,KAAK,CAACG,YAAY,GAAGN,KAAK,CAACM,YAAY;IACzC;IAEA,IAAIN,KAAK,CAACO,UAAU,KAAKJ,KAAK,CAACK,WAAW,EAAE;MAC1C,QAAQR,KAAK,CAACO,UAAU;QACtB,KAAK,QAAQ;QACb,KAAK,IAAI;UACPJ,KAAK,CAACM,IAAI,GAAG,KAAK;UAClB,IAAI5B,MAAM,CAACsB,KAAK,CAACG,YAAY,CAAC,EAAE;YAC9BH,KAAK,CAACO,WAAW,GAAG,IAAI;UAC1B;UACA;QACF,KAAK,QAAQ;QACb,KAAK,KAAK;UACRP,KAAK,CAACM,IAAI,GAAG,IAAI;UACjB,IAAI5B,MAAM,CAACsB,KAAK,CAACG,YAAY,CAAC,EAAE;YAC9BH,KAAK,CAACO,WAAW,GAAG,KAAK;UAC3B;UACA;MACJ;IACF;IACAP,KAAK,CAACK,WAAW,GAAGR,KAAK,CAACO,UAAU;IAEpC,OAAOJ,KAAK;EACd;EAEAQ,WAAWA,CAACX,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IAAAY,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,gBA1FN;MACNH,IAAI,EAAE,KAAK;MACXC,WAAW,EAAE,KAAK;MAClBG,gBAAgB,EAAE,IAAI;MACtBR,kBAAkB,EAAET,kBAAkB;MACtCU,YAAY,EAAE;IAChB,CAAC;IAAAM,eAAA,0BAmIiB,CAACE,KAAK,GAAG,IAAI,EAAEC,SAAS,GAAG,IAAI,KAAK;MACpD,IAAID,KAAK,IAAIA,KAAK,CAACE,cAAc,EAAE;QACjCF,KAAK,CAACE,cAAc,CAAC,CAAC;MACxB;MAEA,MAAMC,SAAS,GAAGA,CAAA,KAAM;QACtB,MAAM;UACJZ,kBAAkB,GAAGT,kBAAkB;UACvCU,YAAY,GAAG;QACjB,CAAC,GAAG,IAAI,CAACH,KAAK;QACd,MAAMe,eAAe,GACnB,OAAOb,kBAAkB,KAAK,QAAQ,GAClCc,UAAU,CAACd,kBAAkB,CAAC,GAC9BA,kBAAkB;QAExB,MAAMK,WAAW,GACf,OAAOK,SAAS,KAAK,SAAS,GAC1BA,SAAS,GACT,CAAC,IAAI,CAACZ,KAAK,CAACO,WAAW;QAE7B,IAAI,CAACU,cAAc,GAAG,IAAI;QAE1B,MAAMC,OAAO,GAAGA,CAAA,KAAM;UACpB,IAAI,CAACC,QAAQ,CACX;YACEb,IAAI,EAAE,KAAK;YACXC;UACF,CAAC,EACD,MAAM;YACJ,IAAI,CAACU,cAAc,GAAG,KAAK;YAC3B,IAAI,CAACG,iBAAiB,CAAC,CAAC;UAC1B,CACF,CAAC;QACH,CAAC;QAED,IAAIb,WAAW,KAAK,KAAK,IAAI,CAAC7B,MAAM,CAACyB,YAAY,CAAC,EAAE;UAClD,IAAI,CAACgB,QAAQ,CAAC;YACZb,IAAI,EAAE;UACR,CAAC,CAAC;UAEF,IAAI,CAACe,aAAa,GAAGC,UAAU,CAACJ,OAAO,EAAEH,eAAe,CAAC;QAC3D,CAAC,MAAM;UACLG,OAAO,CAAC,CAAC;QACX;MACF,CAAC;MAED,MAAMK,cAAc,GAAGA,CAAA,KAAM;QAC3B,MAAM;UAAEC;QAAW,CAAC,GAAG,IAAI,CAAC3B,KAAK;QACjC,MAAM;UAAEM;QAAa,CAAC,GAAG,IAAI,CAACH,KAAK;QACnC,MAAMyB,KAAK,GACT,OAAOD,UAAU,KAAK,QAAQ,GAC1BR,UAAU,CAACQ,UAAU,CAAC,GACtBA,UAAU;QAChB,IAAIC,KAAK,GAAG,CAAC,IAAI,CAAC/C,MAAM,CAACyB,YAAY,CAAC,EAAE;UACtC,IAAI,CAACuB,YAAY,GAAGJ,UAAU,CAACR,SAAS,EAAEW,KAAK,CAAC;QAClD,CAAC,MAAM;UACLX,SAAS,CAAC,CAAC;QACb;MACF,CAAC;MAEDa,YAAY,CAAC,IAAI,CAACN,aAAa,CAAC;MAChCM,YAAY,CAAC,IAAI,CAACD,YAAY,CAAC;MAE/B,MAAM;QAAEE;MAAW,CAAC,GAAG,IAAI,CAAC/B,KAAK;MACjC,IAAI,OAAO+B,UAAU,KAAK,UAAU,EAAE;QACpC,MAAMC,EAAE,GAAGD,UAAU,CAACL,cAAc,EAAE,IAAI,CAAC;QAC3C,IAAIM,EAAE,EAAE;UACN,IAAI,CAACC,UAAU,CAACC,IAAI,CAACF,EAAE,CAAC;QAC1B;MACF,CAAC,MAAM;QACLN,cAAc,CAAC,CAAC;MAClB;IACF,CAAC;IAAAd,eAAA,4BAEmB,MAAM;MACxB,MAAM;QAAEF,WAAW;QAAEG,gBAAgB;QAAER;MAAmB,CAAC,GACzD,IAAI,CAACF,KAAK;MACZ,MAAM;QAAEgC,WAAW;QAAE5B;MAAW,CAAC,GAAG,IAAI,CAACP,KAAK;MAE9C,IAAIU,WAAW,EAAE;QACf,IAAI,OAAOyB,WAAW,KAAK,UAAU,EAAE;UACrC,MAAMH,EAAE,GAAGG,WAAW,CAAC,MAAM;YAC3B,IAAI,CAACC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;UACnC,CAAC,EAAE,IAAI,CAAC;UACR,IAAIJ,EAAE,EAAE;YACN,IAAI,CAACC,UAAU,CAACC,IAAI,CAACF,EAAE,CAAC;UAC1B;QACF;QACA,IAAI,CAACK,cAAc,CAAC,IAAI,CAACC,GAAG,CAAC;MAC/B,CAAC,MAAM,IAAI5B,WAAW,KAAK,KAAK,IAAI,CAACG,gBAAgB,EAAE;QAAA,IAAA0B,iBAAA;QACrD,MAAMC,KAAK,GAAIC,IAAiB,IAAK;UAEnCA,IAAI,CAACC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC;UAC3CD,IAAI,CAACD,KAAK,CAAC;YAAEG,aAAa,EAAE;UAAK,CAAC,CAAC;UAEnC,OAAO,IAAIC,OAAO,CAAQC,OAAO,IAAK;YACpCpB,UAAU,CACR,MAAM;cACJgB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,eAAe,CAAC,gBAAgB,CAAC;cACvCD,OAAO,CAAC,CAAC;YACX,CAAC,EACD1B,UAAU,CAAC4B,MAAM,CAAC1C,kBAAkB,CAAC,CAAC,GAAG,CAC3C,CAAC;UACH,CAAC,CAAC;QACJ,CAAC;QAED,KAAAkC,iBAAA,GAAI,IAAI,CAACS,WAAW,cAAAT,iBAAA,eAAhBA,iBAAA,CAAkBU,OAAO,EAAE;UAC7BT,KAAK,CAAC,IAAI,CAACQ,WAAW,CAACC,OAAO,CAAC;QACjC;QAGA,IACE,CAAC1C,UAAU,KAAK,QAAQ,IAAIA,UAAU,KAAK,IAAI,KAC/C,IAAI,CAAC2C,aAAa,YAAYC,WAAW,EACzC;UACA,IAAI;YACFX,KAAK,CAAC,IAAI,CAACU,aAAa,CAAC,CAACE,IAAI,CAAC,MAAM;cACnC,IAAI,CAACF,aAAa,GAAG,IAAI;YAC3B,CAAC,CAAC;UACJ,CAAC,CAAC,OAAOG,CAAC,EAAE,CAEZ;QACF;QAEA,IAAI,CAACC,iBAAiB,CAAC,CAAC;MAC1B;MAEA,IAAIzC,gBAAgB,EAAE;QACpB,IAAI,CAACS,QAAQ,CAAC;UAAET,gBAAgB,EAAE;QAAM,CAAC,CAAC;MAC5C;IACF,CAAC;IAAAD,eAAA,eAEOyC,CAAQ,IAAK;MACnB,IAAI,CAACjB,eAAe,CAACiB,CAAC,EAAE,IAAI,CAAC;IAC/B,CAAC;IAAAzC,eAAA,gBAEO,CACNE,KAAY,EACZ;MAAEyC,UAAU;MAAEC,WAAW,GAAG;IAAU,CAAC,GAAG;MACxCD,UAAU,EAAE;IACd,CAAC,KACE;MAAA,IAAAE,qBAAA,EAAAC,sBAAA;MACH,CAAAD,qBAAA,IAAAC,sBAAA,OAAI,CAACC,oBAAoB,EAACV,OAAO,cAAAQ,qBAAA,uBAAjCA,qBAAA,CAAAG,IAAA,CAAAF,sBAAA,EAAoC5C,KAAK,EAAE;QAAE0C;MAAY,CAAC,CAAC;MAE3D,MAAM;QAAEK,aAAa,GAAG;MAAM,CAAC,GAAG,IAAI,CAAC7D,KAAK;MAE5C,IAAInB,MAAM,CAACgF,aAAa,CAAC,EAAE;QACzB,MAAMC,EAAE,GAAG,IAAI,CAACxB,GAAG;QACnBrD,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,EAAE;UACnD6E,EAAE;UACFhD,KAAK;UACL0C,WAAW;UACXO,KAAK,EAAGV,CAAC,IAAK;YACZ,IAAI,CAACjB,eAAe,CAACiB,CAAC,EAAE,KAAK,CAAC;UAChC;QACF,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,IAAIE,UAAU,EAAE;UACd,MAAMS,IAAI,GAAG5E,mBAAmB,CAAC,CAAC;UAClC,IAAI4E,IAAI,CAACC,MAAM,GAAG,CAAC,EAAE;YACnB,MAAMC,IAAI,GAAG7E,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI6E,IAAI,KAAK,IAAI,EAAE;cACjB;YACF;UACF;QACF;QAEA,IAAI,CAAC9B,eAAe,CAACtB,KAAK,EAAE,KAAK,CAAC;MACpC;IACF,CAAC;IAvNC,IAAI,CAACwB,GAAG,GAAGtC,KAAK,CAAC8D,EAAE,IAAIhF,YAAY,CAAC,QAAQ,CAAC;IAE7C,IAAI,CAACkE,WAAW,GAAGxE,KAAK,CAAC2F,SAAS,CAAC,CAAC;IACpC,IAAI,CAACR,oBAAoB,GAAGnF,KAAK,CAAC2F,SAAS,CAAC,CAAC;IAE7C,IAAI,CAAClC,UAAU,GAAG,EAAE;EACtB;EAEAmC,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACC,sBAAsB,CAAC,CAAC;EAC/B;EAEAC,oBAAoBA,CAAA,EAAG;IACrBxC,YAAY,CAAC,IAAI,CAACD,YAAY,CAAC;IAC/BC,YAAY,CAAC,IAAI,CAACN,aAAa,CAAC;IAEhC,IAAI,CAAC8B,iBAAiB,CAAC,CAAC;IAExB,IAAI,CAACrB,UAAU,CAACsC,OAAO,CAAEvC,EAAE,IAAK;MAC9B,IAAI,OAAOA,EAAE,KAAK,UAAU,EAAE;QAC5BA,EAAE,CAAC,CAAC;MACN;IACF,CAAC,CAAC;EACJ;EAEAwC,kBAAkBA,CAACC,SAAS,EAAE;IAC5B,IAAIA,SAAS,KAAK,IAAI,CAACzE,KAAK,EAAE;MAC5B,IAAI,CAACqE,sBAAsB,CAAC,CAAC;IAC/B;EACF;EAEAA,sBAAsBA,CAAA,EAAG;IACvB,MAAM;MAAE5D;IAAK,CAAC,GAAG,IAAI,CAACN,KAAK;IAC3B,MAAM;MAAEI;IAAW,CAAC,GAAG,IAAI,CAACP,KAAK;IAEjC,IAAI,CAAC,IAAI,CAACkD,aAAa,IAAI,OAAOwB,QAAQ,KAAK,WAAW,EAAE;MAC1D,IAAI,CAACxB,aAAa,GAAGwB,QAAQ,CAACxB,aAAa;IAC7C;IAEA,IAAI,CAACzC,IAAI,KAAKF,UAAU,KAAK,QAAQ,IAAIA,UAAU,KAAK,IAAI,CAAC,EAAE;MAC7D,IAAI,CAAC6B,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;IAClC,CAAC,MAAM,IAAI3B,IAAI,KAAKF,UAAU,KAAK,QAAQ,IAAIA,UAAU,KAAK,KAAK,CAAC,EAAE;MACpE,IAAI,CAAC6B,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;IACnC;EACF;EA6KAkB,iBAAiBA,CAAA,EAAG;IAClB,MAAMY,IAAI,GAAG7E,YAAY,CAAC,CAAC,CAAC,CAAC;IAI7B,IAAI6E,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAE5B,GAAG,IAAI4B,IAAI,CAAC5B,GAAG,KAAK,IAAI,CAACA,GAAG,EAAE;MACtC,OAAO,IAAI,CAACD,cAAc,CAAC6B,IAAI,CAAC5B,GAAG,CAAC;IACtC;IAEA,IAAI;MACFoC,QAAQ,CAACC,eAAe,CAAC7B,eAAe,CAAC,uBAAuB,CAAC;IACnE,CAAC,CAAC,OAAOO,CAAC,EAAE;MACVzE,IAAI,CAAC,gDAAgD,EAAEyE,CAAC,CAAC;IAC3D;EACF;EAQAhB,cAAcA,CAACuC,OAAe,EAAE;IAC9B,IAAI,CAACA,OAAO,EAAE;MACZhG,IAAI,CAAC,oCAAoC,CAAC;IAC5C;IAEA,IAAI,OAAO8F,QAAQ,KAAK,WAAW,EAAE;MACnC,IAAI;QACFA,QAAQ,CAACC,eAAe,CAACjC,YAAY,CACnC,uBAAuB,EACvBkC,OACF,CAAC;MACH,CAAC,CAAC,OAAOvB,CAAC,EAAE;QACVzE,IAAI,CAAC,6CAA6C,EAAEyE,CAAC,CAAC;MACxD;IACF;EACF;EAEAwB,MAAMA,CAAA,EAAG;IACP,MAAMC,wBAAwB,GAC5B,OAAO1E,MAAM,KAAK,WAAW,IAAIA,MAAM,CAAC,SAAS,CAAC,GAC9C;MACEC,kBAAkB,EAAE,CAAC;MACrBC,YAAY,EAAE;IAChB,CAAC,GACD,CAAC,CAAC;IAGR,MAAMN,KAAK,GAAGjB,sCAAsC,CAClD,IAAI,CAACiB,KAAK,EACVH,KAAK,CAACkF,YAAY,EAClB,IAAI,CAACC,OAAO,CAACC,cAAc,CAAC,IAAI,CAACjF,KAAK,CAAC,CAACH,KAAK,EAC7C,IAAI,CAACmF,OAAO,CAACnF,KAAK,EAClBiF,wBACF,CAAC;IAED,MAAM;QACJI,OAAO,GAAG,MAAM;QAChBC,UAAU,GAAG,IAAI;QACjBC,QAAQ,GAAG,IAAI;QACfC,WAAW,GAAG,IAAI;QAClBC,cAAc,GAAG,IAAI;QACrBC,cAAc,GAAG,IAAI;QACrBC,WAAW,GAAG,IAAI;QAClBC,6BAA6B,GAAG,IAAI;QACpCC,kBAAkB,GAAG,QAAQ;QAE7B5B,EAAE;QACFnC,UAAU;QAEVgE,mBAAmB,GAAG,KAAK;QAC3BC,OAAO,GAAG,IAAI;QACdC,kBAAkB,GAAG;MAEvB,CAAC,GAAG7F,KAAK;MADJ8F,IAAI,GAAAC,wBAAA,CACL/F,KAAK,EAAAgG,SAAA;IAET,MAAM;MAAEvF,IAAI;MAAEC;IAAY,CAAC,GAAG,IAAI,CAACP,KAAK;IACxC,MAAMF,aAAa,GAAGJ,KAAK,CAACE,UAAU,CACpC,OAAO,IAAI,CAACC,KAAK,CAACiG,QAAQ,KAAK,UAAU,GACrCC,MAAM,CAACC,MAAM,CAAAC,aAAA,CAAAA,aAAA,KAAM,IAAI,CAACpG,KAAK;MAAE+D,KAAK,EAAE,IAAI,CAACA;IAAK,EAAE,CAAC,GACnD,IAAI,CAAC/D,KACX,CAAC;IAED,MAAM6E,MAAM,GAAIwB,WAAW,IAAK;MAC9B,MAAMC,iBAAiB,GAAAF,aAAA;QACrBG,MAAM,EAAE,KAAK;QACbC,OAAO,EAAE,WAAW;QACpBC,aAAa,EAAE;MAAM,GAClBZ,kBAAkB,CACP;MAEhB,IAAIhH,MAAM,CAACuG,QAAQ,CAAC,EAAE;QACpBkB,iBAAiB,CAAClB,QAAQ,GAAG,IAAI;MACnC;MAEA,IAAIkB,iBAAiB,CAACxC,EAAE,EAAE;QACxB,IAAI,CAACxB,GAAG,GAAGgE,iBAAiB,CAACxC,EAAE;MACjC;MAEA,IAAI4C,aAAqB;MACzB,IAAIJ,iBAAiB,CAACK,KAAK,EAAE;QAC3BD,aAAa,GAAGJ,iBAAiB,CAACK,KAAK;MACzC,CAAC,MAGI,IAAIN,WAAW,EAAE;QACpBK,aAAa,GAAG,IAAI,CAAC1B,OAAO,CAAC4B,WAAW,CAACC,UAAU,CAACF,KAAK;MAC3D;MAEA,MAAMG,aAAa,GAAGlB,OAAO,GACxBA,OAAO,GACRzG,kBAAkB;MAEtB,MAAMwH,KAAK,GACT,CAACL,iBAAiB,CAACS,IAAI,GAAGjB,IAAI,CAACa,KAAK,IAAID,aAAa,GAAG,IAC/C;MAEX,OACElI,KAAA,CAAAwI,aAAA,CAAAxI,KAAA,CAAAyI,QAAA,QACGH,aAAa,IAAI,CAACjI,MAAM,CAAC8G,mBAAmB,CAAC,IAC5CnH,KAAA,CAAAwI,aAAA,CAACF,aAAa,EAAAI,QAAA,KACRZ,iBAAiB;QACrBxC,EAAE,EAAE,IAAI,CAACxB,GAAI;QACbqE,KAAK,EAAEA,KAAM;QACbQ,OAAO,EAAE,IAAI,CAAC/E,eAAgB;QAC9BgF,QAAQ,EAAE,IAAI,CAACpE,WAAY;QAC3BqE,SAAS,EAAE5I,UAAU,CACnB,oBAAoB,EACpBS,oBAAoB,CAACc,KAAK,CAAC,EAC3BsG,iBAAiB,CAACe,SAAS,EAG3Bf,iBAAiB,CAACgB,KACpB;MAAE,EACH,CACF,EAEA5G,WAAW,IAAIT,aAAa,IAC3BzB,KAAA,CAAAwI,aAAA,CAACtH,SAAS,EAAAwH,QAAA,KACJpB,IAAI;QACRhC,EAAE,EAAE,IAAI,CAACxB,GAAI;QACb4C,OAAO,EAAEA,OAAQ;QACjBC,UAAU,EAAEA,UAAU,IAAK,aAAY,IAAI,CAAC7C,GAAI,EAAE;QAClD+C,WAAW,EAAEA,WAAY;QACzBC,cAAc,EAAEA,cAAe;QAC/BrF,aAAa,EAAEA,aAAc;QAC7BsF,cAAc,EAAEA,cAAe;QAC/BG,kBAAkB,EAAEA,kBAAmB;QACvCF,WAAW,EAAEA,WAAY;QACzBC,6BAA6B,EAAEA,6BAA8B;QAC7D1B,KAAK,EAAE,IAAI,CAACA,KAAM;QAClBtD,IAAI,EAAEA,IAAK;QACXkG,KAAK,EAAEb,IAAI,CAACa,KAAK,IAAID,aAAc;QACnC/C,oBAAoB,EAAE,IAAI,CAACA;MAAqB,EACjD,CAEH,CAAC;IAEP,CAAC;IAED,OAAOnF,KAAA,CAAAwI,aAAA,CAACtI,aAAa,CAAC6I,QAAQ,QAAE1C,MAA+B,CAAC;EAClE;AACF;AAACjE,eAAA,CAvfKf,KAAK,iBAIYlB,OAAO;AAAAiC,eAAA,CAJxBf,KAAK,SAQIL,cAAc;AAAAoB,eAAA,CARvBf,KAAK,YASON,WAAW;AAAAqB,eAAA,CATvBf,KAAK,aAUQP,UAAU;AAAAsB,eAAA,CAVvBf,KAAK,kBAwCa;EACpBiE,EAAE,EAAE,IAAI;EACRwB,cAAc,EAAE,IAAI;EACpBD,WAAW,EAAE,IAAI;EACjBsB,KAAK,EAAE,IAAI;EACXvB,QAAQ,EAAE,IAAI;EACdoC,OAAO,EAAE,IAAI;EACb7F,UAAU,EAAE,IAAI;EAChBwD,UAAU,EAAE,IAAI;EAChBsC,YAAY,EAAE,OAAO;EACrBC,WAAW,EAAE,MAAM;EACnBC,iBAAiB,EAAE,KAAK;EACxBC,uBAAuB,EAAE,IAAI;EAC7B/D,aAAa,EAAE,KAAK;EACpBgE,kBAAkB,EAAE,KAAK;EACzBxH,kBAAkB,EAAET,kBAAkB;EACtCU,YAAY,EAAE,KAAK;EACnBwH,sBAAsB,EAAE,KAAK;EAC7BC,UAAU,EAAE,MAAM;EAClBC,SAAS,EAAE,IAAI;EACfC,SAAS,EAAE,IAAI;EACfC,aAAa,EAAE,MAAM;EACrBC,mBAAmB,EAAE,IAAI;EACzBzC,kBAAkB,EAAE,IAAI;EACxBnF,UAAU,EAAE,IAAI;EAChB6H,iBAAiB,EAAE,KAAK;EACxBlD,OAAO,EAAE,MAAM;EACfS,mBAAmB,EAAE,KAAK;EAE1B0B,SAAS,EAAE,IAAI;EACfpB,QAAQ,EAAE,IAAI;EAEdoC,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE,IAAI;EACdC,gBAAgB,EAAE,IAAI;EACtBxG,UAAU,EAAE,IAAI;EAChBI,WAAW,EAAE,IAAI;EAEjByD,OAAO,EAAE,IAAI;EACbC,kBAAkB,EAAE,IAAI;EAExB2C,aAAa,EAAE,IAAI;EACnBC,aAAa,EAAE,IAAI;EAEnBxI,aAAa,EAAE,IAAI;EACnBsF,cAAc,EAAE,IAAI;EACpBC,WAAW,EAAE;AACf,CAAC;AAkaH,SAAS/F,WAAW,EAAEI,KAAK,IAAI6I,iBAAiB;AAEhD,eAAe/I,uBAAuB,CAACE,KAAK,CAAC"}
@@ -5,11 +5,9 @@
5
5
  /// <reference types="node" />
6
6
  import React from 'react';
7
7
  import { InteractionInvalidation } from '../../shared/component-helper';
8
- import { ModalContentProps } from './types';
8
+ import { CloseHandlerParams, ModalContentProps, TriggeredBy } from './types';
9
9
  import { ContextProps } from '../../shared/Context';
10
10
  interface ModalContentState {
11
- triggeredBy: string;
12
- triggeredByEvent: Event;
13
11
  color: string;
14
12
  }
15
13
  declare global {
@@ -19,8 +17,6 @@ declare global {
19
17
  }
20
18
  export default class ModalContent extends React.PureComponent<ModalContentProps, ModalContentState> {
21
19
  state: {
22
- triggeredBy: any;
23
- triggeredByEvent: any;
24
20
  color: any;
25
21
  };
26
22
  _contentRef: React.RefObject<HTMLElement>;
@@ -34,11 +30,17 @@ export default class ModalContent extends React.PureComponent<ModalContentProps,
34
30
  _androidFocusTimeout: NodeJS.Timeout;
35
31
  _ii: InteractionInvalidation;
36
32
  _iiLocal: InteractionInvalidation;
33
+ _triggeredBy: TriggeredBy;
34
+ _triggeredByEvent: React.SyntheticEvent;
35
+ _isControlled: boolean;
37
36
  static contextType: React.Context<ContextProps>;
38
37
  context: ContextProps;
39
38
  constructor(props: ModalContentProps);
40
39
  componentDidMount(): void;
41
40
  componentWillUnmount(): void;
41
+ setIsControlled(): void;
42
+ componentDidUpdate(): void;
43
+ wasOpenedManually(): boolean;
42
44
  lockBody: () => void;
43
45
  removeLocks(): void;
44
46
  setAndroidFocusHelper(): void;
@@ -52,9 +54,9 @@ export default class ModalContent extends React.PureComponent<ModalContentProps,
52
54
  onContentMouseDownHandler: (event: React.SyntheticEvent) => void;
53
55
  onContentClickHandler: (event: React.SyntheticEvent) => void;
54
56
  onKeyDownHandler: (event: any) => void;
55
- closeModalContent(event: any, { triggeredBy, ...params }: {
56
- [x: string]: any;
57
- triggeredBy: any;
57
+ setModalContentState: (event: React.SyntheticEvent, { triggeredBy }: CloseHandlerParams) => void;
58
+ closeModalContent(event: any, { triggeredBy, ...params }: CloseHandlerParams & {
59
+ ifIsLatest?: boolean;
58
60
  }): void;
59
61
  setBackgroundColor: (color: string) => void;
60
62
  render(): import("react/jsx-runtime").JSX.Element;
@@ -20,8 +20,6 @@ export default class ModalContent extends React.PureComponent {
20
20
  constructor(props) {
21
21
  super(props);
22
22
  _defineProperty(this, "state", {
23
- triggeredBy: null,
24
- triggeredByEvent: null,
25
23
  color: null
26
24
  });
27
25
  _defineProperty(this, "_contentRef", void 0);
@@ -33,6 +31,9 @@ export default class ModalContent extends React.PureComponent {
33
31
  _defineProperty(this, "_androidFocusTimeout", void 0);
34
32
  _defineProperty(this, "_ii", void 0);
35
33
  _defineProperty(this, "_iiLocal", void 0);
34
+ _defineProperty(this, "_triggeredBy", void 0);
35
+ _defineProperty(this, "_triggeredByEvent", void 0);
36
+ _defineProperty(this, "_isControlled", false);
36
37
  _defineProperty(this, "context", void 0);
37
38
  _defineProperty(this, "lockBody", () => {
38
39
  const modalRoots = getListOfModalRoots();
@@ -112,6 +113,12 @@ export default class ModalContent extends React.PureComponent {
112
113
  }
113
114
  }
114
115
  });
116
+ _defineProperty(this, "setModalContentState", (event, {
117
+ triggeredBy
118
+ }) => {
119
+ this._triggeredBy = triggeredBy;
120
+ this._triggeredByEvent = event;
121
+ });
115
122
  _defineProperty(this, "setBackgroundColor", color => {
116
123
  this.setState({
117
124
  color
@@ -120,6 +127,9 @@ export default class ModalContent extends React.PureComponent {
120
127
  this._contentRef = this.props.content_ref || React.createRef();
121
128
  this._scrollRef = this.props.scroll_ref || React.createRef();
122
129
  this._overlayClickRef = React.createRef();
130
+ if (this.props.modalContentCloseRef) {
131
+ this.props.modalContentCloseRef.current = this.setModalContentState;
132
+ }
123
133
  this._id = props.id;
124
134
  }
125
135
  componentDidMount() {
@@ -141,12 +151,33 @@ export default class ModalContent extends React.PureComponent {
141
151
  } else {
142
152
  this._lockTimeout = setTimeout(this.lockBody, timeoutDuration * 1.2);
143
153
  }
154
+ this.setIsControlled();
144
155
  }
145
156
  componentWillUnmount() {
146
157
  clearTimeout(this._focusTimeout);
147
158
  clearTimeout(this._lockTimeout);
148
159
  this.removeLocks();
149
160
  }
161
+ setIsControlled() {
162
+ const {
163
+ open_state
164
+ } = this.props;
165
+ if (typeof open_state !== 'undefined' && open_state !== null) {
166
+ this._isControlled = true;
167
+ }
168
+ }
169
+ componentDidUpdate() {
170
+ this.setIsControlled();
171
+ }
172
+ wasOpenedManually() {
173
+ if (this._triggeredBy) {
174
+ return true;
175
+ }
176
+ if (this._isControlled) {
177
+ return true;
178
+ }
179
+ return false;
180
+ }
150
181
  removeLocks() {
151
182
  const modalRoots = getListOfModalRoots();
152
183
  const firstLevel = modalRoots[0];
@@ -167,16 +198,14 @@ export default class ModalContent extends React.PureComponent {
167
198
  }
168
199
  }
169
200
  this.removeAndroidFocusHelper();
170
- const id = this.props.id;
171
- const {
172
- triggeredBy,
173
- triggeredByEvent
174
- } = this.state;
175
- dispatchCustomElementEvent(this, 'on_close', {
176
- id,
177
- event: triggeredByEvent,
178
- triggeredBy: triggeredBy || 'unmount'
179
- });
201
+ if (this.wasOpenedManually()) {
202
+ const id = this.props.id;
203
+ dispatchCustomElementEvent(this, 'on_close', {
204
+ id,
205
+ event: this._triggeredByEvent,
206
+ triggeredBy: this._triggeredBy || 'unmount'
207
+ });
208
+ }
180
209
  if (typeof document !== 'undefined') {
181
210
  document.removeEventListener('keydown', this.onKeyDownHandler);
182
211
  }
@@ -237,14 +266,9 @@ export default class ModalContent extends React.PureComponent {
237
266
  } = _ref,
238
267
  params = _objectWithoutProperties(_ref, _excluded);
239
268
  event === null || event === void 0 ? void 0 : (_event$persist = event.persist) === null || _event$persist === void 0 ? void 0 : _event$persist.call(event);
240
- this.setState({
241
- triggeredBy,
242
- triggeredByEvent: event
243
- }, () => {
244
- this.props.close(event, _objectSpread({
245
- triggeredBy
246
- }, params));
247
- });
269
+ this.props.close(event, _objectSpread({
270
+ triggeredBy
271
+ }, params));
248
272
  }
249
273
  render() {
250
274
  var _this$context;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalContent.js","names":["React","classnames","disableBodyScroll","enableBodyScroll","clearAllBodyScrollLocks","warn","isTrue","makeUniqueId","InteractionInvalidation","combineLabelledBy","combineDescribedBy","dispatchCustomElementEvent","keycode","ModalContext","IS_IOS","IS_SAFARI","IS_MAC","isAndroid","getListOfModalRoots","getModalRoot","addToIndex","removeFromIndex","getThemeClasses","Context","ModalContent","PureComponent","constructor","props","_defineProperty","triggeredBy","triggeredByEvent","color","modalRoots","firstLevel","_this$props","_ii","setBypassSelector","root_id","bypass_invalidation_selectors","filter","Boolean","activate","forEach","modal","_iiLocal","_scrollRef","current","document","addEventListener","onKeyDownHandler","animation_duration","timeoutDuration","parseFloat","clearTimeout","_androidFocusTimeout","setTimeout","_document$activeEleme","_document$activeEleme2","activeElement","tagName","scrollIntoView","e","event","stopPropagation","closeModalContent","_overlayClickRef","target","currentTarget","prevent_overlay_close","ifIsLatest","mostCurrent","preventDefault","setState","_contentRef","content_ref","createRef","scroll_ref","_id","id","componentDidMount","no_animation","removeScrollPossibility","setFocus","setAndroidFocusHelper","process","env","NODE_ENV","lockBody","_lockTimeout","componentWillUnmount","_focusTimeout","removeLocks","_this$_ii","revert","revertScrollPossibility","length","removeAndroidFocusHelper","state","removeEventListener","window","_androidFocusHelper","focus_selector","elem","_focusElement","_focusElement$focus","_focusElement2","_focusElement2$select","_elem$parentElement","_elem$parentElement$q","_elem$parentElement2","_elem$parentElement2$","focusElement","querySelector","focus","call","select","noH1Elem","noH1ElemInDrawerHeader","parentElement","noH1ElemInDialogHeader","_ref","_event$persist","params","_objectWithoutProperties","_excluded","persist","close","_objectSpread","render","_this$context","_this$props2","hide","title","labelled_by","close_title","dialog_title","hide_close_button","close_button_attributes","no_animation_on_mobile","fullscreen","container_placement","vertical_alignment","content_class","overlay_class","content_id","children","dialog_role","rest","_excluded2","contentId","useDialogRole","role","contentParams","undefined","className","context","theme","onMouseDown","onContentMouseDownHandler","onClick","onContentClickHandler","content","createElement","Provider","value","setBackgroundColor","onCloseClickHandler","preventClick","contentRef","scrollRef","_extends","style"],"sources":["../../../../src/components/modal/ModalContent.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport {\n disableBodyScroll,\n enableBodyScroll,\n clearAllBodyScrollLocks,\n} from './bodyScrollLock'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n InteractionInvalidation,\n combineLabelledBy,\n combineDescribedBy,\n dispatchCustomElementEvent,\n keycode,\n} from '../../shared/component-helper'\nimport ModalContext from './ModalContext'\nimport { IS_IOS, IS_SAFARI, IS_MAC, isAndroid } from '../../shared/helpers'\nimport { ModalContentProps } from './types'\nimport {\n getListOfModalRoots,\n getModalRoot,\n addToIndex,\n removeFromIndex,\n} from './helpers'\nimport { getThemeClasses } from '../../shared/Theme'\nimport { Context } from '../../shared'\nimport { ContextProps } from '../../shared/Context'\n\ninterface ModalContentState {\n triggeredBy: string\n triggeredByEvent: Event\n color: string\n}\n\ndeclare global {\n interface Window {\n __modalStack: any[]\n }\n}\n\ninterface CSSPropertiesWithVars extends React.CSSProperties {\n '--modal-background-color': string\n}\n\nexport default class ModalContent extends React.PureComponent<\n ModalContentProps,\n ModalContentState\n> {\n state = { triggeredBy: null, triggeredByEvent: null, color: null }\n\n _contentRef: React.RefObject<HTMLElement>\n _scrollRef: React.RefObject<HTMLElement>\n _overlayClickRef: { current: null | HTMLElement }\n _id: string\n _lockTimeout: NodeJS.Timeout\n _focusTimeout: NodeJS.Timeout\n _androidFocusTimeout: NodeJS.Timeout\n _ii: InteractionInvalidation\n _iiLocal: InteractionInvalidation\n\n static contextType = Context\n\n context!: ContextProps\n\n constructor(props: ModalContentProps) {\n super(props)\n this._contentRef = this.props.content_ref || React.createRef()\n this._scrollRef = this.props.scroll_ref || React.createRef()\n this._overlayClickRef = React.createRef()\n\n // NB: The \"\"._id\" is used in the __modalStack as \"last._id\"\n this._id = props.id\n }\n\n componentDidMount() {\n const {\n id = null,\n no_animation = false,\n animation_duration = null,\n } = this.props\n\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n // Add it to the index at first\n // we use it later with getListOfModalRoots\n addToIndex(this)\n\n // Because of nested modals/drawers, we run this regardless\n // has to be run at first – so the scrollbar gets removed\n this.removeScrollPossibility() // forces browser to re-paint\n\n this.setFocus()\n this.setAndroidFocusHelper()\n\n dispatchCustomElementEvent(this, 'on_open', {\n id,\n })\n\n if (isTrue(no_animation) || process.env.NODE_ENV === 'test') {\n this.lockBody() // forces browser to re-paint\n } else {\n this._lockTimeout = setTimeout(this.lockBody, timeoutDuration * 1.2) // a little over --modal-animation-duration\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this._focusTimeout)\n clearTimeout(this._lockTimeout)\n this.removeLocks()\n }\n\n lockBody = () => {\n const modalRoots = getListOfModalRoots()\n const firstLevel = modalRoots[0]\n\n if (firstLevel === this) {\n this._ii = new InteractionInvalidation()\n this._ii.setBypassSelector(\n [\n // Bypass modal content\n '.dnb-modal__content *',\n `#dnb-modal-${this.props.root_id || 'root'}`,\n `#dnb-modal-${this.props.root_id || 'root'} *`,\n\n // TODO: Eventually in future, make it possible to bypass invalidation from outside\n // '.dnb-modal--bypass_invalidation',\n // '.dnb-modal--bypass_invalidation_deep *',\n\n ...(this.props?.bypass_invalidation_selectors || []),\n ].filter(Boolean)\n )\n this._ii.activate()\n } else {\n modalRoots.forEach((modal) => {\n if (\n modal !== this &&\n typeof modal._iiLocal === 'undefined' &&\n typeof modal._scrollRef !== 'undefined'\n ) {\n modal._iiLocal = new InteractionInvalidation()\n modal._iiLocal.activate(modal._scrollRef.current)\n }\n })\n }\n\n if (typeof document !== 'undefined') {\n /** To ensure, we have always a working keydown, we call it both on the element and document */\n document.addEventListener('keydown', this.onKeyDownHandler)\n }\n }\n\n removeLocks() {\n const modalRoots = getListOfModalRoots()\n const firstLevel = modalRoots[0]\n\n removeFromIndex(this)\n\n if (firstLevel === this) {\n this._ii?.revert()\n this.revertScrollPossibility()\n } else {\n try {\n const modal = modalRoots[modalRoots.length - 2]\n if (modal !== this && modal._iiLocal) {\n modal._iiLocal.revert()\n delete modal._iiLocal\n }\n } catch (e) {\n warn(e)\n }\n }\n\n this.removeAndroidFocusHelper()\n\n const id = this.props.id\n const { triggeredBy, triggeredByEvent } = this.state\n dispatchCustomElementEvent(this, 'on_close', {\n id,\n event: triggeredByEvent,\n triggeredBy: triggeredBy || 'unmount',\n })\n\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.onKeyDownHandler)\n }\n }\n\n setAndroidFocusHelper() {\n if (typeof window !== 'undefined' && isAndroid()) {\n window.addEventListener('resize', this._androidFocusHelper)\n }\n }\n\n removeAndroidFocusHelper() {\n window.removeEventListener('resize', this._androidFocusHelper)\n clearTimeout(this._androidFocusTimeout)\n }\n\n _androidFocusHelper = () => {\n const { animation_duration = null } = this.props\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n clearTimeout(this._androidFocusTimeout)\n this._androidFocusTimeout = setTimeout(() => {\n try {\n if (\n document.activeElement?.tagName == 'INPUT' ||\n document.activeElement?.tagName == 'TEXTAREA'\n ) {\n document.activeElement.scrollIntoView()\n }\n } catch (e) {\n //\n }\n }, timeoutDuration / 2) // Older Android needs a delay here\n }\n\n setFocus() {\n const {\n focus_selector = null,\n no_animation = null,\n animation_duration = null,\n } = this.props\n const elem = this._contentRef.current\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n if (elem) {\n clearTimeout(this._focusTimeout)\n this._focusTimeout = setTimeout(\n () => {\n try {\n let focusElement = elem as HTMLInputElement\n\n // Try to use the \"first-focus\" method first\n if (typeof focus_selector === 'string') {\n focusElement = elem.querySelector(focus_selector)\n }\n\n focusElement?.focus?.()\n focusElement?.select?.()\n\n const noH1Elem = elem.querySelector('h1, h2, h3')\n // Check if there's a header in a Drawer.Header\n const noH1ElemInDrawerHeader = elem.parentElement\n ?.querySelector('.dnb-drawer__header')\n ?.querySelector('h1, h2, h3')\n\n // Check if there's a header in a Dialog.Header\n const noH1ElemInDialogHeader = elem.parentElement\n ?.querySelector('.dnb-dialog__header')\n ?.querySelector('h1, h2, h3')\n\n if (\n noH1Elem?.tagName !== 'H1' &&\n noH1ElemInDrawerHeader?.tagName !== 'H1' &&\n noH1ElemInDialogHeader?.tagName !== 'H1'\n ) {\n warn('A Dialog or Drawer needs a h1 as its first element!')\n }\n } catch (e) {\n warn(e)\n }\n },\n isTrue(no_animation) ? 0 : timeoutDuration || 0\n ) // with this delay, the user can press esc without an focus action first\n }\n }\n\n removeScrollPossibility() {\n if (this._scrollRef.current) {\n disableBodyScroll(this._scrollRef.current)\n }\n }\n\n revertScrollPossibility() {\n enableBodyScroll(this._scrollRef.current)\n clearAllBodyScrollLocks()\n }\n\n preventClick = (event) => {\n if (event) {\n event.stopPropagation()\n }\n }\n\n onCloseClickHandler = (event: React.SyntheticEvent) => {\n this.closeModalContent(event, { triggeredBy: 'button' })\n }\n\n onContentMouseDownHandler = (event: React.SyntheticEvent) => {\n this._overlayClickRef.current =\n event.target === event.currentTarget\n ? (event.target as HTMLElement)\n : null\n }\n\n onContentClickHandler = (event: React.SyntheticEvent) => {\n /**\n * Prevent false-positive Modal close,\n * when e.g. selecting text inside and moving the mouse outside,\n * we would still get this event fired. There we check if the current click,\n * has the same target as where the click got initiated.\n */\n if (this._overlayClickRef.current !== event.target) {\n return // stop here\n }\n this._overlayClickRef.current = null\n\n const { prevent_overlay_close } = this.props\n\n if (!isTrue(prevent_overlay_close)) {\n this.closeModalContent(event, {\n triggeredBy: 'overlay',\n ifIsLatest: false,\n })\n }\n }\n\n onKeyDownHandler = (event) => {\n switch (keycode(event)) {\n case 'esc': {\n const mostCurrent = getModalRoot(-1)\n\n if (mostCurrent === this) {\n event.preventDefault()\n this.closeModalContent(event, {\n triggeredBy: 'keyboard',\n })\n }\n\n break\n }\n }\n }\n\n closeModalContent(event, { triggeredBy, ...params }) {\n event?.persist?.()\n this.setState({ triggeredBy, triggeredByEvent: event }, () => {\n this.props.close(event, {\n triggeredBy,\n ...params,\n })\n })\n }\n\n setBackgroundColor = (color: string) => {\n this.setState({ color })\n }\n\n render() {\n const {\n hide,\n title,\n labelled_by,\n id: _id, // eslint-disable-line\n close_title = 'Lukk',\n dialog_title = 'Vindu',\n hide_close_button = false,\n close_button_attributes,\n no_animation = false,\n no_animation_on_mobile = false,\n fullscreen = 'auto',\n container_placement = 'right',\n vertical_alignment = 'center',\n close,\n content_class,\n overlay_class,\n content_id,\n children, // eslint-disable-line\n dialog_role = null,\n ...rest\n } = this.props\n const { color } = this.state\n\n const contentId = content_id || makeUniqueId('modal-')\n\n const useDialogRole = !(IS_MAC || IS_SAFARI || IS_IOS)\n let role = dialog_role || 'dialog'\n if (!useDialogRole && role === 'dialog') {\n role = 'region'\n }\n\n const contentParams = {\n /**\n * Do not use role=\"dialog\" on Safari\n *\n * VoiceOver has troubles with role=\"dialog\" and \"Modal in Modal\",\n * the result is, only the first Modal gets focus (set by Safari)\n *\n * Tests have shown: Both VoiceOver are working fine with the:\n * \"aria-labelledby\" and \"aria-describedby\" approach\n *\n */\n role,\n 'aria-modal': useDialogRole ? true : undefined,\n\n /**\n * ARIA references\n */\n 'aria-labelledby': combineLabelledBy(\n this.props,\n title ? contentId + '-title' : null,\n labelled_by\n ),\n 'aria-describedby': combineDescribedBy(\n this.props,\n contentId + '-content'\n ),\n\n /**\n * If no labelled_by and no title is given,\n * set a fallback \"dialog_title\"\n */\n 'aria-label': !title && !labelled_by ? dialog_title : undefined,\n\n className: classnames(\n 'dnb-modal__content',\n isTrue(fullscreen)\n ? 'dnb-modal__content--fullscreen'\n : fullscreen === 'auto' && 'dnb-modal__content--auto-fullscreen',\n container_placement\n ? `dnb-modal__content--${container_placement || 'right'}`\n : null,\n `dnb-modal__vertical-alignment--${vertical_alignment}`,\n getThemeClasses(this.context?.theme),\n content_class\n ),\n onMouseDown: this.onContentMouseDownHandler,\n onClick: this.onContentClickHandler,\n }\n\n const content =\n typeof children === 'function'\n ? children({ ...rest, close })\n : children\n\n return (\n <ModalContext.Provider\n value={{\n id: this.props.id,\n title,\n hide_close_button,\n close_button_attributes,\n close_title,\n hide,\n setBackgroundColor: this.setBackgroundColor,\n onCloseClickHandler: this.onCloseClickHandler,\n preventClick: this.preventClick,\n onKeyDownHandler: this.onKeyDownHandler,\n contentRef: this._contentRef,\n scrollRef: this._scrollRef,\n contentId,\n close,\n }}\n >\n <div\n id={contentId}\n /** Sets the color on scroll overflow (at the bottom) */\n style={\n (color\n ? { '--modal-background-color': `var(--color-${color})` }\n : null) as CSSPropertiesWithVars\n }\n {...contentParams}\n >\n {content}\n </div>\n\n <span\n className={classnames(\n 'dnb-modal__overlay',\n hide && 'dnb-modal__overlay--hide',\n isTrue(no_animation) && 'dnb-modal__overlay--no-animation',\n isTrue(no_animation_on_mobile) &&\n 'dnb-modal__overlay--no-animation-on-mobile',\n overlay_class\n )}\n aria-hidden={true}\n />\n </ModalContext.Provider>\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ModalContent.js","names":["React","classnames","disableBodyScroll","enableBodyScroll","clearAllBodyScrollLocks","warn","isTrue","makeUniqueId","InteractionInvalidation","combineLabelledBy","combineDescribedBy","dispatchCustomElementEvent","keycode","ModalContext","IS_IOS","IS_SAFARI","IS_MAC","isAndroid","getListOfModalRoots","getModalRoot","addToIndex","removeFromIndex","getThemeClasses","Context","ModalContent","PureComponent","constructor","props","_defineProperty","color","modalRoots","firstLevel","_this$props","_ii","setBypassSelector","root_id","bypass_invalidation_selectors","filter","Boolean","activate","forEach","modal","_iiLocal","_scrollRef","current","document","addEventListener","onKeyDownHandler","animation_duration","timeoutDuration","parseFloat","clearTimeout","_androidFocusTimeout","setTimeout","_document$activeEleme","_document$activeEleme2","activeElement","tagName","scrollIntoView","e","event","stopPropagation","closeModalContent","triggeredBy","_overlayClickRef","target","currentTarget","prevent_overlay_close","ifIsLatest","mostCurrent","preventDefault","_triggeredBy","_triggeredByEvent","setState","_contentRef","content_ref","createRef","scroll_ref","modalContentCloseRef","setModalContentState","_id","id","componentDidMount","no_animation","removeScrollPossibility","setFocus","setAndroidFocusHelper","process","env","NODE_ENV","lockBody","_lockTimeout","setIsControlled","componentWillUnmount","_focusTimeout","removeLocks","open_state","_isControlled","componentDidUpdate","wasOpenedManually","_this$_ii","revert","revertScrollPossibility","length","removeAndroidFocusHelper","removeEventListener","window","_androidFocusHelper","focus_selector","elem","_focusElement","_focusElement$focus","_focusElement2","_focusElement2$select","_elem$parentElement","_elem$parentElement$q","_elem$parentElement2","_elem$parentElement2$","focusElement","querySelector","focus","call","select","noH1Elem","noH1ElemInDrawerHeader","parentElement","noH1ElemInDialogHeader","_ref","_event$persist","params","_objectWithoutProperties","_excluded","persist","close","_objectSpread","render","_this$context","_this$props2","hide","title","labelled_by","close_title","dialog_title","hide_close_button","close_button_attributes","no_animation_on_mobile","fullscreen","container_placement","vertical_alignment","content_class","overlay_class","content_id","children","dialog_role","rest","_excluded2","state","contentId","useDialogRole","role","contentParams","undefined","className","context","theme","onMouseDown","onContentMouseDownHandler","onClick","onContentClickHandler","content","createElement","Provider","value","setBackgroundColor","onCloseClickHandler","preventClick","contentRef","scrollRef","_extends","style"],"sources":["../../../../src/components/modal/ModalContent.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport {\n disableBodyScroll,\n enableBodyScroll,\n clearAllBodyScrollLocks,\n} from './bodyScrollLock'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n InteractionInvalidation,\n combineLabelledBy,\n combineDescribedBy,\n dispatchCustomElementEvent,\n keycode,\n} from '../../shared/component-helper'\nimport ModalContext from './ModalContext'\nimport { IS_IOS, IS_SAFARI, IS_MAC, isAndroid } from '../../shared/helpers'\nimport {\n CloseHandlerParams,\n ModalContentProps,\n TriggeredBy,\n} from './types'\nimport {\n getListOfModalRoots,\n getModalRoot,\n addToIndex,\n removeFromIndex,\n} from './helpers'\nimport { getThemeClasses } from '../../shared/Theme'\nimport { Context } from '../../shared'\nimport { ContextProps } from '../../shared/Context'\n\ninterface ModalContentState {\n color: string\n}\n\ndeclare global {\n interface Window {\n __modalStack: any[]\n }\n}\n\ninterface CSSPropertiesWithVars extends React.CSSProperties {\n '--modal-background-color': string\n}\n\nexport default class ModalContent extends React.PureComponent<\n ModalContentProps,\n ModalContentState\n> {\n state = { color: null }\n\n _contentRef: React.RefObject<HTMLElement>\n _scrollRef: React.RefObject<HTMLElement>\n _overlayClickRef: { current: null | HTMLElement }\n _id: string\n _lockTimeout: NodeJS.Timeout\n _focusTimeout: NodeJS.Timeout\n _androidFocusTimeout: NodeJS.Timeout\n _ii: InteractionInvalidation\n _iiLocal: InteractionInvalidation\n _triggeredBy: TriggeredBy\n _triggeredByEvent: React.SyntheticEvent\n _isControlled = false\n\n static contextType = Context\n\n context!: ContextProps\n\n constructor(props: ModalContentProps) {\n super(props)\n this._contentRef = this.props.content_ref || React.createRef()\n this._scrollRef = this.props.scroll_ref || React.createRef()\n this._overlayClickRef = React.createRef()\n if (this.props.modalContentCloseRef) {\n this.props.modalContentCloseRef.current = this.setModalContentState\n }\n\n // NB: The \"\"._id\" is used in the __modalStack as \"last._id\"\n this._id = props.id\n }\n\n componentDidMount() {\n const {\n id = null,\n no_animation = false,\n animation_duration = null,\n } = this.props\n\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n // Add it to the index at first\n // we use it later with getListOfModalRoots\n addToIndex(this)\n\n // Because of nested modals/drawers, we run this regardless\n // has to be run at first – so the scrollbar gets removed\n this.removeScrollPossibility() // forces browser to re-paint\n\n this.setFocus()\n this.setAndroidFocusHelper()\n\n dispatchCustomElementEvent(this, 'on_open', {\n id,\n })\n\n if (isTrue(no_animation) || process.env.NODE_ENV === 'test') {\n this.lockBody() // forces browser to re-paint\n } else {\n this._lockTimeout = setTimeout(this.lockBody, timeoutDuration * 1.2) // a little over --modal-animation-duration\n }\n\n this.setIsControlled()\n }\n\n componentWillUnmount() {\n clearTimeout(this._focusTimeout)\n clearTimeout(this._lockTimeout)\n this.removeLocks()\n }\n\n setIsControlled() {\n const { open_state } = this.props\n if (typeof open_state !== 'undefined' && open_state !== null) {\n this._isControlled = true\n }\n }\n\n componentDidUpdate() {\n this.setIsControlled()\n }\n\n wasOpenedManually() {\n if (this._triggeredBy) {\n return true\n }\n\n if (this._isControlled) {\n return true\n }\n\n return false\n }\n\n lockBody = () => {\n const modalRoots = getListOfModalRoots()\n const firstLevel = modalRoots[0]\n\n if (firstLevel === this) {\n this._ii = new InteractionInvalidation()\n this._ii.setBypassSelector(\n [\n // Bypass modal content\n '.dnb-modal__content *',\n `#dnb-modal-${this.props.root_id || 'root'}`,\n `#dnb-modal-${this.props.root_id || 'root'} *`,\n\n // TODO: Eventually in future, make it possible to bypass invalidation from outside\n // '.dnb-modal--bypass_invalidation',\n // '.dnb-modal--bypass_invalidation_deep *',\n\n ...(this.props?.bypass_invalidation_selectors || []),\n ].filter(Boolean)\n )\n this._ii.activate()\n } else {\n modalRoots.forEach((modal) => {\n if (\n modal !== this &&\n typeof modal._iiLocal === 'undefined' &&\n typeof modal._scrollRef !== 'undefined'\n ) {\n modal._iiLocal = new InteractionInvalidation()\n modal._iiLocal.activate(modal._scrollRef.current)\n }\n })\n }\n\n if (typeof document !== 'undefined') {\n /** To ensure, we have always a working keydown, we call it both on the element and document */\n document.addEventListener('keydown', this.onKeyDownHandler)\n }\n }\n\n removeLocks() {\n const modalRoots = getListOfModalRoots()\n const firstLevel = modalRoots[0]\n\n removeFromIndex(this)\n\n if (firstLevel === this) {\n this._ii?.revert()\n this.revertScrollPossibility()\n } else {\n try {\n const modal = modalRoots[modalRoots.length - 2]\n if (modal !== this && modal._iiLocal) {\n modal._iiLocal.revert()\n delete modal._iiLocal\n }\n } catch (e) {\n warn(e)\n }\n }\n\n this.removeAndroidFocusHelper()\n\n if (this.wasOpenedManually()) {\n const id = this.props.id\n dispatchCustomElementEvent(this, 'on_close', {\n id,\n event: this._triggeredByEvent,\n triggeredBy: this._triggeredBy || 'unmount',\n })\n }\n\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.onKeyDownHandler)\n }\n }\n\n setAndroidFocusHelper() {\n if (typeof window !== 'undefined' && isAndroid()) {\n window.addEventListener('resize', this._androidFocusHelper)\n }\n }\n\n removeAndroidFocusHelper() {\n window.removeEventListener('resize', this._androidFocusHelper)\n clearTimeout(this._androidFocusTimeout)\n }\n\n _androidFocusHelper = () => {\n const { animation_duration = null } = this.props\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n clearTimeout(this._androidFocusTimeout)\n this._androidFocusTimeout = setTimeout(() => {\n try {\n if (\n document.activeElement?.tagName == 'INPUT' ||\n document.activeElement?.tagName == 'TEXTAREA'\n ) {\n document.activeElement.scrollIntoView()\n }\n } catch (e) {\n //\n }\n }, timeoutDuration / 2) // Older Android needs a delay here\n }\n\n setFocus() {\n const {\n focus_selector = null,\n no_animation = null,\n animation_duration = null,\n } = this.props\n const elem = this._contentRef.current\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n if (elem) {\n clearTimeout(this._focusTimeout)\n this._focusTimeout = setTimeout(\n () => {\n try {\n let focusElement = elem as HTMLInputElement\n\n // Try to use the \"first-focus\" method first\n if (typeof focus_selector === 'string') {\n focusElement = elem.querySelector(focus_selector)\n }\n\n focusElement?.focus?.()\n focusElement?.select?.()\n\n const noH1Elem = elem.querySelector('h1, h2, h3')\n // Check if there's a header in a Drawer.Header\n const noH1ElemInDrawerHeader = elem.parentElement\n ?.querySelector('.dnb-drawer__header')\n ?.querySelector('h1, h2, h3')\n\n // Check if there's a header in a Dialog.Header\n const noH1ElemInDialogHeader = elem.parentElement\n ?.querySelector('.dnb-dialog__header')\n ?.querySelector('h1, h2, h3')\n\n if (\n noH1Elem?.tagName !== 'H1' &&\n noH1ElemInDrawerHeader?.tagName !== 'H1' &&\n noH1ElemInDialogHeader?.tagName !== 'H1'\n ) {\n warn('A Dialog or Drawer needs a h1 as its first element!')\n }\n } catch (e) {\n warn(e)\n }\n },\n isTrue(no_animation) ? 0 : timeoutDuration || 0\n ) // with this delay, the user can press esc without an focus action first\n }\n }\n\n removeScrollPossibility() {\n if (this._scrollRef.current) {\n disableBodyScroll(this._scrollRef.current)\n }\n }\n\n revertScrollPossibility() {\n enableBodyScroll(this._scrollRef.current)\n clearAllBodyScrollLocks()\n }\n\n preventClick = (event) => {\n if (event) {\n event.stopPropagation()\n }\n }\n\n onCloseClickHandler = (event: React.SyntheticEvent) => {\n this.closeModalContent(event, { triggeredBy: 'button' })\n }\n\n onContentMouseDownHandler = (event: React.SyntheticEvent) => {\n this._overlayClickRef.current =\n event.target === event.currentTarget\n ? (event.target as HTMLElement)\n : null\n }\n\n onContentClickHandler = (event: React.SyntheticEvent) => {\n /**\n * Prevent false-positive Modal close,\n * when e.g. selecting text inside and moving the mouse outside,\n * we would still get this event fired. There we check if the current click,\n * has the same target as where the click got initiated.\n */\n if (this._overlayClickRef.current !== event.target) {\n return // stop here\n }\n this._overlayClickRef.current = null\n\n const { prevent_overlay_close } = this.props\n\n if (!isTrue(prevent_overlay_close)) {\n this.closeModalContent(event, {\n triggeredBy: 'overlay',\n ifIsLatest: false,\n })\n }\n }\n\n onKeyDownHandler = (event) => {\n switch (keycode(event)) {\n case 'esc': {\n const mostCurrent = getModalRoot(-1)\n\n if (mostCurrent === this) {\n event.preventDefault()\n this.closeModalContent(event, {\n triggeredBy: 'keyboard',\n })\n }\n\n break\n }\n }\n }\n\n setModalContentState = (\n event: React.SyntheticEvent,\n { triggeredBy }: CloseHandlerParams\n ) => {\n this._triggeredBy = triggeredBy\n this._triggeredByEvent = event\n }\n\n closeModalContent(\n event,\n {\n triggeredBy,\n ...params\n }: CloseHandlerParams & { ifIsLatest?: boolean }\n ) {\n event?.persist?.()\n\n this.props.close(event, {\n triggeredBy,\n ...params,\n })\n }\n\n setBackgroundColor = (color: string) => {\n this.setState({ color })\n }\n\n render() {\n const {\n hide,\n title,\n labelled_by,\n id: _id, // eslint-disable-line\n close_title = 'Lukk',\n dialog_title = 'Vindu',\n hide_close_button = false,\n close_button_attributes,\n no_animation = false,\n no_animation_on_mobile = false,\n fullscreen = 'auto',\n container_placement = 'right',\n vertical_alignment = 'center',\n close,\n content_class,\n overlay_class,\n content_id,\n children, // eslint-disable-line\n dialog_role = null,\n ...rest\n } = this.props\n const { color } = this.state\n\n const contentId = content_id || makeUniqueId('modal-')\n\n const useDialogRole = !(IS_MAC || IS_SAFARI || IS_IOS)\n let role = dialog_role || 'dialog'\n if (!useDialogRole && role === 'dialog') {\n role = 'region'\n }\n\n const contentParams = {\n /**\n * Do not use role=\"dialog\" on Safari\n *\n * VoiceOver has troubles with role=\"dialog\" and \"Modal in Modal\",\n * the result is, only the first Modal gets focus (set by Safari)\n *\n * Tests have shown: Both VoiceOver are working fine with the:\n * \"aria-labelledby\" and \"aria-describedby\" approach\n *\n */\n role,\n 'aria-modal': useDialogRole ? true : undefined,\n\n /**\n * ARIA references\n */\n 'aria-labelledby': combineLabelledBy(\n this.props,\n title ? contentId + '-title' : null,\n labelled_by\n ),\n 'aria-describedby': combineDescribedBy(\n this.props,\n contentId + '-content'\n ),\n\n /**\n * If no labelled_by and no title is given,\n * set a fallback \"dialog_title\"\n */\n 'aria-label': !title && !labelled_by ? dialog_title : undefined,\n\n className: classnames(\n 'dnb-modal__content',\n isTrue(fullscreen)\n ? 'dnb-modal__content--fullscreen'\n : fullscreen === 'auto' && 'dnb-modal__content--auto-fullscreen',\n container_placement\n ? `dnb-modal__content--${container_placement || 'right'}`\n : null,\n `dnb-modal__vertical-alignment--${vertical_alignment}`,\n getThemeClasses(this.context?.theme),\n content_class\n ),\n onMouseDown: this.onContentMouseDownHandler,\n onClick: this.onContentClickHandler,\n }\n\n const content =\n typeof children === 'function'\n ? children({ ...rest, close })\n : children\n\n return (\n <ModalContext.Provider\n value={{\n id: this.props.id,\n title,\n hide_close_button,\n close_button_attributes,\n close_title,\n hide,\n setBackgroundColor: this.setBackgroundColor,\n onCloseClickHandler: this.onCloseClickHandler,\n preventClick: this.preventClick,\n onKeyDownHandler: this.onKeyDownHandler,\n contentRef: this._contentRef,\n scrollRef: this._scrollRef,\n contentId,\n close,\n }}\n >\n <div\n id={contentId}\n /** Sets the color on scroll overflow (at the bottom) */\n style={\n (color\n ? { '--modal-background-color': `var(--color-${color})` }\n : null) as CSSPropertiesWithVars\n }\n {...contentParams}\n >\n {content}\n </div>\n\n <span\n className={classnames(\n 'dnb-modal__overlay',\n hide && 'dnb-modal__overlay--hide',\n isTrue(no_animation) && 'dnb-modal__overlay--no-animation',\n isTrue(no_animation_on_mobile) &&\n 'dnb-modal__overlay--no-animation-on-mobile',\n overlay_class\n )}\n aria-hidden={true}\n />\n </ModalContext.Provider>\n )\n }\n}\n"],"mappings":"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"}
@@ -16,6 +16,8 @@ export interface ModalRootProps extends ModalContentProps {
16
16
  * The content which will appear when triggering the modal/drawer.
17
17
  */
18
18
  children?: ReactChildType;
19
+ /** For internal use only */
20
+ modalContentCloseRef?: React.RefObject<any>;
19
21
  }
20
22
  interface ModalRootState {
21
23
  isMounted: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalRoot.js","names":["React","ReactDOM","warn","isTrue","ModalContent","ModalRoot","PureComponent","constructor","args","_defineProperty","isMounted","insertModalRoot","id","window","__modalRoot","document","getElementById","createElement","setAttribute","body","insertBefore","firstChild","e","componentDidMount","direct_dom_return","root_id","props","portalElem","className","appendChild","setState","componentWillUnmount","removeChild","render","_this$props","children","_objectWithoutProperties","_excluded","state","createPortal"],"sources":["../../../../src/components/modal/ModalRoot.tsx"],"sourcesContent":["import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { warn, isTrue } from '../../shared/component-helper'\nimport ModalContent from './ModalContent'\nimport { ModalContentProps, ReactChildType } from './types'\n\ndeclare global {\n interface Window {\n __modalRoot: HTMLElement\n }\n}\n\nexport interface ModalRootProps extends ModalContentProps {\n /**\n * The id used internal in the modal/drawer root element. Defaults to `root`, so the element id will be `dnb-modal-root`.\n */\n id?: string\n root_id?: string\n direct_dom_return?: boolean\n\n /**\n * The content which will appear when triggering the modal/drawer.\n */\n children?: ReactChildType\n}\n\ninterface ModalRootState {\n isMounted: boolean\n}\n\nexport default class ModalRoot extends React.PureComponent<\n ModalRootProps,\n ModalRootState\n> {\n portalElem: HTMLDivElement | null\n static defaultProps = {\n id: null,\n root_id: 'root',\n direct_dom_return: false,\n children: null,\n }\n\n state = {\n isMounted: false,\n }\n\n static insertModalRoot(id) {\n if (typeof window === 'undefined') {\n return false\n }\n\n try {\n id = `dnb-modal-${id || 'root'}`\n window.__modalRoot = document.getElementById(id)\n if (!window.__modalRoot) {\n window.__modalRoot = document.createElement('div')\n window.__modalRoot.setAttribute('id', id)\n document.body.insertBefore(\n window.__modalRoot,\n document.body.firstChild\n )\n }\n } catch (e) {\n warn('Modal: Could not insert dnb-modal-root', e)\n }\n\n return window.__modalRoot\n }\n\n componentDidMount() {\n const { direct_dom_return = false, root_id = 'root' } = this.props\n if (!isTrue(direct_dom_return)) {\n ModalRoot.insertModalRoot(root_id)\n\n try {\n if (!this.portalElem) {\n this.portalElem = document.createElement('div')\n this.portalElem.className = 'dnb-modal-root__inner'\n }\n if (\n this.portalElem &&\n typeof window !== 'undefined' &&\n window.__modalRoot\n ) {\n window.__modalRoot.appendChild(this.portalElem)\n }\n } catch (e) {\n warn(e)\n }\n this.setState({ isMounted: true })\n }\n }\n\n componentWillUnmount() {\n try {\n if (\n this.portalElem &&\n typeof window !== 'undefined' &&\n window.__modalRoot &&\n window.__modalRoot.removeChild\n ) {\n window.__modalRoot.removeChild(this.portalElem)\n this.portalElem = null\n }\n } catch (e) {\n warn(e)\n }\n }\n\n render() {\n const { children, direct_dom_return, ...props } = this.props\n\n if (isTrue(direct_dom_return)) {\n return <ModalContent {...props}>{children}</ModalContent>\n }\n\n if (\n this.portalElem &&\n typeof window !== 'undefined' &&\n window.__modalRoot &&\n this.state.isMounted\n ) {\n return ReactDOM.createPortal(\n <ModalContent {...props}>{children}</ModalContent>,\n this.portalElem\n )\n }\n\n return null\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ModalRoot.js","names":["React","ReactDOM","warn","isTrue","ModalContent","ModalRoot","PureComponent","constructor","args","_defineProperty","isMounted","insertModalRoot","id","window","__modalRoot","document","getElementById","createElement","setAttribute","body","insertBefore","firstChild","e","componentDidMount","direct_dom_return","root_id","props","portalElem","className","appendChild","setState","componentWillUnmount","removeChild","render","_this$props","children","_objectWithoutProperties","_excluded","state","createPortal"],"sources":["../../../../src/components/modal/ModalRoot.tsx"],"sourcesContent":["import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { warn, isTrue } from '../../shared/component-helper'\nimport ModalContent from './ModalContent'\nimport { ModalContentProps, ReactChildType } from './types'\n\ndeclare global {\n interface Window {\n __modalRoot: HTMLElement\n }\n}\n\nexport interface ModalRootProps extends ModalContentProps {\n /**\n * The id used internal in the modal/drawer root element. Defaults to `root`, so the element id will be `dnb-modal-root`.\n */\n id?: string\n root_id?: string\n direct_dom_return?: boolean\n\n /**\n * The content which will appear when triggering the modal/drawer.\n */\n children?: ReactChildType\n\n /** For internal use only */\n modalContentCloseRef?: React.RefObject<any>\n}\n\ninterface ModalRootState {\n isMounted: boolean\n}\n\nexport default class ModalRoot extends React.PureComponent<\n ModalRootProps,\n ModalRootState\n> {\n portalElem: HTMLDivElement | null\n static defaultProps = {\n id: null,\n root_id: 'root',\n direct_dom_return: false,\n children: null,\n }\n\n state = {\n isMounted: false,\n }\n\n static insertModalRoot(id) {\n if (typeof window === 'undefined') {\n return false\n }\n\n try {\n id = `dnb-modal-${id || 'root'}`\n window.__modalRoot = document.getElementById(id)\n if (!window.__modalRoot) {\n window.__modalRoot = document.createElement('div')\n window.__modalRoot.setAttribute('id', id)\n document.body.insertBefore(\n window.__modalRoot,\n document.body.firstChild\n )\n }\n } catch (e) {\n warn('Modal: Could not insert dnb-modal-root', e)\n }\n\n return window.__modalRoot\n }\n\n componentDidMount() {\n const { direct_dom_return = false, root_id = 'root' } = this.props\n if (!isTrue(direct_dom_return)) {\n ModalRoot.insertModalRoot(root_id)\n\n try {\n if (!this.portalElem) {\n this.portalElem = document.createElement('div')\n this.portalElem.className = 'dnb-modal-root__inner'\n }\n if (\n this.portalElem &&\n typeof window !== 'undefined' &&\n window.__modalRoot\n ) {\n window.__modalRoot.appendChild(this.portalElem)\n }\n } catch (e) {\n warn(e)\n }\n this.setState({ isMounted: true })\n }\n }\n\n componentWillUnmount() {\n try {\n if (\n this.portalElem &&\n typeof window !== 'undefined' &&\n window.__modalRoot &&\n window.__modalRoot.removeChild\n ) {\n window.__modalRoot.removeChild(this.portalElem)\n this.portalElem = null\n }\n } catch (e) {\n warn(e)\n }\n }\n\n render() {\n const { children, direct_dom_return, ...props } = this.props\n\n if (isTrue(direct_dom_return)) {\n return <ModalContent {...props}>{children}</ModalContent>\n }\n\n if (\n this.portalElem &&\n typeof window !== 'undefined' &&\n window.__modalRoot &&\n this.state.isMounted\n ) {\n return ReactDOM.createPortal(\n <ModalContent {...props}>{children}</ModalContent>,\n this.portalElem\n )\n }\n\n return null\n }\n}\n"],"mappings":"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"}