@contentful/f36-modal 4.17.0 → 4.18.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.
package/dist/main.js DELETED
@@ -1,440 +0,0 @@
1
- var $a6cQm$react = require("react");
2
- var $a6cQm$reactmodal = require("react-modal");
3
- var $a6cQm$contentfulf36core = require("@contentful/f36-core");
4
- var $a6cQm$emotion = require("emotion");
5
- var $a6cQm$contentfulf36icons = require("@contentful/f36-icons");
6
- var $a6cQm$contentfulf36button = require("@contentful/f36-button");
7
- var $a6cQm$contentfulf36typography = require("@contentful/f36-typography");
8
- var $a6cQm$contentfulf36tokens = require("@contentful/f36-tokens");
9
- var $a6cQm$reactdom = require("react-dom");
10
-
11
- function $parcel$export(e, n, v, s) {
12
- Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
13
- }
14
- function $parcel$interopDefault(a) {
15
- return a && a.__esModule ? a.default : a;
16
- }
17
-
18
- $parcel$export(module.exports, "Modal", () => $2132db66f9439432$export$2b77a92f1a5ad772);
19
- $parcel$export(module.exports, "ModalConfirm", () => $657ddd6e4548962f$export$427af6990c8ff682);
20
- $parcel$export(module.exports, "ModalContent", () => $66391c55bbcf9065$export$6da19a24bf249f17);
21
- $parcel$export(module.exports, "ModalControls", () => $8b06e393320a8e77$export$c63fb08199be8e0e);
22
- $parcel$export(module.exports, "ModalHeader", () => $2679bd8c144d3995$export$f50a68e3694789ee);
23
- $parcel$export(module.exports, "ModalLauncher", () => $f6dfceab072669eb$export$e21b828b42c54a37);
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
- function $2e9361382cc113aa$export$4bef00d568400c9b() {
36
- return {
37
- root: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
38
- position: "relative",
39
- padding: `${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingM} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingM} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingM} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingL}`,
40
- borderRadius: `${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).borderRadiusMedium} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).borderRadiusMedium} 0 0`,
41
- borderBottom: `1px solid ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).gray300}`
42
- }),
43
- buttonContainer: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
44
- position: "relative",
45
- width: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacing2Xl,
46
- height: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingL,
47
- button: {
48
- position: "absolute",
49
- top: `calc(-1 * ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacing2Xs})`,
50
- right: 0
51
- }
52
- })
53
- };
54
- }
55
-
56
-
57
- const $2679bd8c144d3995$export$f50a68e3694789ee = ({ onClose: onClose , title: title , testId: testId = "cf-ui-modal-header" , className: className , ...otherProps })=>{
58
- const styles = (0, $2e9361382cc113aa$export$4bef00d568400c9b)();
59
- return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36core.Flex), {
60
- ...otherProps,
61
- className: (0, $a6cQm$emotion.cx)(styles.root, className),
62
- testId: testId,
63
- alignItems: "center",
64
- justifyContent: "space-between"
65
- }, /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36typography.Subheading), {
66
- as: "h2",
67
- isTruncated: true,
68
- marginBottom: "none"
69
- }, title), onClose && /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36core.Flex), {
70
- alignItems: "center",
71
- className: styles.buttonContainer
72
- }, /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36button.Button), {
73
- variant: "transparent",
74
- "aria-label": "Close",
75
- startIcon: /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36icons.CloseIcon), {
76
- size: "small"
77
- }),
78
- onClick: ()=>{
79
- onClose();
80
- },
81
- size: "small"
82
- })));
83
- };
84
- $2679bd8c144d3995$export$f50a68e3694789ee.displayName = "ModalHeader";
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
- function $32e971b34c262557$export$5168abbf3ad664a0() {
93
- return {
94
- root: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
95
- padding: `${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingM} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacingL}`,
96
- color: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).gray700,
97
- fontSize: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).fontSizeM,
98
- fontFamily: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).fontStackPrimary,
99
- lineHeight: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).lineHeightM,
100
- overflowY: "auto",
101
- overflowX: "auto",
102
- boxSizing: "border-box"
103
- })
104
- };
105
- }
106
-
107
-
108
- const $66391c55bbcf9065$export$6da19a24bf249f17 = ({ testId: testId = "cf-ui-modal-content" , className: className , children: children , ...otherProps })=>{
109
- const styles = (0, $32e971b34c262557$export$5168abbf3ad664a0)();
110
- return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36core.Box), {
111
- ...otherProps,
112
- as: "div",
113
- className: (0, $a6cQm$emotion.cx)(styles.root, className),
114
- testId: testId
115
- }, children);
116
- };
117
- $66391c55bbcf9065$export$6da19a24bf249f17.displayName = "ModalContent";
118
-
119
-
120
-
121
-
122
-
123
- function $a1d799ea27882387$export$9af97f4b0b4c597a(props) {
124
- const modal = (0, $a6cQm$emotion.cx)(/*#__PURE__*/ (0, $a6cQm$emotion.css)({
125
- margin: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).spacing2Xl,
126
- backgroundColor: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).colorWhite,
127
- borderRadius: props.size === "zen" ? 0 : (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).borderRadiusMedium,
128
- boxShadow: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).boxShadowHeavy,
129
- maxHeight: `calc(100vh - 1rem * (100 / ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).fontBaseDefault}))`,
130
- maxWidth: `calc(100vw - 1rem * (100 / ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).fontBaseDefault}))`,
131
- overflow: "hidden",
132
- display: "flex",
133
- flexDirection: "column"
134
- }), props.allowHeightOverflow ? /*#__PURE__*/ (0, $a6cQm$emotion.css)({
135
- name: "1evlo53",
136
- styles: "overflow:auto;max-height:none;"
137
- }) : null, props.size === "zen" ? /*#__PURE__*/ (0, $a6cQm$emotion.css)({
138
- name: "11c88st",
139
- styles: "max-width:none;max-height:none;margin:0;height:100%;width:100%;"
140
- }) : null, props.className);
141
- return {
142
- portal: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
143
- name: "13o7eu2",
144
- styles: "display:block;"
145
- }),
146
- base: {
147
- root: (0, $a6cQm$emotion.cx)(/*#__PURE__*/ (0, $a6cQm$emotion.css)({
148
- zIndex: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).zIndexModalContent,
149
- position: "relative",
150
- padding: 0,
151
- display: "inline-block",
152
- margin: "0 auto",
153
- textAlign: "left",
154
- outline: "none",
155
- transform: props.size === "zen" ? "scale(1)" : "scale(0.85)",
156
- transition: `transform ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).transitionDurationDefault} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).transitionEasingDefault}`
157
- }), props.size === "zen" ? /*#__PURE__*/ (0, $a6cQm$emotion.css)({
158
- name: "uwwqev",
159
- styles: "width:100%;height:100%;"
160
- }) : null),
161
- afterOpen: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
162
- name: "plgkgv",
163
- styles: "transform:scale(1) !important;"
164
- }),
165
- beforeClose: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
166
- transform: props.size === "zen" ? "scale(1)" : "scale(0.85)"
167
- })
168
- },
169
- modalOverlay: {
170
- root: (0, $a6cQm$emotion.cx)(/*#__PURE__*/ (0, $a6cQm$emotion.css)({
171
- display: "flex",
172
- alignItems: "baseline",
173
- flexWrap: "wrap",
174
- top: 0,
175
- right: 0,
176
- bottom: 0,
177
- left: 0,
178
- zIndex: (0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).zIndexModal,
179
- opacity: 0,
180
- transition: `opacity ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).transitionDurationDefault} ${(0, ($parcel$interopDefault($a6cQm$contentfulf36tokens))).transitionEasingDefault}`,
181
- position: "fixed",
182
- overflowY: "auto",
183
- backgroundColor: "rgba(12, 20, 28, 0.74902)",
184
- textAlign: "center"
185
- }), props.position === "center" ? /*#__PURE__*/ (0, $a6cQm$emotion.css)({
186
- name: "1qe4tyl",
187
- styles: "align-items:center;justify-content:center;"
188
- }) : null, props.overlayClassName),
189
- afterOpen: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
190
- name: "whh5e5",
191
- styles: "opacity:1;"
192
- }),
193
- beforeClose: /*#__PURE__*/ (0, $a6cQm$emotion.css)({
194
- name: "q7lffx",
195
- styles: "opacity:0;"
196
- })
197
- },
198
- modal: modal
199
- };
200
- }
201
-
202
-
203
- const $854b6d713fe70fc9$var$ModalSizesMapper = {
204
- medium: "520px",
205
- small: "400px",
206
- large: "700px",
207
- fullWidth: "100vw",
208
- zen: "100vw"
209
- };
210
- function $854b6d713fe70fc9$var$focusFirstWithinNode(node) {
211
- if (node && node.querySelectorAll) {
212
- const elements = node.querySelectorAll("input, button");
213
- if (elements.length > 0) {
214
- const firstElement = elements[0]; // @ts-expect-error focus might be missing
215
- if (typeof firstElement.focus === "function") // @ts-expect-error focus might be missing
216
- firstElement.focus();
217
- }
218
- }
219
- }
220
- const $854b6d713fe70fc9$export$2b77a92f1a5ad772 = ({ allowHeightOverflow: allowHeightOverflow = false , position: position = "center" , shouldCloseOnEscapePress: shouldCloseOnEscapePress = true , shouldCloseOnOverlayClick: shouldCloseOnOverlayClick = true , size: size = "medium" , testId: testId = "cf-ui-modal" , topOffset: topOffset = "50px" , aria: aria , ...otherProps })=>{
221
- var ref2, ref1;
222
- const contentRef = $a6cQm$react.useRef(null);
223
- const props = {
224
- ...otherProps,
225
- allowHeightOverflow: allowHeightOverflow,
226
- position: position,
227
- shouldCloseOnEscapePress: shouldCloseOnEscapePress,
228
- shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
229
- size: size,
230
- testId: testId,
231
- topOffset: topOffset
232
- };
233
- const styles = (0, $a1d799ea27882387$export$9af97f4b0b4c597a)({
234
- position: position,
235
- size: size,
236
- allowHeightOverflow: allowHeightOverflow,
237
- className: otherProps.className,
238
- overlayClassName: (ref2 = otherProps.overlayProps) === null || ref2 === void 0 ? void 0 : ref2.className
239
- });
240
- $a6cQm$react.useEffect(()=>{
241
- if (props.isShown) setTimeout(()=>{
242
- if (props.initialFocusRef && props.initialFocusRef.current) {
243
- if (props.initialFocusRef.current.focus) props.initialFocusRef.current.focus();
244
- } else if (contentRef.current) $854b6d713fe70fc9$var$focusFirstWithinNode(contentRef.current);
245
- }, 100);
246
- }, [
247
- props.isShown,
248
- props.initialFocusRef
249
- ]);
250
- const renderDefault = ()=>{
251
- return /*#__PURE__*/ $a6cQm$react.createElement($a6cQm$react.Fragment, null, otherProps.title && /*#__PURE__*/ $a6cQm$react.createElement((0, $2679bd8c144d3995$export$f50a68e3694789ee), {
252
- title: otherProps.title,
253
- onClose: props.onClose,
254
- ...otherProps.modalHeaderProps
255
- }), /*#__PURE__*/ $a6cQm$react.createElement((0, $66391c55bbcf9065$export$6da19a24bf249f17), otherProps.modalContentProps, otherProps.children));
256
- };
257
- return /*#__PURE__*/ $a6cQm$react.createElement((0, ($parcel$interopDefault($a6cQm$reactmodal))), {
258
- ariaHideApp: false,
259
- aria: aria,
260
- onRequestClose: props.onClose,
261
- isOpen: otherProps.isShown,
262
- onAfterOpen: props.onAfterOpen,
263
- shouldCloseOnEsc: shouldCloseOnEscapePress,
264
- shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
265
- shouldFocusAfterRender: true,
266
- shouldReturnFocusAfterClose: true,
267
- portalClassName: styles.portal,
268
- style: {
269
- content: {
270
- top: position === "center" ? 0 : topOffset
271
- },
272
- overlay: (ref1 = otherProps.overlayProps) === null || ref1 === void 0 ? void 0 : ref1.style
273
- },
274
- className: {
275
- base: styles.base.root,
276
- afterOpen: styles.base.afterOpen,
277
- beforeClose: styles.base.beforeClose
278
- },
279
- overlayClassName: {
280
- base: styles.modalOverlay.root,
281
- afterOpen: styles.modalOverlay.afterOpen,
282
- beforeClose: styles.modalOverlay.beforeClose
283
- },
284
- closeTimeoutMS: 200,
285
- contentRef: (ref)=>{
286
- contentRef.current = ref;
287
- }
288
- }, /*#__PURE__*/ $a6cQm$react.createElement((0, $a6cQm$contentfulf36core.Box), {
289
- testId: testId,
290
- style: {
291
- width: $854b6d713fe70fc9$var$ModalSizesMapper[size] || size
292
- },
293
- className: styles.modal,
294
- "data-modal-root": true
295
- }, typeof otherProps.children === "function" ? otherProps.children(props) : renderDefault()));
296
- };
297
- $854b6d713fe70fc9$export$2b77a92f1a5ad772.displayName = "Modal";
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
- const $8b06e393320a8e77$export$c63fb08199be8e0e = ({ testId: testId = "cf-ui-modal-controls" , className: className , children: children , ...otherProps })=>{
306
- return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36core.Flex), {
307
- ...otherProps,
308
- className: className,
309
- testId: testId,
310
- flexDirection: "row",
311
- justifyContent: "flex-end",
312
- margin: "spacingL",
313
- marginTop: "none"
314
- }, /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36button.ButtonGroup), {
315
- variant: "spaced",
316
- spacing: "spacingS"
317
- }, children));
318
- };
319
- $8b06e393320a8e77$export$c63fb08199be8e0e.displayName = "ModalControls";
320
-
321
-
322
- const $2132db66f9439432$export$2b77a92f1a5ad772 = (0, $854b6d713fe70fc9$export$2b77a92f1a5ad772);
323
- $2132db66f9439432$export$2b77a92f1a5ad772.Content = (0, $66391c55bbcf9065$export$6da19a24bf249f17);
324
- $2132db66f9439432$export$2b77a92f1a5ad772.Header = (0, $2679bd8c144d3995$export$f50a68e3694789ee);
325
- $2132db66f9439432$export$2b77a92f1a5ad772.Controls = (0, $8b06e393320a8e77$export$c63fb08199be8e0e);
326
-
327
-
328
-
329
-
330
-
331
- const $657ddd6e4548962f$export$427af6990c8ff682 = ({ allowHeightOverflow: allowHeightOverflow = false , cancelLabel: cancelLabel = "Cancel" , cancelTestId: cancelTestId = "cf-ui-modal-confirm-cancel-button" , children: children , confirmLabel: confirmLabel = "Confirm" , confirmTestId: confirmTestId = "cf-ui-modal-confirm-confirm-button" , intent: intent = "positive" , isConfirmDisabled: isConfirmDisabled = false , isConfirmLoading: isConfirmLoading = false , isShown: isShown , modalContentProps: modalContentProps , modalControlsProps: modalControlsProps , modalHeaderProps: modalHeaderProps , onCancel: onCancel , onConfirm: onConfirm , shouldCloseOnEscapePress: shouldCloseOnEscapePress = true , shouldCloseOnOverlayClick: shouldCloseOnOverlayClick = true , size: size = "medium" , testId: testId = "cf-ui-modal-confirm" , title: title = "Are you sure?" , initialFocusRef: initialFocusRef })=>{
332
- const cancelRef = (0, ($parcel$interopDefault($a6cQm$react))).useRef(null);
333
- const confirmButton = confirmLabel ? /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36button.Button), {
334
- testId: confirmTestId,
335
- isDisabled: isConfirmDisabled,
336
- isLoading: isConfirmLoading,
337
- variant: intent,
338
- size: "small",
339
- onClick: ()=>onConfirm()
340
- }, confirmLabel) : null;
341
- const cancelButton = cancelLabel ? /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $a6cQm$contentfulf36button.Button), {
342
- testId: cancelTestId,
343
- variant: "secondary",
344
- onClick: onCancel,
345
- size: "small",
346
- ref: initialFocusRef || cancelRef
347
- }, cancelLabel) : null;
348
- return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $2132db66f9439432$export$2b77a92f1a5ad772), {
349
- testId: testId,
350
- isShown: isShown,
351
- onClose: onCancel,
352
- size: size,
353
- shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
354
- shouldCloseOnEscapePress: shouldCloseOnEscapePress,
355
- allowHeightOverflow: allowHeightOverflow,
356
- initialFocusRef: cancelRef
357
- }, ()=>{
358
- return /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, ($parcel$interopDefault($a6cQm$react))).Fragment, null, /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $2132db66f9439432$export$2b77a92f1a5ad772).Header, {
359
- title: title || "",
360
- ...modalHeaderProps
361
- }), /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $2132db66f9439432$export$2b77a92f1a5ad772).Content, modalContentProps, children), /*#__PURE__*/ (0, ($parcel$interopDefault($a6cQm$react))).createElement((0, $2132db66f9439432$export$2b77a92f1a5ad772).Controls, modalControlsProps, cancelButton, confirmButton));
362
- });
363
- };
364
- $657ddd6e4548962f$export$427af6990c8ff682.displayName = "ModalConfirm";
365
-
366
-
367
-
368
-
369
-
370
-
371
- const $f6dfceab072669eb$var$getRoot = (rootElId)=>{
372
- // Reuse the container if we find it
373
- let rootDom = document.getElementById(rootElId);
374
- if (rootDom !== null) return rootDom;
375
- // Otherwise create it
376
- rootDom = document.createElement("div");
377
- rootDom.setAttribute("id", rootElId);
378
- document.body.appendChild(rootDom);
379
- return rootDom;
380
- };
381
- const $f6dfceab072669eb$var$openModalsIds = new Map();
382
- function $f6dfceab072669eb$var$closeAll() {
383
- $f6dfceab072669eb$var$openModalsIds.forEach(async ({ render: render , currentConfig: currentConfig , delay: delay }, rootElId)=>{
384
- const config = {
385
- ...currentConfig,
386
- isShown: false
387
- };
388
- render(config);
389
- await new Promise((resolveDelay)=>setTimeout(resolveDelay, delay));
390
- (0, ($parcel$interopDefault($a6cQm$reactdom))).unmountComponentAtNode($f6dfceab072669eb$var$getRoot(rootElId));
391
- $f6dfceab072669eb$var$openModalsIds.delete(rootElId);
392
- });
393
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
394
- function $f6dfceab072669eb$var$open(componentRenderer, options = {}) {
395
- options = {
396
- delay: 300,
397
- ...options
398
- }; // Allow components to specify if they wish to reuse the modal container
399
- const rootElId = `modals-root${options.modalId || Date.now()}`;
400
- const rootDom = $f6dfceab072669eb$var$getRoot(rootElId);
401
- return new Promise((resolve)=>{
402
- let currentConfig = {
403
- onClose: onClose1,
404
- isShown: true
405
- };
406
- function render({ onClose: onClose , isShown: isShown }) {
407
- (0, ($parcel$interopDefault($a6cQm$reactdom))).render(componentRenderer({
408
- onClose: onClose,
409
- isShown: isShown
410
- }), rootDom);
411
- }
412
- async function onClose1(arg) {
413
- currentConfig = {
414
- ...currentConfig,
415
- isShown: false
416
- };
417
- render(currentConfig);
418
- await new Promise((resolveDelay)=>setTimeout(resolveDelay, options.delay));
419
- (0, ($parcel$interopDefault($a6cQm$reactdom))).unmountComponentAtNode(rootDom);
420
- rootDom.remove();
421
- $f6dfceab072669eb$var$openModalsIds.delete(rootElId);
422
- resolve(arg);
423
- }
424
- render(currentConfig);
425
- $f6dfceab072669eb$var$openModalsIds.set(rootElId, {
426
- render: render,
427
- currentConfig: currentConfig,
428
- delay: options.delay
429
- });
430
- });
431
- }
432
- const $f6dfceab072669eb$export$e21b828b42c54a37 = {
433
- open: $f6dfceab072669eb$var$open,
434
- closeAll: $f6dfceab072669eb$var$closeAll
435
- };
436
-
437
-
438
-
439
-
440
- //# sourceMappingURL=main.js.map
package/dist/main.js.map DELETED
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/components/modal/src/index.ts","packages/components/modal/src/CompoundModal.tsx","packages/components/modal/src/Modal.tsx","packages/components/modal/src/ModalHeader/ModalHeader.tsx","packages/components/modal/src/ModalHeader/ModalHeader.styles.ts","packages/components/modal/src/ModalContent/ModalContent.tsx","packages/components/modal/src/ModalContent/ModalContent.styles.ts","packages/components/modal/src/Modal.styles.ts","packages/components/modal/src/ModalControls/ModalControls.tsx","packages/components/modal/src/ModalConfirm/ModalConfirm.tsx","packages/components/modal/src/ModalLauncher/ModalLauncher.tsx"],"sourcesContent":["export { Modal } from './CompoundModal';\nexport type { ModalProps } from './Modal';\nexport { ModalConfirm } from './ModalConfirm/ModalConfirm';\nexport type { ModalConfirmProps } from './ModalConfirm/ModalConfirm';\nexport { ModalContent } from './ModalContent/ModalContent';\nexport type { ModalContentProps } from './ModalContent/ModalContent';\nexport { ModalControls } from './ModalControls/ModalControls';\nexport type { ModalControlsProps } from './ModalControls/ModalControls';\nexport { ModalHeader } from './ModalHeader/ModalHeader';\nexport type { ModalHeaderProps } from './ModalHeader/ModalHeader';\nexport { ModalLauncher } from './ModalLauncher/ModalLauncher';\n","import { Modal as OriginalModal } from './Modal';\nimport { ModalContent } from './ModalContent/ModalContent';\nimport { ModalHeader } from './ModalHeader/ModalHeader';\nimport { ModalControls } from './ModalControls/ModalControls';\n\ntype CompoundModal = typeof OriginalModal & {\n Content: typeof ModalContent;\n Header: typeof ModalHeader;\n Controls: typeof ModalControls;\n};\n\nexport const Modal = OriginalModal as CompoundModal;\nModal.Content = ModalContent;\nModal.Header = ModalHeader;\nModal.Controls = ModalControls;\n","import * as React from 'react';\nimport ReactModal from 'react-modal';\n\nimport { Box, type CommonProps, type ExpandProps } from '@contentful/f36-core';\n\nimport { ModalHeader, ModalHeaderProps } from './ModalHeader/ModalHeader';\nimport { ModalContent, ModalContentProps } from './ModalContent/ModalContent';\nimport { getModalStyles } from './Modal.styles';\nimport type { ModalSizeType, ModalPositionType } from './types';\n\nconst ModalSizesMapper: { [key in ModalSizeType]: string } = {\n medium: '520px',\n small: '400px',\n large: '700px',\n fullWidth: '100vw',\n zen: '100vw',\n};\n\nexport interface ModalProps extends CommonProps {\n /**\n * When true, the dialog is shown.\n */\n isShown: boolean;\n\n /**\n * Function that will be run when the modal is requested to be closed, prior to actually closing.\n */\n onClose: ReactModal.Props['onRequestClose'];\n\n /**\n * Function that will be run after the modal has opened.\n */\n onAfterOpen?: ReactModal.Props['onAfterOpen'];\n\n /**\n * Additional aria attributes\n */\n aria?: ReactModal.Props['aria'];\n\n /**\n * Boolean indicating if clicking the overlay should close the overlay.\n * @default true\n */\n shouldCloseOnOverlayClick?: boolean;\n /**\n * Boolean indicating if pressing the esc key should close the overlay.\n * @default true\n */\n shouldCloseOnEscapePress?: boolean;\n /**\n * Indicating if modal is centered or linked to the top\n * @default center\n */\n position?: ModalPositionType;\n /**\n * Top offset if position is 'top'\n * @default 50px\n */\n topOffset?: number | string;\n /**\n * Modal title that is used in header\n */\n title?: string;\n /**\n * Size of the modal window\n * @default medium\n */\n size?: ModalSizeType | string | number;\n /**\n * Are modals higher than viewport allowed\n * @default false\n */\n allowHeightOverflow?: boolean;\n\n /**\n * Optional props to override overlay behaviour\n */\n overlayProps?: Pick<CommonProps, 'className' | 'style'>;\n\n /**\n * Optional props to override ModalHeader behaviour\n */\n modalHeaderProps?: Partial<ModalHeaderProps>;\n\n /**\n * Optional props to override ModalContent behaviour\n */\n modalContentProps?: Partial<ModalContentProps>;\n\n /**\n * Optional property to set initial focus\n */\n initialFocusRef?: React.RefObject<HTMLElement>;\n\n children: React.ReactNode | RenderModal;\n}\n\ntype RenderModal = (modalProps: ModalProps) => React.ReactNode;\n\nfunction focusFirstWithinNode(node: HTMLElement) {\n if (node && node.querySelectorAll) {\n const elements = node.querySelectorAll('input, button');\n if (elements.length > 0) {\n const firstElement = elements[0];\n // @ts-expect-error focus might be missing\n if (typeof firstElement.focus === 'function') {\n // @ts-expect-error focus might be missing\n firstElement.focus();\n }\n }\n }\n}\n\nexport const Modal = ({\n allowHeightOverflow = false,\n position = 'center',\n shouldCloseOnEscapePress = true,\n shouldCloseOnOverlayClick = true,\n size = 'medium',\n testId = 'cf-ui-modal',\n topOffset = '50px',\n aria,\n ...otherProps\n}: ExpandProps<ModalProps>) => {\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n const props = {\n ...otherProps,\n allowHeightOverflow,\n position,\n shouldCloseOnEscapePress,\n shouldCloseOnOverlayClick,\n size,\n testId,\n topOffset,\n };\n\n const styles = getModalStyles({\n position,\n size,\n allowHeightOverflow,\n className: otherProps.className,\n overlayClassName: otherProps.overlayProps?.className,\n });\n\n React.useEffect(() => {\n if (props.isShown) {\n setTimeout(() => {\n if (props.initialFocusRef && props.initialFocusRef.current) {\n if (props.initialFocusRef.current.focus) {\n props.initialFocusRef.current.focus();\n }\n } else if (contentRef.current) {\n focusFirstWithinNode(contentRef.current);\n }\n }, 100);\n }\n }, [props.isShown, props.initialFocusRef]);\n\n const renderDefault = () => {\n return (\n <>\n {otherProps.title && (\n <ModalHeader\n title={otherProps.title}\n onClose={props.onClose}\n {...otherProps.modalHeaderProps}\n />\n )}\n <ModalContent {...otherProps.modalContentProps}>\n {otherProps.children}\n </ModalContent>\n </>\n );\n };\n\n return (\n <ReactModal\n ariaHideApp={false}\n aria={aria}\n onRequestClose={props.onClose}\n isOpen={otherProps.isShown}\n onAfterOpen={props.onAfterOpen}\n shouldCloseOnEsc={shouldCloseOnEscapePress}\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldFocusAfterRender\n shouldReturnFocusAfterClose\n portalClassName={styles.portal}\n style={{\n content: {\n top: position === 'center' ? 0 : topOffset,\n },\n overlay: otherProps.overlayProps?.style,\n }}\n className={{\n base: styles.base.root,\n afterOpen: styles.base.afterOpen,\n beforeClose: styles.base.beforeClose,\n }}\n overlayClassName={{\n base: styles.modalOverlay.root,\n afterOpen: styles.modalOverlay.afterOpen,\n beforeClose: styles.modalOverlay.beforeClose,\n }}\n closeTimeoutMS={200}\n contentRef={(ref) => {\n contentRef.current = ref;\n }}\n >\n <Box\n testId={testId}\n style={{\n width: ModalSizesMapper[size] || size,\n }}\n className={styles.modal}\n data-modal-root\n >\n {typeof otherProps.children === 'function'\n ? otherProps.children(props)\n : renderDefault()}\n </Box>\n </ReactModal>\n );\n};\n\nModal.displayName = 'Modal';\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { CloseIcon } from '@contentful/f36-icons';\nimport {\n Flex,\n type PropsWithHTMLElement,\n type CommonProps,\n} from '@contentful/f36-core';\nimport { Button } from '@contentful/f36-button';\nimport { Subheading } from '@contentful/f36-typography';\n\nimport { getModalHeaderStyles } from './ModalHeader.styles';\n\ninterface ModalHeaderInternalProps extends CommonProps {\n title: string;\n onClose?: Function;\n}\n\nexport type ModalHeaderProps = PropsWithHTMLElement<\n ModalHeaderInternalProps,\n 'div'\n>;\n\nexport const ModalHeader = ({\n onClose,\n title,\n testId = 'cf-ui-modal-header',\n className,\n ...otherProps\n}: ModalHeaderProps): React.ReactElement => {\n const styles = getModalHeaderStyles();\n\n return (\n <Flex\n {...otherProps}\n className={cx(styles.root, className)}\n testId={testId}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <Subheading as=\"h2\" isTruncated marginBottom=\"none\">\n {title}\n </Subheading>\n {onClose && (\n <Flex alignItems=\"center\" className={styles.buttonContainer}>\n <Button\n variant=\"transparent\"\n aria-label=\"Close\"\n startIcon={<CloseIcon size=\"small\" />}\n onClick={() => {\n onClose();\n }}\n size=\"small\"\n />\n </Flex>\n )}\n </Flex>\n );\n};\n\nModalHeader.displayName = 'ModalHeader';\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nexport function getModalHeaderStyles() {\n return {\n root: css({\n position: 'relative',\n padding: `${tokens.spacingM} ${tokens.spacingM} ${tokens.spacingM} ${tokens.spacingL}`,\n borderRadius: `${tokens.borderRadiusMedium} ${tokens.borderRadiusMedium} 0 0`,\n borderBottom: `1px solid ${tokens.gray300}`,\n }),\n buttonContainer: css({\n position: 'relative',\n width: tokens.spacing2Xl,\n height: tokens.spacingL,\n button: {\n position: 'absolute',\n top: `calc(-1 * ${tokens.spacing2Xs})`,\n right: 0,\n },\n }),\n };\n}\n","import React from 'react';\nimport { cx } from 'emotion';\nimport {\n Box,\n type PropsWithHTMLElement,\n type CommonProps,\n} from '@contentful/f36-core';\nimport { getModalContentStyles } from './ModalContent.styles';\n\ninterface ModalContentInternalProps extends CommonProps {\n children: React.ReactNode;\n}\n\nexport type ModalContentProps = PropsWithHTMLElement<\n ModalContentInternalProps,\n 'div'\n>;\n\nexport const ModalContent = ({\n testId = 'cf-ui-modal-content',\n className,\n children,\n ...otherProps\n}: ModalContentProps) => {\n const styles = getModalContentStyles();\n return (\n <Box\n {...otherProps}\n as=\"div\"\n className={cx(styles.root, className)}\n testId={testId}\n >\n {children}\n </Box>\n );\n};\n\nModalContent.displayName = 'ModalContent';\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport function getModalContentStyles() {\n return {\n root: css({\n padding: `${tokens.spacingM} ${tokens.spacingL}`,\n color: tokens.gray700,\n fontSize: tokens.fontSizeM,\n fontFamily: tokens.fontStackPrimary,\n lineHeight: tokens.lineHeightM,\n overflowY: 'auto',\n overflowX: 'auto',\n boxSizing: 'border-box',\n }),\n };\n}\n","import tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\n\nimport type { ModalProps } from './Modal';\n\nexport function getModalStyles(props: {\n size: ModalProps['size'];\n position: ModalProps['position'];\n allowHeightOverflow?: boolean;\n className?: string;\n overlayClassName?: string;\n}) {\n const modal = cx(\n css({\n margin: tokens.spacing2Xl,\n backgroundColor: tokens.colorWhite,\n borderRadius: props.size === 'zen' ? 0 : tokens.borderRadiusMedium,\n boxShadow: tokens.boxShadowHeavy,\n maxHeight: `calc(100vh - 1rem * (100 / ${tokens.fontBaseDefault}))`,\n maxWidth: `calc(100vw - 1rem * (100 / ${tokens.fontBaseDefault}))`,\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n }),\n props.allowHeightOverflow\n ? css({\n overflow: 'auto',\n maxHeight: 'none',\n })\n : null,\n props.size === 'zen'\n ? css({\n maxWidth: 'none',\n maxHeight: 'none',\n margin: 0,\n height: '100%',\n width: '100%',\n })\n : null,\n props.className,\n );\n\n return {\n portal: css({\n display: 'block',\n }),\n base: {\n root: cx(\n css({\n zIndex: tokens.zIndexModalContent,\n position: 'relative',\n padding: 0,\n display: 'inline-block',\n margin: '0 auto',\n textAlign: 'left',\n outline: 'none',\n transform: props.size === 'zen' ? 'scale(1)' : 'scale(0.85)',\n transition: `transform ${tokens.transitionDurationDefault} ${tokens.transitionEasingDefault}`,\n }),\n props.size === 'zen'\n ? css({\n width: '100%',\n height: '100%',\n })\n : null,\n ),\n afterOpen: css({\n transform: 'scale(1) !important',\n }),\n beforeClose: css({\n transform: props.size === 'zen' ? 'scale(1)' : 'scale(0.85)',\n }),\n },\n modalOverlay: {\n root: cx(\n css({\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: tokens.zIndexModal,\n opacity: 0,\n transition: `opacity ${tokens.transitionDurationDefault} ${tokens.transitionEasingDefault}`,\n position: 'fixed',\n overflowY: 'auto',\n backgroundColor: 'rgba(12, 20, 28, 0.74902)',\n textAlign: 'center',\n }),\n props.position === 'center'\n ? css({\n alignItems: 'center',\n justifyContent: 'center',\n })\n : null,\n props.overlayClassName,\n ),\n afterOpen: css({\n opacity: 1,\n }),\n beforeClose: css({\n opacity: 0,\n }),\n },\n modal,\n };\n}\n","import React from 'react';\n\nimport {\n Flex,\n type PropsWithHTMLElement,\n type CommonProps,\n} from '@contentful/f36-core';\nimport { ButtonGroup } from '@contentful/f36-button';\n\ninterface ModalControlsInternalProps extends CommonProps {\n children: React.ReactElement[] | React.ReactElement;\n}\n\nexport type ModalControlsProps = PropsWithHTMLElement<\n ModalControlsInternalProps,\n 'div'\n>;\n\nexport const ModalControls = ({\n testId = 'cf-ui-modal-controls',\n className,\n children,\n ...otherProps\n}: ModalControlsProps): React.ReactElement => {\n return (\n <Flex\n {...otherProps}\n className={className}\n testId={testId}\n flexDirection=\"row\"\n justifyContent=\"flex-end\"\n margin=\"spacingL\"\n marginTop=\"none\"\n >\n <ButtonGroup variant=\"spaced\" spacing=\"spacingS\">\n {children}\n </ButtonGroup>\n </Flex>\n );\n};\n\nModalControls.displayName = 'ModalControls';\n","import React from 'react';\n\nimport { Modal } from '../CompoundModal';\nimport type { ModalProps } from '../Modal';\nimport type { ModalHeaderProps } from '../ModalHeader/ModalHeader';\nimport type { ModalContentProps } from '../ModalContent/ModalContent';\nimport type { ModalControlsProps } from '../ModalControls/ModalControls';\nimport { Button } from '@contentful/f36-button';\n\nexport interface ModalConfirmProps {\n /**\n * When true, the dialog is shown.\n */\n isShown: boolean;\n /**\n * Function that will be called when the confirm button is clicked. This does not close the ModalConfirm.\n */\n onConfirm(): void;\n /**\n * Function that will be called when the cancel button is clicked. This does not close the ModalConfirm.\n */\n onCancel: ModalProps['onClose'];\n /**\n Modal title that is used in header\n */\n title?: string;\n /**\n * Label of the confirm button\n */\n confirmLabel?: string | false;\n /**\n * Label of the cancel button\n */\n cancelLabel?: string | false;\n /**\n * The intent of the ModalConfirm. Used for the Button.\n */\n intent?: 'primary' | 'positive' | 'negative';\n /**\n * Size of the modal window\n */\n size?: ModalProps['size'];\n /**\n * Boolean indicating if clicking the overlay should close the overlay.\n */\n shouldCloseOnOverlayClick?: boolean;\n /**\n * Boolean indicating if pressing the esc key should close the overlay.\n */\n shouldCloseOnEscapePress?: boolean;\n /**\n * When true, the confirm button is set to disabled.\n */\n isConfirmDisabled?: boolean;\n /**\n * When true, the confirm button is set to loading.\n */\n isConfirmLoading?: boolean;\n /**\n * Are modals higher than viewport allowed\n */\n allowHeightOverflow?: boolean;\n\n /**\n * Optional props to override ModalHeader behaviour\n */\n modalHeaderProps?: Partial<ModalHeaderProps>;\n\n /**\n * Optional props to override ModalContent behaviour\n */\n modalContentProps?: Partial<ModalContentProps>;\n\n /**\n * Optional props to override ModalControl behaviour\n */\n modalControlsProps?: Partial<ModalControlsProps>;\n\n /**\n * Optional property to set initial focus\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- we don't know the type of element to give initial focus\n initialFocusRef?: React.RefObject<any>;\n\n testId?: string;\n confirmTestId?: string;\n cancelTestId?: string;\n children: React.ReactNode;\n}\n\nexport const ModalConfirm = ({\n allowHeightOverflow = false,\n cancelLabel = 'Cancel',\n cancelTestId = 'cf-ui-modal-confirm-cancel-button',\n children,\n confirmLabel = 'Confirm',\n confirmTestId = 'cf-ui-modal-confirm-confirm-button',\n intent = 'positive',\n isConfirmDisabled = false,\n isConfirmLoading = false,\n isShown,\n modalContentProps,\n modalControlsProps,\n modalHeaderProps,\n onCancel,\n onConfirm,\n shouldCloseOnEscapePress = true,\n shouldCloseOnOverlayClick = true,\n size = 'medium',\n testId = 'cf-ui-modal-confirm',\n title = 'Are you sure?',\n initialFocusRef,\n}: ModalConfirmProps) => {\n const cancelRef = React.useRef(null);\n\n const confirmButton = confirmLabel ? (\n <Button\n testId={confirmTestId}\n isDisabled={isConfirmDisabled}\n isLoading={isConfirmLoading}\n variant={intent}\n size=\"small\"\n onClick={() => onConfirm()}\n >\n {confirmLabel}\n </Button>\n ) : null;\n\n const cancelButton = cancelLabel ? (\n <Button\n testId={cancelTestId}\n variant=\"secondary\"\n onClick={onCancel}\n size=\"small\"\n ref={initialFocusRef || cancelRef}\n >\n {cancelLabel}\n </Button>\n ) : null;\n\n return (\n <Modal\n testId={testId}\n isShown={isShown}\n onClose={onCancel}\n size={size}\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEscapePress={shouldCloseOnEscapePress}\n allowHeightOverflow={allowHeightOverflow}\n initialFocusRef={cancelRef}\n >\n {() => {\n return (\n <React.Fragment>\n <Modal.Header title={title || ''} {...modalHeaderProps} />\n <Modal.Content {...modalContentProps}>{children}</Modal.Content>\n <Modal.Controls {...modalControlsProps}>\n {cancelButton}\n {confirmButton}\n </Modal.Controls>\n </React.Fragment>\n );\n }}\n </Modal>\n );\n};\n\nModalConfirm.displayName = 'ModalConfirm';\n","/* global Promise */\nimport ReactDOM from 'react-dom';\n\n// @todo: change any to unknown\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ModalLauncherComponentRendererProps<T = any> {\n isShown: boolean;\n onClose: (result?: T) => void;\n}\n\ninterface ModalLauncherOpenOptions {\n /**\n * Unique id to be used as identifier for the modal contianer\n */\n modalId?: string;\n /**\n * ms before removing the component from the tree\n * @default 300\n */\n delay?: number;\n}\n\ninterface CloseModalData {\n delay: number;\n render: (args: ModalLauncherComponentRendererProps<any>) => void;\n currentConfig: ModalLauncherComponentRendererProps<any>;\n}\n\nconst getRoot = (rootElId: string): HTMLElement => {\n // Reuse the container if we find it\n let rootDom = document.getElementById(rootElId);\n if (rootDom !== null) {\n return rootDom;\n }\n\n // Otherwise create it\n rootDom = document.createElement('div');\n rootDom.setAttribute('id', rootElId);\n document.body.appendChild(rootDom);\n return rootDom;\n};\n\nconst openModalsIds: Map<string, CloseModalData> = new Map();\nfunction closeAll() {\n openModalsIds.forEach(async ({ render, currentConfig, delay }, rootElId) => {\n const config = { ...currentConfig, isShown: false };\n render(config);\n await new Promise((resolveDelay) => setTimeout(resolveDelay, delay));\n ReactDOM.unmountComponentAtNode(getRoot(rootElId));\n openModalsIds.delete(rootElId);\n });\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction open<T = any>(\n componentRenderer: (\n props: ModalLauncherComponentRendererProps<T>,\n ) => JSX.Element,\n options: ModalLauncherOpenOptions = {},\n): Promise<T> {\n options = { delay: 300, ...options };\n\n // Allow components to specify if they wish to reuse the modal container\n const rootElId = `modals-root${options.modalId || Date.now()}`;\n const rootDom = getRoot(rootElId);\n\n return new Promise((resolve) => {\n let currentConfig = { onClose, isShown: true };\n\n function render({\n onClose,\n isShown,\n }: ModalLauncherComponentRendererProps<T>) {\n ReactDOM.render(componentRenderer({ onClose, isShown }), rootDom);\n }\n\n async function onClose(arg?: T) {\n currentConfig = {\n ...currentConfig,\n isShown: false,\n };\n render(currentConfig);\n await new Promise((resolveDelay) =>\n setTimeout(resolveDelay, options.delay),\n );\n ReactDOM.unmountComponentAtNode(rootDom);\n rootDom.remove();\n openModalsIds.delete(rootElId);\n resolve(arg);\n }\n\n render(currentConfig);\n openModalsIds.set(rootElId, {\n render,\n currentConfig,\n delay: options.delay,\n });\n });\n}\n\nexport const ModalLauncher = {\n open,\n closeAll,\n};\n"],"names":["Modal","ModalProps","ModalConfirm","ModalConfirmProps","ModalContent","ModalContentProps","ModalControls","ModalControlsProps","ModalHeader","ModalHeaderProps","ModalLauncher","OriginalModal","CompoundModal","Content","Header","Controls","React","ReactModal","Box","CommonProps","ExpandProps","getModalStyles","ModalSizeType","ModalPositionType","ModalSizesMapper","medium","small","large","fullWidth","zen","isShown","onClose","Props","onAfterOpen","aria","shouldCloseOnOverlayClick","shouldCloseOnEscapePress","position","topOffset","title","size","allowHeightOverflow","overlayProps","Pick","modalHeaderProps","Partial","modalContentProps","initialFocusRef","RefObject","HTMLElement","children","ReactNode","RenderModal","modalProps","focusFirstWithinNode","node","querySelectorAll","elements","length","firstElement","focus","testId","otherProps","contentRef","useRef","HTMLDivElement","props","styles","className","overlayClassName","useEffect","setTimeout","current","renderDefault","portal","content","top","overlay","style","base","root","afterOpen","beforeClose","modalOverlay","ref","width","modal","displayName","CloseIcon","Flex","PropsWithHTMLElement","Button","Subheading","getModalHeaderStyles","ModalHeaderInternalProps","Function","ReactElement","buttonContainer","tokens","padding","spacingM","spacingL","borderRadius","borderRadiusMedium","borderBottom","gray300","spacing2Xl","height","button","spacing2Xs","right","getModalContentStyles","ModalContentInternalProps","color","gray700","fontSize","fontSizeM","fontFamily","fontStackPrimary","lineHeight","lineHeightM","overflowY","overflowX","boxSizing","margin","backgroundColor","colorWhite","boxShadow","boxShadowHeavy","maxHeight","fontBaseDefault","maxWidth","overflow","display","flexDirection","zIndex","zIndexModalContent","textAlign","outline","transform","transition","transitionDurationDefault","transitionEasingDefault","alignItems","flexWrap","bottom","left","zIndexModal","opacity","ButtonGroup","ModalControlsInternalProps","onConfirm","onCancel","confirmLabel","cancelLabel","intent","isConfirmDisabled","isConfirmLoading","modalControlsProps","confirmTestId","cancelTestId","cancelRef","confirmButton","cancelButton","ReactDOM","ModalLauncherComponentRendererProps","result","T","ModalLauncherOpenOptions","modalId","delay","CloseModalData","render","args","currentConfig","getRoot","rootElId","rootDom","document","getElementById","createElement","setAttribute","body","appendChild","openModalsIds","Map","closeAll","forEach","config","Promise","resolveDelay","unmountComponentAtNode","delete","open","componentRenderer","JSX","Element","options","Date","now","resolve","arg","remove","set"],"version":3,"file":"main.js.map"}