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.
Files changed (193) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/Calendar/calendar.css +216 -0
  3. package/dist/cjs/Calendar/calendar.module.css.cjs +10 -0
  4. package/dist/cjs/Calendar/calendar.module.css.cjs.map +1 -0
  5. package/dist/cjs/Calendar/calendarInteractions.cjs +34 -0
  6. package/dist/cjs/Calendar/calendarInteractions.cjs.map +1 -0
  7. package/dist/cjs/Calendar/calendarModel.cjs +232 -0
  8. package/dist/cjs/Calendar/calendarModel.cjs.map +1 -0
  9. package/dist/cjs/Calendar/index.cjs +204 -0
  10. package/dist/cjs/Calendar/index.cjs.map +1 -0
  11. package/dist/cjs/DateField/DateFieldSegments.cjs +71 -0
  12. package/dist/cjs/DateField/DateFieldSegments.cjs.map +1 -0
  13. package/dist/cjs/DateField/DateSegmentInput.cjs +17 -0
  14. package/dist/cjs/DateField/DateSegmentInput.cjs.map +1 -0
  15. package/dist/cjs/DateField/dateFieldInteractions.cjs +205 -0
  16. package/dist/cjs/DateField/dateFieldInteractions.cjs.map +1 -0
  17. package/dist/cjs/DateField/dateFieldState.cjs +127 -0
  18. package/dist/cjs/DateField/dateFieldState.cjs.map +1 -0
  19. package/dist/cjs/DateField/datefield.css +134 -0
  20. package/dist/cjs/DateField/datefield.module.css.cjs +10 -0
  21. package/dist/cjs/DateField/datefield.module.css.cjs.map +1 -0
  22. package/dist/cjs/DateField/index.cjs +203 -0
  23. package/dist/cjs/DateField/index.cjs.map +1 -0
  24. package/dist/cjs/DatePicker/datepicker.css +24 -0
  25. package/dist/cjs/DatePicker/datepicker.module.css.cjs +10 -0
  26. package/dist/cjs/DatePicker/datepicker.module.css.cjs.map +1 -0
  27. package/dist/cjs/DatePicker/index.cjs +98 -0
  28. package/dist/cjs/DatePicker/index.cjs.map +1 -0
  29. package/dist/cjs/DropdownMenu/index.cjs +28 -55
  30. package/dist/cjs/DropdownMenu/index.cjs.map +1 -1
  31. package/dist/cjs/Icons/CalendarIcon.cjs +12 -0
  32. package/dist/cjs/Icons/CalendarIcon.cjs.map +1 -0
  33. package/dist/cjs/Popover/index.cjs +29 -52
  34. package/dist/cjs/Popover/index.cjs.map +1 -1
  35. package/dist/cjs/Tooltip/index.cjs +29 -34
  36. package/dist/cjs/Tooltip/index.cjs.map +1 -1
  37. package/dist/cjs/date/dateEngine.cjs +591 -0
  38. package/dist/cjs/date/dateEngine.cjs.map +1 -0
  39. package/dist/cjs/date/dateLocale.cjs +239 -0
  40. package/dist/cjs/date/dateLocale.cjs.map +1 -0
  41. package/dist/cjs/date/japaneseEraData.cjs +252 -0
  42. package/dist/cjs/date/japaneseEraData.cjs.map +1 -0
  43. package/dist/cjs/date/useDateLocale.cjs +24 -0
  44. package/dist/cjs/date/useDateLocale.cjs.map +1 -0
  45. package/dist/cjs/floating/FocusScope.cjs +195 -0
  46. package/dist/cjs/floating/FocusScope.cjs.map +1 -0
  47. package/dist/cjs/floating/autoUpdate.cjs +205 -0
  48. package/dist/cjs/floating/autoUpdate.cjs.map +1 -0
  49. package/dist/cjs/floating/dismissibleLayer.cjs +116 -0
  50. package/dist/cjs/floating/dismissibleLayer.cjs.map +1 -0
  51. package/dist/cjs/floating/geometry.cjs +160 -0
  52. package/dist/cjs/floating/geometry.cjs.map +1 -0
  53. package/dist/cjs/floating/platform.cjs +15 -0
  54. package/dist/cjs/floating/platform.cjs.map +1 -0
  55. package/dist/cjs/floating/pointerEvent.cjs +92 -0
  56. package/dist/cjs/floating/pointerEvent.cjs.map +1 -0
  57. package/dist/cjs/floating/tabbable.cjs +101 -0
  58. package/dist/cjs/floating/tabbable.cjs.map +1 -0
  59. package/dist/cjs/floating/useFloatingPosition.cjs +119 -0
  60. package/dist/cjs/floating/useFloatingPosition.cjs.map +1 -0
  61. package/dist/cjs/floating/useTooltipInteractions.cjs +136 -0
  62. package/dist/cjs/floating/useTooltipInteractions.cjs.map +1 -0
  63. package/dist/cjs/index.cjs +68 -60
  64. package/dist/cjs/index.cjs.map +1 -1
  65. package/dist/cjs/theme.css +14 -0
  66. package/dist/esm/Calendar/calendar.css +216 -0
  67. package/dist/esm/Calendar/calendar.module.css.mjs +6 -0
  68. package/dist/esm/Calendar/calendar.module.css.mjs.map +1 -0
  69. package/dist/esm/Calendar/calendarInteractions.mjs +32 -0
  70. package/dist/esm/Calendar/calendarInteractions.mjs.map +1 -0
  71. package/dist/esm/Calendar/calendarModel.mjs +224 -0
  72. package/dist/esm/Calendar/calendarModel.mjs.map +1 -0
  73. package/dist/esm/Calendar/index.mjs +200 -0
  74. package/dist/esm/Calendar/index.mjs.map +1 -0
  75. package/dist/esm/DateField/DateFieldSegments.mjs +69 -0
  76. package/dist/esm/DateField/DateFieldSegments.mjs.map +1 -0
  77. package/dist/esm/DateField/DateSegmentInput.mjs +15 -0
  78. package/dist/esm/DateField/DateSegmentInput.mjs.map +1 -0
  79. package/dist/esm/DateField/dateFieldInteractions.mjs +198 -0
  80. package/dist/esm/DateField/dateFieldInteractions.mjs.map +1 -0
  81. package/dist/esm/DateField/dateFieldState.mjs +119 -0
  82. package/dist/esm/DateField/dateFieldState.mjs.map +1 -0
  83. package/dist/esm/DateField/datefield.css +134 -0
  84. package/dist/esm/DateField/datefield.module.css.mjs +6 -0
  85. package/dist/esm/DateField/datefield.module.css.mjs.map +1 -0
  86. package/dist/esm/DateField/index.mjs +198 -0
  87. package/dist/esm/DateField/index.mjs.map +1 -0
  88. package/dist/esm/DatePicker/datepicker.css +24 -0
  89. package/dist/esm/DatePicker/datepicker.module.css.mjs +6 -0
  90. package/dist/esm/DatePicker/datepicker.module.css.mjs.map +1 -0
  91. package/dist/esm/DatePicker/index.mjs +94 -0
  92. package/dist/esm/DatePicker/index.mjs.map +1 -0
  93. package/dist/esm/DropdownMenu/index.mjs +29 -56
  94. package/dist/esm/DropdownMenu/index.mjs.map +1 -1
  95. package/dist/esm/Icons/CalendarIcon.mjs +10 -0
  96. package/dist/esm/Icons/CalendarIcon.mjs.map +1 -0
  97. package/dist/esm/Popover/index.mjs +30 -53
  98. package/dist/esm/Popover/index.mjs.map +1 -1
  99. package/dist/esm/Tooltip/index.mjs +29 -34
  100. package/dist/esm/Tooltip/index.mjs.map +1 -1
  101. package/dist/esm/date/dateEngine.mjs +573 -0
  102. package/dist/esm/date/dateEngine.mjs.map +1 -0
  103. package/dist/esm/date/dateLocale.mjs +226 -0
  104. package/dist/esm/date/dateLocale.mjs.map +1 -0
  105. package/dist/esm/date/japaneseEraData.mjs +250 -0
  106. package/dist/esm/date/japaneseEraData.mjs.map +1 -0
  107. package/dist/esm/date/useDateLocale.mjs +22 -0
  108. package/dist/esm/date/useDateLocale.mjs.map +1 -0
  109. package/dist/esm/floating/FocusScope.mjs +193 -0
  110. package/dist/esm/floating/FocusScope.mjs.map +1 -0
  111. package/dist/esm/floating/autoUpdate.mjs +202 -0
  112. package/dist/esm/floating/autoUpdate.mjs.map +1 -0
  113. package/dist/esm/floating/dismissibleLayer.mjs +114 -0
  114. package/dist/esm/floating/dismissibleLayer.mjs.map +1 -0
  115. package/dist/esm/floating/geometry.mjs +158 -0
  116. package/dist/esm/floating/geometry.mjs.map +1 -0
  117. package/dist/esm/floating/platform.mjs +12 -0
  118. package/dist/esm/floating/platform.mjs.map +1 -0
  119. package/dist/esm/floating/pointerEvent.mjs +89 -0
  120. package/dist/esm/floating/pointerEvent.mjs.map +1 -0
  121. package/dist/esm/floating/tabbable.mjs +99 -0
  122. package/dist/esm/floating/tabbable.mjs.map +1 -0
  123. package/dist/esm/floating/useFloatingPosition.mjs +117 -0
  124. package/dist/esm/floating/useFloatingPosition.mjs.map +1 -0
  125. package/dist/esm/floating/useTooltipInteractions.mjs +134 -0
  126. package/dist/esm/floating/useTooltipInteractions.mjs.map +1 -0
  127. package/dist/esm/index.mjs +4 -0
  128. package/dist/esm/index.mjs.map +1 -1
  129. package/dist/esm/theme.css +14 -0
  130. package/dist/index.d.ts +80 -3
  131. package/dist/types/src/Calendar/calendarInteractions.d.ts +9 -0
  132. package/dist/types/src/Calendar/calendarInteractions.d.ts.map +1 -0
  133. package/dist/types/src/Calendar/calendarModel.d.ts +81 -0
  134. package/dist/types/src/Calendar/calendarModel.d.ts.map +1 -0
  135. package/dist/types/src/Calendar/index.d.ts +26 -0
  136. package/dist/types/src/Calendar/index.d.ts.map +1 -0
  137. package/dist/types/src/DateField/DateFieldSegments.d.ts +28 -0
  138. package/dist/types/src/DateField/DateFieldSegments.d.ts.map +1 -0
  139. package/dist/types/src/DateField/DateSegmentInput.d.ts +23 -0
  140. package/dist/types/src/DateField/DateSegmentInput.d.ts.map +1 -0
  141. package/dist/types/src/DateField/dateFieldInteractions.d.ts +66 -0
  142. package/dist/types/src/DateField/dateFieldInteractions.d.ts.map +1 -0
  143. package/dist/types/src/DateField/dateFieldState.d.ts +32 -0
  144. package/dist/types/src/DateField/dateFieldState.d.ts.map +1 -0
  145. package/dist/types/src/DateField/index.d.ts +42 -0
  146. package/dist/types/src/DateField/index.d.ts.map +1 -0
  147. package/dist/types/src/DatePicker/index.d.ts +19 -0
  148. package/dist/types/src/DatePicker/index.d.ts.map +1 -0
  149. package/dist/types/src/DropdownMenu/index.d.ts.map +1 -1
  150. package/dist/types/src/Icons/CalendarIcon.d.ts +4 -0
  151. package/dist/types/src/Icons/CalendarIcon.d.ts.map +1 -0
  152. package/dist/types/src/Icons/index.d.ts +1 -0
  153. package/dist/types/src/Icons/index.d.ts.map +1 -1
  154. package/dist/types/src/Popover/index.d.ts +3 -1
  155. package/dist/types/src/Popover/index.d.ts.map +1 -1
  156. package/dist/types/src/Tooltip/index.d.ts.map +1 -1
  157. package/dist/types/src/date/dateEngine.d.ts +22 -0
  158. package/dist/types/src/date/dateEngine.d.ts.map +1 -0
  159. package/dist/types/src/date/dateLocale.d.ts +30 -0
  160. package/dist/types/src/date/dateLocale.d.ts.map +1 -0
  161. package/dist/types/src/date/japaneseEraData.d.ts +7 -0
  162. package/dist/types/src/date/japaneseEraData.d.ts.map +1 -0
  163. package/dist/types/src/date/types.d.ts +23 -0
  164. package/dist/types/src/date/types.d.ts.map +1 -0
  165. package/dist/types/src/date/useDateLocale.d.ts +2 -0
  166. package/dist/types/src/date/useDateLocale.d.ts.map +1 -0
  167. package/dist/types/src/floating/FocusScope.d.ts +11 -0
  168. package/dist/types/src/floating/FocusScope.d.ts.map +1 -0
  169. package/dist/types/src/floating/autoUpdate.d.ts +5 -0
  170. package/dist/types/src/floating/autoUpdate.d.ts.map +1 -0
  171. package/dist/types/src/floating/dismissibleLayer.d.ts +12 -0
  172. package/dist/types/src/floating/dismissibleLayer.d.ts.map +1 -0
  173. package/dist/types/src/floating/geometry.d.ts +27 -0
  174. package/dist/types/src/floating/geometry.d.ts.map +1 -0
  175. package/dist/types/src/floating/platform.d.ts +3 -0
  176. package/dist/types/src/floating/platform.d.ts.map +1 -0
  177. package/dist/types/src/floating/pointerEvent.d.ts +3 -0
  178. package/dist/types/src/floating/pointerEvent.d.ts.map +1 -0
  179. package/dist/types/src/floating/tabbable.d.ts +2 -0
  180. package/dist/types/src/floating/tabbable.d.ts.map +1 -0
  181. package/dist/types/src/floating/useFloatingPosition.d.ts +18 -0
  182. package/dist/types/src/floating/useFloatingPosition.d.ts.map +1 -0
  183. package/dist/types/src/floating/useTooltipInteractions.d.ts +9 -0
  184. package/dist/types/src/floating/useTooltipInteractions.d.ts.map +1 -0
  185. package/dist/types/src/index.d.ts +8 -1
  186. package/dist/types/src/index.d.ts.map +1 -1
  187. package/package.json +1 -2
  188. package/dist/cjs/hooks/floatingConfig.cjs +0 -24
  189. package/dist/cjs/hooks/floatingConfig.cjs.map +0 -1
  190. package/dist/esm/hooks/floatingConfig.mjs +0 -20
  191. package/dist/esm/hooks/floatingConfig.mjs.map +0 -1
  192. package/dist/types/src/hooks/floatingConfig.d.ts +0 -6
  193. 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":"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"}