frey-ui 1.1.0 → 1.2.1
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/README.md +1 -1
- package/dist/cjs/Calendar/calendar.css +216 -0
- package/dist/cjs/Calendar/calendar.module.css.cjs +10 -0
- package/dist/cjs/Calendar/calendar.module.css.cjs.map +1 -0
- package/dist/cjs/Calendar/calendarInteractions.cjs +34 -0
- package/dist/cjs/Calendar/calendarInteractions.cjs.map +1 -0
- package/dist/cjs/Calendar/calendarModel.cjs +232 -0
- package/dist/cjs/Calendar/calendarModel.cjs.map +1 -0
- package/dist/cjs/Calendar/index.cjs +204 -0
- package/dist/cjs/Calendar/index.cjs.map +1 -0
- package/dist/cjs/DateField/DateFieldSegments.cjs +71 -0
- package/dist/cjs/DateField/DateFieldSegments.cjs.map +1 -0
- package/dist/cjs/DateField/DateSegmentInput.cjs +17 -0
- package/dist/cjs/DateField/DateSegmentInput.cjs.map +1 -0
- package/dist/cjs/DateField/dateFieldInteractions.cjs +205 -0
- package/dist/cjs/DateField/dateFieldInteractions.cjs.map +1 -0
- package/dist/cjs/DateField/dateFieldState.cjs +127 -0
- package/dist/cjs/DateField/dateFieldState.cjs.map +1 -0
- package/dist/cjs/DateField/datefield.css +134 -0
- package/dist/cjs/DateField/datefield.module.css.cjs +10 -0
- package/dist/cjs/DateField/datefield.module.css.cjs.map +1 -0
- package/dist/cjs/DateField/index.cjs +203 -0
- package/dist/cjs/DateField/index.cjs.map +1 -0
- package/dist/cjs/DatePicker/datepicker.css +24 -0
- package/dist/cjs/DatePicker/datepicker.module.css.cjs +10 -0
- package/dist/cjs/DatePicker/datepicker.module.css.cjs.map +1 -0
- package/dist/cjs/DatePicker/index.cjs +98 -0
- package/dist/cjs/DatePicker/index.cjs.map +1 -0
- package/dist/cjs/DropdownMenu/index.cjs +28 -55
- package/dist/cjs/DropdownMenu/index.cjs.map +1 -1
- package/dist/cjs/Icons/CalendarIcon.cjs +12 -0
- package/dist/cjs/Icons/CalendarIcon.cjs.map +1 -0
- package/dist/cjs/Popover/index.cjs +29 -52
- package/dist/cjs/Popover/index.cjs.map +1 -1
- package/dist/cjs/Tooltip/index.cjs +29 -34
- package/dist/cjs/Tooltip/index.cjs.map +1 -1
- package/dist/cjs/date/dateEngine.cjs +591 -0
- package/dist/cjs/date/dateEngine.cjs.map +1 -0
- package/dist/cjs/date/dateLocale.cjs +239 -0
- package/dist/cjs/date/dateLocale.cjs.map +1 -0
- package/dist/cjs/date/japaneseEraData.cjs +252 -0
- package/dist/cjs/date/japaneseEraData.cjs.map +1 -0
- package/dist/cjs/date/useDateLocale.cjs +24 -0
- package/dist/cjs/date/useDateLocale.cjs.map +1 -0
- package/dist/cjs/floating/FocusScope.cjs +195 -0
- package/dist/cjs/floating/FocusScope.cjs.map +1 -0
- package/dist/cjs/floating/autoUpdate.cjs +205 -0
- package/dist/cjs/floating/autoUpdate.cjs.map +1 -0
- package/dist/cjs/floating/dismissibleLayer.cjs +116 -0
- package/dist/cjs/floating/dismissibleLayer.cjs.map +1 -0
- package/dist/cjs/floating/geometry.cjs +160 -0
- package/dist/cjs/floating/geometry.cjs.map +1 -0
- package/dist/cjs/floating/platform.cjs +15 -0
- package/dist/cjs/floating/platform.cjs.map +1 -0
- package/dist/cjs/floating/pointerEvent.cjs +92 -0
- package/dist/cjs/floating/pointerEvent.cjs.map +1 -0
- package/dist/cjs/floating/tabbable.cjs +101 -0
- package/dist/cjs/floating/tabbable.cjs.map +1 -0
- package/dist/cjs/floating/useFloatingPosition.cjs +119 -0
- package/dist/cjs/floating/useFloatingPosition.cjs.map +1 -0
- package/dist/cjs/floating/useTooltipInteractions.cjs +136 -0
- package/dist/cjs/floating/useTooltipInteractions.cjs.map +1 -0
- package/dist/cjs/index.cjs +68 -60
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/theme.css +14 -0
- package/dist/esm/Calendar/calendar.css +216 -0
- package/dist/esm/Calendar/calendar.module.css.mjs +6 -0
- package/dist/esm/Calendar/calendar.module.css.mjs.map +1 -0
- package/dist/esm/Calendar/calendarInteractions.mjs +32 -0
- package/dist/esm/Calendar/calendarInteractions.mjs.map +1 -0
- package/dist/esm/Calendar/calendarModel.mjs +224 -0
- package/dist/esm/Calendar/calendarModel.mjs.map +1 -0
- package/dist/esm/Calendar/index.mjs +200 -0
- package/dist/esm/Calendar/index.mjs.map +1 -0
- package/dist/esm/DateField/DateFieldSegments.mjs +69 -0
- package/dist/esm/DateField/DateFieldSegments.mjs.map +1 -0
- package/dist/esm/DateField/DateSegmentInput.mjs +15 -0
- package/dist/esm/DateField/DateSegmentInput.mjs.map +1 -0
- package/dist/esm/DateField/dateFieldInteractions.mjs +198 -0
- package/dist/esm/DateField/dateFieldInteractions.mjs.map +1 -0
- package/dist/esm/DateField/dateFieldState.mjs +119 -0
- package/dist/esm/DateField/dateFieldState.mjs.map +1 -0
- package/dist/esm/DateField/datefield.css +134 -0
- package/dist/esm/DateField/datefield.module.css.mjs +6 -0
- package/dist/esm/DateField/datefield.module.css.mjs.map +1 -0
- package/dist/esm/DateField/index.mjs +198 -0
- package/dist/esm/DateField/index.mjs.map +1 -0
- package/dist/esm/DatePicker/datepicker.css +24 -0
- package/dist/esm/DatePicker/datepicker.module.css.mjs +6 -0
- package/dist/esm/DatePicker/datepicker.module.css.mjs.map +1 -0
- package/dist/esm/DatePicker/index.mjs +94 -0
- package/dist/esm/DatePicker/index.mjs.map +1 -0
- package/dist/esm/DropdownMenu/index.mjs +29 -56
- package/dist/esm/DropdownMenu/index.mjs.map +1 -1
- package/dist/esm/Icons/CalendarIcon.mjs +10 -0
- package/dist/esm/Icons/CalendarIcon.mjs.map +1 -0
- package/dist/esm/Popover/index.mjs +30 -53
- package/dist/esm/Popover/index.mjs.map +1 -1
- package/dist/esm/Tooltip/index.mjs +29 -34
- package/dist/esm/Tooltip/index.mjs.map +1 -1
- package/dist/esm/date/dateEngine.mjs +573 -0
- package/dist/esm/date/dateEngine.mjs.map +1 -0
- package/dist/esm/date/dateLocale.mjs +226 -0
- package/dist/esm/date/dateLocale.mjs.map +1 -0
- package/dist/esm/date/japaneseEraData.mjs +250 -0
- package/dist/esm/date/japaneseEraData.mjs.map +1 -0
- package/dist/esm/date/useDateLocale.mjs +22 -0
- package/dist/esm/date/useDateLocale.mjs.map +1 -0
- package/dist/esm/floating/FocusScope.mjs +193 -0
- package/dist/esm/floating/FocusScope.mjs.map +1 -0
- package/dist/esm/floating/autoUpdate.mjs +202 -0
- package/dist/esm/floating/autoUpdate.mjs.map +1 -0
- package/dist/esm/floating/dismissibleLayer.mjs +114 -0
- package/dist/esm/floating/dismissibleLayer.mjs.map +1 -0
- package/dist/esm/floating/geometry.mjs +158 -0
- package/dist/esm/floating/geometry.mjs.map +1 -0
- package/dist/esm/floating/platform.mjs +12 -0
- package/dist/esm/floating/platform.mjs.map +1 -0
- package/dist/esm/floating/pointerEvent.mjs +89 -0
- package/dist/esm/floating/pointerEvent.mjs.map +1 -0
- package/dist/esm/floating/tabbable.mjs +99 -0
- package/dist/esm/floating/tabbable.mjs.map +1 -0
- package/dist/esm/floating/useFloatingPosition.mjs +117 -0
- package/dist/esm/floating/useFloatingPosition.mjs.map +1 -0
- package/dist/esm/floating/useTooltipInteractions.mjs +134 -0
- package/dist/esm/floating/useTooltipInteractions.mjs.map +1 -0
- package/dist/esm/index.mjs +4 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/theme.css +14 -0
- package/dist/index.d.ts +80 -3
- package/dist/types/src/Calendar/calendarInteractions.d.ts +9 -0
- package/dist/types/src/Calendar/calendarInteractions.d.ts.map +1 -0
- package/dist/types/src/Calendar/calendarModel.d.ts +81 -0
- package/dist/types/src/Calendar/calendarModel.d.ts.map +1 -0
- package/dist/types/src/Calendar/index.d.ts +26 -0
- package/dist/types/src/Calendar/index.d.ts.map +1 -0
- package/dist/types/src/DateField/DateFieldSegments.d.ts +28 -0
- package/dist/types/src/DateField/DateFieldSegments.d.ts.map +1 -0
- package/dist/types/src/DateField/DateSegmentInput.d.ts +23 -0
- package/dist/types/src/DateField/DateSegmentInput.d.ts.map +1 -0
- package/dist/types/src/DateField/dateFieldInteractions.d.ts +66 -0
- package/dist/types/src/DateField/dateFieldInteractions.d.ts.map +1 -0
- package/dist/types/src/DateField/dateFieldState.d.ts +32 -0
- package/dist/types/src/DateField/dateFieldState.d.ts.map +1 -0
- package/dist/types/src/DateField/index.d.ts +42 -0
- package/dist/types/src/DateField/index.d.ts.map +1 -0
- package/dist/types/src/DatePicker/index.d.ts +19 -0
- package/dist/types/src/DatePicker/index.d.ts.map +1 -0
- package/dist/types/src/DropdownMenu/index.d.ts.map +1 -1
- package/dist/types/src/Icons/CalendarIcon.d.ts +4 -0
- package/dist/types/src/Icons/CalendarIcon.d.ts.map +1 -0
- package/dist/types/src/Icons/index.d.ts +1 -0
- package/dist/types/src/Icons/index.d.ts.map +1 -1
- package/dist/types/src/Popover/index.d.ts +3 -1
- package/dist/types/src/Popover/index.d.ts.map +1 -1
- package/dist/types/src/Tooltip/index.d.ts.map +1 -1
- package/dist/types/src/date/dateEngine.d.ts +22 -0
- package/dist/types/src/date/dateEngine.d.ts.map +1 -0
- package/dist/types/src/date/dateLocale.d.ts +30 -0
- package/dist/types/src/date/dateLocale.d.ts.map +1 -0
- package/dist/types/src/date/japaneseEraData.d.ts +7 -0
- package/dist/types/src/date/japaneseEraData.d.ts.map +1 -0
- package/dist/types/src/date/types.d.ts +23 -0
- package/dist/types/src/date/types.d.ts.map +1 -0
- package/dist/types/src/date/useDateLocale.d.ts +2 -0
- package/dist/types/src/date/useDateLocale.d.ts.map +1 -0
- package/dist/types/src/floating/FocusScope.d.ts +11 -0
- package/dist/types/src/floating/FocusScope.d.ts.map +1 -0
- package/dist/types/src/floating/autoUpdate.d.ts +5 -0
- package/dist/types/src/floating/autoUpdate.d.ts.map +1 -0
- package/dist/types/src/floating/dismissibleLayer.d.ts +12 -0
- package/dist/types/src/floating/dismissibleLayer.d.ts.map +1 -0
- package/dist/types/src/floating/geometry.d.ts +27 -0
- package/dist/types/src/floating/geometry.d.ts.map +1 -0
- package/dist/types/src/floating/platform.d.ts +3 -0
- package/dist/types/src/floating/platform.d.ts.map +1 -0
- package/dist/types/src/floating/pointerEvent.d.ts +3 -0
- package/dist/types/src/floating/pointerEvent.d.ts.map +1 -0
- package/dist/types/src/floating/tabbable.d.ts +2 -0
- package/dist/types/src/floating/tabbable.d.ts.map +1 -0
- package/dist/types/src/floating/useFloatingPosition.d.ts +18 -0
- package/dist/types/src/floating/useFloatingPosition.d.ts.map +1 -0
- package/dist/types/src/floating/useTooltipInteractions.d.ts +9 -0
- package/dist/types/src/floating/useTooltipInteractions.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +8 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/package.json +1 -2
- package/dist/cjs/hooks/floatingConfig.cjs +0 -24
- package/dist/cjs/hooks/floatingConfig.cjs.map +0 -1
- package/dist/esm/hooks/floatingConfig.mjs +0 -20
- package/dist/esm/hooks/floatingConfig.mjs.map +0 -1
- package/dist/types/src/hooks/floatingConfig.d.ts +0 -6
- package/dist/types/src/hooks/floatingConfig.d.ts.map +0 -1
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var platform = require('./platform.cjs');
|
|
7
|
+
var tabbable = require('./tabbable.cjs');
|
|
8
|
+
|
|
9
|
+
const modalAccessibilityManagers = new WeakMap();
|
|
10
|
+
const focusGuardStyle = {
|
|
11
|
+
border: 0,
|
|
12
|
+
clip: 'rect(0 0 0 0)',
|
|
13
|
+
height: 1,
|
|
14
|
+
margin: -1,
|
|
15
|
+
overflow: 'hidden',
|
|
16
|
+
padding: 0,
|
|
17
|
+
position: 'fixed',
|
|
18
|
+
whiteSpace: 'nowrap',
|
|
19
|
+
width: 1,
|
|
20
|
+
top: 0,
|
|
21
|
+
left: 0,
|
|
22
|
+
};
|
|
23
|
+
function FocusGuard({ position, onFocus, }) {
|
|
24
|
+
const safari = typeof window !== 'undefined' && platform.isSafari(window) ? true : undefined;
|
|
25
|
+
// Safari VoiceOver only forwards virtual-cursor focus to a guard exposed as
|
|
26
|
+
// a button. Keep the non-native span sentinel to avoid native activation
|
|
27
|
+
// behavior: https://github.com/floating-ui/floating-ui/blob/master/packages/react/src/components/FocusGuard.tsx
|
|
28
|
+
return (jsxRuntime.jsx("span", { "aria-hidden": safari ? undefined : true, "data-frey-focus-guard": position, onFocus: onFocus, role: safari ? 'button' : undefined, style: focusGuardStyle, tabIndex: 0 }));
|
|
29
|
+
}
|
|
30
|
+
function focusElement(element) {
|
|
31
|
+
if (!element)
|
|
32
|
+
return;
|
|
33
|
+
try {
|
|
34
|
+
element.focus({ preventScroll: true });
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
element.focus();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function trapTabKey(content, event) {
|
|
41
|
+
if (event.defaultPrevented ||
|
|
42
|
+
event.key !== 'Tab' ||
|
|
43
|
+
event.altKey ||
|
|
44
|
+
event.ctrlKey ||
|
|
45
|
+
event.metaKey ||
|
|
46
|
+
!event.target ||
|
|
47
|
+
!content.contains(event.target)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const tabbableElements = tabbable.getTabbableElements(content);
|
|
51
|
+
const activeElement = content.ownerDocument.activeElement;
|
|
52
|
+
const currentIndex = tabbableElements.indexOf(activeElement);
|
|
53
|
+
let target;
|
|
54
|
+
if (tabbableElements.length === 0) {
|
|
55
|
+
target = content;
|
|
56
|
+
}
|
|
57
|
+
else if (event.shiftKey) {
|
|
58
|
+
const [lastTabbableElement] = tabbableElements.slice(-1);
|
|
59
|
+
target =
|
|
60
|
+
currentIndex > 0
|
|
61
|
+
? tabbableElements[currentIndex - 1]
|
|
62
|
+
: lastTabbableElement;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
target =
|
|
66
|
+
currentIndex >= 0 && currentIndex < tabbableElements.length - 1
|
|
67
|
+
? tabbableElements[currentIndex + 1]
|
|
68
|
+
: tabbableElements[0];
|
|
69
|
+
}
|
|
70
|
+
event.preventDefault();
|
|
71
|
+
focusElement(target);
|
|
72
|
+
}
|
|
73
|
+
function hideElement(element) {
|
|
74
|
+
const value = element.getAttribute('aria-hidden');
|
|
75
|
+
element.setAttribute('aria-hidden', 'true');
|
|
76
|
+
return () => {
|
|
77
|
+
if (value === null) {
|
|
78
|
+
element.removeAttribute('aria-hidden');
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
element.setAttribute('aria-hidden', value);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function hideOutsideContents(ownerDocument, contents) {
|
|
86
|
+
const liveRegions = [
|
|
87
|
+
...ownerDocument.querySelectorAll('[aria-live], [role="alert"], [role="log"], [role="marquee"], [role="status"], [role="timer"], output'),
|
|
88
|
+
];
|
|
89
|
+
const focusGuards = contents.flatMap((content) => content.parentElement
|
|
90
|
+
? [
|
|
91
|
+
...content.parentElement.querySelectorAll('[data-frey-focus-guard]'),
|
|
92
|
+
]
|
|
93
|
+
: []);
|
|
94
|
+
const keepElements = [...contents, ...focusGuards, ...liveRegions];
|
|
95
|
+
const cleanupCallbacks = [];
|
|
96
|
+
const visit = (element) => {
|
|
97
|
+
if (element.tagName === 'SCRIPT' || element.tagName === 'STYLE')
|
|
98
|
+
return;
|
|
99
|
+
if (keepElements.includes(element))
|
|
100
|
+
return;
|
|
101
|
+
if (keepElements.some((keptElement) => element.contains(keptElement))) {
|
|
102
|
+
[...element.children].forEach(visit);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
cleanupCallbacks.push(hideElement(element));
|
|
106
|
+
};
|
|
107
|
+
[...ownerDocument.body.children].forEach(visit);
|
|
108
|
+
return () => {
|
|
109
|
+
cleanupCallbacks.forEach((cleanup) => {
|
|
110
|
+
cleanup();
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function refreshModalAccessibility(ownerDocument, manager) {
|
|
115
|
+
manager.cleanup?.();
|
|
116
|
+
manager.cleanup = undefined;
|
|
117
|
+
if (manager.contents.size > 0) {
|
|
118
|
+
manager.cleanup = hideOutsideContents(ownerDocument, [...manager.contents]);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function registerModalContent(content) {
|
|
122
|
+
const ownerDocument = content.ownerDocument;
|
|
123
|
+
let manager = modalAccessibilityManagers.get(ownerDocument);
|
|
124
|
+
if (!manager) {
|
|
125
|
+
manager = { contents: new Set() };
|
|
126
|
+
modalAccessibilityManagers.set(ownerDocument, manager);
|
|
127
|
+
}
|
|
128
|
+
manager.contents.add(content);
|
|
129
|
+
refreshModalAccessibility(ownerDocument, manager);
|
|
130
|
+
return () => {
|
|
131
|
+
manager.contents.delete(content);
|
|
132
|
+
refreshModalAccessibility(ownerDocument, manager);
|
|
133
|
+
if (manager.contents.size === 0) {
|
|
134
|
+
modalAccessibilityManagers.delete(ownerDocument);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function getInitialFocusTarget(content, initialFocusRef) {
|
|
139
|
+
return initialFocusRef?.current ?? tabbable.getTabbableElements(content)[0] ?? content;
|
|
140
|
+
}
|
|
141
|
+
function FocusScope({ children, contentRef, triggerRef, initialFocusRef, modal = true, restoreFocus = true, }) {
|
|
142
|
+
const focusFirst = React.useCallback(() => {
|
|
143
|
+
const content = contentRef.current;
|
|
144
|
+
if (!content)
|
|
145
|
+
return;
|
|
146
|
+
focusElement(tabbable.getTabbableElements(content)[0] ?? content);
|
|
147
|
+
}, [contentRef]);
|
|
148
|
+
const focusLast = React.useCallback(() => {
|
|
149
|
+
const content = contentRef.current;
|
|
150
|
+
if (!content)
|
|
151
|
+
return;
|
|
152
|
+
const tabbableElements = tabbable.getTabbableElements(content);
|
|
153
|
+
const [lastTabbableElement] = tabbableElements.slice(-1);
|
|
154
|
+
focusElement(lastTabbableElement ?? content);
|
|
155
|
+
}, [contentRef]);
|
|
156
|
+
React.useEffect(() => {
|
|
157
|
+
const content = contentRef.current;
|
|
158
|
+
if (!content)
|
|
159
|
+
return;
|
|
160
|
+
const cleanupOutsideContent = modal
|
|
161
|
+
? registerModalContent(content)
|
|
162
|
+
: undefined;
|
|
163
|
+
const handleKeyDown = (event) => {
|
|
164
|
+
trapTabKey(content, event);
|
|
165
|
+
};
|
|
166
|
+
if (modal) {
|
|
167
|
+
content.ownerDocument.addEventListener('keydown', handleKeyDown);
|
|
168
|
+
}
|
|
169
|
+
let active = true;
|
|
170
|
+
queueMicrotask(() => {
|
|
171
|
+
if (!active || !content.isConnected)
|
|
172
|
+
return;
|
|
173
|
+
if (!content.contains(content.ownerDocument.activeElement)) {
|
|
174
|
+
focusElement(getInitialFocusTarget(content, initialFocusRef));
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
return () => {
|
|
178
|
+
active = false;
|
|
179
|
+
content.ownerDocument.removeEventListener('keydown', handleKeyDown);
|
|
180
|
+
cleanupOutsideContent?.();
|
|
181
|
+
if (!restoreFocus)
|
|
182
|
+
return;
|
|
183
|
+
const activeElement = content.ownerDocument.activeElement;
|
|
184
|
+
if (activeElement === content.ownerDocument.body ||
|
|
185
|
+
activeElement === null ||
|
|
186
|
+
content.contains(activeElement)) {
|
|
187
|
+
focusElement(triggerRef.current);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
}, [contentRef, initialFocusRef, modal, restoreFocus, triggerRef]);
|
|
191
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [modal ? jsxRuntime.jsx(FocusGuard, { position: 'before', onFocus: focusLast }) : null, children, modal ? jsxRuntime.jsx(FocusGuard, { position: 'after', onFocus: focusFirst }) : null] }));
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
exports.FocusScope = FocusScope;
|
|
195
|
+
//# sourceMappingURL=FocusScope.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FocusScope.cjs","sources":["../../../src/floating/FocusScope.tsx"],"sourcesContent":[null],"names":["isSafari","_jsx","getTabbableElements","_jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const sharedListeners = new WeakMap();
|
|
5
|
+
const overflowPattern = /(auto|scroll|overlay|hidden|clip)/;
|
|
6
|
+
function subscribeShared(target, type, callback, options) {
|
|
7
|
+
let targetListeners = sharedListeners.get(target);
|
|
8
|
+
if (!targetListeners) {
|
|
9
|
+
targetListeners = new Map();
|
|
10
|
+
sharedListeners.set(target, targetListeners);
|
|
11
|
+
}
|
|
12
|
+
const key = type;
|
|
13
|
+
let subscription = targetListeners.get(key);
|
|
14
|
+
if (!subscription) {
|
|
15
|
+
const callbacks = new Set();
|
|
16
|
+
const listener = (event) => {
|
|
17
|
+
callbacks.forEach((registeredCallback) => {
|
|
18
|
+
registeredCallback(event);
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
subscription = { callbacks, listener, options };
|
|
22
|
+
targetListeners.set(key, subscription);
|
|
23
|
+
target.addEventListener(type, listener, options);
|
|
24
|
+
}
|
|
25
|
+
subscription.callbacks.add(callback);
|
|
26
|
+
const activeSubscription = subscription;
|
|
27
|
+
const activeTargetListeners = targetListeners;
|
|
28
|
+
return () => {
|
|
29
|
+
activeSubscription.callbacks.delete(callback);
|
|
30
|
+
if (activeSubscription.callbacks.size === 0) {
|
|
31
|
+
target.removeEventListener(type, activeSubscription.listener, activeSubscription.options);
|
|
32
|
+
activeTargetListeners.delete(key);
|
|
33
|
+
if (activeTargetListeners.size === 0) {
|
|
34
|
+
sharedListeners.delete(target);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function getParentElement(element) {
|
|
40
|
+
const assignedSlot = element.assignedSlot;
|
|
41
|
+
if (assignedSlot)
|
|
42
|
+
return assignedSlot;
|
|
43
|
+
const parentNode = element.parentNode;
|
|
44
|
+
if (parentNode instanceof Element)
|
|
45
|
+
return parentNode;
|
|
46
|
+
if (parentNode instanceof ShadowRoot)
|
|
47
|
+
return parentNode.host;
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
function isOverflowElement(element) {
|
|
51
|
+
const style = element.ownerDocument.defaultView?.getComputedStyle(element);
|
|
52
|
+
if (!style)
|
|
53
|
+
return false;
|
|
54
|
+
return overflowPattern.test(`${style.overflow}${style.overflowX}${style.overflowY}`);
|
|
55
|
+
}
|
|
56
|
+
function getOverflowElements(element) {
|
|
57
|
+
const ancestors = [];
|
|
58
|
+
let current = getParentElement(element);
|
|
59
|
+
while (current) {
|
|
60
|
+
if (isOverflowElement(current)) {
|
|
61
|
+
ancestors.push(current);
|
|
62
|
+
}
|
|
63
|
+
current = getParentElement(current);
|
|
64
|
+
}
|
|
65
|
+
return ancestors;
|
|
66
|
+
}
|
|
67
|
+
function getOverflowAncestors(element, ownerWindow) {
|
|
68
|
+
return [...getOverflowElements(element), ownerWindow];
|
|
69
|
+
}
|
|
70
|
+
function observeReferenceMove(reference, update) {
|
|
71
|
+
const ownerWindow = reference.ownerDocument.defaultView;
|
|
72
|
+
if (!ownerWindow?.IntersectionObserver) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
const IntersectionObserverConstructor = ownerWindow.IntersectionObserver;
|
|
76
|
+
const documentElement = reference.ownerDocument.documentElement;
|
|
77
|
+
let observer = null;
|
|
78
|
+
let timeoutId;
|
|
79
|
+
let active = true;
|
|
80
|
+
const cleanupObserver = () => {
|
|
81
|
+
if (timeoutId !== undefined)
|
|
82
|
+
ownerWindow.clearTimeout(timeoutId);
|
|
83
|
+
timeoutId = undefined;
|
|
84
|
+
observer?.disconnect();
|
|
85
|
+
observer = null;
|
|
86
|
+
};
|
|
87
|
+
const rectKeys = ['top', 'right', 'bottom', 'left'];
|
|
88
|
+
const rectsMatch = (first, second) => {
|
|
89
|
+
for (const key of rectKeys) {
|
|
90
|
+
if (first[key] !== second[key])
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
};
|
|
95
|
+
const refresh = (skipUpdate = false, threshold = 1) => {
|
|
96
|
+
if (!active)
|
|
97
|
+
return;
|
|
98
|
+
cleanupObserver();
|
|
99
|
+
const rect = reference.getBoundingClientRect();
|
|
100
|
+
if (!skipUpdate)
|
|
101
|
+
update();
|
|
102
|
+
const viewportWidth = documentElement.clientWidth || ownerWindow.innerWidth;
|
|
103
|
+
const viewportHeight = documentElement.clientHeight || ownerWindow.innerHeight;
|
|
104
|
+
const rootMargin = `${-Math.floor(rect.top)}px ${-Math.floor(viewportWidth - rect.right)}px ${-Math.floor(viewportHeight - rect.bottom)}px ${-Math.floor(rect.left)}px`;
|
|
105
|
+
const normalizedThreshold = Math.max(0, Math.min(1, threshold));
|
|
106
|
+
let firstNotification = true;
|
|
107
|
+
observer = new IntersectionObserverConstructor((entries) => {
|
|
108
|
+
const entry = entries[0];
|
|
109
|
+
if (!entry) {
|
|
110
|
+
update();
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const ratio = entry.intersectionRatio;
|
|
114
|
+
if (ratio !== threshold) {
|
|
115
|
+
if (!firstNotification) {
|
|
116
|
+
refresh();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (ratio === 0) {
|
|
120
|
+
timeoutId = ownerWindow.setTimeout(() => refresh(false, 0.0000001), 1000);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
refresh(false, ratio);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (ratio === 1 &&
|
|
128
|
+
!rectsMatch(rect, reference.getBoundingClientRect())) {
|
|
129
|
+
refresh();
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
firstNotification = false;
|
|
133
|
+
}, {
|
|
134
|
+
rootMargin,
|
|
135
|
+
threshold: normalizedThreshold,
|
|
136
|
+
});
|
|
137
|
+
observer.observe(reference);
|
|
138
|
+
};
|
|
139
|
+
refresh(true);
|
|
140
|
+
return () => {
|
|
141
|
+
active = false;
|
|
142
|
+
cleanupObserver();
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function autoUpdateFloating(reference, floating, update) {
|
|
146
|
+
const ownerWindow = reference.ownerDocument.defaultView;
|
|
147
|
+
if (!ownerWindow) {
|
|
148
|
+
update();
|
|
149
|
+
return () => { };
|
|
150
|
+
}
|
|
151
|
+
let active = true;
|
|
152
|
+
let frameId = null;
|
|
153
|
+
const cleanupCallbacks = [];
|
|
154
|
+
const scheduleUpdate = () => {
|
|
155
|
+
if (!active || frameId !== null)
|
|
156
|
+
return;
|
|
157
|
+
frameId = ownerWindow.requestAnimationFrame(() => {
|
|
158
|
+
frameId = null;
|
|
159
|
+
if (active)
|
|
160
|
+
update();
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
const ancestors = new Set([
|
|
164
|
+
...getOverflowAncestors(reference, ownerWindow),
|
|
165
|
+
...getOverflowAncestors(floating, ownerWindow),
|
|
166
|
+
]);
|
|
167
|
+
ancestors.forEach((ancestor) => {
|
|
168
|
+
cleanupCallbacks.push(subscribeShared(ancestor, 'scroll', scheduleUpdate, { passive: true }), subscribeShared(ancestor, 'resize', scheduleUpdate));
|
|
169
|
+
});
|
|
170
|
+
const visualViewport = ownerWindow.visualViewport;
|
|
171
|
+
if (visualViewport) {
|
|
172
|
+
cleanupCallbacks.push(subscribeShared(visualViewport, 'scroll', scheduleUpdate, {
|
|
173
|
+
passive: true,
|
|
174
|
+
}), subscribeShared(visualViewport, 'resize', scheduleUpdate));
|
|
175
|
+
}
|
|
176
|
+
const ResizeObserverConstructor = ownerWindow.ResizeObserver;
|
|
177
|
+
if (ResizeObserverConstructor !== undefined) {
|
|
178
|
+
const resizeObserver = new ResizeObserverConstructor(scheduleUpdate);
|
|
179
|
+
resizeObserver.observe(reference);
|
|
180
|
+
resizeObserver.observe(floating);
|
|
181
|
+
cleanupCallbacks.push(() => resizeObserver.disconnect());
|
|
182
|
+
}
|
|
183
|
+
const cleanupMoveObserver = observeReferenceMove(reference, scheduleUpdate);
|
|
184
|
+
if (cleanupMoveObserver)
|
|
185
|
+
cleanupCallbacks.push(cleanupMoveObserver);
|
|
186
|
+
update();
|
|
187
|
+
let cleanedUp = false;
|
|
188
|
+
return () => {
|
|
189
|
+
if (cleanedUp)
|
|
190
|
+
return;
|
|
191
|
+
cleanedUp = true;
|
|
192
|
+
active = false;
|
|
193
|
+
if (frameId !== null) {
|
|
194
|
+
ownerWindow.cancelAnimationFrame(frameId);
|
|
195
|
+
frameId = null;
|
|
196
|
+
}
|
|
197
|
+
cleanupCallbacks.forEach((cleanup) => {
|
|
198
|
+
cleanup();
|
|
199
|
+
});
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
exports.autoUpdateFloating = autoUpdateFloating;
|
|
204
|
+
exports.getOverflowElements = getOverflowElements;
|
|
205
|
+
//# sourceMappingURL=autoUpdate.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoUpdate.cjs","sources":["../../../src/floating/autoUpdate.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var platform = require('./platform.cjs');
|
|
6
|
+
var pointerEvent = require('./pointerEvent.cjs');
|
|
7
|
+
|
|
8
|
+
const managers = new WeakMap();
|
|
9
|
+
function getTopLayer(manager) {
|
|
10
|
+
const [topLayer] = manager.layers.slice(-1);
|
|
11
|
+
return topLayer;
|
|
12
|
+
}
|
|
13
|
+
function attachManagerListeners(ownerDocument, manager) {
|
|
14
|
+
const clearCompositionReset = () => {
|
|
15
|
+
if (manager.compositionResetTimer === undefined)
|
|
16
|
+
return;
|
|
17
|
+
clearTimeout(manager.compositionResetTimer);
|
|
18
|
+
manager.compositionResetTimer = undefined;
|
|
19
|
+
};
|
|
20
|
+
const handleKeyDown = (event) => {
|
|
21
|
+
if (event.key !== 'Escape' || event.isComposing || manager.composing) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const layer = getTopLayer(manager);
|
|
25
|
+
if (!layer)
|
|
26
|
+
return;
|
|
27
|
+
const { closeOnEscape = true, onDismiss } = layer.optionsRef.current;
|
|
28
|
+
if (!closeOnEscape)
|
|
29
|
+
return;
|
|
30
|
+
onDismiss('escape', event);
|
|
31
|
+
};
|
|
32
|
+
const handlePointerDown = (event) => {
|
|
33
|
+
const layer = getTopLayer(manager);
|
|
34
|
+
if (!layer)
|
|
35
|
+
return;
|
|
36
|
+
const { closeOnOutsidePointerDown = true, floatingRef, referenceRef, onDismiss, } = layer.optionsRef.current;
|
|
37
|
+
if (!closeOnOutsidePointerDown)
|
|
38
|
+
return;
|
|
39
|
+
if (pointerEvent.isScrollbarPress(event, ownerDocument))
|
|
40
|
+
return;
|
|
41
|
+
if (pointerEvent.eventIsInside(event, referenceRef.current))
|
|
42
|
+
return;
|
|
43
|
+
if (pointerEvent.eventIsInside(event, floatingRef.current))
|
|
44
|
+
return;
|
|
45
|
+
onDismiss('outside-pointer', event);
|
|
46
|
+
};
|
|
47
|
+
const handleCompositionStart = () => {
|
|
48
|
+
clearCompositionReset();
|
|
49
|
+
manager.composing = true;
|
|
50
|
+
};
|
|
51
|
+
const handleCompositionEnd = () => {
|
|
52
|
+
clearCompositionReset();
|
|
53
|
+
manager.compositionResetTimer = setTimeout(() => {
|
|
54
|
+
manager.compositionResetTimer = undefined;
|
|
55
|
+
manager.composing = false;
|
|
56
|
+
}, platform.isWebKit(ownerDocument.defaultView) ? 5 : 0);
|
|
57
|
+
};
|
|
58
|
+
ownerDocument.addEventListener('keydown', handleKeyDown);
|
|
59
|
+
ownerDocument.addEventListener('pointerdown', handlePointerDown);
|
|
60
|
+
ownerDocument.addEventListener('compositionstart', handleCompositionStart);
|
|
61
|
+
ownerDocument.addEventListener('compositionend', handleCompositionEnd);
|
|
62
|
+
return () => {
|
|
63
|
+
clearCompositionReset();
|
|
64
|
+
manager.composing = false;
|
|
65
|
+
ownerDocument.removeEventListener('keydown', handleKeyDown);
|
|
66
|
+
ownerDocument.removeEventListener('pointerdown', handlePointerDown);
|
|
67
|
+
ownerDocument.removeEventListener('compositionstart', handleCompositionStart);
|
|
68
|
+
ownerDocument.removeEventListener('compositionend', handleCompositionEnd);
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function registerLayer(ownerDocument, layer) {
|
|
72
|
+
let manager = managers.get(ownerDocument);
|
|
73
|
+
if (!manager) {
|
|
74
|
+
manager = { layers: [], composing: false };
|
|
75
|
+
managers.set(ownerDocument, manager);
|
|
76
|
+
}
|
|
77
|
+
const activeManager = manager;
|
|
78
|
+
const nestedChildIndex = activeManager.layers.findIndex((existingLayer) => {
|
|
79
|
+
const parentFloating = layer.optionsRef.current.floatingRef.current;
|
|
80
|
+
const childReference = existingLayer.optionsRef.current.referenceRef.current;
|
|
81
|
+
return Boolean(parentFloating &&
|
|
82
|
+
childReference &&
|
|
83
|
+
parentFloating.contains(childReference));
|
|
84
|
+
});
|
|
85
|
+
if (nestedChildIndex >= 0) {
|
|
86
|
+
activeManager.layers.splice(nestedChildIndex, 0, layer);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
activeManager.layers.push(layer);
|
|
90
|
+
}
|
|
91
|
+
activeManager.cleanupListeners ?? (activeManager.cleanupListeners = attachManagerListeners(ownerDocument, activeManager));
|
|
92
|
+
return () => {
|
|
93
|
+
const layerIndex = activeManager.layers.lastIndexOf(layer);
|
|
94
|
+
activeManager.layers.splice(layerIndex, 1);
|
|
95
|
+
if (activeManager.layers.length === 0) {
|
|
96
|
+
activeManager.cleanupListeners?.();
|
|
97
|
+
activeManager.cleanupListeners = undefined;
|
|
98
|
+
managers.delete(ownerDocument);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function useDismissibleLayer({ open, ...options }) {
|
|
103
|
+
const optionsRef = React.useRef(options);
|
|
104
|
+
optionsRef.current = options;
|
|
105
|
+
const ownerDocument = options.referenceRef.current?.ownerDocument ??
|
|
106
|
+
options.floatingRef.current?.ownerDocument ??
|
|
107
|
+
(typeof document === 'undefined' ? undefined : document);
|
|
108
|
+
React.useEffect(() => {
|
|
109
|
+
if (!open || !ownerDocument)
|
|
110
|
+
return;
|
|
111
|
+
return registerLayer(ownerDocument, { optionsRef });
|
|
112
|
+
}, [open, ownerDocument]);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
exports.useDismissibleLayer = useDismissibleLayer;
|
|
116
|
+
//# sourceMappingURL=dismissibleLayer.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dismissibleLayer.cjs","sources":["../../../src/floating/dismissibleLayer.ts"],"sourcesContent":[null],"names":["isScrollbarPress","eventIsInside","isWebKit"],"mappings":";;;;;;;AA4BA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAA0B;AAEtD,SAAS,WAAW,CAAC,OAAqB,EAAA;AACxC,IAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3C,IAAA,OAAO,QAAQ;AACjB;AAEA,SAAS,sBAAsB,CAC7B,aAAuB,EACvB,OAAqB,EAAA;IAErB,MAAM,qBAAqB,GAAG,MAAK;AACjC,QAAA,IAAI,OAAO,CAAC,qBAAqB,KAAK,SAAS;YAAE;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC3C,QAAA,OAAO,CAAC,qBAAqB,GAAG,SAAS;AAC3C,IAAA,CAAC;AACD,IAAA,MAAM,aAAa,GAAG,CAAC,KAAoB,KAAI;AAC7C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE;YACpE;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO;AACpE,QAAA,IAAI,CAAC,aAAa;YAAE;AACpB,QAAA,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC5B,IAAA,CAAC;AACD,IAAA,MAAM,iBAAiB,GAAG,CAAC,KAAmB,KAAI;AAChD,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,EACJ,yBAAyB,GAAG,IAAI,EAChC,WAAW,EACX,YAAY,EACZ,SAAS,GACV,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO;AAC5B,QAAA,IAAI,CAAC,yBAAyB;YAAE;AAChC,QAAA,IAAIA,6BAAgB,CAAC,KAAK,EAAE,aAAa,CAAC;YAAE;AAC5C,QAAA,IAAIC,0BAAa,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC;YAAE;AAChD,QAAA,IAAIA,0BAAa,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;YAAE;AAC/C,QAAA,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC;AACrC,IAAA,CAAC;IACD,MAAM,sBAAsB,GAAG,MAAK;AAClC,QAAA,qBAAqB,EAAE;AACvB,QAAA,OAAO,CAAC,SAAS,GAAG,IAAI;AAC1B,IAAA,CAAC;IACD,MAAM,oBAAoB,GAAG,MAAK;AAChC,QAAA,qBAAqB,EAAE;AACvB,QAAA,OAAO,CAAC,qBAAqB,GAAG,UAAU,CACxC,MAAK;AACH,YAAA,OAAO,CAAC,qBAAqB,GAAG,SAAS;AACzC,YAAA,OAAO,CAAC,SAAS,GAAG,KAAK;AAC3B,QAAA,CAAC,EACDC,iBAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAC5C;AACH,IAAA,CAAC;AAED,IAAA,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;AACxD,IAAA,aAAa,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC;AAChE,IAAA,aAAa,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;AAC1E,IAAA,aAAa,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;AAEtE,IAAA,OAAO,MAAK;AACV,QAAA,qBAAqB,EAAE;AACvB,QAAA,OAAO,CAAC,SAAS,GAAG,KAAK;AACzB,QAAA,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AAC3D,QAAA,aAAa,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,CAAC;AACnE,QAAA,aAAa,CAAC,mBAAmB,CAC/B,kBAAkB,EAClB,sBAAsB,CACvB;AACD,QAAA,aAAa,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;AAC3E,IAAA,CAAC;AACH;AAEA,SAAS,aAAa,CAAC,aAAuB,EAAE,KAAY,EAAA;IAC1D,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;AAC1C,QAAA,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC;IACtC;IACA,MAAM,aAAa,GAAG,OAAO;IAE7B,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;QACxE,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO;QACnE,MAAM,cAAc,GAClB,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO;QACvD,OAAO,OAAO,CACZ,cAAc;YACZ,cAAc;AACd,YAAA,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC1C;AACH,IAAA,CAAC,CAAC;AACF,IAAA,IAAI,gBAAgB,IAAI,CAAC,EAAE;QACzB,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,CAAC;IACzD;SAAO;AACL,QAAA,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;AACA,IAAA,aAAa,CAAC,gBAAgB,KAA9B,aAAa,CAAC,gBAAgB,GAAK,sBAAsB,CACvD,aAAa,EACb,aAAa,CACd,CAAA;AAED,IAAA,OAAO,MAAK;QACV,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;QAC1D,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAE1C,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,YAAA,aAAa,CAAC,gBAAgB,IAAI;AAClC,YAAA,aAAa,CAAC,gBAAgB,GAAG,SAAS;AAC1C,YAAA,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;QAChC;AACF,IAAA,CAAC;AACH;AAEM,SAAU,mBAAmB,CAAC,EAClC,IAAI,EACJ,GAAG,OAAO,EACiB,EAAA;IAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AACxC,IAAA,UAAU,CAAC,OAAO,GAAG,OAAO;IAC5B,MAAM,aAAa,GACjB,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa;AAC3C,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa;AAC1C,SAAC,OAAO,QAAQ,KAAK,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa;YAAE;QAC7B,OAAO,aAAa,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC;AACrD,IAAA,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AAC3B;;;;"}
|