@doist/reactist 29.1.1 → 30.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/reactist.cjs.development.js +6749 -1832
  3. package/dist/reactist.cjs.development.js.map +1 -1
  4. package/dist/reactist.cjs.production.min.js +1 -1
  5. package/dist/reactist.cjs.production.min.js.map +1 -1
  6. package/es/avatar/avatar.js +106 -36
  7. package/es/avatar/avatar.js.map +1 -1
  8. package/es/avatar/utils.js +17 -19
  9. package/es/avatar/utils.js.map +1 -1
  10. package/es/badge/badge.js +50 -6
  11. package/es/badge/badge.js.map +1 -1
  12. package/es/banner/banner.js +384 -41
  13. package/es/banner/banner.js.map +1 -1
  14. package/es/base-field/base-field.js +367 -77
  15. package/es/base-field/base-field.js.map +1 -1
  16. package/es/box/box.js +139 -61
  17. package/es/box/box.js.map +1 -1
  18. package/es/button/button.js +346 -36
  19. package/es/button/button.js.map +1 -1
  20. package/es/checkbox-field/checkbox-field.js +71 -48
  21. package/es/checkbox-field/checkbox-field.js.map +1 -1
  22. package/es/checkbox-field/checkbox-icon.js +88 -28
  23. package/es/checkbox-field/checkbox-icon.js.map +1 -1
  24. package/es/checkbox-field/use-fork-ref.js +15 -20
  25. package/es/checkbox-field/use-fork-ref.js.map +1 -1
  26. package/es/columns/columns.js +46 -23
  27. package/es/columns/columns.js.map +1 -1
  28. package/es/components/color-picker/color-picker.js +190 -46
  29. package/es/components/color-picker/color-picker.js.map +1 -1
  30. package/es/components/deprecated-button/deprecated-button.js +102 -9
  31. package/es/components/deprecated-button/deprecated-button.js.map +1 -1
  32. package/es/components/deprecated-button/index.js +5 -2
  33. package/es/components/deprecated-button/index.js.map +1 -1
  34. package/es/components/deprecated-dropdown/dropdown.js +234 -134
  35. package/es/components/deprecated-dropdown/dropdown.js.map +1 -1
  36. package/es/components/deprecated-dropdown/index.js +4 -1
  37. package/es/components/deprecated-dropdown/index.js.map +1 -1
  38. package/es/components/deprecated-input/index.js +5 -2
  39. package/es/components/deprecated-input/index.js.map +1 -1
  40. package/es/components/deprecated-input/input.js +27 -4
  41. package/es/components/deprecated-input/input.js.map +1 -1
  42. package/es/components/deprecated-select/select.js +110 -7
  43. package/es/components/deprecated-select/select.js.map +1 -1
  44. package/es/components/key-capturer/key-capturer.js +190 -137
  45. package/es/components/key-capturer/key-capturer.js.map +1 -1
  46. package/es/components/keyboard-shortcut/keyboard-shortcut.js +65 -45
  47. package/es/components/keyboard-shortcut/keyboard-shortcut.js.map +1 -1
  48. package/es/components/progress-bar/progress-bar.js +61 -9
  49. package/es/components/progress-bar/progress-bar.js.map +1 -1
  50. package/es/components/time/index.js +5 -2
  51. package/es/components/time/index.js.map +1 -1
  52. package/es/components/time/time-utils.js +59 -53
  53. package/es/components/time/time-utils.js.map +1 -1
  54. package/es/components/time/time.js +94 -91
  55. package/es/components/time/time.js.map +1 -1
  56. package/es/divider/divider.js +44 -5
  57. package/es/divider/divider.js.map +1 -1
  58. package/es/heading/heading.js +122 -20
  59. package/es/heading/heading.js.map +1 -1
  60. package/es/hidden/hidden.js +36 -30
  61. package/es/hidden/hidden.js.map +1 -1
  62. package/es/hidden-visually/hidden-visually.js +9 -4
  63. package/es/hidden-visually/hidden-visually.js.map +1 -1
  64. package/es/icons/alert-icon.js +145 -18
  65. package/es/icons/alert-icon.js.map +1 -1
  66. package/es/icons/banner-icon.js +213 -25
  67. package/es/icons/banner-icon.js.map +1 -1
  68. package/es/icons/close-icon.js +26 -3
  69. package/es/icons/close-icon.js.map +1 -1
  70. package/es/icons/password-hidden-icon.js +40 -6
  71. package/es/icons/password-hidden-icon.js.map +1 -1
  72. package/es/icons/password-visible-icon.js +33 -5
  73. package/es/icons/password-visible-icon.js.map +1 -1
  74. package/es/index.js +9 -9
  75. package/es/inline/inline.js +24 -9
  76. package/es/inline/inline.js.map +1 -1
  77. package/es/loading/loading.js +63 -17
  78. package/es/loading/loading.js.map +1 -1
  79. package/es/menu/menu.js +469 -92
  80. package/es/menu/menu.js.map +1 -1
  81. package/es/modal/modal.js +675 -112
  82. package/es/modal/modal.js.map +1 -1
  83. package/es/notice/notice.js +77 -10
  84. package/es/notice/notice.js.map +1 -1
  85. package/es/password-field/password-field.js +89 -11
  86. package/es/password-field/password-field.js.map +1 -1
  87. package/es/prose/prose.js +48 -9
  88. package/es/prose/prose.js.map +1 -1
  89. package/es/select-field/select-field.js +150 -19
  90. package/es/select-field/select-field.js.map +1 -1
  91. package/es/spinner/spinner.js +39 -6
  92. package/es/spinner/spinner.js.map +1 -1
  93. package/es/stack/stack.js +29 -17
  94. package/es/stack/stack.js.map +1 -1
  95. package/es/switch-field/switch-field.js +225 -42
  96. package/es/switch-field/switch-field.js.map +1 -1
  97. package/es/tabs/tabs.js +207 -109
  98. package/es/tabs/tabs.js.map +1 -1
  99. package/es/text/text.js +27 -17
  100. package/es/text/text.js.map +1 -1
  101. package/es/text-area/text-area.js +264 -54
  102. package/es/text-area/text-area.js.map +1 -1
  103. package/es/text-field/text-field.js +204 -31
  104. package/es/text-field/text-field.js.map +1 -1
  105. package/es/text-link/text-link.js +21 -10
  106. package/es/text-link/text-link.js.map +1 -1
  107. package/es/toast/static-toast.js +143 -25
  108. package/es/toast/static-toast.js.map +1 -1
  109. package/es/toast/toast-animation.js +159 -109
  110. package/es/toast/toast-animation.js.map +1 -1
  111. package/es/toast/use-toasts.js +309 -84
  112. package/es/toast/use-toasts.js.map +1 -1
  113. package/es/tooltip/tooltip.js +88 -32
  114. package/es/tooltip/tooltip.js.map +1 -1
  115. package/es/utils/common-helpers.js +12 -11
  116. package/es/utils/common-helpers.js.map +1 -1
  117. package/es/utils/polymorphism.js +84 -1
  118. package/es/utils/polymorphism.js.map +1 -1
  119. package/es/utils/responsive-props.js +43 -32
  120. package/es/utils/responsive-props.js.map +1 -1
  121. package/lib/avatar/avatar.js +109 -35
  122. package/lib/avatar/avatar.js.map +1 -1
  123. package/lib/avatar/utils.js +17 -19
  124. package/lib/avatar/utils.js.map +1 -1
  125. package/lib/badge/badge.js +53 -5
  126. package/lib/badge/badge.js.map +1 -1
  127. package/lib/banner/banner.js +385 -38
  128. package/lib/banner/banner.js.map +1 -1
  129. package/lib/base-field/base-field.js +366 -73
  130. package/lib/base-field/base-field.js.map +1 -1
  131. package/lib/box/box.js +141 -61
  132. package/lib/box/box.js.map +1 -1
  133. package/lib/button/button.js +347 -35
  134. package/lib/button/button.js.map +1 -1
  135. package/lib/checkbox-field/checkbox-field.js +73 -46
  136. package/lib/checkbox-field/checkbox-field.js.map +1 -1
  137. package/lib/checkbox-field/checkbox-icon.js +92 -28
  138. package/lib/checkbox-field/checkbox-icon.js.map +1 -1
  139. package/lib/checkbox-field/use-fork-ref.js +15 -20
  140. package/lib/checkbox-field/use-fork-ref.js.map +1 -1
  141. package/lib/columns/columns.js +49 -22
  142. package/lib/columns/columns.js.map +1 -1
  143. package/lib/components/color-picker/color-picker.js +189 -45
  144. package/lib/components/color-picker/color-picker.js.map +1 -1
  145. package/lib/components/deprecated-button/deprecated-button.js +104 -9
  146. package/lib/components/deprecated-button/deprecated-button.js.map +1 -1
  147. package/lib/components/deprecated-dropdown/dropdown.js +235 -133
  148. package/lib/components/deprecated-dropdown/dropdown.js.map +1 -1
  149. package/lib/components/deprecated-input/input.js +28 -4
  150. package/lib/components/deprecated-input/input.js.map +1 -1
  151. package/lib/components/deprecated-select/select.js +112 -7
  152. package/lib/components/deprecated-select/select.js.map +1 -1
  153. package/lib/components/key-capturer/key-capturer.js +188 -135
  154. package/lib/components/key-capturer/key-capturer.js.map +1 -1
  155. package/lib/components/keyboard-shortcut/keyboard-shortcut.js +67 -45
  156. package/lib/components/keyboard-shortcut/keyboard-shortcut.js.map +1 -1
  157. package/lib/components/progress-bar/progress-bar.js +60 -8
  158. package/lib/components/progress-bar/progress-bar.js.map +1 -1
  159. package/lib/components/time/time-utils.js +59 -53
  160. package/lib/components/time/time-utils.js.map +1 -1
  161. package/lib/components/time/time.js +93 -90
  162. package/lib/components/time/time.js.map +1 -1
  163. package/lib/divider/divider.js +47 -4
  164. package/lib/divider/divider.js.map +1 -1
  165. package/lib/heading/heading.js +125 -19
  166. package/lib/heading/heading.js.map +1 -1
  167. package/lib/hidden/hidden.js +39 -29
  168. package/lib/hidden/hidden.js.map +1 -1
  169. package/lib/hidden-visually/hidden-visually.js +11 -3
  170. package/lib/hidden-visually/hidden-visually.js.map +1 -1
  171. package/lib/icons/alert-icon.js +149 -18
  172. package/lib/icons/alert-icon.js.map +1 -1
  173. package/lib/icons/banner-icon.js +217 -25
  174. package/lib/icons/banner-icon.js.map +1 -1
  175. package/lib/icons/close-icon.js +29 -3
  176. package/lib/icons/close-icon.js.map +1 -1
  177. package/lib/icons/password-hidden-icon.js +43 -6
  178. package/lib/icons/password-hidden-icon.js.map +1 -1
  179. package/lib/icons/password-visible-icon.js +36 -5
  180. package/lib/icons/password-visible-icon.js.map +1 -1
  181. package/lib/inline/inline.js +27 -8
  182. package/lib/inline/inline.js.map +1 -1
  183. package/lib/loading/loading.js +67 -17
  184. package/lib/loading/loading.js.map +1 -1
  185. package/lib/menu/menu.js +471 -91
  186. package/lib/menu/menu.js.map +1 -1
  187. package/lib/modal/modal.js +671 -106
  188. package/lib/modal/modal.js.map +1 -1
  189. package/lib/notice/notice.js +75 -8
  190. package/lib/notice/notice.js.map +1 -1
  191. package/lib/password-field/password-field.js +92 -10
  192. package/lib/password-field/password-field.js.map +1 -1
  193. package/lib/prose/prose.js +51 -8
  194. package/lib/prose/prose.js.map +1 -1
  195. package/lib/select-field/select-field.js +152 -17
  196. package/lib/select-field/select-field.js.map +1 -1
  197. package/lib/spinner/spinner.js +39 -6
  198. package/lib/spinner/spinner.js.map +1 -1
  199. package/lib/stack/stack.js +29 -15
  200. package/lib/stack/stack.js.map +1 -1
  201. package/lib/switch-field/switch-field.js +225 -38
  202. package/lib/switch-field/switch-field.js.map +1 -1
  203. package/lib/tabs/tabs.js +207 -107
  204. package/lib/tabs/tabs.js.map +1 -1
  205. package/lib/text/text.js +30 -16
  206. package/lib/text/text.js.map +1 -1
  207. package/lib/text-area/text-area.js +264 -52
  208. package/lib/text-area/text-area.js.map +1 -1
  209. package/lib/text-field/text-field.js +207 -30
  210. package/lib/text-field/text-field.js.map +1 -1
  211. package/lib/text-link/text-link.js +24 -9
  212. package/lib/text-link/text-link.js.map +1 -1
  213. package/lib/toast/static-toast.js +142 -22
  214. package/lib/toast/static-toast.js.map +1 -1
  215. package/lib/toast/toast-animation.js +158 -108
  216. package/lib/toast/toast-animation.js.map +1 -1
  217. package/lib/toast/use-toasts.js +310 -82
  218. package/lib/toast/use-toasts.js.map +1 -1
  219. package/lib/tooltip/tooltip.js +87 -31
  220. package/lib/tooltip/tooltip.js.map +1 -1
  221. package/lib/utils/common-helpers.js +12 -11
  222. package/lib/utils/common-helpers.js.map +1 -1
  223. package/lib/utils/polymorphism.js +84 -1
  224. package/lib/utils/polymorphism.js.map +1 -1
  225. package/lib/utils/responsive-props.js +43 -32
  226. package/lib/utils/responsive-props.js.map +1 -1
  227. package/package.json +12 -3
