@sps-woodland/modal 8.26.8 → 8.27.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.
- package/lib/index.js +39 -41
- package/lib/index.umd.cjs +1 -1
- package/lib/style.css +1 -1
- package/package.json +7 -7
package/lib/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Metadata as De, cl as ue, combineEventHandlers as Me, I18nContext as mt, useChildTestIdAttrBuilder as pt, selectChildren as ft, modChildren as gt, Icon as bt, contentOf as le } from "@sps-woodland/core";
|
|
2
2
|
import { Button as We } from "@sps-woodland/buttons";
|
|
3
3
|
import * as u from "react";
|
|
4
|
-
import $, { useRef as M, useCallback as
|
|
4
|
+
import $, { useRef as M, useCallback as T, useState as K, useContext as A, useEffect as L, useMemo as q, createContext as vt } from "react";
|
|
5
5
|
import ht from "react-dom";
|
|
6
6
|
import { code as b } from "@spscommerce/utils";
|
|
7
7
|
const w = typeof document < "u" ? $.useLayoutEffect : () => {
|
|
@@ -12,7 +12,7 @@ function H(e) {
|
|
|
12
12
|
t.current = e;
|
|
13
13
|
}, [
|
|
14
14
|
e
|
|
15
|
-
]),
|
|
15
|
+
]), T((...o) => {
|
|
16
16
|
const n = t.current;
|
|
17
17
|
return n == null ? void 0 : n(...o);
|
|
18
18
|
}, []);
|
|
@@ -73,19 +73,19 @@ const Pt = typeof $.useId == "function" ? yt : Mt;
|
|
|
73
73
|
function kt() {
|
|
74
74
|
return !1;
|
|
75
75
|
}
|
|
76
|
-
function
|
|
76
|
+
function Tt() {
|
|
77
77
|
return !0;
|
|
78
78
|
}
|
|
79
|
-
function
|
|
79
|
+
function xt(e) {
|
|
80
80
|
return () => {
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
function Ie() {
|
|
84
|
-
return typeof $.useSyncExternalStore == "function" ? $.useSyncExternalStore(
|
|
84
|
+
return typeof $.useSyncExternalStore == "function" ? $.useSyncExternalStore(xt, kt, Tt) : A(wt);
|
|
85
85
|
}
|
|
86
86
|
let St = !!(typeof window < "u" && window.document && window.document.createElement), F = /* @__PURE__ */ new Map();
|
|
87
87
|
function ze(e) {
|
|
88
|
-
let [t, o] = K(e), n = M(null), r = Pt(t), l =
|
|
88
|
+
let [t, o] = K(e), n = M(null), r = Pt(t), l = T((a) => {
|
|
89
89
|
n.current = a;
|
|
90
90
|
}, []);
|
|
91
91
|
return St && (F.has(r) && !F.get(r).includes(l) ? F.set(r, [
|
|
@@ -114,7 +114,7 @@ function Lt(e, t) {
|
|
|
114
114
|
return n ? (n.forEach((r) => r(e)), e) : t;
|
|
115
115
|
}
|
|
116
116
|
function Ft(e = []) {
|
|
117
|
-
let t = ze(), [o, n] = $t(t), r =
|
|
117
|
+
let t = ze(), [o, n] = $t(t), r = T(() => {
|
|
118
118
|
n(function* () {
|
|
119
119
|
yield t, yield document.getElementById(t) ? t : void 0;
|
|
120
120
|
});
|
|
@@ -301,7 +301,7 @@ function Xt(e, t, o) {
|
|
|
301
301
|
}, [
|
|
302
302
|
a
|
|
303
303
|
]);
|
|
304
|
-
let d = a ? e : n, c =
|
|
304
|
+
let d = a ? e : n, c = T((i, ...s) => {
|
|
305
305
|
let m = (p, ...g) => {
|
|
306
306
|
o && (Object.is(d, p) || o(p, ...g)), a || (d = p);
|
|
307
307
|
};
|
|
@@ -366,7 +366,7 @@ function Qt(e) {
|
|
|
366
366
|
let o = H((n) => {
|
|
367
367
|
e == null || e(n);
|
|
368
368
|
});
|
|
369
|
-
return
|
|
369
|
+
return T((n) => {
|
|
370
370
|
if (n.target instanceof HTMLButtonElement || n.target instanceof HTMLInputElement || n.target instanceof HTMLTextAreaElement || n.target instanceof HTMLSelectElement) {
|
|
371
371
|
t.current.isFocused = !0;
|
|
372
372
|
let r = n.target, l = (a) => {
|
|
@@ -419,7 +419,7 @@ function je(e) {
|
|
|
419
419
|
function Ue() {
|
|
420
420
|
O = !1, me = !0;
|
|
421
421
|
}
|
|
422
|
-
function
|
|
422
|
+
function Te(e) {
|
|
423
423
|
if (typeof window > "u" || V.get(Z(e))) return;
|
|
424
424
|
const t = Z(e), o = E(e);
|
|
425
425
|
let n = t.HTMLElement.prototype.focus;
|
|
@@ -440,8 +440,8 @@ const Ge = (e, t) => {
|
|
|
440
440
|
function to(e) {
|
|
441
441
|
const t = E(e);
|
|
442
442
|
let o;
|
|
443
|
-
return t.readyState !== "loading" ?
|
|
444
|
-
|
|
443
|
+
return t.readyState !== "loading" ? Te(e) : (o = () => {
|
|
444
|
+
Te(e);
|
|
445
445
|
}, t.addEventListener("DOMContentLoaded", o)), () => Ge(e, o);
|
|
446
446
|
}
|
|
447
447
|
typeof document < "u" && to();
|
|
@@ -451,13 +451,13 @@ function oo() {
|
|
|
451
451
|
function no(e) {
|
|
452
452
|
let { isDisabled: t, onBlurWithin: o, onFocusWithin: n, onFocusWithinChange: r } = e, l = M({
|
|
453
453
|
isFocusWithin: !1
|
|
454
|
-
}), a =
|
|
454
|
+
}), a = T((i) => {
|
|
455
455
|
l.current.isFocusWithin && !i.currentTarget.contains(i.relatedTarget) && (l.current.isFocusWithin = !1, o && o(i), r && r(!1));
|
|
456
456
|
}, [
|
|
457
457
|
o,
|
|
458
458
|
r,
|
|
459
459
|
l
|
|
460
|
-
]), d = Qt(a), c =
|
|
460
|
+
]), d = Qt(a), c = T((i) => {
|
|
461
461
|
!l.current.isFocusWithin && document.activeElement === i.target && (n && n(i), r && r(!0), l.current.isFocusWithin = !0, d(i));
|
|
462
462
|
}, [
|
|
463
463
|
n,
|
|
@@ -549,10 +549,10 @@ function lo(e, t) {
|
|
|
549
549
|
function Xe(e, t) {
|
|
550
550
|
return e.nodeName !== "#comment" && ao(e) && lo(e, t) && (!e.parentElement || Xe(e.parentElement, e));
|
|
551
551
|
}
|
|
552
|
-
const
|
|
552
|
+
const xe = /* @__PURE__ */ $.createContext(null), fe = "react-aria-focus-scope-restore";
|
|
553
553
|
let v = null;
|
|
554
554
|
function io(e) {
|
|
555
|
-
let { children: t, contain: o, restoreFocus: n, autoFocus: r } = e, l = M(null), a = M(null), d = M([]), { parentNode: c } = A(
|
|
555
|
+
let { children: t, contain: o, restoreFocus: n, autoFocus: r } = e, l = M(null), a = M(null), d = M([]), { parentNode: c } = A(xe) || {}, i = q(() => new be({
|
|
556
556
|
scopeRef: d
|
|
557
557
|
}), [
|
|
558
558
|
d
|
|
@@ -605,7 +605,7 @@ function io(e) {
|
|
|
605
605
|
i,
|
|
606
606
|
s
|
|
607
607
|
]);
|
|
608
|
-
return /* @__PURE__ */ $.createElement(
|
|
608
|
+
return /* @__PURE__ */ $.createElement(xe.Provider, {
|
|
609
609
|
value: m
|
|
610
610
|
}, /* @__PURE__ */ $.createElement("span", {
|
|
611
611
|
"data-focus-scope-start": !0,
|
|
@@ -970,22 +970,22 @@ class be {
|
|
|
970
970
|
}
|
|
971
971
|
}
|
|
972
972
|
let h = new we();
|
|
973
|
-
const ho = /* @__PURE__ */ new WeakMap(),
|
|
973
|
+
const ho = /* @__PURE__ */ new WeakMap(), x = [];
|
|
974
974
|
function $o(e, t) {
|
|
975
975
|
let { onClose: o, shouldCloseOnBlur: n, isOpen: r, isDismissable: l = !1, isKeyboardDismissDisabled: a = !1, shouldCloseOnInteractOutside: d } = e;
|
|
976
|
-
L(() => (r &&
|
|
977
|
-
let f =
|
|
978
|
-
f >= 0 &&
|
|
976
|
+
L(() => (r && x.push(t), () => {
|
|
977
|
+
let f = x.indexOf(t);
|
|
978
|
+
f >= 0 && x.splice(f, 1);
|
|
979
979
|
}), [
|
|
980
980
|
r,
|
|
981
981
|
t
|
|
982
982
|
]);
|
|
983
983
|
let c = () => {
|
|
984
|
-
|
|
984
|
+
x[x.length - 1] === t && o && o();
|
|
985
985
|
}, i = (f) => {
|
|
986
|
-
(!d || d(f.target)) &&
|
|
986
|
+
(!d || d(f.target)) && x[x.length - 1] === t && (f.stopPropagation(), f.preventDefault());
|
|
987
987
|
}, s = (f) => {
|
|
988
|
-
(!d || d(f.target)) && (
|
|
988
|
+
(!d || d(f.target)) && (x[x.length - 1] === t && (f.stopPropagation(), f.preventDefault()), c());
|
|
989
989
|
}, m = (f) => {
|
|
990
990
|
f.key === "Escape" && !a && !f.nativeEvent.isComposing && (f.stopPropagation(), f.preventDefault(), c());
|
|
991
991
|
};
|
|
@@ -1013,22 +1013,20 @@ function $o(e, t) {
|
|
|
1013
1013
|
};
|
|
1014
1014
|
}
|
|
1015
1015
|
function wo(e, t, o) {
|
|
1016
|
-
let {
|
|
1016
|
+
let { isOpen: n } = t;
|
|
1017
1017
|
L(() => {
|
|
1018
1018
|
o && o.current && ho.set(o.current, t.close);
|
|
1019
1019
|
});
|
|
1020
|
-
let l;
|
|
1021
|
-
n === "menu" ? l = !0 : n === "listbox" && (l = "listbox");
|
|
1022
|
-
let a = ze();
|
|
1020
|
+
let r, l = ze();
|
|
1023
1021
|
return {
|
|
1024
1022
|
triggerProps: {
|
|
1025
|
-
"aria-haspopup":
|
|
1026
|
-
"aria-expanded":
|
|
1027
|
-
"aria-controls":
|
|
1023
|
+
"aria-haspopup": r,
|
|
1024
|
+
"aria-expanded": n,
|
|
1025
|
+
"aria-controls": n ? l : null,
|
|
1028
1026
|
onPress: t.toggle
|
|
1029
1027
|
},
|
|
1030
1028
|
overlayProps: {
|
|
1031
|
-
id:
|
|
1029
|
+
id: l
|
|
1032
1030
|
}
|
|
1033
1031
|
};
|
|
1034
1032
|
}
|
|
@@ -1187,19 +1185,19 @@ function Po(e, t = document.body) {
|
|
|
1187
1185
|
};
|
|
1188
1186
|
}
|
|
1189
1187
|
const ko = /* @__PURE__ */ vt({});
|
|
1190
|
-
function
|
|
1188
|
+
function To() {
|
|
1191
1189
|
var e;
|
|
1192
1190
|
return (e = A(ko)) !== null && e !== void 0 ? e : {};
|
|
1193
1191
|
}
|
|
1194
1192
|
const Qe = /* @__PURE__ */ $.createContext(null);
|
|
1195
|
-
function
|
|
1193
|
+
function xo(e) {
|
|
1196
1194
|
let t = Ie(), { portalContainer: o = t ? null : document.body, isExiting: n } = e, [r, l] = K(!1), a = q(() => ({
|
|
1197
1195
|
contain: r,
|
|
1198
1196
|
setContain: l
|
|
1199
1197
|
}), [
|
|
1200
1198
|
r,
|
|
1201
1199
|
l
|
|
1202
|
-
]), { getContainer: d } =
|
|
1200
|
+
]), { getContainer: d } = To();
|
|
1203
1201
|
if (!e.portalContainer && d && (o = d()), !o) return null;
|
|
1204
1202
|
let c = e.children;
|
|
1205
1203
|
return e.disableFocusManagement || (c = /* @__PURE__ */ $.createElement(io, {
|
|
@@ -1326,7 +1324,7 @@ var Co = (e, t, o) => {
|
|
|
1326
1324
|
for (var [i, s] of e.compoundVariants)
|
|
1327
1325
|
Co(i, n, e.defaultVariants) && (o += " " + s);
|
|
1328
1326
|
return o;
|
|
1329
|
-
}, Bo = "pkg_sps-
|
|
1327
|
+
}, Bo = "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2o", No = "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2q", Oo = "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2r", tt = "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2p", Do = et({ defaultClassName: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto20", variantClassNames: { kind: { informational: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto21", delete: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto22", failure: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto23", success: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto24", warning: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto25", successWithFailures: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto26", form: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto27" }, size: { sm: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto28", md: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto29", lg: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2a", xl: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2b" }, fullHeight: { true: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2c", false: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2d" } }, defaultVariants: {}, compoundVariants: [] }), Wo = "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2n", Ao = et({ defaultClassName: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2e", variantClassNames: { kind: { form: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2f", delete: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2g", failure: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2h", informational: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2i", success: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2j", warning: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2k", successWithFailures: "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2l" } }, defaultVariants: {}, compoundVariants: [] }), Io = "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2m", zo = "pkg_sps-woodland_modal__version_8_27_2__hash_3moto2s";
|
|
1330
1328
|
function ot({
|
|
1331
1329
|
children: e,
|
|
1332
1330
|
className: t = "",
|
|
@@ -1389,7 +1387,7 @@ function Ro({
|
|
|
1389
1387
|
), Ee = u.useCallback(() => {
|
|
1390
1388
|
p && typeof p == "function" && p(), c.close();
|
|
1391
1389
|
}, [p, c.close]), ct = gt(ut, (_e) => _e.type === Ne ? [{ className: ue(_e.props.classname, Oo) }] : []);
|
|
1392
|
-
return /* @__PURE__ */ u.createElement(
|
|
1390
|
+
return /* @__PURE__ */ u.createElement(xo, null, /* @__PURE__ */ u.createElement("div", { className: zo, ...rt, ...f }, /* @__PURE__ */ u.createElement(
|
|
1393
1391
|
"div",
|
|
1394
1392
|
{
|
|
1395
1393
|
...ne,
|
|
@@ -1430,15 +1428,15 @@ De.set(nt, {
|
|
|
1430
1428
|
});
|
|
1431
1429
|
function qo(e) {
|
|
1432
1430
|
let [t, o] = Xt(e.isOpen, e.defaultOpen || !1, e.onOpenChange);
|
|
1433
|
-
const n =
|
|
1431
|
+
const n = T(() => {
|
|
1434
1432
|
o(!0);
|
|
1435
1433
|
}, [
|
|
1436
1434
|
o
|
|
1437
|
-
]), r =
|
|
1435
|
+
]), r = T(() => {
|
|
1438
1436
|
o(!1);
|
|
1439
1437
|
}, [
|
|
1440
1438
|
o
|
|
1441
|
-
]), l =
|
|
1439
|
+
]), l = T(() => {
|
|
1442
1440
|
o(!t);
|
|
1443
1441
|
}, [
|
|
1444
1442
|
o,
|
|
@@ -1454,7 +1452,7 @@ function qo(e) {
|
|
|
1454
1452
|
}
|
|
1455
1453
|
function Xo(e = {}) {
|
|
1456
1454
|
const t = qo(e), o = M(null), { triggerProps: n, overlayProps: r } = wo(
|
|
1457
|
-
{
|
|
1455
|
+
{},
|
|
1458
1456
|
t,
|
|
1459
1457
|
o
|
|
1460
1458
|
), {
|
package/lib/index.umd.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(y,w){typeof exports=="object"&&typeof module<"u"?w(exports,require("@sps-woodland/core"),require("@sps-woodland/buttons"),require("react"),require("react-dom"),require("@spscommerce/utils")):typeof define=="function"&&define.amd?define(["exports","@sps-woodland/core","@sps-woodland/buttons","react","react-dom","@spscommerce/utils"],w):(y=typeof globalThis<"u"?globalThis:y||self,w(y.Modal={},y.core,y.buttons,y.React,y.$4AOtR$reactdom,y.utils))})(this,function(y,w,he,m,Ye,v){"use strict";function Qe(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const u=Qe(m),E=typeof document<"u"?m.useLayoutEffect:()=>{};function W(e){const t=m.useRef(null);return E(()=>{t.current=e},[e]),m.useCallback((...o)=>{const n=t.current;return n==null?void 0:n(...o)},[])}function Ze(e){let[t,o]=m.useState(e),n=m.useRef(null),r=W(()=>{if(!n.current)return;let a=n.current.next();if(a.done){n.current=null;return}t===a.value?r():o(a.value)});E(()=>{n.current&&r()});let l=W(a=>{n.current=a(t),r()});return[t,l]}const j={prefix:String(Math.round(Math.random()*1e10)),current:0},$e=m.createContext(j),Re=m.createContext(!1);let et=!!(typeof window<"u"&&window.document&&window.document.createElement),R=new WeakMap;function tt(e=!1){let t=m.useContext($e),o=m.useRef(null);if(o.current===null&&!e){var n,r;let l=(r=m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)===null||r===void 0||(n=r.ReactCurrentOwner)===null||n===void 0?void 0:n.current;if(l){let a=R.get(l);a==null?R.set(l,{id:t.current,state:l.memoizedState}):l.memoizedState!==a.state&&(t.current=a.id,R.delete(l))}o.current=++t.current}return o.current}function ot(e){let t=m.useContext($e);t===j&&!et&&console.warn("When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.");let o=tt(!!e),n=t===j&&process.env.NODE_ENV==="test"?"react-aria":`react-aria${t.prefix}`;return e||`${n}-${o}`}function nt(e){let t=m.useId(),[o]=m.useState(we()),n=o||process.env.NODE_ENV==="test"?"react-aria":`react-aria${j.prefix}`;return e||`${n}-${t}`}const rt=typeof m.useId=="function"?nt:ot;function at(){return!1}function lt(){return!0}function it(e){return()=>{}}function we(){return typeof m.useSyncExternalStore=="function"?m.useSyncExternalStore(it,at,lt):m.useContext(Re)}let st=!!(typeof window<"u"&&window.document&&window.document.createElement),F=new Map;function Ee(e){let[t,o]=m.useState(e),n=m.useRef(null),r=rt(t),l=m.useCallback(a=>{n.current=a},[]);return st&&(F.has(r)&&!F.get(r).includes(l)?F.set(r,[...F.get(r),l]):F.set(r,[l])),E(()=>{let a=r;return()=>{F.delete(a)}},[r]),m.useEffect(()=>{let a=n.current;a&&(n.current=null,o(a))}),r}function dt(e,t){if(e===t)return e;let o=F.get(e);if(o)return o.forEach(r=>r(t)),t;let n=F.get(t);return n?(n.forEach(r=>r(e)),e):t}function ut(e=[]){let t=Ee(),[o,n]=Ze(t),r=m.useCallback(()=>{n(function*(){yield t,yield document.getElementById(t)?t:void 0})},[t,n]);return E(r,[t,r,...e]),o}function K(...e){return(...t)=>{for(let o of e)typeof o=="function"&&o(...t)}}const M=e=>{var t;return(t=e==null?void 0:e.ownerDocument)!==null&&t!==void 0?t:document},U=e=>e&&"window"in e&&e.window===e?e:M(e).defaultView||window;function Me(e){var t,o,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(o=Me(e[t]))&&(n&&(n+=" "),n+=o)}else for(o in e)e[o]&&(n&&(n+=" "),n+=o);return n}function ct(){for(var e,t,o=0,n="",r=arguments.length;o<r;o++)(e=arguments[o])&&(t=Me(e))&&(n&&(n+=" "),n+=t);return n}function mt(...e){let t={...e[0]};for(let o=1;o<e.length;o++){let n=e[o];for(let r in n){let l=t[r],a=n[r];typeof l=="function"&&typeof a=="function"&&r[0]==="o"&&r[1]==="n"&&r.charCodeAt(2)>=65&&r.charCodeAt(2)<=90?t[r]=K(l,a):(r==="className"||r==="UNSAFE_className")&&typeof l=="string"&&typeof a=="string"?t[r]=ct(l,a):r==="id"&&l&&a?t.id=dt(l,a):t[r]=a!==void 0?a:l}}return t}const ft=new Set(["id"]),pt=new Set(["aria-label","aria-labelledby","aria-describedby","aria-details"]),gt=new Set(["href","hrefLang","target","rel","download","ping","referrerPolicy"]),bt=/^(data-.*)$/;function vt(e,t={}){let{labelable:o,isLink:n,propNames:r}=t,l={};for(const a in e)Object.prototype.hasOwnProperty.call(e,a)&&(ft.has(a)||o&&pt.has(a)||n&>.has(a)||r!=null&&r.has(a)||bt.test(a))&&(l[a]=e[a]);return l}function _e(e){if(ht())e.focus({preventScroll:!0});else{let t=$t(e);e.focus(),wt(t)}}let G=null;function ht(){if(G==null){G=!1;try{document.createElement("div").focus({get preventScroll(){return G=!0,!0}})}catch{}}return G}function $t(e){let t=e.parentNode,o=[],n=document.scrollingElement||document.documentElement;for(;t instanceof HTMLElement&&t!==n;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&o.push({element:t,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),t=t.parentNode;return n instanceof HTMLElement&&o.push({element:n,scrollTop:n.scrollTop,scrollLeft:n.scrollLeft}),o}function wt(e){for(let{element:t,scrollTop:o,scrollLeft:n}of e)t.scrollTop=o,t.scrollLeft=n}function Et(e){var t;return typeof window>"u"||window.navigator==null?!1:((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.brands.some(o=>e.test(o.brand)))||e.test(window.navigator.userAgent)}function ee(e){var t;return typeof window<"u"&&window.navigator!=null?e.test(((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.platform)||window.navigator.platform):!1}function A(e){let t=null;return()=>(t==null&&(t=e()),t)}const ye=A(function(){return ee(/^Mac/i)}),Mt=A(function(){return ee(/^iPhone/i)}),_t=A(function(){return ee(/^iPad/i)||ye()&&navigator.maxTouchPoints>1}),yt=A(function(){return Mt()||_t()}),Pt=A(function(){return Et(/Android/i)});let O=new Map,te=new Set;function Pe(){if(typeof window>"u")return;function e(n){return"propertyName"in n}let t=n=>{if(!e(n)||!n.target)return;let r=O.get(n.target);r||(r=new Set,O.set(n.target,r),n.target.addEventListener("transitioncancel",o,{once:!0})),r.add(n.propertyName)},o=n=>{if(!e(n)||!n.target)return;let r=O.get(n.target);if(r&&(r.delete(n.propertyName),r.size===0&&(n.target.removeEventListener("transitioncancel",o),O.delete(n.target)),O.size===0)){for(let l of te)l();te.clear()}};document.body.addEventListener("transitionrun",t),document.body.addEventListener("transitionend",o)}typeof document<"u"&&(document.readyState!=="loading"?Pe():document.addEventListener("DOMContentLoaded",Pe));function kt(e){requestAnimationFrame(()=>{O.size===0?e():te.add(e)})}function ke(e,t){let o=window.getComputedStyle(e),n=/(auto|scroll)/.test(o.overflow+o.overflowX+o.overflowY);return n&&t&&(n=e.scrollHeight!==e.clientHeight||e.scrollWidth!==e.clientWidth),n}function Te(e,t){let o=e;for(ke(o,t)&&(o=o.parentElement);o&&!ke(o,t);)o=o.parentElement;return o||document.scrollingElement||document.documentElement}function Tt(e){return e.mozInputSource===0&&e.isTrusted?!0:Pt()&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function xt(e,t,o){let[n,r]=m.useState(e||t),l=m.useRef(e!==void 0),a=e!==void 0;m.useEffect(()=>{let i=l.current;i!==a&&console.warn(`WARN: A component changed from ${i?"controlled":"uncontrolled"} to ${a?"controlled":"uncontrolled"}.`),l.current=a},[a]);let d=a?e:n,c=m.useCallback((i,...s)=>{let f=(p,...b)=>{o&&(Object.is(d,p)||o(p,...b)),a||(d=p)};typeof i=="function"?(console.warn("We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320"),r((b,...g)=>{let T=i(a?d:b,...g);return f(T,...s),a?b:T})):(a||r(i),f(i,...s))},[a,d,o]);return[d,c]}const xe=m.createContext({register:()=>{}});xe.displayName="PressResponderContext";function St({children:e}){let t=m.useMemo(()=>({register:()=>{}}),[]);return m.createElement(xe.Provider,{value:t},e)}class Ft{isDefaultPrevented(){return this.nativeEvent.defaultPrevented}preventDefault(){this.defaultPrevented=!0,this.nativeEvent.preventDefault()}stopPropagation(){this.nativeEvent.stopPropagation(),this.isPropagationStopped=()=>!0}isPropagationStopped(){return!1}persist(){}constructor(t,o){this.nativeEvent=o,this.target=o.target,this.currentTarget=o.currentTarget,this.relatedTarget=o.relatedTarget,this.bubbles=o.bubbles,this.cancelable=o.cancelable,this.defaultPrevented=o.defaultPrevented,this.eventPhase=o.eventPhase,this.isTrusted=o.isTrusted,this.timeStamp=o.timeStamp,this.type=t}}function Lt(e){let t=m.useRef({isFocused:!1,observer:null});E(()=>{const n=t.current;return()=>{n.observer&&(n.observer.disconnect(),n.observer=null)}},[]);let o=W(n=>{e==null||e(n)});return m.useCallback(n=>{if(n.target instanceof HTMLButtonElement||n.target instanceof HTMLInputElement||n.target instanceof HTMLTextAreaElement||n.target instanceof HTMLSelectElement){t.current.isFocused=!0;let r=n.target,l=a=>{t.current.isFocused=!1,r.disabled&&o(new Ft("blur",a)),t.current.observer&&(t.current.observer.disconnect(),t.current.observer=null)};r.addEventListener("focusout",l,{once:!0}),t.current.observer=new MutationObserver(()=>{if(t.current.isFocused&&r.disabled){var a;(a=t.current.observer)===null||a===void 0||a.disconnect();let d=r===document.activeElement?null:document.activeElement;r.dispatchEvent(new FocusEvent("blur",{relatedTarget:d})),r.dispatchEvent(new FocusEvent("focusout",{bubbles:!0,relatedTarget:d}))}}),t.current.observer.observe(r,{attributes:!0,attributeFilter:["disabled"]})}},[o])}let I=null,Ct=new Set,z=new Map,C=!1,oe=!1;function ne(e,t){for(let o of Ct)o(e,t)}function Bt(e){return!(e.metaKey||!ye()&&e.altKey||e.ctrlKey||e.key==="Control"||e.key==="Shift"||e.key==="Meta")}function X(e){C=!0,Bt(e)&&(I="keyboard",ne("keyboard",e))}function P(e){I="pointer",(e.type==="mousedown"||e.type==="pointerdown")&&(C=!0,ne("pointer",e))}function Se(e){Tt(e)&&(C=!0,I="virtual")}function Fe(e){e.target===window||e.target===document||(!C&&!oe&&(I="virtual",ne("virtual",e)),C=!1,oe=!1)}function Le(){C=!1,oe=!0}function Ce(e){if(typeof window>"u"||z.get(U(e)))return;const t=U(e),o=M(e);let n=t.HTMLElement.prototype.focus;t.HTMLElement.prototype.focus=function(){C=!0,n.apply(this,arguments)},o.addEventListener("keydown",X,!0),o.addEventListener("keyup",X,!0),o.addEventListener("click",Se,!0),t.addEventListener("focus",Fe,!0),t.addEventListener("blur",Le,!1),typeof PointerEvent<"u"?(o.addEventListener("pointerdown",P,!0),o.addEventListener("pointermove",P,!0),o.addEventListener("pointerup",P,!0)):(o.addEventListener("mousedown",P,!0),o.addEventListener("mousemove",P,!0),o.addEventListener("mouseup",P,!0)),t.addEventListener("beforeunload",()=>{Be(e)},{once:!0}),z.set(t,{focus:n})}const Be=(e,t)=>{const o=U(e),n=M(e);t&&n.removeEventListener("DOMContentLoaded",t),z.has(o)&&(o.HTMLElement.prototype.focus=z.get(o).focus,n.removeEventListener("keydown",X,!0),n.removeEventListener("keyup",X,!0),n.removeEventListener("click",Se,!0),o.removeEventListener("focus",Fe,!0),o.removeEventListener("blur",Le,!1),typeof PointerEvent<"u"?(n.removeEventListener("pointerdown",P,!0),n.removeEventListener("pointermove",P,!0),n.removeEventListener("pointerup",P,!0)):(n.removeEventListener("mousedown",P,!0),n.removeEventListener("mousemove",P,!0),n.removeEventListener("mouseup",P,!0)),z.delete(o))};function Nt(e){const t=M(e);let o;return t.readyState!=="loading"?Ce(e):(o=()=>{Ce(e)},t.addEventListener("DOMContentLoaded",o)),()=>Be(e,o)}typeof document<"u"&&Nt();function Ot(){return I}function Dt(e){let{isDisabled:t,onBlurWithin:o,onFocusWithin:n,onFocusWithinChange:r}=e,l=m.useRef({isFocusWithin:!1}),a=m.useCallback(i=>{l.current.isFocusWithin&&!i.currentTarget.contains(i.relatedTarget)&&(l.current.isFocusWithin=!1,o&&o(i),r&&r(!1))},[o,r,l]),d=Lt(a),c=m.useCallback(i=>{!l.current.isFocusWithin&&document.activeElement===i.target&&(n&&n(i),r&&r(!0),l.current.isFocusWithin=!0,d(i))},[n,r,d]);return t?{focusWithinProps:{onFocus:void 0,onBlur:void 0}}:{focusWithinProps:{onFocus:c,onBlur:a}}}function Wt(e){let{ref:t,onInteractOutside:o,isDisabled:n,onInteractOutsideStart:r}=e,l=m.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}),a=W(c=>{o&&J(c,t)&&(r&&r(c),l.current.isPointerDown=!0)}),d=W(c=>{o&&o(c)});m.useEffect(()=>{let c=l.current;if(n)return;const i=t.current,s=M(i);if(typeof PointerEvent<"u"){let f=p=>{c.isPointerDown&&J(p,t)&&d(p),c.isPointerDown=!1};return s.addEventListener("pointerdown",a,!0),s.addEventListener("pointerup",f,!0),()=>{s.removeEventListener("pointerdown",a,!0),s.removeEventListener("pointerup",f,!0)}}else{let f=b=>{c.ignoreEmulatedMouseEvents?c.ignoreEmulatedMouseEvents=!1:c.isPointerDown&&J(b,t)&&d(b),c.isPointerDown=!1},p=b=>{c.ignoreEmulatedMouseEvents=!0,c.isPointerDown&&J(b,t)&&d(b),c.isPointerDown=!1};return s.addEventListener("mousedown",a,!0),s.addEventListener("mouseup",f,!0),s.addEventListener("touchstart",a,!0),s.addEventListener("touchend",p,!0),()=>{s.removeEventListener("mousedown",a,!0),s.removeEventListener("mouseup",f,!0),s.removeEventListener("touchstart",a,!0),s.removeEventListener("touchend",p,!0)}}},[t,n,a,d])}function J(e,t){if(e.button>0)return!1;if(e.target){const o=e.target.ownerDocument;if(!o||!o.documentElement.contains(e.target)||e.target.closest("[data-react-aria-top-layer]"))return!1}return t.current&&!t.current.contains(e.target)}function re(e){const t=M(e);if(Ot()==="virtual"){let o=t.activeElement;kt(()=>{t.activeElement===o&&e.isConnected&&_e(e)})}else _e(e)}function At(e){const t=U(e);if(!(e instanceof t.HTMLElement)&&!(e instanceof t.SVGElement))return!1;let{display:o,visibility:n}=e.style,r=o!=="none"&&n!=="hidden"&&n!=="collapse";if(r){const{getComputedStyle:l}=e.ownerDocument.defaultView;let{display:a,visibility:d}=l(e);r=a!=="none"&&d!=="hidden"&&d!=="collapse"}return r}function It(e,t){return!e.hasAttribute("hidden")&&!e.hasAttribute("data-react-aria-prevent-focus")&&(e.nodeName==="DETAILS"&&t&&t.nodeName!=="SUMMARY"?e.hasAttribute("open"):!0)}function Ne(e,t){return e.nodeName!=="#comment"&&At(e)&&It(e,t)&&(!e.parentElement||Ne(e.parentElement,e))}const Oe=m.createContext(null),ae="react-aria-focus-scope-restore";let h=null;function zt(e){let{children:t,contain:o,restoreFocus:n,autoFocus:r}=e,l=m.useRef(null),a=m.useRef(null),d=m.useRef([]),{parentNode:c}=m.useContext(Oe)||{},i=m.useMemo(()=>new de({scopeRef:d}),[d]);E(()=>{let p=c||$.root;if($.getTreeNode(p.scopeRef)&&h&&!Q(h,p.scopeRef)){let b=$.getTreeNode(h);b&&(p=b)}p.addChild(i),$.addNode(i)},[i,c]),E(()=>{let p=$.getTreeNode(d);p&&(p.contain=!!o)},[o]),E(()=>{var p;let b=(p=l.current)===null||p===void 0?void 0:p.nextSibling,g=[],T=N=>N.stopPropagation();for(;b&&b!==a.current;)g.push(b),b.addEventListener(ae,T),b=b.nextSibling;return d.current=g,()=>{for(let N of g)N.removeEventListener(ae,T)}},[t]),Gt(d,n,o),jt(d,o),Jt(d,n,o),Ut(d,r),m.useEffect(()=>{const p=M(d.current?d.current[0]:void 0).activeElement;let b=null;if(_(p,d.current)){for(let g of $.traverse())g.scopeRef&&_(p,g.scopeRef.current)&&(b=g);b===$.getTreeNode(d)&&(h=b.scopeRef)}},[d]),E(()=>()=>{var p,b,g;let T=(g=(b=$.getTreeNode(d))===null||b===void 0||(p=b.parent)===null||p===void 0?void 0:p.scopeRef)!==null&&g!==void 0?g:null;(d===h||Q(d,h))&&(!T||$.getTreeNode(T))&&(h=T),$.removeTreeNode(d)},[d]);let s=m.useMemo(()=>qt(d),[]),f=m.useMemo(()=>({focusManager:s,parentNode:i}),[i,s]);return m.createElement(Oe.Provider,{value:f},m.createElement("span",{"data-focus-scope-start":!0,hidden:!0,ref:l}),t,m.createElement("span",{"data-focus-scope-end":!0,hidden:!0,ref:a}))}function qt(e){return{focusNext(t={}){let o=e.current,{from:n,tabbable:r,wrap:l,accept:a}=t,d=n||M(o[0]).activeElement,c=o[0].previousElementSibling,i=B(o),s=L(i,{tabbable:r,accept:a},o);s.currentNode=_(d,o)?d:c;let f=s.nextNode();return!f&&l&&(s.currentNode=c,f=s.nextNode()),f&&x(f,!0),f},focusPrevious(t={}){let o=e.current,{from:n,tabbable:r,wrap:l,accept:a}=t,d=n||M(o[0]).activeElement,c=o[o.length-1].nextElementSibling,i=B(o),s=L(i,{tabbable:r,accept:a},o);s.currentNode=_(d,o)?d:c;let f=s.previousNode();return!f&&l&&(s.currentNode=c,f=s.previousNode()),f&&x(f,!0),f},focusFirst(t={}){let o=e.current,{tabbable:n,accept:r}=t,l=B(o),a=L(l,{tabbable:n,accept:r},o);a.currentNode=o[0].previousElementSibling;let d=a.nextNode();return d&&x(d,!0),d},focusLast(t={}){let o=e.current,{tabbable:n,accept:r}=t,l=B(o),a=L(l,{tabbable:n,accept:r},o);a.currentNode=o[o.length-1].nextElementSibling;let d=a.previousNode();return d&&x(d,!0),d}}}const le=["input:not([disabled]):not([type=hidden])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[contenteditable]"],Vt=le.join(":not([hidden]),")+",[tabindex]:not([disabled]):not([hidden])";le.push('[tabindex]:not([tabindex="-1"]):not([disabled])');const Ht=le.join(':not([hidden]):not([tabindex="-1"]),');function B(e){return e[0].parentElement}function q(e){let t=$.getTreeNode(h);for(;t&&t.scopeRef!==e;){if(t.contain)return!1;t=t.parent}return!0}function jt(e,t){let o=m.useRef(void 0),n=m.useRef(void 0);E(()=>{let r=e.current;if(!t){n.current&&(cancelAnimationFrame(n.current),n.current=void 0);return}const l=M(r?r[0]:void 0);let a=i=>{if(i.key!=="Tab"||i.altKey||i.ctrlKey||i.metaKey||!q(e)||i.isComposing)return;let s=l.activeElement,f=e.current;if(!f||!_(s,f))return;let p=B(f),b=L(p,{tabbable:!0},f);if(!s)return;b.currentNode=s;let g=i.shiftKey?b.previousNode():b.nextNode();g||(b.currentNode=i.shiftKey?f[f.length-1].nextElementSibling:f[0].previousElementSibling,g=i.shiftKey?b.previousNode():b.nextNode()),i.preventDefault(),g&&x(g,!0)},d=i=>{(!h||Q(h,e))&&_(i.target,e.current)?(h=e,o.current=i.target):q(e)&&!Y(i.target,e)?o.current?o.current.focus():h&&h.current&&ie(h.current):q(e)&&(o.current=i.target)},c=i=>{n.current&&cancelAnimationFrame(n.current),n.current=requestAnimationFrame(()=>{if(l.activeElement&&q(e)&&!Y(l.activeElement,e))if(h=e,l.body.contains(i.target)){var s;o.current=i.target,(s=o.current)===null||s===void 0||s.focus()}else h.current&&ie(h.current)})};return l.addEventListener("keydown",a,!1),l.addEventListener("focusin",d,!1),r==null||r.forEach(i=>i.addEventListener("focusin",d,!1)),r==null||r.forEach(i=>i.addEventListener("focusout",c,!1)),()=>{l.removeEventListener("keydown",a,!1),l.removeEventListener("focusin",d,!1),r==null||r.forEach(i=>i.removeEventListener("focusin",d,!1)),r==null||r.forEach(i=>i.removeEventListener("focusout",c,!1))}},[e,t]),E(()=>()=>{n.current&&cancelAnimationFrame(n.current)},[n])}function De(e){return Y(e)}function _(e,t){return!e||!t?!1:t.some(o=>o.contains(e))}function Y(e,t=null){if(e instanceof Element&&e.closest("[data-react-aria-top-layer]"))return!0;for(let{scopeRef:o}of $.traverse($.getTreeNode(t)))if(o&&_(e,o.current))return!0;return!1}function Kt(e){return Y(e,h)}function Q(e,t){var o;let n=(o=$.getTreeNode(t))===null||o===void 0?void 0:o.parent;for(;n;){if(n.scopeRef===e)return!0;n=n.parent}return!1}function x(e,t=!1){if(e!=null&&!t)try{re(e)}catch{}else if(e!=null)try{e.focus()}catch{}}function We(e,t=!0){let o=e[0].previousElementSibling,n=B(e),r=L(n,{tabbable:t},e);r.currentNode=o;let l=r.nextNode();return t&&!l&&(n=B(e),r=L(n,{tabbable:!1},e),r.currentNode=o,l=r.nextNode()),l}function ie(e,t=!0){x(We(e,t))}function Ut(e,t){const o=m.useRef(t);m.useEffect(()=>{if(o.current){h=e;const n=M(e.current?e.current[0]:void 0);!_(n.activeElement,h.current)&&e.current&&ie(e.current)}o.current=!1},[e])}function Gt(e,t,o){E(()=>{if(t||o)return;let n=e.current;const r=M(n?n[0]:void 0);let l=a=>{let d=a.target;_(d,e.current)?h=e:De(d)||(h=null)};return r.addEventListener("focusin",l,!1),n==null||n.forEach(a=>a.addEventListener("focusin",l,!1)),()=>{r.removeEventListener("focusin",l,!1),n==null||n.forEach(a=>a.removeEventListener("focusin",l,!1))}},[e,t,o])}function Xt(e){let t=$.getTreeNode(h);for(;t&&t.scopeRef!==e;){if(t.nodeToRestore)return!1;t=t.parent}return(t==null?void 0:t.scopeRef)===e}function Jt(e,t,o){const n=m.useRef(typeof document<"u"?M(e.current?e.current[0]:void 0).activeElement:null);E(()=>{let r=e.current;const l=M(r?r[0]:void 0);if(!t||o)return;let a=()=>{(!h||Q(h,e))&&_(l.activeElement,e.current)&&(h=e)};return l.addEventListener("focusin",a,!1),r==null||r.forEach(d=>d.addEventListener("focusin",a,!1)),()=>{l.removeEventListener("focusin",a,!1),r==null||r.forEach(d=>d.removeEventListener("focusin",a,!1))}},[e,o]),E(()=>{const r=M(e.current?e.current[0]:void 0);if(!t)return;let l=a=>{if(a.key!=="Tab"||a.altKey||a.ctrlKey||a.metaKey||!q(e)||a.isComposing)return;let d=r.activeElement;if(!_(d,e.current))return;let c=$.getTreeNode(e);if(!c)return;let i=c.nodeToRestore,s=L(r.body,{tabbable:!0});s.currentNode=d;let f=a.shiftKey?s.previousNode():s.nextNode();if((!i||!r.body.contains(i)||i===r.body)&&(i=void 0,c.nodeToRestore=void 0),(!f||!_(f,e.current))&&i){s.currentNode=i;do f=a.shiftKey?s.previousNode():s.nextNode();while(_(f,e.current));a.preventDefault(),a.stopPropagation(),f?x(f,!0):De(i)?x(i,!0):d.blur()}};return o||r.addEventListener("keydown",l,!0),()=>{o||r.removeEventListener("keydown",l,!0)}},[e,t,o]),E(()=>{const r=M(e.current?e.current[0]:void 0);if(!t)return;let l=$.getTreeNode(e);if(l){var a;return l.nodeToRestore=(a=n.current)!==null&&a!==void 0?a:void 0,()=>{let d=$.getTreeNode(e);if(!d)return;let c=d.nodeToRestore;if(t&&c&&(_(r.activeElement,e.current)||r.activeElement===r.body&&Xt(e))){let i=$.clone();requestAnimationFrame(()=>{if(r.activeElement===r.body){let s=i.getTreeNode(e);for(;s;){if(s.nodeToRestore&&s.nodeToRestore.isConnected){Ae(s.nodeToRestore);return}s=s.parent}for(s=i.getTreeNode(e);s;){if(s.scopeRef&&s.scopeRef.current&&$.getTreeNode(s.scopeRef)){let f=We(s.scopeRef.current,!0);Ae(f);return}s=s.parent}}})}}}},[e,t])}function Ae(e){e.dispatchEvent(new CustomEvent(ae,{bubbles:!0,cancelable:!0}))&&x(e)}function L(e,t,o){let n=t!=null&&t.tabbable?Ht:Vt,r=M(e).createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode(l){var a;return!(t==null||(a=t.from)===null||a===void 0)&&a.contains(l)?NodeFilter.FILTER_REJECT:l.matches(n)&&Ne(l)&&(!o||_(l,o))&&(!(t!=null&&t.accept)||t.accept(l))?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});return t!=null&&t.from&&(r.currentNode=t.from),r}class se{get size(){return this.fastMap.size}getTreeNode(t){return this.fastMap.get(t)}addTreeNode(t,o,n){let r=this.fastMap.get(o??null);if(!r)return;let l=new de({scopeRef:t});r.addChild(l),l.parent=r,this.fastMap.set(t,l),n&&(l.nodeToRestore=n)}addNode(t){this.fastMap.set(t.scopeRef,t)}removeTreeNode(t){if(t===null)return;let o=this.fastMap.get(t);if(!o)return;let n=o.parent;for(let l of this.traverse())l!==o&&o.nodeToRestore&&l.nodeToRestore&&o.scopeRef&&o.scopeRef.current&&_(l.nodeToRestore,o.scopeRef.current)&&(l.nodeToRestore=o.nodeToRestore);let r=o.children;n&&(n.removeChild(o),r.size>0&&r.forEach(l=>n&&n.addChild(l))),this.fastMap.delete(o.scopeRef)}*traverse(t=this.root){if(t.scopeRef!=null&&(yield t),t.children.size>0)for(let o of t.children)yield*this.traverse(o)}clone(){var t;let o=new se;var n;for(let r of this.traverse())o.addTreeNode(r.scopeRef,(n=(t=r.parent)===null||t===void 0?void 0:t.scopeRef)!==null&&n!==void 0?n:null,r.nodeToRestore);return o}constructor(){this.fastMap=new Map,this.root=new de({scopeRef:null}),this.fastMap.set(null,this.root)}}class de{addChild(t){this.children.add(t),t.parent=this}removeChild(t){this.children.delete(t),t.parent=void 0}constructor(t){this.children=new Set,this.contain=!1,this.scopeRef=t.scopeRef}}let $=new se;const Yt=new WeakMap,S=[];function Qt(e,t){let{onClose:o,shouldCloseOnBlur:n,isOpen:r,isDismissable:l=!1,isKeyboardDismissDisabled:a=!1,shouldCloseOnInteractOutside:d}=e;m.useEffect(()=>(r&&S.push(t),()=>{let g=S.indexOf(t);g>=0&&S.splice(g,1)}),[r,t]);let c=()=>{S[S.length-1]===t&&o&&o()},i=g=>{(!d||d(g.target))&&S[S.length-1]===t&&(g.stopPropagation(),g.preventDefault())},s=g=>{(!d||d(g.target))&&(S[S.length-1]===t&&(g.stopPropagation(),g.preventDefault()),c())},f=g=>{g.key==="Escape"&&!a&&!g.nativeEvent.isComposing&&(g.stopPropagation(),g.preventDefault(),c())};Wt({ref:t,onInteractOutside:l&&r?s:null,onInteractOutsideStart:i});let{focusWithinProps:p}=Dt({isDisabled:!n,onBlurWithin:g=>{!g.relatedTarget||Kt(g.relatedTarget)||(!d||d(g.relatedTarget))&&o()}}),b=g=>{g.target===g.currentTarget&&g.preventDefault()};return{overlayProps:{onKeyDown:f,...p},underlayProps:{onPointerDown:b}}}function Zt(e,t,o){let{type:n}=e,{isOpen:r}=t;m.useEffect(()=>{o&&o.current&&Yt.set(o.current,t.close)});let l;n==="menu"?l=!0:n==="listbox"&&(l="listbox");let a=Ee();return{triggerProps:{"aria-haspopup":l,"aria-expanded":r,"aria-controls":r?a:null,onPress:t.toggle},overlayProps:{id:a}}}const ue=typeof document<"u"&&window.visualViewport,Rt=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let Z=0,ce;function eo(e={}){let{isDisabled:t}=e;E(()=>{if(!t)return Z++,Z===1&&(yt()?ce=oo():ce=to()),()=>{Z--,Z===0&&ce()}},[t])}function to(){return K(D(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`),D(document.documentElement,"overflow","hidden"))}function oo(){let e,t,o=i=>{e=Te(i.target,!0),!(e===document.documentElement&&e===document.body)&&e instanceof HTMLElement&&window.getComputedStyle(e).overscrollBehavior==="auto"&&(t=D(e,"overscrollBehavior","contain"))},n=i=>{if(!e||e===document.documentElement||e===document.body){i.preventDefault();return}e.scrollHeight===e.clientHeight&&e.scrollWidth===e.clientWidth&&i.preventDefault()},r=i=>{let s=i.target;ze(s)&&s!==document.activeElement&&(i.preventDefault(),d(),s.style.transform="translateY(-2000px)",s.focus(),requestAnimationFrame(()=>{s.style.transform=""})),t&&t()},l=i=>{let s=i.target;ze(s)&&(d(),s.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{s.style.transform="",ue&&(ue.height<window.innerHeight?requestAnimationFrame(()=>{Ie(s)}):ue.addEventListener("resize",()=>Ie(s),{once:!0}))}))},a=null,d=()=>{if(a)return;let i=()=>{window.scrollTo(0,0)},s=window.pageXOffset,f=window.pageYOffset;a=K(V(window,"scroll",i),D(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`),D(document.documentElement,"overflow","hidden"),D(document.body,"marginTop",`-${f}px`),()=>{window.scrollTo(s,f)}),window.scrollTo(0,0)},c=K(V(document,"touchstart",o,{passive:!1,capture:!0}),V(document,"touchmove",n,{passive:!1,capture:!0}),V(document,"touchend",r,{passive:!1,capture:!0}),V(document,"focus",l,!0));return()=>{t==null||t(),a==null||a(),c()}}function D(e,t,o){let n=e.style[t];return e.style[t]=o,()=>{e.style[t]=n}}function V(e,t,o,n){return e.addEventListener(t,o,n),()=>{e.removeEventListener(t,o,n)}}function Ie(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let o=Te(e);if(o!==document.documentElement&&o!==document.body&&o!==e){let n=o.getBoundingClientRect().top,r=e.getBoundingClientRect().top;r>n+e.clientHeight&&(o.scrollTop+=r-n)}e=o.parentElement}}function ze(e){return e instanceof HTMLInputElement&&!Rt.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}let H=new WeakMap,k=[];function no(e,t=document.body){let o=new Set(e),n=new Set,r=c=>{for(let p of c.querySelectorAll("[data-live-announcer], [data-react-aria-top-layer]"))o.add(p);let i=p=>{if(o.has(p)||n.has(p.parentElement)&&p.parentElement.getAttribute("role")!=="row")return NodeFilter.FILTER_REJECT;for(let b of o)if(p.contains(b))return NodeFilter.FILTER_SKIP;return NodeFilter.FILTER_ACCEPT},s=document.createTreeWalker(c,NodeFilter.SHOW_ELEMENT,{acceptNode:i}),f=i(c);if(f===NodeFilter.FILTER_ACCEPT&&l(c),f!==NodeFilter.FILTER_REJECT){let p=s.nextNode();for(;p!=null;)l(p),p=s.nextNode()}},l=c=>{var i;let s=(i=H.get(c))!==null&&i!==void 0?i:0;c.getAttribute("aria-hidden")==="true"&&s===0||(s===0&&c.setAttribute("aria-hidden","true"),n.add(c),H.set(c,s+1))};k.length&&k[k.length-1].disconnect(),r(t);let a=new MutationObserver(c=>{for(let i of c)if(!(i.type!=="childList"||i.addedNodes.length===0)&&![...o,...n].some(s=>s.contains(i.target))){for(let s of i.removedNodes)s instanceof Element&&(o.delete(s),n.delete(s));for(let s of i.addedNodes)(s instanceof HTMLElement||s instanceof SVGElement)&&(s.dataset.liveAnnouncer==="true"||s.dataset.reactAriaTopLayer==="true")?o.add(s):s instanceof Element&&r(s)}});a.observe(t,{childList:!0,subtree:!0});let d={observe(){a.observe(t,{childList:!0,subtree:!0})},disconnect(){a.disconnect()}};return k.push(d),()=>{a.disconnect();for(let c of n){let i=H.get(c);i===1?(c.removeAttribute("aria-hidden"),H.delete(c)):H.set(c,i-1)}d===k[k.length-1]?(k.pop(),k.length&&k[k.length-1].observe()):k.splice(k.indexOf(d),1)}}const ro=m.createContext({});function ao(){var e;return(e=m.useContext(ro))!==null&&e!==void 0?e:{}}const qe=m.createContext(null);function lo(e){let t=we(),{portalContainer:o=t?null:document.body,isExiting:n}=e,[r,l]=m.useState(!1),a=m.useMemo(()=>({contain:r,setContain:l}),[r,l]),{getContainer:d}=ao();if(!e.portalContainer&&d&&(o=d()),!o)return null;let c=e.children;return e.disableFocusManagement||(c=m.createElement(zt,{restoreFocus:!0,contain:r&&!n},c)),c=m.createElement(qe.Provider,{value:a},m.createElement(St,null,c)),Ye.createPortal(c,o)}function Ve(){let e=m.useContext(qe),t=e==null?void 0:e.setContain;E(()=>{t==null||t(!0)},[t])}function io(e,t,o){let{overlayProps:n,underlayProps:r}=Qt({...e,isOpen:t.isOpen,onClose:t.close},o);return eo({isDisabled:!t.isOpen}),Ve(),m.useEffect(()=>{if(t.isOpen)return no([o.current])},[t.isOpen,o]),{modalProps:mt(n),underlayProps:r}}function so(e,t){let{role:o="dialog"}=e,n=ut();n=e["aria-label"]?void 0:n;let r=m.useRef(!1);return m.useEffect(()=>{if(t.current&&!t.current.contains(document.activeElement)){re(t.current);let l=setTimeout(()=>{document.activeElement===t.current&&(r.current=!0,t.current&&(t.current.blur(),re(t.current)),r.current=!1)},500);return()=>{clearTimeout(l)}}},[t]),Ve(),{dialogProps:{...vt(e,{labelable:!0}),role:o,tabIndex:-1,"aria-labelledby":e["aria-labelledby"]||n,onBlur:l=>{r.current&&l.stopPropagation()}},titleProps:{id:n}}}function uo(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function He(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),o.push.apply(o,n)}return o}function je(e){for(var t=1;t<arguments.length;t++){var o=arguments[t]!=null?arguments[t]:{};t%2?He(Object(o),!0).forEach(function(n){uo(e,n,o[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):He(Object(o)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(o,n))})}return e}var co=(e,t,o)=>{for(var n of Object.keys(e)){var r;if(e[n]!==((r=t[n])!==null&&r!==void 0?r:o[n]))return!1}return!0},Ke=e=>t=>{var o=e.defaultClassName,n=je(je({},e.defaultVariants),t);for(var r in n){var l,a=(l=n[r])!==null&&l!==void 0?l:e.defaultVariants[r];if(a!=null){var d=a;typeof d=="boolean"&&(d=d===!0?"true":"false");var c=e.variantClassNames[r][d];c&&(o+=" "+c)}}for(var[i,s]of e.compoundVariants)co(i,n,e.defaultVariants)&&(o+=" "+s);return o},mo="pkg_sps-woodland_modal__version_8_26_8__hash_3moto2o",fo="pkg_sps-woodland_modal__version_8_26_8__hash_3moto2q",po="pkg_sps-woodland_modal__version_8_26_8__hash_3moto2r",Ue="pkg_sps-woodland_modal__version_8_26_8__hash_3moto2p",go=Ke({defaultClassName:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto20",variantClassNames:{kind:{informational:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto21",delete:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto22",failure:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto23",success:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto24",warning:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto25",successWithFailures:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto26",form:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto27"},size:{sm:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto28",md:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto29",lg:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2a",xl:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2b"},fullHeight:{true:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2c",false:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2d"}},defaultVariants:{},compoundVariants:[]}),bo="pkg_sps-woodland_modal__version_8_26_8__hash_3moto2n",vo=Ke({defaultClassName:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2e",variantClassNames:{kind:{form:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2f",delete:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2g",failure:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2h",informational:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2i",success:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2j",warning:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2k",successWithFailures:"pkg_sps-woodland_modal__version_8_26_8__hash_3moto2l"}},defaultVariants:{},compoundVariants:[]}),ho="pkg_sps-woodland_modal__version_8_26_8__hash_3moto2m",$o="pkg_sps-woodland_modal__version_8_26_8__hash_3moto2s";function me({children:e,className:t="",...o}){return u.createElement("div",{className:w.cl(Ue,t),...o},e)}w.Metadata.set(me,{name:"ModalFooter"});function Ge({dismissableValue:e,handleClose:t}){return e?u.createElement(he.Button,{"aria-label":"Close",onClick:t,kind:"icon",icon:"x",className:fo}):null}const fe=Object.freeze({form:"pencil",delete:"trash",failure:"status-error",informational:"info-circle",success:"status-ok",successWithFailures:"status-warning",warning:"status-warning"});function wo({children:e,className:t,"data-testid":o,kind:n="informational",onBlur:r,onFocus:l,overlayProps:a,size:d="sm",state:c,title:i,dismissible:s,dismissable:f=!0,onClose:p,fullHeight:b=!1,...g}){const T=s??f,N=u.useRef(null),{modalProps:ge,underlayProps:yo}=io({isKeyboardDismissDisabled:!T,...g},c,N),{dialogProps:be,titleProps:Po}=so(g,N),ko=w.combineEventHandlers(ge.onFocus,be.onFocus,l),To=w.combineEventHandlers(ge.onBlur,be.onBlur,r),{t:xo}=u.useContext(w.I18nContext),So=w.useChildTestIdAttrBuilder({"data-testid":o}),[ve,Fo]=w.selectChildren(e,[{type:me}]),Xe=u.useCallback(()=>{p&&typeof p=="function"&&p(),c.close()},[p,c.close]),Lo=w.modChildren(Fo,Je=>Je.type===Ge?[{className:w.cl(Je.props.classname,po)}]:[]);return u.createElement(lo,null,u.createElement("div",{className:$o,...yo,...g},u.createElement("div",{...ge,...be,...a,onFocus:ko,onBlur:To,...So("dialog"),ref:N,className:w.cl(go({kind:n,size:d,fullHeight:b}),t)},u.createElement("div",{...Po,className:vo({kind:n})},n&&u.createElement(w.Icon,{icon:fe[n]||fe.informational,className:bo}),u.createElement("div",{className:ho},w.contentOf(i,c.close)),u.createElement(Ge,{dismissableValue:T,handleClose:Xe})),u.createElement("div",{className:mo},w.contentOf(Lo,c.close)),ve&&ve.length>0?u.createElement(u.Fragment,null,w.contentOf(ve,c.close)):u.createElement("div",{className:Ue},u.createElement(he.Button,{kind:"key",onClick:Xe},xo("design-system:modal.defaultButtonLabel",{defaultValue:"Okay"}))))))}function pe(e){return e.state.isOpen?u.createElement(wo,{...e},e.children):u.createElement(u.Fragment,null)}w.Metadata.set(pe,{name:"Modal",props:{dismissable:{type:"boolean",default:"true"},fullHeight:{type:"boolean",default:"false"},kind:{type:"ModalKind",default:"informational"},onBlur:{type:"() => void"},onClose:{type:"() => void"},onFocus:{type:"() => void"},size:{type:"ModalSize",default:"sm"},title:{type:"string"}}});function Eo(e){let[t,o]=xt(e.isOpen,e.defaultOpen||!1,e.onOpenChange);const n=m.useCallback(()=>{o(!0)},[o]),r=m.useCallback(()=>{o(!1)},[o]),l=m.useCallback(()=>{o(!t)},[o,t]);return{isOpen:t,setOpen:o,open:n,close:r,toggle:l}}function Mo(e={}){const t=Eo(e),o=m.useRef(null),{triggerProps:n,overlayProps:r}=Zt({type:"dialog"},t,o),{onPress:l,...a}=n;return{triggerProps:{...a,onClick:l,ref:o},modalState:t,modalProps:{overlayProps:r,state:t}}}const _o={Modals:{description:()=>u.createElement("p",null,"Modals are overlays on a page that focus a user’s attention on an important message or a simple action. Examples of a Modal include confirming the deletion of a record, or making a single selection."),components:[pe],examples:{general:{label:"Usage",description:({NavigateTo:e})=>u.createElement(u.Fragment,null,u.createElement("h5",null,"Use a Modal:"),u.createElement("ul",null,u.createElement("li",null,"When the user needs to confirm a basic decision, such as deleting a record."),u.createElement("li",null,"When important information needs to be displayed to the user before continuing."),u.createElement("li",null,"When a simple selection, such as a single form input, is required before proceeding.")),u.createElement("h5",null,"Avoid a Modal:"),u.createElement("ul",null,u.createElement("li",null,"When a complex form is required. Use a ",u.createElement(e,{to:"focused-task"},"Focused Task View")," instead."),u.createElement("li",null,"When sharing non-critical or tertiary information. Use a ",u.createElement(e,{to:"growlers"},"Growler")," instead.")))},implementation:{label:"Close Button",description:()=>u.createElement(u.Fragment,null,u.createElement("h5",null,"Close Button and Modal dismissiability"),u.createElement("p",null,"Remove the Close Button in the upper right of the Modal if the user must choose the course of action before proceeding."),u.createElement("p",null,"The close button is included by default and omitted when the prop ",u.createElement("code",null,"dismissable")," is set to ",u.createElement("strong",null,"false"),"."),u.createElement("p",null,"Setting the ",u.createElement("code",null,"dismissable")," prop to false also prevents dismissing the modal by clicking outside of the modal or by using the"," ",u.createElement("strong",null,"escape")," key.")),examples:{basic:{react:v.code`
|
|
1
|
+
(function(y,w){typeof exports=="object"&&typeof module<"u"?w(exports,require("@sps-woodland/core"),require("@sps-woodland/buttons"),require("react"),require("react-dom"),require("@spscommerce/utils")):typeof define=="function"&&define.amd?define(["exports","@sps-woodland/core","@sps-woodland/buttons","react","react-dom","@spscommerce/utils"],w):(y=typeof globalThis<"u"?globalThis:y||self,w(y.Modal={},y.core,y.buttons,y.React,y.$4AOtR$reactdom,y.utils))})(this,function(y,w,he,m,Ye,v){"use strict";function Qe(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const u=Qe(m),E=typeof document<"u"?m.useLayoutEffect:()=>{};function W(e){const t=m.useRef(null);return E(()=>{t.current=e},[e]),m.useCallback((...o)=>{const n=t.current;return n==null?void 0:n(...o)},[])}function Ze(e){let[t,o]=m.useState(e),n=m.useRef(null),r=W(()=>{if(!n.current)return;let a=n.current.next();if(a.done){n.current=null;return}t===a.value?r():o(a.value)});E(()=>{n.current&&r()});let l=W(a=>{n.current=a(t),r()});return[t,l]}const j={prefix:String(Math.round(Math.random()*1e10)),current:0},$e=m.createContext(j),Re=m.createContext(!1);let et=!!(typeof window<"u"&&window.document&&window.document.createElement),R=new WeakMap;function tt(e=!1){let t=m.useContext($e),o=m.useRef(null);if(o.current===null&&!e){var n,r;let l=(r=m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)===null||r===void 0||(n=r.ReactCurrentOwner)===null||n===void 0?void 0:n.current;if(l){let a=R.get(l);a==null?R.set(l,{id:t.current,state:l.memoizedState}):l.memoizedState!==a.state&&(t.current=a.id,R.delete(l))}o.current=++t.current}return o.current}function ot(e){let t=m.useContext($e);t===j&&!et&&console.warn("When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.");let o=tt(!!e),n=t===j&&process.env.NODE_ENV==="test"?"react-aria":`react-aria${t.prefix}`;return e||`${n}-${o}`}function nt(e){let t=m.useId(),[o]=m.useState(we()),n=o||process.env.NODE_ENV==="test"?"react-aria":`react-aria${j.prefix}`;return e||`${n}-${t}`}const rt=typeof m.useId=="function"?nt:ot;function at(){return!1}function lt(){return!0}function it(e){return()=>{}}function we(){return typeof m.useSyncExternalStore=="function"?m.useSyncExternalStore(it,at,lt):m.useContext(Re)}let st=!!(typeof window<"u"&&window.document&&window.document.createElement),F=new Map;function Ee(e){let[t,o]=m.useState(e),n=m.useRef(null),r=rt(t),l=m.useCallback(a=>{n.current=a},[]);return st&&(F.has(r)&&!F.get(r).includes(l)?F.set(r,[...F.get(r),l]):F.set(r,[l])),E(()=>{let a=r;return()=>{F.delete(a)}},[r]),m.useEffect(()=>{let a=n.current;a&&(n.current=null,o(a))}),r}function dt(e,t){if(e===t)return e;let o=F.get(e);if(o)return o.forEach(r=>r(t)),t;let n=F.get(t);return n?(n.forEach(r=>r(e)),e):t}function ut(e=[]){let t=Ee(),[o,n]=Ze(t),r=m.useCallback(()=>{n(function*(){yield t,yield document.getElementById(t)?t:void 0})},[t,n]);return E(r,[t,r,...e]),o}function K(...e){return(...t)=>{for(let o of e)typeof o=="function"&&o(...t)}}const M=e=>{var t;return(t=e==null?void 0:e.ownerDocument)!==null&&t!==void 0?t:document},U=e=>e&&"window"in e&&e.window===e?e:M(e).defaultView||window;function Me(e){var t,o,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(o=Me(e[t]))&&(n&&(n+=" "),n+=o)}else for(o in e)e[o]&&(n&&(n+=" "),n+=o);return n}function ct(){for(var e,t,o=0,n="",r=arguments.length;o<r;o++)(e=arguments[o])&&(t=Me(e))&&(n&&(n+=" "),n+=t);return n}function mt(...e){let t={...e[0]};for(let o=1;o<e.length;o++){let n=e[o];for(let r in n){let l=t[r],a=n[r];typeof l=="function"&&typeof a=="function"&&r[0]==="o"&&r[1]==="n"&&r.charCodeAt(2)>=65&&r.charCodeAt(2)<=90?t[r]=K(l,a):(r==="className"||r==="UNSAFE_className")&&typeof l=="string"&&typeof a=="string"?t[r]=ct(l,a):r==="id"&&l&&a?t.id=dt(l,a):t[r]=a!==void 0?a:l}}return t}const ft=new Set(["id"]),pt=new Set(["aria-label","aria-labelledby","aria-describedby","aria-details"]),gt=new Set(["href","hrefLang","target","rel","download","ping","referrerPolicy"]),bt=/^(data-.*)$/;function vt(e,t={}){let{labelable:o,isLink:n,propNames:r}=t,l={};for(const a in e)Object.prototype.hasOwnProperty.call(e,a)&&(ft.has(a)||o&&pt.has(a)||n&>.has(a)||r!=null&&r.has(a)||bt.test(a))&&(l[a]=e[a]);return l}function _e(e){if(ht())e.focus({preventScroll:!0});else{let t=$t(e);e.focus(),wt(t)}}let G=null;function ht(){if(G==null){G=!1;try{document.createElement("div").focus({get preventScroll(){return G=!0,!0}})}catch{}}return G}function $t(e){let t=e.parentNode,o=[],n=document.scrollingElement||document.documentElement;for(;t instanceof HTMLElement&&t!==n;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&o.push({element:t,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),t=t.parentNode;return n instanceof HTMLElement&&o.push({element:n,scrollTop:n.scrollTop,scrollLeft:n.scrollLeft}),o}function wt(e){for(let{element:t,scrollTop:o,scrollLeft:n}of e)t.scrollTop=o,t.scrollLeft=n}function Et(e){var t;return typeof window>"u"||window.navigator==null?!1:((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.brands.some(o=>e.test(o.brand)))||e.test(window.navigator.userAgent)}function ee(e){var t;return typeof window<"u"&&window.navigator!=null?e.test(((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.platform)||window.navigator.platform):!1}function A(e){let t=null;return()=>(t==null&&(t=e()),t)}const ye=A(function(){return ee(/^Mac/i)}),Mt=A(function(){return ee(/^iPhone/i)}),_t=A(function(){return ee(/^iPad/i)||ye()&&navigator.maxTouchPoints>1}),yt=A(function(){return Mt()||_t()}),Pt=A(function(){return Et(/Android/i)});let O=new Map,te=new Set;function Pe(){if(typeof window>"u")return;function e(n){return"propertyName"in n}let t=n=>{if(!e(n)||!n.target)return;let r=O.get(n.target);r||(r=new Set,O.set(n.target,r),n.target.addEventListener("transitioncancel",o,{once:!0})),r.add(n.propertyName)},o=n=>{if(!e(n)||!n.target)return;let r=O.get(n.target);if(r&&(r.delete(n.propertyName),r.size===0&&(n.target.removeEventListener("transitioncancel",o),O.delete(n.target)),O.size===0)){for(let l of te)l();te.clear()}};document.body.addEventListener("transitionrun",t),document.body.addEventListener("transitionend",o)}typeof document<"u"&&(document.readyState!=="loading"?Pe():document.addEventListener("DOMContentLoaded",Pe));function kt(e){requestAnimationFrame(()=>{O.size===0?e():te.add(e)})}function ke(e,t){let o=window.getComputedStyle(e),n=/(auto|scroll)/.test(o.overflow+o.overflowX+o.overflowY);return n&&t&&(n=e.scrollHeight!==e.clientHeight||e.scrollWidth!==e.clientWidth),n}function Te(e,t){let o=e;for(ke(o,t)&&(o=o.parentElement);o&&!ke(o,t);)o=o.parentElement;return o||document.scrollingElement||document.documentElement}function Tt(e){return e.mozInputSource===0&&e.isTrusted?!0:Pt()&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function xt(e,t,o){let[n,r]=m.useState(e||t),l=m.useRef(e!==void 0),a=e!==void 0;m.useEffect(()=>{let i=l.current;i!==a&&console.warn(`WARN: A component changed from ${i?"controlled":"uncontrolled"} to ${a?"controlled":"uncontrolled"}.`),l.current=a},[a]);let d=a?e:n,c=m.useCallback((i,...s)=>{let f=(p,...b)=>{o&&(Object.is(d,p)||o(p,...b)),a||(d=p)};typeof i=="function"?(console.warn("We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320"),r((b,...g)=>{let T=i(a?d:b,...g);return f(T,...s),a?b:T})):(a||r(i),f(i,...s))},[a,d,o]);return[d,c]}const xe=m.createContext({register:()=>{}});xe.displayName="PressResponderContext";function St({children:e}){let t=m.useMemo(()=>({register:()=>{}}),[]);return m.createElement(xe.Provider,{value:t},e)}class Ft{isDefaultPrevented(){return this.nativeEvent.defaultPrevented}preventDefault(){this.defaultPrevented=!0,this.nativeEvent.preventDefault()}stopPropagation(){this.nativeEvent.stopPropagation(),this.isPropagationStopped=()=>!0}isPropagationStopped(){return!1}persist(){}constructor(t,o){this.nativeEvent=o,this.target=o.target,this.currentTarget=o.currentTarget,this.relatedTarget=o.relatedTarget,this.bubbles=o.bubbles,this.cancelable=o.cancelable,this.defaultPrevented=o.defaultPrevented,this.eventPhase=o.eventPhase,this.isTrusted=o.isTrusted,this.timeStamp=o.timeStamp,this.type=t}}function Lt(e){let t=m.useRef({isFocused:!1,observer:null});E(()=>{const n=t.current;return()=>{n.observer&&(n.observer.disconnect(),n.observer=null)}},[]);let o=W(n=>{e==null||e(n)});return m.useCallback(n=>{if(n.target instanceof HTMLButtonElement||n.target instanceof HTMLInputElement||n.target instanceof HTMLTextAreaElement||n.target instanceof HTMLSelectElement){t.current.isFocused=!0;let r=n.target,l=a=>{t.current.isFocused=!1,r.disabled&&o(new Ft("blur",a)),t.current.observer&&(t.current.observer.disconnect(),t.current.observer=null)};r.addEventListener("focusout",l,{once:!0}),t.current.observer=new MutationObserver(()=>{if(t.current.isFocused&&r.disabled){var a;(a=t.current.observer)===null||a===void 0||a.disconnect();let d=r===document.activeElement?null:document.activeElement;r.dispatchEvent(new FocusEvent("blur",{relatedTarget:d})),r.dispatchEvent(new FocusEvent("focusout",{bubbles:!0,relatedTarget:d}))}}),t.current.observer.observe(r,{attributes:!0,attributeFilter:["disabled"]})}},[o])}let I=null,Ct=new Set,z=new Map,C=!1,oe=!1;function ne(e,t){for(let o of Ct)o(e,t)}function Bt(e){return!(e.metaKey||!ye()&&e.altKey||e.ctrlKey||e.key==="Control"||e.key==="Shift"||e.key==="Meta")}function X(e){C=!0,Bt(e)&&(I="keyboard",ne("keyboard",e))}function P(e){I="pointer",(e.type==="mousedown"||e.type==="pointerdown")&&(C=!0,ne("pointer",e))}function Se(e){Tt(e)&&(C=!0,I="virtual")}function Fe(e){e.target===window||e.target===document||(!C&&!oe&&(I="virtual",ne("virtual",e)),C=!1,oe=!1)}function Le(){C=!1,oe=!0}function Ce(e){if(typeof window>"u"||z.get(U(e)))return;const t=U(e),o=M(e);let n=t.HTMLElement.prototype.focus;t.HTMLElement.prototype.focus=function(){C=!0,n.apply(this,arguments)},o.addEventListener("keydown",X,!0),o.addEventListener("keyup",X,!0),o.addEventListener("click",Se,!0),t.addEventListener("focus",Fe,!0),t.addEventListener("blur",Le,!1),typeof PointerEvent<"u"?(o.addEventListener("pointerdown",P,!0),o.addEventListener("pointermove",P,!0),o.addEventListener("pointerup",P,!0)):(o.addEventListener("mousedown",P,!0),o.addEventListener("mousemove",P,!0),o.addEventListener("mouseup",P,!0)),t.addEventListener("beforeunload",()=>{Be(e)},{once:!0}),z.set(t,{focus:n})}const Be=(e,t)=>{const o=U(e),n=M(e);t&&n.removeEventListener("DOMContentLoaded",t),z.has(o)&&(o.HTMLElement.prototype.focus=z.get(o).focus,n.removeEventListener("keydown",X,!0),n.removeEventListener("keyup",X,!0),n.removeEventListener("click",Se,!0),o.removeEventListener("focus",Fe,!0),o.removeEventListener("blur",Le,!1),typeof PointerEvent<"u"?(n.removeEventListener("pointerdown",P,!0),n.removeEventListener("pointermove",P,!0),n.removeEventListener("pointerup",P,!0)):(n.removeEventListener("mousedown",P,!0),n.removeEventListener("mousemove",P,!0),n.removeEventListener("mouseup",P,!0)),z.delete(o))};function Nt(e){const t=M(e);let o;return t.readyState!=="loading"?Ce(e):(o=()=>{Ce(e)},t.addEventListener("DOMContentLoaded",o)),()=>Be(e,o)}typeof document<"u"&&Nt();function Ot(){return I}function Dt(e){let{isDisabled:t,onBlurWithin:o,onFocusWithin:n,onFocusWithinChange:r}=e,l=m.useRef({isFocusWithin:!1}),a=m.useCallback(i=>{l.current.isFocusWithin&&!i.currentTarget.contains(i.relatedTarget)&&(l.current.isFocusWithin=!1,o&&o(i),r&&r(!1))},[o,r,l]),d=Lt(a),c=m.useCallback(i=>{!l.current.isFocusWithin&&document.activeElement===i.target&&(n&&n(i),r&&r(!0),l.current.isFocusWithin=!0,d(i))},[n,r,d]);return t?{focusWithinProps:{onFocus:void 0,onBlur:void 0}}:{focusWithinProps:{onFocus:c,onBlur:a}}}function Wt(e){let{ref:t,onInteractOutside:o,isDisabled:n,onInteractOutsideStart:r}=e,l=m.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}),a=W(c=>{o&&J(c,t)&&(r&&r(c),l.current.isPointerDown=!0)}),d=W(c=>{o&&o(c)});m.useEffect(()=>{let c=l.current;if(n)return;const i=t.current,s=M(i);if(typeof PointerEvent<"u"){let f=p=>{c.isPointerDown&&J(p,t)&&d(p),c.isPointerDown=!1};return s.addEventListener("pointerdown",a,!0),s.addEventListener("pointerup",f,!0),()=>{s.removeEventListener("pointerdown",a,!0),s.removeEventListener("pointerup",f,!0)}}else{let f=b=>{c.ignoreEmulatedMouseEvents?c.ignoreEmulatedMouseEvents=!1:c.isPointerDown&&J(b,t)&&d(b),c.isPointerDown=!1},p=b=>{c.ignoreEmulatedMouseEvents=!0,c.isPointerDown&&J(b,t)&&d(b),c.isPointerDown=!1};return s.addEventListener("mousedown",a,!0),s.addEventListener("mouseup",f,!0),s.addEventListener("touchstart",a,!0),s.addEventListener("touchend",p,!0),()=>{s.removeEventListener("mousedown",a,!0),s.removeEventListener("mouseup",f,!0),s.removeEventListener("touchstart",a,!0),s.removeEventListener("touchend",p,!0)}}},[t,n,a,d])}function J(e,t){if(e.button>0)return!1;if(e.target){const o=e.target.ownerDocument;if(!o||!o.documentElement.contains(e.target)||e.target.closest("[data-react-aria-top-layer]"))return!1}return t.current&&!t.current.contains(e.target)}function re(e){const t=M(e);if(Ot()==="virtual"){let o=t.activeElement;kt(()=>{t.activeElement===o&&e.isConnected&&_e(e)})}else _e(e)}function At(e){const t=U(e);if(!(e instanceof t.HTMLElement)&&!(e instanceof t.SVGElement))return!1;let{display:o,visibility:n}=e.style,r=o!=="none"&&n!=="hidden"&&n!=="collapse";if(r){const{getComputedStyle:l}=e.ownerDocument.defaultView;let{display:a,visibility:d}=l(e);r=a!=="none"&&d!=="hidden"&&d!=="collapse"}return r}function It(e,t){return!e.hasAttribute("hidden")&&!e.hasAttribute("data-react-aria-prevent-focus")&&(e.nodeName==="DETAILS"&&t&&t.nodeName!=="SUMMARY"?e.hasAttribute("open"):!0)}function Ne(e,t){return e.nodeName!=="#comment"&&At(e)&&It(e,t)&&(!e.parentElement||Ne(e.parentElement,e))}const Oe=m.createContext(null),ae="react-aria-focus-scope-restore";let h=null;function zt(e){let{children:t,contain:o,restoreFocus:n,autoFocus:r}=e,l=m.useRef(null),a=m.useRef(null),d=m.useRef([]),{parentNode:c}=m.useContext(Oe)||{},i=m.useMemo(()=>new de({scopeRef:d}),[d]);E(()=>{let p=c||$.root;if($.getTreeNode(p.scopeRef)&&h&&!Q(h,p.scopeRef)){let b=$.getTreeNode(h);b&&(p=b)}p.addChild(i),$.addNode(i)},[i,c]),E(()=>{let p=$.getTreeNode(d);p&&(p.contain=!!o)},[o]),E(()=>{var p;let b=(p=l.current)===null||p===void 0?void 0:p.nextSibling,g=[],T=N=>N.stopPropagation();for(;b&&b!==a.current;)g.push(b),b.addEventListener(ae,T),b=b.nextSibling;return d.current=g,()=>{for(let N of g)N.removeEventListener(ae,T)}},[t]),Gt(d,n,o),jt(d,o),Jt(d,n,o),Ut(d,r),m.useEffect(()=>{const p=M(d.current?d.current[0]:void 0).activeElement;let b=null;if(_(p,d.current)){for(let g of $.traverse())g.scopeRef&&_(p,g.scopeRef.current)&&(b=g);b===$.getTreeNode(d)&&(h=b.scopeRef)}},[d]),E(()=>()=>{var p,b,g;let T=(g=(b=$.getTreeNode(d))===null||b===void 0||(p=b.parent)===null||p===void 0?void 0:p.scopeRef)!==null&&g!==void 0?g:null;(d===h||Q(d,h))&&(!T||$.getTreeNode(T))&&(h=T),$.removeTreeNode(d)},[d]);let s=m.useMemo(()=>qt(d),[]),f=m.useMemo(()=>({focusManager:s,parentNode:i}),[i,s]);return m.createElement(Oe.Provider,{value:f},m.createElement("span",{"data-focus-scope-start":!0,hidden:!0,ref:l}),t,m.createElement("span",{"data-focus-scope-end":!0,hidden:!0,ref:a}))}function qt(e){return{focusNext(t={}){let o=e.current,{from:n,tabbable:r,wrap:l,accept:a}=t,d=n||M(o[0]).activeElement,c=o[0].previousElementSibling,i=B(o),s=L(i,{tabbable:r,accept:a},o);s.currentNode=_(d,o)?d:c;let f=s.nextNode();return!f&&l&&(s.currentNode=c,f=s.nextNode()),f&&x(f,!0),f},focusPrevious(t={}){let o=e.current,{from:n,tabbable:r,wrap:l,accept:a}=t,d=n||M(o[0]).activeElement,c=o[o.length-1].nextElementSibling,i=B(o),s=L(i,{tabbable:r,accept:a},o);s.currentNode=_(d,o)?d:c;let f=s.previousNode();return!f&&l&&(s.currentNode=c,f=s.previousNode()),f&&x(f,!0),f},focusFirst(t={}){let o=e.current,{tabbable:n,accept:r}=t,l=B(o),a=L(l,{tabbable:n,accept:r},o);a.currentNode=o[0].previousElementSibling;let d=a.nextNode();return d&&x(d,!0),d},focusLast(t={}){let o=e.current,{tabbable:n,accept:r}=t,l=B(o),a=L(l,{tabbable:n,accept:r},o);a.currentNode=o[o.length-1].nextElementSibling;let d=a.previousNode();return d&&x(d,!0),d}}}const le=["input:not([disabled]):not([type=hidden])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[contenteditable]"],Vt=le.join(":not([hidden]),")+",[tabindex]:not([disabled]):not([hidden])";le.push('[tabindex]:not([tabindex="-1"]):not([disabled])');const Ht=le.join(':not([hidden]):not([tabindex="-1"]),');function B(e){return e[0].parentElement}function q(e){let t=$.getTreeNode(h);for(;t&&t.scopeRef!==e;){if(t.contain)return!1;t=t.parent}return!0}function jt(e,t){let o=m.useRef(void 0),n=m.useRef(void 0);E(()=>{let r=e.current;if(!t){n.current&&(cancelAnimationFrame(n.current),n.current=void 0);return}const l=M(r?r[0]:void 0);let a=i=>{if(i.key!=="Tab"||i.altKey||i.ctrlKey||i.metaKey||!q(e)||i.isComposing)return;let s=l.activeElement,f=e.current;if(!f||!_(s,f))return;let p=B(f),b=L(p,{tabbable:!0},f);if(!s)return;b.currentNode=s;let g=i.shiftKey?b.previousNode():b.nextNode();g||(b.currentNode=i.shiftKey?f[f.length-1].nextElementSibling:f[0].previousElementSibling,g=i.shiftKey?b.previousNode():b.nextNode()),i.preventDefault(),g&&x(g,!0)},d=i=>{(!h||Q(h,e))&&_(i.target,e.current)?(h=e,o.current=i.target):q(e)&&!Y(i.target,e)?o.current?o.current.focus():h&&h.current&&ie(h.current):q(e)&&(o.current=i.target)},c=i=>{n.current&&cancelAnimationFrame(n.current),n.current=requestAnimationFrame(()=>{if(l.activeElement&&q(e)&&!Y(l.activeElement,e))if(h=e,l.body.contains(i.target)){var s;o.current=i.target,(s=o.current)===null||s===void 0||s.focus()}else h.current&&ie(h.current)})};return l.addEventListener("keydown",a,!1),l.addEventListener("focusin",d,!1),r==null||r.forEach(i=>i.addEventListener("focusin",d,!1)),r==null||r.forEach(i=>i.addEventListener("focusout",c,!1)),()=>{l.removeEventListener("keydown",a,!1),l.removeEventListener("focusin",d,!1),r==null||r.forEach(i=>i.removeEventListener("focusin",d,!1)),r==null||r.forEach(i=>i.removeEventListener("focusout",c,!1))}},[e,t]),E(()=>()=>{n.current&&cancelAnimationFrame(n.current)},[n])}function De(e){return Y(e)}function _(e,t){return!e||!t?!1:t.some(o=>o.contains(e))}function Y(e,t=null){if(e instanceof Element&&e.closest("[data-react-aria-top-layer]"))return!0;for(let{scopeRef:o}of $.traverse($.getTreeNode(t)))if(o&&_(e,o.current))return!0;return!1}function Kt(e){return Y(e,h)}function Q(e,t){var o;let n=(o=$.getTreeNode(t))===null||o===void 0?void 0:o.parent;for(;n;){if(n.scopeRef===e)return!0;n=n.parent}return!1}function x(e,t=!1){if(e!=null&&!t)try{re(e)}catch{}else if(e!=null)try{e.focus()}catch{}}function We(e,t=!0){let o=e[0].previousElementSibling,n=B(e),r=L(n,{tabbable:t},e);r.currentNode=o;let l=r.nextNode();return t&&!l&&(n=B(e),r=L(n,{tabbable:!1},e),r.currentNode=o,l=r.nextNode()),l}function ie(e,t=!0){x(We(e,t))}function Ut(e,t){const o=m.useRef(t);m.useEffect(()=>{if(o.current){h=e;const n=M(e.current?e.current[0]:void 0);!_(n.activeElement,h.current)&&e.current&&ie(e.current)}o.current=!1},[e])}function Gt(e,t,o){E(()=>{if(t||o)return;let n=e.current;const r=M(n?n[0]:void 0);let l=a=>{let d=a.target;_(d,e.current)?h=e:De(d)||(h=null)};return r.addEventListener("focusin",l,!1),n==null||n.forEach(a=>a.addEventListener("focusin",l,!1)),()=>{r.removeEventListener("focusin",l,!1),n==null||n.forEach(a=>a.removeEventListener("focusin",l,!1))}},[e,t,o])}function Xt(e){let t=$.getTreeNode(h);for(;t&&t.scopeRef!==e;){if(t.nodeToRestore)return!1;t=t.parent}return(t==null?void 0:t.scopeRef)===e}function Jt(e,t,o){const n=m.useRef(typeof document<"u"?M(e.current?e.current[0]:void 0).activeElement:null);E(()=>{let r=e.current;const l=M(r?r[0]:void 0);if(!t||o)return;let a=()=>{(!h||Q(h,e))&&_(l.activeElement,e.current)&&(h=e)};return l.addEventListener("focusin",a,!1),r==null||r.forEach(d=>d.addEventListener("focusin",a,!1)),()=>{l.removeEventListener("focusin",a,!1),r==null||r.forEach(d=>d.removeEventListener("focusin",a,!1))}},[e,o]),E(()=>{const r=M(e.current?e.current[0]:void 0);if(!t)return;let l=a=>{if(a.key!=="Tab"||a.altKey||a.ctrlKey||a.metaKey||!q(e)||a.isComposing)return;let d=r.activeElement;if(!_(d,e.current))return;let c=$.getTreeNode(e);if(!c)return;let i=c.nodeToRestore,s=L(r.body,{tabbable:!0});s.currentNode=d;let f=a.shiftKey?s.previousNode():s.nextNode();if((!i||!r.body.contains(i)||i===r.body)&&(i=void 0,c.nodeToRestore=void 0),(!f||!_(f,e.current))&&i){s.currentNode=i;do f=a.shiftKey?s.previousNode():s.nextNode();while(_(f,e.current));a.preventDefault(),a.stopPropagation(),f?x(f,!0):De(i)?x(i,!0):d.blur()}};return o||r.addEventListener("keydown",l,!0),()=>{o||r.removeEventListener("keydown",l,!0)}},[e,t,o]),E(()=>{const r=M(e.current?e.current[0]:void 0);if(!t)return;let l=$.getTreeNode(e);if(l){var a;return l.nodeToRestore=(a=n.current)!==null&&a!==void 0?a:void 0,()=>{let d=$.getTreeNode(e);if(!d)return;let c=d.nodeToRestore;if(t&&c&&(_(r.activeElement,e.current)||r.activeElement===r.body&&Xt(e))){let i=$.clone();requestAnimationFrame(()=>{if(r.activeElement===r.body){let s=i.getTreeNode(e);for(;s;){if(s.nodeToRestore&&s.nodeToRestore.isConnected){Ae(s.nodeToRestore);return}s=s.parent}for(s=i.getTreeNode(e);s;){if(s.scopeRef&&s.scopeRef.current&&$.getTreeNode(s.scopeRef)){let f=We(s.scopeRef.current,!0);Ae(f);return}s=s.parent}}})}}}},[e,t])}function Ae(e){e.dispatchEvent(new CustomEvent(ae,{bubbles:!0,cancelable:!0}))&&x(e)}function L(e,t,o){let n=t!=null&&t.tabbable?Ht:Vt,r=M(e).createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode(l){var a;return!(t==null||(a=t.from)===null||a===void 0)&&a.contains(l)?NodeFilter.FILTER_REJECT:l.matches(n)&&Ne(l)&&(!o||_(l,o))&&(!(t!=null&&t.accept)||t.accept(l))?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});return t!=null&&t.from&&(r.currentNode=t.from),r}class se{get size(){return this.fastMap.size}getTreeNode(t){return this.fastMap.get(t)}addTreeNode(t,o,n){let r=this.fastMap.get(o??null);if(!r)return;let l=new de({scopeRef:t});r.addChild(l),l.parent=r,this.fastMap.set(t,l),n&&(l.nodeToRestore=n)}addNode(t){this.fastMap.set(t.scopeRef,t)}removeTreeNode(t){if(t===null)return;let o=this.fastMap.get(t);if(!o)return;let n=o.parent;for(let l of this.traverse())l!==o&&o.nodeToRestore&&l.nodeToRestore&&o.scopeRef&&o.scopeRef.current&&_(l.nodeToRestore,o.scopeRef.current)&&(l.nodeToRestore=o.nodeToRestore);let r=o.children;n&&(n.removeChild(o),r.size>0&&r.forEach(l=>n&&n.addChild(l))),this.fastMap.delete(o.scopeRef)}*traverse(t=this.root){if(t.scopeRef!=null&&(yield t),t.children.size>0)for(let o of t.children)yield*this.traverse(o)}clone(){var t;let o=new se;var n;for(let r of this.traverse())o.addTreeNode(r.scopeRef,(n=(t=r.parent)===null||t===void 0?void 0:t.scopeRef)!==null&&n!==void 0?n:null,r.nodeToRestore);return o}constructor(){this.fastMap=new Map,this.root=new de({scopeRef:null}),this.fastMap.set(null,this.root)}}class de{addChild(t){this.children.add(t),t.parent=this}removeChild(t){this.children.delete(t),t.parent=void 0}constructor(t){this.children=new Set,this.contain=!1,this.scopeRef=t.scopeRef}}let $=new se;const Yt=new WeakMap,S=[];function Qt(e,t){let{onClose:o,shouldCloseOnBlur:n,isOpen:r,isDismissable:l=!1,isKeyboardDismissDisabled:a=!1,shouldCloseOnInteractOutside:d}=e;m.useEffect(()=>(r&&S.push(t),()=>{let g=S.indexOf(t);g>=0&&S.splice(g,1)}),[r,t]);let c=()=>{S[S.length-1]===t&&o&&o()},i=g=>{(!d||d(g.target))&&S[S.length-1]===t&&(g.stopPropagation(),g.preventDefault())},s=g=>{(!d||d(g.target))&&(S[S.length-1]===t&&(g.stopPropagation(),g.preventDefault()),c())},f=g=>{g.key==="Escape"&&!a&&!g.nativeEvent.isComposing&&(g.stopPropagation(),g.preventDefault(),c())};Wt({ref:t,onInteractOutside:l&&r?s:null,onInteractOutsideStart:i});let{focusWithinProps:p}=Dt({isDisabled:!n,onBlurWithin:g=>{!g.relatedTarget||Kt(g.relatedTarget)||(!d||d(g.relatedTarget))&&o()}}),b=g=>{g.target===g.currentTarget&&g.preventDefault()};return{overlayProps:{onKeyDown:f,...p},underlayProps:{onPointerDown:b}}}function Zt(e,t,o){let{isOpen:n}=t;m.useEffect(()=>{o&&o.current&&Yt.set(o.current,t.close)});let r,l=Ee();return{triggerProps:{"aria-haspopup":r,"aria-expanded":n,"aria-controls":n?l:null,onPress:t.toggle},overlayProps:{id:l}}}const ue=typeof document<"u"&&window.visualViewport,Rt=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let Z=0,ce;function eo(e={}){let{isDisabled:t}=e;E(()=>{if(!t)return Z++,Z===1&&(yt()?ce=oo():ce=to()),()=>{Z--,Z===0&&ce()}},[t])}function to(){return K(D(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`),D(document.documentElement,"overflow","hidden"))}function oo(){let e,t,o=i=>{e=Te(i.target,!0),!(e===document.documentElement&&e===document.body)&&e instanceof HTMLElement&&window.getComputedStyle(e).overscrollBehavior==="auto"&&(t=D(e,"overscrollBehavior","contain"))},n=i=>{if(!e||e===document.documentElement||e===document.body){i.preventDefault();return}e.scrollHeight===e.clientHeight&&e.scrollWidth===e.clientWidth&&i.preventDefault()},r=i=>{let s=i.target;ze(s)&&s!==document.activeElement&&(i.preventDefault(),d(),s.style.transform="translateY(-2000px)",s.focus(),requestAnimationFrame(()=>{s.style.transform=""})),t&&t()},l=i=>{let s=i.target;ze(s)&&(d(),s.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{s.style.transform="",ue&&(ue.height<window.innerHeight?requestAnimationFrame(()=>{Ie(s)}):ue.addEventListener("resize",()=>Ie(s),{once:!0}))}))},a=null,d=()=>{if(a)return;let i=()=>{window.scrollTo(0,0)},s=window.pageXOffset,f=window.pageYOffset;a=K(V(window,"scroll",i),D(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`),D(document.documentElement,"overflow","hidden"),D(document.body,"marginTop",`-${f}px`),()=>{window.scrollTo(s,f)}),window.scrollTo(0,0)},c=K(V(document,"touchstart",o,{passive:!1,capture:!0}),V(document,"touchmove",n,{passive:!1,capture:!0}),V(document,"touchend",r,{passive:!1,capture:!0}),V(document,"focus",l,!0));return()=>{t==null||t(),a==null||a(),c()}}function D(e,t,o){let n=e.style[t];return e.style[t]=o,()=>{e.style[t]=n}}function V(e,t,o,n){return e.addEventListener(t,o,n),()=>{e.removeEventListener(t,o,n)}}function Ie(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let o=Te(e);if(o!==document.documentElement&&o!==document.body&&o!==e){let n=o.getBoundingClientRect().top,r=e.getBoundingClientRect().top;r>n+e.clientHeight&&(o.scrollTop+=r-n)}e=o.parentElement}}function ze(e){return e instanceof HTMLInputElement&&!Rt.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}let H=new WeakMap,k=[];function no(e,t=document.body){let o=new Set(e),n=new Set,r=c=>{for(let p of c.querySelectorAll("[data-live-announcer], [data-react-aria-top-layer]"))o.add(p);let i=p=>{if(o.has(p)||n.has(p.parentElement)&&p.parentElement.getAttribute("role")!=="row")return NodeFilter.FILTER_REJECT;for(let b of o)if(p.contains(b))return NodeFilter.FILTER_SKIP;return NodeFilter.FILTER_ACCEPT},s=document.createTreeWalker(c,NodeFilter.SHOW_ELEMENT,{acceptNode:i}),f=i(c);if(f===NodeFilter.FILTER_ACCEPT&&l(c),f!==NodeFilter.FILTER_REJECT){let p=s.nextNode();for(;p!=null;)l(p),p=s.nextNode()}},l=c=>{var i;let s=(i=H.get(c))!==null&&i!==void 0?i:0;c.getAttribute("aria-hidden")==="true"&&s===0||(s===0&&c.setAttribute("aria-hidden","true"),n.add(c),H.set(c,s+1))};k.length&&k[k.length-1].disconnect(),r(t);let a=new MutationObserver(c=>{for(let i of c)if(!(i.type!=="childList"||i.addedNodes.length===0)&&![...o,...n].some(s=>s.contains(i.target))){for(let s of i.removedNodes)s instanceof Element&&(o.delete(s),n.delete(s));for(let s of i.addedNodes)(s instanceof HTMLElement||s instanceof SVGElement)&&(s.dataset.liveAnnouncer==="true"||s.dataset.reactAriaTopLayer==="true")?o.add(s):s instanceof Element&&r(s)}});a.observe(t,{childList:!0,subtree:!0});let d={observe(){a.observe(t,{childList:!0,subtree:!0})},disconnect(){a.disconnect()}};return k.push(d),()=>{a.disconnect();for(let c of n){let i=H.get(c);i===1?(c.removeAttribute("aria-hidden"),H.delete(c)):H.set(c,i-1)}d===k[k.length-1]?(k.pop(),k.length&&k[k.length-1].observe()):k.splice(k.indexOf(d),1)}}const ro=m.createContext({});function ao(){var e;return(e=m.useContext(ro))!==null&&e!==void 0?e:{}}const qe=m.createContext(null);function lo(e){let t=we(),{portalContainer:o=t?null:document.body,isExiting:n}=e,[r,l]=m.useState(!1),a=m.useMemo(()=>({contain:r,setContain:l}),[r,l]),{getContainer:d}=ao();if(!e.portalContainer&&d&&(o=d()),!o)return null;let c=e.children;return e.disableFocusManagement||(c=m.createElement(zt,{restoreFocus:!0,contain:r&&!n},c)),c=m.createElement(qe.Provider,{value:a},m.createElement(St,null,c)),Ye.createPortal(c,o)}function Ve(){let e=m.useContext(qe),t=e==null?void 0:e.setContain;E(()=>{t==null||t(!0)},[t])}function io(e,t,o){let{overlayProps:n,underlayProps:r}=Qt({...e,isOpen:t.isOpen,onClose:t.close},o);return eo({isDisabled:!t.isOpen}),Ve(),m.useEffect(()=>{if(t.isOpen)return no([o.current])},[t.isOpen,o]),{modalProps:mt(n),underlayProps:r}}function so(e,t){let{role:o="dialog"}=e,n=ut();n=e["aria-label"]?void 0:n;let r=m.useRef(!1);return m.useEffect(()=>{if(t.current&&!t.current.contains(document.activeElement)){re(t.current);let l=setTimeout(()=>{document.activeElement===t.current&&(r.current=!0,t.current&&(t.current.blur(),re(t.current)),r.current=!1)},500);return()=>{clearTimeout(l)}}},[t]),Ve(),{dialogProps:{...vt(e,{labelable:!0}),role:o,tabIndex:-1,"aria-labelledby":e["aria-labelledby"]||n,onBlur:l=>{r.current&&l.stopPropagation()}},titleProps:{id:n}}}function uo(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function He(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),o.push.apply(o,n)}return o}function je(e){for(var t=1;t<arguments.length;t++){var o=arguments[t]!=null?arguments[t]:{};t%2?He(Object(o),!0).forEach(function(n){uo(e,n,o[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):He(Object(o)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(o,n))})}return e}var co=(e,t,o)=>{for(var n of Object.keys(e)){var r;if(e[n]!==((r=t[n])!==null&&r!==void 0?r:o[n]))return!1}return!0},Ke=e=>t=>{var o=e.defaultClassName,n=je(je({},e.defaultVariants),t);for(var r in n){var l,a=(l=n[r])!==null&&l!==void 0?l:e.defaultVariants[r];if(a!=null){var d=a;typeof d=="boolean"&&(d=d===!0?"true":"false");var c=e.variantClassNames[r][d];c&&(o+=" "+c)}}for(var[i,s]of e.compoundVariants)co(i,n,e.defaultVariants)&&(o+=" "+s);return o},mo="pkg_sps-woodland_modal__version_8_27_2__hash_3moto2o",fo="pkg_sps-woodland_modal__version_8_27_2__hash_3moto2q",po="pkg_sps-woodland_modal__version_8_27_2__hash_3moto2r",Ue="pkg_sps-woodland_modal__version_8_27_2__hash_3moto2p",go=Ke({defaultClassName:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto20",variantClassNames:{kind:{informational:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto21",delete:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto22",failure:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto23",success:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto24",warning:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto25",successWithFailures:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto26",form:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto27"},size:{sm:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto28",md:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto29",lg:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2a",xl:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2b"},fullHeight:{true:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2c",false:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2d"}},defaultVariants:{},compoundVariants:[]}),bo="pkg_sps-woodland_modal__version_8_27_2__hash_3moto2n",vo=Ke({defaultClassName:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2e",variantClassNames:{kind:{form:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2f",delete:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2g",failure:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2h",informational:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2i",success:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2j",warning:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2k",successWithFailures:"pkg_sps-woodland_modal__version_8_27_2__hash_3moto2l"}},defaultVariants:{},compoundVariants:[]}),ho="pkg_sps-woodland_modal__version_8_27_2__hash_3moto2m",$o="pkg_sps-woodland_modal__version_8_27_2__hash_3moto2s";function me({children:e,className:t="",...o}){return u.createElement("div",{className:w.cl(Ue,t),...o},e)}w.Metadata.set(me,{name:"ModalFooter"});function Ge({dismissableValue:e,handleClose:t}){return e?u.createElement(he.Button,{"aria-label":"Close",onClick:t,kind:"icon",icon:"x",className:fo}):null}const fe=Object.freeze({form:"pencil",delete:"trash",failure:"status-error",informational:"info-circle",success:"status-ok",successWithFailures:"status-warning",warning:"status-warning"});function wo({children:e,className:t,"data-testid":o,kind:n="informational",onBlur:r,onFocus:l,overlayProps:a,size:d="sm",state:c,title:i,dismissible:s,dismissable:f=!0,onClose:p,fullHeight:b=!1,...g}){const T=s??f,N=u.useRef(null),{modalProps:ge,underlayProps:yo}=io({isKeyboardDismissDisabled:!T,...g},c,N),{dialogProps:be,titleProps:Po}=so(g,N),ko=w.combineEventHandlers(ge.onFocus,be.onFocus,l),To=w.combineEventHandlers(ge.onBlur,be.onBlur,r),{t:xo}=u.useContext(w.I18nContext),So=w.useChildTestIdAttrBuilder({"data-testid":o}),[ve,Fo]=w.selectChildren(e,[{type:me}]),Xe=u.useCallback(()=>{p&&typeof p=="function"&&p(),c.close()},[p,c.close]),Lo=w.modChildren(Fo,Je=>Je.type===Ge?[{className:w.cl(Je.props.classname,po)}]:[]);return u.createElement(lo,null,u.createElement("div",{className:$o,...yo,...g},u.createElement("div",{...ge,...be,...a,onFocus:ko,onBlur:To,...So("dialog"),ref:N,className:w.cl(go({kind:n,size:d,fullHeight:b}),t)},u.createElement("div",{...Po,className:vo({kind:n})},n&&u.createElement(w.Icon,{icon:fe[n]||fe.informational,className:bo}),u.createElement("div",{className:ho},w.contentOf(i,c.close)),u.createElement(Ge,{dismissableValue:T,handleClose:Xe})),u.createElement("div",{className:mo},w.contentOf(Lo,c.close)),ve&&ve.length>0?u.createElement(u.Fragment,null,w.contentOf(ve,c.close)):u.createElement("div",{className:Ue},u.createElement(he.Button,{kind:"key",onClick:Xe},xo("design-system:modal.defaultButtonLabel",{defaultValue:"Okay"}))))))}function pe(e){return e.state.isOpen?u.createElement(wo,{...e},e.children):u.createElement(u.Fragment,null)}w.Metadata.set(pe,{name:"Modal",props:{dismissable:{type:"boolean",default:"true"},fullHeight:{type:"boolean",default:"false"},kind:{type:"ModalKind",default:"informational"},onBlur:{type:"() => void"},onClose:{type:"() => void"},onFocus:{type:"() => void"},size:{type:"ModalSize",default:"sm"},title:{type:"string"}}});function Eo(e){let[t,o]=xt(e.isOpen,e.defaultOpen||!1,e.onOpenChange);const n=m.useCallback(()=>{o(!0)},[o]),r=m.useCallback(()=>{o(!1)},[o]),l=m.useCallback(()=>{o(!t)},[o,t]);return{isOpen:t,setOpen:o,open:n,close:r,toggle:l}}function Mo(e={}){const t=Eo(e),o=m.useRef(null),{triggerProps:n,overlayProps:r}=Zt({},t,o),{onPress:l,...a}=n;return{triggerProps:{...a,onClick:l,ref:o},modalState:t,modalProps:{overlayProps:r,state:t}}}const _o={Modals:{description:()=>u.createElement("p",null,"Modals are overlays on a page that focus a user’s attention on an important message or a simple action. Examples of a Modal include confirming the deletion of a record, or making a single selection."),components:[pe],examples:{general:{label:"Usage",description:({NavigateTo:e})=>u.createElement(u.Fragment,null,u.createElement("h5",null,"Use a Modal:"),u.createElement("ul",null,u.createElement("li",null,"When the user needs to confirm a basic decision, such as deleting a record."),u.createElement("li",null,"When important information needs to be displayed to the user before continuing."),u.createElement("li",null,"When a simple selection, such as a single form input, is required before proceeding.")),u.createElement("h5",null,"Avoid a Modal:"),u.createElement("ul",null,u.createElement("li",null,"When a complex form is required. Use a ",u.createElement(e,{to:"focused-task"},"Focused Task View")," instead."),u.createElement("li",null,"When sharing non-critical or tertiary information. Use a ",u.createElement(e,{to:"growlers"},"Growler")," instead.")))},implementation:{label:"Close Button",description:()=>u.createElement(u.Fragment,null,u.createElement("h5",null,"Close Button and Modal dismissiability"),u.createElement("p",null,"Remove the Close Button in the upper right of the Modal if the user must choose the course of action before proceeding."),u.createElement("p",null,"The close button is included by default and omitted when the prop ",u.createElement("code",null,"dismissable")," is set to ",u.createElement("strong",null,"false"),"."),u.createElement("p",null,"Setting the ",u.createElement("code",null,"dismissable")," prop to false also prevents dismissing the modal by clicking outside of the modal or by using the"," ",u.createElement("strong",null,"escape")," key.")),examples:{basic:{react:v.code`
|
|
2
2
|
import { Modal, ModalFooter, useModal } from "@sps-woodland/modal";
|
|
3
3
|
import { sprinkles } from "@sps-woodland/tokens";
|
|
4
4
|
import { Button } from "@sps-woodland/buttons";
|
package/lib/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.pkg_sps-
|
|
1
|
+
.pkg_sps-woodland_modal__version_8_27_2__hash_3moto20{background-color:#fff;border-style:solid;border-width:.0625rem;border-radius:.25rem;display:flex;flex-direction:column;overflow:hidden;max-height:100%}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto21{border-color:#027db8}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto22,.pkg_sps-woodland_modal__version_8_27_2__hash_3moto23{border-color:#de012e}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto24{border-color:#0b8940}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto25,.pkg_sps-woodland_modal__version_8_27_2__hash_3moto26{border-color:#e77609}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto27{border-color:#4b5356}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto28{width:23.75rem}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto29{width:36.25rem}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2a{width:48.75rem}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2b{width:73.75rem}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2c{height:100%}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2e{align-items:center;color:#fff;display:flex;padding:1rem}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2f{background-color:#4b5356}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2g,.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2h{background-color:#de012e}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2i{background-color:#027db8}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2j{background-color:#0b8940}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2k,.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2l{background-color:#e77609}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2m{flex-grow:1;font-size:.875rem;font-weight:600;line-height:1.25rem}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2n{font-weight:600;line-height:.875rem;font-size:.875rem;margin-right:.5rem}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2o{overflow-y:auto;padding:1rem;flex:1}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2p{align-items:center;background-color:#f3f4f4;display:flex;justify-content:flex-end;padding:.5rem}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2q{color:#fff;border-width:0}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2r{padding:0 .25rem}.pkg_sps-woodland_modal__version_8_27_2__hash_3moto2s{position:fixed;z-index:1000;top:0;left:0;bottom:0;right:0;background:#f3f4f4cc;display:flex;align-items:start;justify-content:center;padding:4rem 1rem 1rem}.z-stratum-dropdown{z-index:1100}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sps-woodland/modal",
|
|
3
3
|
"description": "SPS Woodland Design System modal component",
|
|
4
|
-
"version": "8.
|
|
4
|
+
"version": "8.27.2",
|
|
5
5
|
"author": "SPS Commerce",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"repository": "https://github.com/SPSCommerce/woodland/tree/main/packages/@sps-woodland/modal",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"@spscommerce/utils": "^7.0.0",
|
|
30
30
|
"react": "^16.9.0",
|
|
31
31
|
"react-dom": "^16.9.0",
|
|
32
|
-
"@sps-woodland/buttons": "8.
|
|
33
|
-
"@sps-woodland/core": "8.
|
|
34
|
-
"@sps-woodland/tokens": "8.
|
|
32
|
+
"@sps-woodland/buttons": "8.27.2",
|
|
33
|
+
"@sps-woodland/core": "8.27.2",
|
|
34
|
+
"@sps-woodland/tokens": "8.27.2"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@spscommerce/utils": "^7.0.0",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"@vanilla-extract/vite-plugin": "^3.6.0",
|
|
43
43
|
"react": "^16.9.0",
|
|
44
44
|
"react-dom": "^16.9.0",
|
|
45
|
-
"@sps-woodland/buttons": "8.
|
|
46
|
-
"@sps-woodland/core": "8.
|
|
47
|
-
"@sps-woodland/tokens": "8.
|
|
45
|
+
"@sps-woodland/buttons": "8.27.2",
|
|
46
|
+
"@sps-woodland/core": "8.27.2",
|
|
47
|
+
"@sps-woodland/tokens": "8.27.2"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"react-aria": "^3.21.0",
|