@@ -2,7 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib = require('tslib');
5
+ var _extends = require('@babel/runtime/helpers/extends');
6
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
7
+ var reactCompilerRuntime = require('react-compiler-runtime');
6
8
  var React = require('react');
7
9
  var FocusLock = require('react-focus-lock');
8
10
  var react = require('@ariakit/react');
@@ -36,18 +38,36 @@ function _interopNamespace(e) {
36
38
  return Object.freeze(n);
37
39
  }
38
40
 
41
+ var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
42
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
39
43
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
40
44
  var FocusLock__default = /*#__PURE__*/_interopDefaultLegacy(FocusLock);
41
45
  var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
42
46
 
43
- var ModalContext = React__namespace.createContext({
44
- onDismiss: undefined,
45
- height: 'fitContent',
46
- dividers: undefined,
47
+ const _excluded = ["isOpen", "onDismiss", "height", "dividers", "width", "exceptionallySetClassName", "exceptionallySetOverlayClassName", "autoFocus", "hideOnEscape", "hideOnInteractOutside", "children", "portalElement", "onKeyDown", "className"],
48
+ _excluded2 = ["children", "button", "withDivider", "exceptionallySetClassName"],
49
+ _excluded3 = ["exceptionallySetClassName", "children"],
50
+ _excluded4 = ["exceptionallySetClassName", "withDivider"],
51
+ _excluded5 = ["children"];
52
+
53
+ //
54
+ // ModalContext
55
+ //
56
+
57
+ const ModalContext = /*#__PURE__*/React__namespace.createContext({
58
+ onDismiss: undefined,
59
+ height: 'fitContent',
60
+ dividers: undefined
47
61
  });
62
+
63
+ //
64
+ // Modal container
65
+ //
66
+
48
67
  function isNotInternalFrame(element) {
49
- return !(element.ownerDocument === document && element.tagName.toLowerCase() === 'iframe');
68
+ return !(element.ownerDocument === document && element.tagName.toLowerCase() === 'iframe');
50
69
  }
70
+
51
71
  /**
52
72
  * Renders a modal that sits on top of the rest of the content in the entire page.
53
73
  *
@@ -57,67 +77,314 @@ function isNotInternalFrame(element) {
57
77
  * @see ModalFooter
58
78
  * @see ModalBody
59
79
  */
60
- function Modal(_a) {
61
- var isOpen = _a.isOpen, onDismiss = _a.onDismiss, _b = _a.height, height = _b === void 0 ? 'fitContent' : _b, dividers = _a.dividers, _c = _a.width, width = _c === void 0 ? 'medium' : _c, exceptionallySetClassName = _a.exceptionallySetClassName, exceptionallySetOverlayClassName = _a.exceptionallySetOverlayClassName, _d = _a.autoFocus, autoFocus = _d === void 0 ? true : _d, _e = _a.hideOnEscape, hideOnEscape = _e === void 0 ? true : _e, _f = _a.hideOnInteractOutside, hideOnInteractOutside = _f === void 0 ? true : _f, children = _a.children, portalElement = _a.portalElement, onKeyDown = _a.onKeyDown;
62
- // @ts-expect-error we want to make sure to not pass it to the Dialog component
63
- _a.className; var props = tslib.__rest(_a, ["isOpen", "onDismiss", "height", "dividers", "width", "exceptionallySetClassName", "exceptionallySetOverlayClassName", "autoFocus", "hideOnEscape", "hideOnInteractOutside", "children", "portalElement", "onKeyDown", "className"]);
64
- var setOpen = React__namespace.useCallback(function (visible) {
65
- if (!visible) {
66
- onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();
67
- }
68
- }, [onDismiss]);
69
- var store = react.useDialogStore({ open: isOpen, setOpen: setOpen });
70
- var contextValue = React__namespace.useMemo(function () { return ({ onDismiss: onDismiss, height: height, dividers: dividers }); }, [onDismiss, height, dividers]);
71
- var portalRef = React__namespace.useRef(null);
72
- var dialogRef = React__namespace.useRef(null);
73
- var backdropRef = React__namespace.useRef(null);
74
- var handleBackdropClick = React__namespace.useCallback(function (event) {
75
- var _a, _b;
76
- if (
77
- // The focus lock element takes up the same space as the backdrop and is where the event bubbles up from,
78
- // so instead of checking the backdrop as the event target, we need to make sure it's just above the dialog
79
- !((_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)) &&
80
- (
81
- // Events fired from other portals will bubble up to the backdrop, even if it isn't a child in the DOM
82
- (_b = backdropRef.current) === null || _b === void 0 ? void 0 : _b.contains(event.target))) {
83
- event.stopPropagation();
84
- onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();
85
- }
86
- }, [onDismiss]);
87
- React__namespace.useLayoutEffect(function disableAccessibilityTreeOutside() {
88
- if (!isOpen || !portalRef.current) {
89
- return;
90
- }
91
- return ariaHidden.hideOthers(portalRef.current);
92
- }, [isOpen]);
93
- var handleKeyDown = React__namespace.useCallback(function handleKeyDown(event) {
94
- if (hideOnEscape &&
95
- onDismiss != null &&
96
- event.key === 'Escape' &&
97
- !event.defaultPrevented) {
98
- event.stopPropagation();
99
- onDismiss();
100
- }
101
- onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
102
- }, [onDismiss, hideOnEscape, onKeyDown]);
103
- if (!isOpen) {
104
- return null;
105
- }
106
- return (React__namespace.createElement(react.Portal, { portalRef: portalRef, portalElement: portalElement },
107
- React__namespace.createElement(box.Box, { "data-testid": "modal-overlay", "data-overlay": true, className: classNames__default["default"](modal_module["default"].overlay, modal_module["default"][height], modal_module["default"][width], exceptionallySetOverlayClassName),
108
- /**
109
- * We're using `onPointerDown` instead of `onClick` to prevent the modal from
110
- * closing when the click starts inside the modal and ends on the backdrop.
111
- */
112
- onPointerDown: hideOnInteractOutside ? handleBackdropClick : undefined, ref: backdropRef },
113
- React__namespace.createElement(FocusLock__default["default"], { autoFocus: autoFocus, whiteList: isNotInternalFrame, returnFocus: true, crossFrame: false },
114
- React__namespace.createElement(react.Dialog, tslib.__assign({}, props, { ref: dialogRef, render: React__namespace.createElement(box.Box, { borderRadius: "full", background: "default", display: "flex", flexDirection: "column", overflow: "hidden", height: height === 'expand' ? 'full' : undefined, flexGrow: height === 'expand' ? 1 : 0 }), className: classNames__default["default"](exceptionallySetClassName, modal_module["default"].container), store: store, preventBodyScroll: true,
115
- // Disable focus lock as we set up our own using ReactFocusLock
116
- modal: false, autoFocus: false, autoFocusOnShow: false, autoFocusOnHide: false,
117
- // Disable portal and backdrop as we control their markup
118
- portal: false, backdrop: false, hideOnInteractOutside: false, hideOnEscape: false, onKeyDown: handleKeyDown }),
119
- React__namespace.createElement(ModalContext.Provider, { value: contextValue }, children))))));
80
+ function Modal(t0) {
81
+ const $ = reactCompilerRuntime.c(62);
82
+ let children;
83
+ let dividers;
84
+ let exceptionallySetClassName;
85
+ let exceptionallySetOverlayClassName;
86
+ let isOpen;
87
+ let onDismiss;
88
+ let onKeyDown;
89
+ let portalElement;
90
+ let props;
91
+ let t1;
92
+ let t2;
93
+ let t3;
94
+ let t4;
95
+ let t5;
96
+ if ($[0] !== t0) {
97
+ const {
98
+ isOpen: t6,
99
+ onDismiss: t7,
100
+ height: t8,
101
+ dividers: t9,
102
+ width: t10,
103
+ exceptionallySetClassName: t11,
104
+ exceptionallySetOverlayClassName: t12,
105
+ autoFocus: t13,
106
+ hideOnEscape: t14,
107
+ hideOnInteractOutside: t15,
108
+ children: t16,
109
+ portalElement: t17,
110
+ onKeyDown: t18,
111
+ className
112
+ } = t0,
113
+ t19 = _objectWithoutProperties__default["default"](t0, _excluded);
114
+ isOpen = t6;
115
+ onDismiss = t7;
116
+ t1 = t8;
117
+ dividers = t9;
118
+ t2 = t10;
119
+ exceptionallySetClassName = t11;
120
+ exceptionallySetOverlayClassName = t12;
121
+ t3 = t13;
122
+ t4 = t14;
123
+ t5 = t15;
124
+ children = t16;
125
+ portalElement = t17;
126
+ onKeyDown = t18;
127
+ props = t19;
128
+ $[0] = t0;
129
+ $[1] = children;
130
+ $[2] = dividers;
131
+ $[3] = exceptionallySetClassName;
132
+ $[4] = exceptionallySetOverlayClassName;
133
+ $[5] = isOpen;
134
+ $[6] = onDismiss;
135
+ $[7] = onKeyDown;
136
+ $[8] = portalElement;
137
+ $[9] = props;
138
+ $[10] = t1;
139
+ $[11] = t2;
140
+ $[12] = t3;
141
+ $[13] = t4;
142
+ $[14] = t5;
143
+ } else {
144
+ children = $[1];
145
+ dividers = $[2];
146
+ exceptionallySetClassName = $[3];
147
+ exceptionallySetOverlayClassName = $[4];
148
+ isOpen = $[5];
149
+ onDismiss = $[6];
150
+ onKeyDown = $[7];
151
+ portalElement = $[8];
152
+ props = $[9];
153
+ t1 = $[10];
154
+ t2 = $[11];
155
+ t3 = $[12];
156
+ t4 = $[13];
157
+ t5 = $[14];
158
+ }
159
+ const height = t1 === undefined ? "fitContent" : t1;
160
+ const width = t2 === undefined ? "medium" : t2;
161
+ const autoFocus = t3 === undefined ? true : t3;
162
+ const hideOnEscape = t4 === undefined ? true : t4;
163
+ const hideOnInteractOutside = t5 === undefined ? true : t5;
164
+ let t6;
165
+ if ($[15] !== onDismiss) {
166
+ t6 = visible => {
167
+ if (!visible) {
168
+ onDismiss?.();
169
+ }
170
+ };
171
+ $[15] = onDismiss;
172
+ $[16] = t6;
173
+ } else {
174
+ t6 = $[16];
175
+ }
176
+ const setOpen = t6;
177
+ let t7;
178
+ if ($[17] !== isOpen || $[18] !== setOpen) {
179
+ t7 = {
180
+ open: isOpen,
181
+ setOpen
182
+ };
183
+ $[17] = isOpen;
184
+ $[18] = setOpen;
185
+ $[19] = t7;
186
+ } else {
187
+ t7 = $[19];
188
+ }
189
+ const store = react.useDialogStore(t7);
190
+ let t8;
191
+ if ($[20] !== dividers || $[21] !== height || $[22] !== onDismiss) {
192
+ t8 = {
193
+ onDismiss,
194
+ height,
195
+ dividers
196
+ };
197
+ $[20] = dividers;
198
+ $[21] = height;
199
+ $[22] = onDismiss;
200
+ $[23] = t8;
201
+ } else {
202
+ t8 = $[23];
203
+ }
204
+ const contextValue = t8;
205
+ const portalRef = React__namespace.useRef(null);
206
+ const dialogRef = React__namespace.useRef(null);
207
+ const backdropRef = React__namespace.useRef(null);
208
+ let t9;
209
+ if ($[24] !== onDismiss) {
210
+ t9 = event => {
211
+ if (!dialogRef.current?.contains(event.target) && backdropRef.current?.contains(event.target)) {
212
+ event.stopPropagation();
213
+ onDismiss?.();
214
+ }
215
+ };
216
+ $[24] = onDismiss;
217
+ $[25] = t9;
218
+ } else {
219
+ t9 = $[25];
220
+ }
221
+ const handleBackdropClick = t9;
222
+ let t10;
223
+ let t11;
224
+ if ($[26] !== isOpen) {
225
+ t10 = function disableAccessibilityTreeOutside() {
226
+ if (!isOpen || !portalRef.current) {
227
+ return;
228
+ }
229
+ return ariaHidden.hideOthers(portalRef.current);
230
+ };
231
+ t11 = [isOpen];
232
+ $[26] = isOpen;
233
+ $[27] = t10;
234
+ $[28] = t11;
235
+ } else {
236
+ t10 = $[27];
237
+ t11 = $[28];
238
+ }
239
+ React__namespace.useLayoutEffect(t10, t11);
240
+ let t12;
241
+ if ($[29] !== hideOnEscape || $[30] !== onDismiss || $[31] !== onKeyDown) {
242
+ t12 = function handleKeyDown(event_0) {
243
+ if (hideOnEscape && onDismiss != null && event_0.key === "Escape" && !event_0.defaultPrevented) {
244
+ event_0.stopPropagation();
245
+ onDismiss();
246
+ }
247
+ onKeyDown?.(event_0);
248
+ };
249
+ $[29] = hideOnEscape;
250
+ $[30] = onDismiss;
251
+ $[31] = onKeyDown;
252
+ $[32] = t12;
253
+ } else {
254
+ t12 = $[32];
255
+ }
256
+ const handleKeyDown = t12;
257
+ if (!isOpen) {
258
+ return null;
259
+ }
260
+ const t13 = modal_module["default"][height];
261
+ const t14 = modal_module["default"][width];
262
+ let t15;
263
+ if ($[33] !== exceptionallySetOverlayClassName || $[34] !== t13 || $[35] !== t14) {
264
+ t15 = classNames__default["default"](modal_module["default"].overlay, t13, t14, exceptionallySetOverlayClassName);
265
+ $[33] = exceptionallySetOverlayClassName;
266
+ $[34] = t13;
267
+ $[35] = t14;
268
+ $[36] = t15;
269
+ } else {
270
+ t15 = $[36];
271
+ }
272
+ const t16 = hideOnInteractOutside ? handleBackdropClick : undefined;
273
+ const t17 = height === "expand" ? "full" : undefined;
274
+ const t18 = height === "expand" ? 1 : 0;
275
+ let t19;
276
+ if ($[37] !== t17 || $[38] !== t18) {
277
+ t19 = /*#__PURE__*/React__namespace.createElement(box.Box, {
278
+ borderRadius: "full",
279
+ background: "default",
280
+ display: "flex",
281
+ flexDirection: "column",
282
+ overflow: "hidden",
283
+ height: t17,
284
+ flexGrow: t18
285
+ });
286
+ $[37] = t17;
287
+ $[38] = t18;
288
+ $[39] = t19;
289
+ } else {
290
+ t19 = $[39];
291
+ }
292
+ let t20;
293
+ if ($[40] !== exceptionallySetClassName) {
294
+ t20 = classNames__default["default"](exceptionallySetClassName, modal_module["default"].container);
295
+ $[40] = exceptionallySetClassName;
296
+ $[41] = t20;
297
+ } else {
298
+ t20 = $[41];
299
+ }
300
+ let t21;
301
+ if ($[42] !== children || $[43] !== contextValue) {
302
+ t21 = /*#__PURE__*/React__namespace.createElement(ModalContext.Provider, {
303
+ value: contextValue
304
+ }, children);
305
+ $[42] = children;
306
+ $[43] = contextValue;
307
+ $[44] = t21;
308
+ } else {
309
+ t21 = $[44];
310
+ }
311
+ let t22;
312
+ if ($[45] !== handleKeyDown || $[46] !== props || $[47] !== store || $[48] !== t19 || $[49] !== t20 || $[50] !== t21) {
313
+ t22 = /*#__PURE__*/React__namespace.createElement(react.Dialog, _extends__default["default"]({}, props, {
314
+ ref: dialogRef,
315
+ render: t19,
316
+ className: t20,
317
+ store: store,
318
+ preventBodyScroll: true,
319
+ modal: false,
320
+ autoFocus: false,
321
+ autoFocusOnShow: false,
322
+ autoFocusOnHide: false,
323
+ portal: false,
324
+ backdrop: false,
325
+ hideOnInteractOutside: false,
326
+ hideOnEscape: false,
327
+ onKeyDown: handleKeyDown
328
+ }), t21);
329
+ $[45] = handleKeyDown;
330
+ $[46] = props;
331
+ $[47] = store;
332
+ $[48] = t19;
333
+ $[49] = t20;
334
+ $[50] = t21;
335
+ $[51] = t22;
336
+ } else {
337
+ t22 = $[51];
338
+ }
339
+ let t23;
340
+ if ($[52] !== autoFocus || $[53] !== t22) {
341
+ t23 = /*#__PURE__*/React__namespace.createElement(FocusLock__default["default"], {
342
+ autoFocus: autoFocus,
343
+ whiteList: isNotInternalFrame,
344
+ returnFocus: true,
345
+ crossFrame: false
346
+ }, t22);
347
+ $[52] = autoFocus;
348
+ $[53] = t22;
349
+ $[54] = t23;
350
+ } else {
351
+ t23 = $[54];
352
+ }
353
+ let t24;
354
+ if ($[55] !== t15 || $[56] !== t16 || $[57] !== t23) {
355
+ t24 = /*#__PURE__*/React__namespace.createElement(box.Box, {
356
+ "data-testid": "modal-overlay",
357
+ "data-overlay": true,
358
+ className: t15,
359
+ onPointerDown: t16,
360
+ ref: backdropRef
361
+ }, t23);
362
+ $[55] = t15;
363
+ $[56] = t16;
364
+ $[57] = t23;
365
+ $[58] = t24;
366
+ } else {
367
+ t24 = $[58];
368
+ }
369
+ let t25;
370
+ if ($[59] !== portalElement || $[60] !== t24) {
371
+ t25 = /*#__PURE__*/React__namespace.createElement(react.Portal, {
372
+ portalRef: portalRef,
373
+ portalElement: portalElement
374
+ }, t24);
375
+ $[59] = portalElement;
376
+ $[60] = t24;
377
+ $[61] = t25;
378
+ } else {
379
+ t25 = $[61];
380
+ }
381
+ return t25;
120
382
  }
383
+
384
+ //
385
+ // ModalCloseButton
386
+ //
387
+
121
388
  /**
122
389
  * The close button rendered by ModalHeader. Provided independently so that consumers can customize
123
390
  * the button's label.
@@ -125,23 +392,63 @@ function Modal(_a) {
125
392
  * @see ModalHeader
126
393
  */
127
394
  function ModalCloseButton(props) {
128
- var onDismiss = React__namespace.useContext(ModalContext).onDismiss;
129
- var buttonRef = React__namespace.useRef(null);
130
- React__namespace.useLayoutEffect(function skipAutoFocus() {
131
- var button = buttonRef.current;
132
- if (!button) {
133
- return;
134
- }
135
- button.tabIndex = -1;
136
- var rafId = requestAnimationFrame(function () {
137
- button.tabIndex = 0;
138
- });
139
- return function () {
140
- cancelAnimationFrame(rafId);
141
- };
142
- }, []);
143
- return (React__namespace.createElement(button.IconButton, tslib.__assign({}, props, { ref: buttonRef, variant: "quaternary", onClick: onDismiss, icon: React__namespace.createElement(closeIcon.CloseIcon, null) })));
395
+ const $ = reactCompilerRuntime.c(6);
396
+ const {
397
+ onDismiss
398
+ } = React__namespace.useContext(ModalContext);
399
+ const buttonRef = React__namespace.useRef(null);
400
+ let t0;
401
+ let t1;
402
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
403
+ t0 = function skipAutoFocus() {
404
+ const button = buttonRef.current;
405
+ if (!button) {
406
+ return;
407
+ }
408
+ button.tabIndex = -1;
409
+ const rafId = requestAnimationFrame(() => {
410
+ button.tabIndex = 0;
411
+ });
412
+ return () => {
413
+ cancelAnimationFrame(rafId);
414
+ };
415
+ };
416
+ t1 = [];
417
+ $[0] = t0;
418
+ $[1] = t1;
419
+ } else {
420
+ t0 = $[0];
421
+ t1 = $[1];
422
+ }
423
+ React__namespace.useLayoutEffect(t0, t1);
424
+ let t2;
425
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
426
+ t2 = /*#__PURE__*/React__namespace.createElement(closeIcon.CloseIcon, null);
427
+ $[2] = t2;
428
+ } else {
429
+ t2 = $[2];
430
+ }
431
+ let t3;
432
+ if ($[3] !== onDismiss || $[4] !== props) {
433
+ t3 = /*#__PURE__*/React__namespace.createElement(button.IconButton, _extends__default["default"]({}, props, {
434
+ ref: buttonRef,
435
+ variant: "quaternary",
436
+ onClick: onDismiss,
437
+ icon: t2
438
+ }));
439
+ $[3] = onDismiss;
440
+ $[4] = props;
441
+ $[5] = t3;
442
+ } else {
443
+ t3 = $[5];
444
+ }
445
+ return t3;
144
446
  }
447
+
448
+ //
449
+ // ModalHeader
450
+ //
451
+
145
452
  /**
146
453
  * Renders a standard modal header area with an optional close button.
147
454
  *
@@ -149,16 +456,124 @@ function ModalCloseButton(props) {
149
456
  * @see ModalFooter
150
457
  * @see ModalBody
151
458
  */
152
- function ModalHeader(_a) {
153
- var children = _a.children, _b = _a.button, button = _b === void 0 ? true : _b, _c = _a.withDivider, withDivider = _c === void 0 ? false : _c, exceptionallySetClassName = _a.exceptionallySetClassName, props = tslib.__rest(_a, ["children", "button", "withDivider", "exceptionallySetClassName"]);
154
- var dividers = React__namespace.useContext(ModalContext).dividers;
155
- return (React__namespace.createElement(React__namespace.Fragment, null,
156
- React__namespace.createElement(box.Box, tslib.__assign({}, props, { as: "header", paddingLeft: "large", paddingRight: button === false || button === null ? 'large' : 'small', paddingY: "small", className: exceptionallySetClassName }),
157
- React__namespace.createElement(columns.Columns, { space: "large", alignY: "center" },
158
- React__namespace.createElement(columns.Column, { width: "auto" }, children),
159
- button === false || button === null ? (React__namespace.createElement("div", { className: modal_module["default"].headerContent })) : (React__namespace.createElement(columns.Column, { width: "content", exceptionallySetClassName: modal_module["default"].buttonContainer, "data-testid": "button-container" }, typeof button === 'boolean' ? (React__namespace.createElement(ModalCloseButton, { "aria-label": "Close modal", autoFocus: false })) : (button))))),
160
- withDivider ? React__namespace.createElement(divider.Divider, { weight: dividers }) : null));
459
+ function ModalHeader(t0) {
460
+ const $ = reactCompilerRuntime.c(24);
461
+ let children;
462
+ let exceptionallySetClassName;
463
+ let props;
464
+ let t1;
465
+ let t2;
466
+ if ($[0] !== t0) {
467
+ var _t = t0;
468
+ ({
469
+ children,
470
+ button: t1,
471
+ withDivider: t2,
472
+ exceptionallySetClassName
473
+ } = _t);
474
+ props = _objectWithoutProperties__default["default"](_t, _excluded2);
475
+ $[0] = t0;
476
+ $[1] = children;
477
+ $[2] = exceptionallySetClassName;
478
+ $[3] = props;
479
+ $[4] = t1;
480
+ $[5] = t2;
481
+ } else {
482
+ children = $[1];
483
+ exceptionallySetClassName = $[2];
484
+ props = $[3];
485
+ t1 = $[4];
486
+ t2 = $[5];
487
+ }
488
+ const button = t1 === undefined ? true : t1;
489
+ const withDivider = t2 === undefined ? false : t2;
490
+ const {
491
+ dividers
492
+ } = React__namespace.useContext(ModalContext);
493
+ const t3 = button === false || button === null ? "large" : "small";
494
+ let t4;
495
+ if ($[6] !== children) {
496
+ t4 = /*#__PURE__*/React__namespace.createElement(columns.Column, {
497
+ width: "auto"
498
+ }, children);
499
+ $[6] = children;
500
+ $[7] = t4;
501
+ } else {
502
+ t4 = $[7];
503
+ }
504
+ let t5;
505
+ if ($[8] !== button) {
506
+ t5 = button === false || button === null ? /*#__PURE__*/React__namespace.createElement("div", {
507
+ className: modal_module["default"].headerContent
508
+ }) : /*#__PURE__*/React__namespace.createElement(columns.Column, {
509
+ width: "content",
510
+ exceptionallySetClassName: modal_module["default"].buttonContainer,
511
+ "data-testid": "button-container"
512
+ }, typeof button === "boolean" ? /*#__PURE__*/React__namespace.createElement(ModalCloseButton, {
513
+ "aria-label": "Close modal",
514
+ autoFocus: false
515
+ }) : button);
516
+ $[8] = button;
517
+ $[9] = t5;
518
+ } else {
519
+ t5 = $[9];
520
+ }
521
+ let t6;
522
+ if ($[10] !== t4 || $[11] !== t5) {
523
+ t6 = /*#__PURE__*/React__namespace.createElement(columns.Columns, {
524
+ space: "large",
525
+ alignY: "center"
526
+ }, t4, t5);
527
+ $[10] = t4;
528
+ $[11] = t5;
529
+ $[12] = t6;
530
+ } else {
531
+ t6 = $[12];
532
+ }
533
+ let t7;
534
+ if ($[13] !== exceptionallySetClassName || $[14] !== props || $[15] !== t3 || $[16] !== t6) {
535
+ t7 = /*#__PURE__*/React__namespace.createElement(box.Box, _extends__default["default"]({}, props, {
536
+ as: "header",
537
+ paddingLeft: "large",
538
+ paddingRight: t3,
539
+ paddingY: "small",
540
+ className: exceptionallySetClassName
541
+ }), t6);
542
+ $[13] = exceptionallySetClassName;
543
+ $[14] = props;
544
+ $[15] = t3;
545
+ $[16] = t6;
546
+ $[17] = t7;
547
+ } else {
548
+ t7 = $[17];
549
+ }
550
+ let t8;
551
+ if ($[18] !== dividers || $[19] !== withDivider) {
552
+ t8 = withDivider ? /*#__PURE__*/React__namespace.createElement(divider.Divider, {
553
+ weight: dividers
554
+ }) : null;
555
+ $[18] = dividers;
556
+ $[19] = withDivider;
557
+ $[20] = t8;
558
+ } else {
559
+ t8 = $[20];
560
+ }
561
+ let t9;
562
+ if ($[21] !== t7 || $[22] !== t8) {
563
+ t9 = /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, t7, t8);
564
+ $[21] = t7;
565
+ $[22] = t8;
566
+ $[23] = t9;
567
+ } else {
568
+ t9 = $[23];
569
+ }
570
+ return t9;
161
571
  }
572
+
573
+ //
574
+ // ModalBody
575
+ //
576
+
162
577
  /**
163
578
  * Renders the body of a modal.
164
579
  *
@@ -171,12 +586,69 @@ function ModalHeader(_a) {
171
586
  * @see ModalHeader
172
587
  * @see ModalFooter
173
588
  */
174
- var ModalBody = React.forwardRef(function ModalBody(_a, ref) {
175
- var exceptionallySetClassName = _a.exceptionallySetClassName, children = _a.children, props = tslib.__rest(_a, ["exceptionallySetClassName", "children"]);
176
- var height = React__namespace.useContext(ModalContext).height;
177
- return (React__namespace.createElement(box.Box, tslib.__assign({}, props, { ref: ref, className: exceptionallySetClassName, flexGrow: height === 'expand' ? 1 : 0, height: height === 'expand' ? 'full' : undefined, overflow: "auto" }),
178
- React__namespace.createElement(box.Box, { padding: "large", paddingBottom: "xxlarge" }, children)));
589
+ const ModalBody = /*#__PURE__*/React.forwardRef(function ModalBody(t0, ref) {
590
+ const $ = reactCompilerRuntime.c(13);
591
+ let children;
592
+ let exceptionallySetClassName;
593
+ let props;
594
+ if ($[0] !== t0) {
595
+ var _t2 = t0;
596
+ ({
597
+ exceptionallySetClassName,
598
+ children
599
+ } = _t2);
600
+ props = _objectWithoutProperties__default["default"](_t2, _excluded3);
601
+ $[0] = t0;
602
+ $[1] = children;
603
+ $[2] = exceptionallySetClassName;
604
+ $[3] = props;
605
+ } else {
606
+ children = $[1];
607
+ exceptionallySetClassName = $[2];
608
+ props = $[3];
609
+ }
610
+ const {
611
+ height
612
+ } = React__namespace.useContext(ModalContext);
613
+ const t1 = height === "expand" ? 1 : 0;
614
+ const t2 = height === "expand" ? "full" : undefined;
615
+ let t3;
616
+ if ($[4] !== children) {
617
+ t3 = /*#__PURE__*/React__namespace.createElement(box.Box, {
618
+ padding: "large",
619
+ paddingBottom: "xxlarge"
620
+ }, children);
621
+ $[4] = children;
622
+ $[5] = t3;
623
+ } else {
624
+ t3 = $[5];
625
+ }
626
+ let t4;
627
+ if ($[6] !== exceptionallySetClassName || $[7] !== props || $[8] !== ref || $[9] !== t1 || $[10] !== t2 || $[11] !== t3) {
628
+ t4 = /*#__PURE__*/React__namespace.createElement(box.Box, _extends__default["default"]({}, props, {
629
+ ref: ref,
630
+ className: exceptionallySetClassName,
631
+ flexGrow: t1,
632
+ height: t2,
633
+ overflow: "auto"
634
+ }), t3);
635
+ $[6] = exceptionallySetClassName;
636
+ $[7] = props;
637
+ $[8] = ref;
638
+ $[9] = t1;
639
+ $[10] = t2;
640
+ $[11] = t3;
641
+ $[12] = t4;
642
+ } else {
643
+ t4 = $[12];
644
+ }
645
+ return t4;
179
646
  });
647
+
648
+ //
649
+ // ModalFooter
650
+ //
651
+
180
652
  /**
181
653
  * Renders a standard modal footer area.
182
654
  *
@@ -184,21 +656,114 @@ var ModalBody = React.forwardRef(function ModalBody(_a, ref) {
184
656
  * @see ModalHeader
185
657
  * @see ModalBody
186
658
  */
187
- function ModalFooter(_a) {
188
- var exceptionallySetClassName = _a.exceptionallySetClassName, _b = _a.withDivider, withDivider = _b === void 0 ? false : _b, props = tslib.__rest(_a, ["exceptionallySetClassName", "withDivider"]);
189
- var dividers = React__namespace.useContext(ModalContext).dividers;
190
- return (React__namespace.createElement(React__namespace.Fragment, null,
191
- withDivider ? React__namespace.createElement(divider.Divider, { weight: dividers }) : null,
192
- React__namespace.createElement(box.Box, tslib.__assign({ as: "footer" }, props, { className: exceptionallySetClassName, padding: "large" }))));
659
+ function ModalFooter(t0) {
660
+ const $ = reactCompilerRuntime.c(13);
661
+ let exceptionallySetClassName;
662
+ let props;
663
+ let t1;
664
+ if ($[0] !== t0) {
665
+ var _t3 = t0;
666
+ ({
667
+ exceptionallySetClassName,
668
+ withDivider: t1
669
+ } = _t3);
670
+ props = _objectWithoutProperties__default["default"](_t3, _excluded4);
671
+ $[0] = t0;
672
+ $[1] = exceptionallySetClassName;
673
+ $[2] = props;
674
+ $[3] = t1;
675
+ } else {
676
+ exceptionallySetClassName = $[1];
677
+ props = $[2];
678
+ t1 = $[3];
679
+ }
680
+ const withDivider = t1 === undefined ? false : t1;
681
+ const {
682
+ dividers
683
+ } = React__namespace.useContext(ModalContext);
684
+ let t2;
685
+ if ($[4] !== dividers || $[5] !== withDivider) {
686
+ t2 = withDivider ? /*#__PURE__*/React__namespace.createElement(divider.Divider, {
687
+ weight: dividers
688
+ }) : null;
689
+ $[4] = dividers;
690
+ $[5] = withDivider;
691
+ $[6] = t2;
692
+ } else {
693
+ t2 = $[6];
694
+ }
695
+ let t3;
696
+ if ($[7] !== exceptionallySetClassName || $[8] !== props) {
697
+ t3 = /*#__PURE__*/React__namespace.createElement(box.Box, _extends__default["default"]({
698
+ as: "footer"
699
+ }, props, {
700
+ className: exceptionallySetClassName,
701
+ padding: "large"
702
+ }));
703
+ $[7] = exceptionallySetClassName;
704
+ $[8] = props;
705
+ $[9] = t3;
706
+ } else {
707
+ t3 = $[9];
708
+ }
709
+ let t4;
710
+ if ($[10] !== t2 || $[11] !== t3) {
711
+ t4 = /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, t2, t3);
712
+ $[10] = t2;
713
+ $[11] = t3;
714
+ $[12] = t4;
715
+ } else {
716
+ t4 = $[12];
717
+ }
718
+ return t4;
193
719
  }
720
+
721
+ //
722
+ // ModalActions
723
+ //
724
+
194
725
  /**
195
726
  * A specific version of the ModalFooter, tailored to showing an inline list of actions (buttons).
196
727
  * @see ModalFooter
197
728
  */
198
- function ModalActions(_a) {
199
- var children = _a.children, props = tslib.__rest(_a, ["children"]);
200
- return (React__namespace.createElement(ModalFooter, tslib.__assign({}, props),
201
- React__namespace.createElement(inline.Inline, { align: "right", space: "large" }, children)));
729
+ function ModalActions(t0) {
730
+ const $ = reactCompilerRuntime.c(8);
731
+ let children;
732
+ let props;
733
+ if ($[0] !== t0) {
734
+ var _t4 = t0;
735
+ ({
736
+ children
737
+ } = _t4);
738
+ props = _objectWithoutProperties__default["default"](_t4, _excluded5);
739
+ $[0] = t0;
740
+ $[1] = children;
741
+ $[2] = props;
742
+ } else {
743
+ children = $[1];
744
+ props = $[2];
745
+ }
746
+ let t1;
747
+ if ($[3] !== children) {
748
+ t1 = /*#__PURE__*/React__namespace.createElement(inline.Inline, {
749
+ align: "right",
750
+ space: "large"
751
+ }, children);
752
+ $[3] = children;
753
+ $[4] = t1;
754
+ } else {
755
+ t1 = $[4];
756
+ }
757
+ let t2;
758
+ if ($[5] !== props || $[6] !== t1) {
759
+ t2 = /*#__PURE__*/React__namespace.createElement(ModalFooter, props, t1);
760
+ $[5] = props;
761
+ $[6] = t1;
762
+ $[7] = t2;
763
+ } else {
764
+ t2 = $[7];
765
+ }
766
+ return t2;
202
767
  }
203
768
 
204
769
  exports.Modal = Modal;