base-ui-vue 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/dist/arrow/TooltipArrow.cjs +609 -0
  2. package/dist/arrow/TooltipArrow.cjs.map +1 -0
  3. package/dist/arrow/TooltipArrow.js +478 -0
  4. package/dist/arrow/TooltipArrow.js.map +1 -0
  5. package/dist/button/Button.cjs +5 -317
  6. package/dist/button/Button.cjs.map +1 -1
  7. package/dist/button/Button.js +3 -249
  8. package/dist/button/Button.js.map +1 -1
  9. package/dist/button/ToolbarButton.cjs +19 -6
  10. package/dist/button/ToolbarButton.cjs.map +1 -1
  11. package/dist/button/ToolbarButton.js +3 -2
  12. package/dist/button/ToolbarButton.js.map +1 -1
  13. package/dist/checkbox/index.cjs +20 -9
  14. package/dist/checkbox/index.cjs.map +1 -1
  15. package/dist/checkbox/index.js +7 -2
  16. package/dist/checkbox/index.js.map +1 -1
  17. package/dist/checkbox-group/CheckboxGroup.cjs +14 -13
  18. package/dist/checkbox-group/CheckboxGroup.cjs.map +1 -1
  19. package/dist/checkbox-group/CheckboxGroup.js +2 -1
  20. package/dist/checkbox-group/CheckboxGroup.js.map +1 -1
  21. package/dist/components/FloatingPortal.cjs +66 -0
  22. package/dist/components/FloatingPortal.cjs.map +1 -0
  23. package/dist/components/FloatingPortal.js +55 -0
  24. package/dist/components/FloatingPortal.js.map +1 -0
  25. package/dist/components/FloatingRootStore.cjs +101 -0
  26. package/dist/components/FloatingRootStore.cjs.map +1 -0
  27. package/dist/components/FloatingRootStore.js +84 -0
  28. package/dist/components/FloatingRootStore.js.map +1 -0
  29. package/dist/components/FloatingTree.cjs +33 -0
  30. package/dist/components/FloatingTree.cjs.map +1 -0
  31. package/dist/components/FloatingTree.js +22 -0
  32. package/dist/components/FloatingTree.js.map +1 -0
  33. package/dist/composite/composite.cjs +6 -0
  34. package/dist/composite/composite.js +1 -1
  35. package/dist/content/ScrollAreaContent.cjs +3 -3
  36. package/dist/content/ScrollAreaContent.cjs.map +1 -1
  37. package/dist/content/ScrollAreaContent.js +1 -1
  38. package/dist/control/FieldControl.cjs +3 -3
  39. package/dist/control/FieldControl.cjs.map +1 -1
  40. package/dist/control/FieldControl.js +1 -1
  41. package/dist/control/SliderControl.cjs +3 -3
  42. package/dist/control/SliderControl.cjs.map +1 -1
  43. package/dist/control/SliderControl.js +3 -3
  44. package/dist/corner/ScrollAreaCorner.cjs +3 -3
  45. package/dist/corner/ScrollAreaCorner.cjs.map +1 -1
  46. package/dist/corner/ScrollAreaCorner.js +1 -1
  47. package/dist/decrement/NumberFieldDecrement.cjs +868 -0
  48. package/dist/decrement/NumberFieldDecrement.cjs.map +1 -0
  49. package/dist/decrement/NumberFieldDecrement.js +701 -0
  50. package/dist/decrement/NumberFieldDecrement.js.map +1 -0
  51. package/dist/description/FieldDescription.cjs +2 -2
  52. package/dist/description/FieldDescription.cjs.map +1 -1
  53. package/dist/description/FieldDescription.js +1 -1
  54. package/dist/error/FieldError.cjs +2 -2
  55. package/dist/error/FieldError.cjs.map +1 -1
  56. package/dist/error/FieldError.js +1 -1
  57. package/dist/fallback/AvatarFallback.cjs +4 -48
  58. package/dist/fallback/AvatarFallback.cjs.map +1 -1
  59. package/dist/fallback/AvatarFallback.js +4 -42
  60. package/dist/fallback/AvatarFallback.js.map +1 -1
  61. package/dist/floating-ui-vue/index.js +638 -0
  62. package/dist/floating-ui-vue/index.js.map +1 -0
  63. package/dist/form/Form.cjs +3 -3
  64. package/dist/form/Form.cjs.map +1 -1
  65. package/dist/form/Form.js +1 -1
  66. package/dist/group/NumberFieldGroup.cjs +72 -0
  67. package/dist/group/NumberFieldGroup.cjs.map +1 -0
  68. package/dist/group/NumberFieldGroup.js +67 -0
  69. package/dist/group/NumberFieldGroup.js.map +1 -0
  70. package/dist/group/ToolbarGroup.cjs +2 -2
  71. package/dist/group/ToolbarGroup.cjs.map +1 -1
  72. package/dist/group/ToolbarGroup.js +1 -1
  73. package/dist/header/AccordionHeader.cjs +2 -2
  74. package/dist/header/AccordionHeader.cjs.map +1 -1
  75. package/dist/header/AccordionHeader.js +1 -1
  76. package/dist/hooks/useDismiss.cjs +502 -0
  77. package/dist/hooks/useDismiss.cjs.map +1 -0
  78. package/dist/hooks/useHoverFloatingInteraction.cjs +233 -0
  79. package/dist/hooks/useHoverFloatingInteraction.cjs.map +1 -0
  80. package/dist/image/AvatarImage.cjs +4 -4
  81. package/dist/image/AvatarImage.cjs.map +1 -1
  82. package/dist/image/AvatarImage.js +1 -1
  83. package/dist/increment/NumberFieldIncrement.cjs +113 -0
  84. package/dist/increment/NumberFieldIncrement.cjs.map +1 -0
  85. package/dist/increment/NumberFieldIncrement.js +108 -0
  86. package/dist/increment/NumberFieldIncrement.js.map +1 -0
  87. package/dist/index.cjs +80 -8
  88. package/dist/index.d.cts +4328 -1600
  89. package/dist/index.d.cts.map +1 -1
  90. package/dist/index.d.ts +4328 -1600
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +8 -4
  93. package/dist/index2.cjs +9435 -3236
  94. package/dist/index2.cjs.map +1 -1
  95. package/dist/index2.js +8905 -3049
  96. package/dist/index2.js.map +1 -1
  97. package/dist/rolldown-runtime.js +36 -0
  98. package/package.json +1 -1
  99. package/src/floating-ui-vue/components/FloatingPortal.ts +171 -0
  100. package/src/floating-ui-vue/components/FloatingPortal.vue +259 -0
  101. package/src/floating-ui-vue/components/FloatingRootStore.ts +83 -0
  102. package/src/floating-ui-vue/components/FloatingTree.ts +64 -0
  103. package/src/floating-ui-vue/components/FloatingTreeStore.ts +21 -0
  104. package/src/floating-ui-vue/hooks/useDismiss.ts +689 -0
  105. package/src/floating-ui-vue/hooks/useHoverFloatingInteraction.ts +244 -0
  106. package/src/floating-ui-vue/hooks/useHoverInteractionSharedState.ts +125 -0
  107. package/src/floating-ui-vue/hooks/useHoverShared.ts +53 -0
  108. package/src/floating-ui-vue/index.ts +48 -0
  109. package/src/floating-ui-vue/middleware/arrow.ts +114 -0
  110. package/src/floating-ui-vue/types.ts +117 -0
  111. package/src/floating-ui-vue/utils/composite.ts +20 -0
  112. package/src/floating-ui-vue/utils/constants.ts +2 -0
  113. package/src/floating-ui-vue/utils/createAttribute.ts +3 -0
  114. package/src/floating-ui-vue/utils/createEventEmitter.ts +20 -0
  115. package/src/floating-ui-vue/utils/element.ts +59 -0
  116. package/src/floating-ui-vue/utils/event.ts +15 -0
  117. package/src/floating-ui-vue/utils/nodes.ts +14 -0
  118. package/src/floating-ui-vue/utils/tabbable.ts +309 -0
  119. package/src/index.ts +7 -1
  120. package/src/number-field/decrement/NumberFieldDecrement.vue +109 -0
  121. package/src/number-field/group/NumberFieldGroup.vue +47 -0
  122. package/src/number-field/increment/NumberFieldIncrement.vue +109 -0
  123. package/src/number-field/index.ts +42 -0
  124. package/src/number-field/input/NumberFieldInput.vue +455 -0
  125. package/src/number-field/root/NumberFieldRoot.vue +626 -0
  126. package/src/number-field/root/NumberFieldRootContext.ts +94 -0
  127. package/src/number-field/root/useNumberFieldButton.ts +171 -0
  128. package/src/number-field/scrub-area/NumberFieldScrubArea.vue +359 -0
  129. package/src/number-field/scrub-area/NumberFieldScrubAreaContext.ts +26 -0
  130. package/src/number-field/scrub-area-cursor/NumberFieldScrubAreaCursor.vue +75 -0
  131. package/src/number-field/utils/constants.ts +4 -0
  132. package/src/number-field/utils/getViewportRect.ts +34 -0
  133. package/src/number-field/utils/parse.ts +248 -0
  134. package/src/number-field/utils/stateAttributesMapping.ts +9 -0
  135. package/src/number-field/utils/subscribeToVisualViewportResize.ts +27 -0
  136. package/src/number-field/utils/types.ts +24 -0
  137. package/src/number-field/utils/validate.ts +120 -0
  138. package/src/otp-field/index.ts +22 -0
  139. package/src/otp-field/input/OtpFieldInput.vue +336 -0
  140. package/src/otp-field/root/OtpFieldRoot.vue +583 -0
  141. package/src/otp-field/root/OtpFieldRootContext.ts +81 -0
  142. package/src/otp-field/utils/otp.ts +135 -0
  143. package/src/otp-field/utils/stateAttributesMapping.ts +16 -0
  144. package/src/radio/index.ts +28 -0
  145. package/src/radio/indicator/RadioIndicator.vue +90 -0
  146. package/src/radio/indicator/RadioIndicatorDataAttributes.ts +54 -0
  147. package/src/radio/root/RadioRoot.vue +544 -0
  148. package/src/radio/root/RadioRootContext.ts +18 -0
  149. package/src/radio/root/RadioRootDataAttributes.ts +46 -0
  150. package/src/radio/utils/stateAttributesMapping.ts +29 -0
  151. package/src/radio-group/RadioGroup.vue +381 -0
  152. package/src/radio-group/RadioGroupContext.ts +42 -0
  153. package/src/radio-group/RadioGroupDataAttributes.ts +6 -0
  154. package/src/radio-group/index.ts +10 -0
  155. package/src/tabs/index.ts +38 -0
  156. package/src/tabs/indicator/TabsIndicator.vue +201 -0
  157. package/src/tabs/indicator/TabsIndicatorCssVars.ts +26 -0
  158. package/src/tabs/indicator/TabsIndicatorDataAttributes.ts +12 -0
  159. package/src/tabs/indicator/prehydrationScript.min.ts +5 -0
  160. package/src/tabs/indicator/prehydrationScript.template.js +87 -0
  161. package/src/tabs/list/TabsList.vue +201 -0
  162. package/src/tabs/list/TabsListContext.ts +29 -0
  163. package/src/tabs/list/TabsListDataAttributes.ts +12 -0
  164. package/src/tabs/panel/TabsPanel.vue +167 -0
  165. package/src/tabs/panel/TabsPanelDataAttributes.ts +28 -0
  166. package/src/tabs/root/TabsRoot.vue +468 -0
  167. package/src/tabs/root/TabsRootContext.ts +56 -0
  168. package/src/tabs/root/TabsRootDataAttributes.ts +12 -0
  169. package/src/tabs/root/stateAttributesMapping.ts +9 -0
  170. package/src/tabs/tab/TabsTab.vue +274 -0
  171. package/src/tabs/tab/TabsTabDataAttributes.ts +20 -0
  172. package/src/tabs/utils/areTabValuesEqual.ts +6 -0
  173. package/src/tooltip/arrow/TooltipArrow.vue +116 -0
  174. package/src/tooltip/arrow/TooltipArrowDataAttributes.ts +31 -0
  175. package/src/tooltip/index.ts +54 -0
  176. package/src/tooltip/popup/TooltipPopup.vue +142 -0
  177. package/src/tooltip/popup/TooltipPopupDataAttributes.ts +35 -0
  178. package/src/tooltip/portal/TooltipPortal.vue +83 -0
  179. package/src/tooltip/portal/TooltipPortalContext.ts +19 -0
  180. package/src/tooltip/positioner/TooltipPositioner.vue +221 -0
  181. package/src/tooltip/positioner/TooltipPositionerContext.ts +23 -0
  182. package/src/tooltip/positioner/TooltipPositionerCssVars.ts +27 -0
  183. package/src/tooltip/positioner/TooltipPositionerDataAttributes.ts +26 -0
  184. package/src/tooltip/provider/TooltipProvider.vue +78 -0
  185. package/src/tooltip/provider/TooltipProviderContext.ts +19 -0
  186. package/src/tooltip/root/TooltipRoot.vue +401 -0
  187. package/src/tooltip/root/TooltipRootContext.ts +71 -0
  188. package/src/tooltip/store/TooltipHandle.ts +215 -0
  189. package/src/tooltip/trigger/TooltipTrigger.vue +343 -0
  190. package/src/tooltip/trigger/TooltipTriggerDataAttributes.ts +12 -0
  191. package/src/tooltip/utils/constants.ts +2 -0
  192. package/src/tooltip/viewport/TooltipViewport.vue +149 -0
  193. package/src/tooltip/viewport/TooltipViewportCssVars.ts +14 -0
  194. package/src/tooltip/viewport/TooltipViewportDataAttributes.ts +26 -0
  195. package/src/utils/FloatingPortalLite.vue +66 -0
  196. package/src/utils/FocusGuard.vue +36 -0
  197. package/src/utils/adaptiveOriginMiddleware.ts +79 -0
  198. package/src/utils/addEventListener.ts +16 -0
  199. package/src/utils/constants.ts +11 -0
  200. package/src/utils/createBaseUIEventDetails.ts +2 -0
  201. package/src/utils/detectBrowser.ts +15 -0
  202. package/src/utils/formatNumber.ts +35 -2
  203. package/src/utils/getCssDimensions.ts +19 -0
  204. package/src/utils/getDisabledMountTransitionStyles.ts +9 -0
  205. package/src/utils/hideMiddleware.ts +19 -0
  206. package/src/utils/mergeCleanups.ts +7 -0
  207. package/src/utils/platform.ts +18 -0
  208. package/src/utils/popupStateMapping.ts +103 -0
  209. package/src/utils/reasons.ts +4 -0
  210. package/src/utils/serializeValue.ts +17 -0
  211. package/src/utils/useAnchorPositioning.ts +644 -0
  212. package/src/utils/useInterval.ts +45 -0
  213. package/src/utils/usePopupAutoResize.ts +254 -0
  214. package/src/utils/usePopupViewport.ts +398 -0
  215. package/src/utils/usePositioner.ts +61 -0
  216. package/src/utils/usePressAndHold.ts +260 -0
  217. package/src/utils/useRenderElement.ts +3 -0
  218. package/src/utils/useValueChanged.ts +21 -0
@@ -0,0 +1,502 @@
1
+ const require_checkbox_index = require('../checkbox/index.cjs');
2
+ const require_control_SliderControl = require('../control/SliderControl.cjs');
3
+ const require_decrement_NumberFieldDecrement = require('../decrement/NumberFieldDecrement.cjs');
4
+ const require_components_FloatingPortal = require('../components/FloatingPortal.cjs');
5
+ const require_components_FloatingTree = require('../components/FloatingTree.cjs');
6
+ let vue = require("vue");
7
+ let _floating_ui_utils_dom = require("@floating-ui/utils/dom");
8
+
9
+ //#region src/floating-ui-vue/utils/constants.ts
10
+ const ARROW_LEFT = "ArrowLeft";
11
+ const ARROW_RIGHT = "ArrowRight";
12
+ const ARROW_UP = "ArrowUp";
13
+ const ARROW_DOWN = "ArrowDown";
14
+ const TYPEABLE_SELECTOR = "input:not([type=\"hidden\"]):not([disabled]),[contenteditable]:not([contenteditable=\"false\"]),textarea:not([disabled])";
15
+
16
+ //#endregion
17
+ //#region src/floating-ui-vue/utils/element.ts
18
+ function isTargetInsideEnabledTrigger(target, triggerElements) {
19
+ if (!(0, _floating_ui_utils_dom.isElement)(target)) return false;
20
+ const targetElement = target;
21
+ if (triggerElements.hasElement(targetElement)) return !targetElement.hasAttribute("data-trigger-disabled");
22
+ for (const [, trigger] of triggerElements.entries()) if (require_control_SliderControl.contains(trigger, targetElement)) return !trigger.hasAttribute("data-trigger-disabled");
23
+ return false;
24
+ }
25
+ function isEventTargetWithin(event, node) {
26
+ if (node == null) return false;
27
+ if ("composedPath" in event) return event.composedPath().includes(node);
28
+ const eventAgain = event;
29
+ return eventAgain.target != null && node.contains(eventAgain.target);
30
+ }
31
+ function isRootElement(element) {
32
+ return element.matches("html,body");
33
+ }
34
+ function isInteractiveElement(element) {
35
+ return element?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${TYPEABLE_SELECTOR}`) != null;
36
+ }
37
+ function matchesFocusVisible(element) {
38
+ if (!element) return true;
39
+ try {
40
+ return element.matches(":focus-visible");
41
+ } catch {
42
+ return true;
43
+ }
44
+ }
45
+
46
+ //#endregion
47
+ //#region src/utils/detectBrowser.ts
48
+ const ua = typeof navigator !== "undefined" ? navigator.userAgent : "";
49
+ const platform$1 = typeof navigator !== "undefined" ? navigator.platform : "";
50
+ const maxTouchPoints = typeof navigator !== "undefined" ? navigator.maxTouchPoints : 0;
51
+ const isWebKit = typeof CSS !== "undefined" && typeof CSS.supports === "function" ? CSS.supports("-webkit-backdrop-filter:none") && !/chrome|android/i.test(ua) : /\b(?:iphone|ipad|ipod)\b/i.test(ua);
52
+ const isFirefox = /firefox/i.test(ua);
53
+ const isIOS = /\b(?:iphone|ipad|ipod)\b/i.test(ua) || platform$1 === "MacIntel" && maxTouchPoints > 1;
54
+
55
+ //#endregion
56
+ //#region src/utils/addEventListener.ts
57
+ function addEventListener(target, type, listener, options) {
58
+ if (!target) return;
59
+ target.addEventListener(type, listener, options);
60
+ return () => {
61
+ target.removeEventListener(type, listener, options);
62
+ };
63
+ }
64
+
65
+ //#endregion
66
+ //#region src/utils/mergeCleanups.ts
67
+ function mergeCleanups(...cleanups) {
68
+ return () => {
69
+ for (const cleanup of cleanups) cleanup?.();
70
+ };
71
+ }
72
+
73
+ //#endregion
74
+ //#region src/utils/platform.ts
75
+ const platformName = typeof navigator !== "undefined" ? navigator.platform : "";
76
+ const userAgent = typeof navigator !== "undefined" ? navigator.userAgent : "";
77
+ const isApplePlatform = isIOS || /mac/i.test(platformName) || /\b(?:macintosh|iphone|ipad|ipod)\b/i.test(userAgent);
78
+ const platform = {
79
+ engine: { webkit: isWebKit },
80
+ screenReader: { voiceOver: isApplePlatform }
81
+ };
82
+
83
+ //#endregion
84
+ //#region src/floating-ui-vue/utils/nodes.ts
85
+ function getNodeChildren(nodes, id, onlyOpenChildren = true) {
86
+ return nodes.filter((node) => node.parentId === id).flatMap((child) => [...!onlyOpenChildren || child.context?.open.value ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);
87
+ }
88
+
89
+ //#endregion
90
+ //#region src/floating-ui-vue/hooks/useDismiss.ts
91
+ function alwaysFalse() {
92
+ return false;
93
+ }
94
+ function normalizeProp(normalizable) {
95
+ return {
96
+ escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false,
97
+ outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true
98
+ };
99
+ }
100
+ /**
101
+ * Closes the floating element when a dismissal is requested — by default, when
102
+ * the user presses the `escape` key or outside of the floating element.
103
+ * @see https://floating-ui.com/docs/useDismiss
104
+ */
105
+ function useDismiss(context, props = {}) {
106
+ const store = "rootStore" in context ? context.rootStore : context;
107
+ const open = store.useState("open");
108
+ const floatingElement = store.useState("floatingElement");
109
+ const domReferenceElement = store.useState("domReferenceElement");
110
+ const { dataRef } = store.context;
111
+ const tree = require_components_FloatingTree.useFloatingTree(props.externalTree);
112
+ const pressStartedInsideRef = (0, vue.shallowRef)(false);
113
+ const pressStartPreventedRef = (0, vue.shallowRef)(false);
114
+ const suppressNextOutsideClickRef = (0, vue.shallowRef)(false);
115
+ const isComposingRef = (0, vue.shallowRef)(false);
116
+ const currentPointerTypeRef = (0, vue.shallowRef)("");
117
+ const touchStateRef = (0, vue.shallowRef)(null);
118
+ const cancelDismissOnEndTimeout = require_decrement_NumberFieldDecrement.useTimeout();
119
+ const clearInsideVueTreeTimeout = require_decrement_NumberFieldDecrement.useTimeout();
120
+ function enabled() {
121
+ return (0, vue.toValue)(props.enabled ?? true) !== false;
122
+ }
123
+ function escapeKey() {
124
+ return (0, vue.toValue)(props.escapeKey ?? true) !== false;
125
+ }
126
+ function referencePress() {
127
+ return (props.referencePress ?? alwaysFalse)();
128
+ }
129
+ function outsidePress() {
130
+ return props.outsidePress ?? true;
131
+ }
132
+ function outsidePressEnabled() {
133
+ return outsidePress() !== false;
134
+ }
135
+ function getBubbles() {
136
+ return normalizeProp((0, vue.toValue)(props.bubbles));
137
+ }
138
+ function clearInsideVueTree() {
139
+ clearInsideVueTreeTimeout.clear();
140
+ dataRef.value.insideVueTree = false;
141
+ }
142
+ function hasBlockingChild(bubbleKey) {
143
+ const nodeId = dataRef.value.floatingContext?.nodeId;
144
+ return (tree ? getNodeChildren(tree.nodesRef.value, nodeId) : []).some((child) => {
145
+ return child.context?.open.value && !child.context.rootStore.context.dataRef.value[bubbleKey];
146
+ });
147
+ }
148
+ function isEventWithinOwnElements(event) {
149
+ return isEventTargetWithin(event, store.select("floatingElement")) || isEventTargetWithin(event, store.select("domReferenceElement"));
150
+ }
151
+ function closeOnReferencePress(event) {
152
+ if (!enabled() || !referencePress()) return;
153
+ store.setOpen(false, require_checkbox_index.createChangeEventDetails(require_checkbox_index.REASONS.triggerPress, event));
154
+ }
155
+ function closeOnEscapeKeyDown(event) {
156
+ if (!open.value || !enabled() || !escapeKey() || event.key !== "Escape") return;
157
+ if (isComposingRef.value) return;
158
+ const { escapeKey: escapeKeyBubbles } = getBubbles();
159
+ if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) return;
160
+ const eventDetails = require_checkbox_index.createChangeEventDetails(require_checkbox_index.REASONS.escapeKey, event);
161
+ store.setOpen(false, eventDetails);
162
+ if (!eventDetails.isCanceled) event.preventDefault();
163
+ if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) event.stopPropagation();
164
+ }
165
+ function markInsideVueTree() {
166
+ dataRef.value.insideVueTree = true;
167
+ clearInsideVueTreeTimeout.start(0, clearInsideVueTree);
168
+ }
169
+ function markPressStartedInsideVueTree(event) {
170
+ if (!open.value || !enabled() || event.button !== 0) return;
171
+ const target = require_control_SliderControl.getTarget(event);
172
+ if (!require_control_SliderControl.contains(store.select("floatingElement"), target)) return;
173
+ if (!pressStartedInsideRef.value) {
174
+ pressStartedInsideRef.value = true;
175
+ pressStartPreventedRef.value = false;
176
+ }
177
+ }
178
+ function markInsidePressStartPrevented(event) {
179
+ if (!open.value || !enabled()) return;
180
+ if (!event.defaultPrevented) return;
181
+ if (pressStartedInsideRef.value) pressStartPreventedRef.value = true;
182
+ }
183
+ function resetPressStartState() {
184
+ pressStartedInsideRef.value = false;
185
+ pressStartPreventedRef.value = false;
186
+ }
187
+ function getOutsidePressEvent() {
188
+ const type = currentPointerTypeRef.value;
189
+ const computedType = type === "pen" || !type ? "mouse" : type;
190
+ const outsidePressEvent = props.outsidePressEvent ?? "sloppy";
191
+ const resolved = typeof outsidePressEvent === "function" ? outsidePressEvent() : outsidePressEvent;
192
+ if (resolved == null) return "sloppy";
193
+ if (typeof resolved === "string") return resolved;
194
+ return resolved[computedType] ?? "sloppy";
195
+ }
196
+ function shouldIgnoreEvent(event) {
197
+ const computedOutsidePressEvent = getOutsidePressEvent();
198
+ return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click";
199
+ }
200
+ function isEventWithinFloatingTree(event) {
201
+ const nodeId = dataRef.value.floatingContext?.nodeId;
202
+ const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.value, nodeId).some((node) => isEventTargetWithin(event, node.context?.rootStore.select("floatingElement")));
203
+ return isEventWithinOwnElements(event) || Boolean(targetIsInsideChildren);
204
+ }
205
+ function addTargetEventListenerOnce(event, listener) {
206
+ const target = require_control_SliderControl.getTarget(event);
207
+ if (!target) return;
208
+ const eventTarget = target;
209
+ const handler = () => {
210
+ listener(event);
211
+ eventTarget.removeEventListener(event.type, handler);
212
+ };
213
+ eventTarget.addEventListener(event.type, handler);
214
+ }
215
+ (0, vue.watchEffect)((onCleanup) => {
216
+ if (!open.value || !enabled()) return;
217
+ const { escapeKey: escapeKeyBubbles, outsidePress: outsidePressBubbles } = getBubbles();
218
+ dataRef.value.__escapeKeyBubbles = escapeKeyBubbles;
219
+ dataRef.value.__outsidePressBubbles = outsidePressBubbles;
220
+ const compositionTimeout = new require_decrement_NumberFieldDecrement.Timeout();
221
+ const preventedPressSuppressionTimeout = new require_decrement_NumberFieldDecrement.Timeout();
222
+ function handleCompositionStart() {
223
+ compositionTimeout.clear();
224
+ isComposingRef.value = true;
225
+ }
226
+ function handleCompositionEnd() {
227
+ compositionTimeout.start(platform.engine.webkit ? 5 : 0, () => {
228
+ isComposingRef.value = false;
229
+ });
230
+ }
231
+ function suppressImmediateOutsideClickAfterPreventedStart() {
232
+ suppressNextOutsideClickRef.value = true;
233
+ preventedPressSuppressionTimeout.start(0, () => {
234
+ suppressNextOutsideClickRef.value = false;
235
+ });
236
+ }
237
+ function closeOnPressOutside(event) {
238
+ if (shouldIgnoreEvent(event)) {
239
+ if (event.type !== "click" && !isEventWithinOwnElements(event)) {
240
+ preventedPressSuppressionTimeout.clear();
241
+ suppressNextOutsideClickRef.value = false;
242
+ }
243
+ clearInsideVueTree();
244
+ return;
245
+ }
246
+ if (dataRef.value.insideVueTree) {
247
+ clearInsideVueTree();
248
+ return;
249
+ }
250
+ const target = require_control_SliderControl.getTarget(event);
251
+ const inertSelector = `[${require_components_FloatingPortal.createAttribute("inert")}]`;
252
+ const targetRoot = (0, _floating_ui_utils_dom.isElement)(target) ? target.getRootNode() : null;
253
+ const doc = require_control_SliderControl.ownerDocument(store.select("floatingElement"));
254
+ const markers = Array.from(((0, _floating_ui_utils_dom.isShadowRoot)(targetRoot) ? targetRoot : doc)?.querySelectorAll(inertSelector) ?? []);
255
+ const triggers = store.context.triggerElements;
256
+ if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => require_control_SliderControl.contains(trigger, target)))) return;
257
+ let targetRootAncestor = (0, _floating_ui_utils_dom.isElement)(target) ? target : null;
258
+ while (targetRootAncestor && !(0, _floating_ui_utils_dom.isLastTraversableNode)(targetRootAncestor)) {
259
+ const nextParent = (0, _floating_ui_utils_dom.getParentNode)(targetRootAncestor);
260
+ if ((0, _floating_ui_utils_dom.isLastTraversableNode)(nextParent) || !(0, _floating_ui_utils_dom.isElement)(nextParent)) break;
261
+ targetRootAncestor = nextParent;
262
+ }
263
+ if (markers.length && (0, _floating_ui_utils_dom.isElement)(target) && !isRootElement(target) && !require_control_SliderControl.contains(target, store.select("floatingElement")) && markers.every((marker) => !require_control_SliderControl.contains(targetRootAncestor, marker))) return;
264
+ if ((0, _floating_ui_utils_dom.isHTMLElement)(target) && !("touches" in event)) {
265
+ const lastTraversableNode = (0, _floating_ui_utils_dom.isLastTraversableNode)(target);
266
+ const style = (0, _floating_ui_utils_dom.getComputedStyle)(target);
267
+ const scrollRe = /auto|scroll/;
268
+ const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);
269
+ const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);
270
+ const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;
271
+ const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;
272
+ const isRTL = style.direction === "rtl";
273
+ const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);
274
+ const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;
275
+ if (pressedVerticalScrollbar || pressedHorizontalScrollbar) return;
276
+ }
277
+ if (isEventWithinFloatingTree(event)) return;
278
+ if (getOutsidePressEvent() === "intentional" && suppressNextOutsideClickRef.value) {
279
+ preventedPressSuppressionTimeout.clear();
280
+ suppressNextOutsideClickRef.value = false;
281
+ return;
282
+ }
283
+ const shouldDismiss = outsidePress();
284
+ if (typeof shouldDismiss === "function" && !shouldDismiss(event)) return;
285
+ if (hasBlockingChild("__outsidePressBubbles")) return;
286
+ store.setOpen(false, require_checkbox_index.createChangeEventDetails(require_checkbox_index.REASONS.outsidePress, event));
287
+ clearInsideVueTree();
288
+ }
289
+ function handlePointerDown(event) {
290
+ if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store.select("open") || !enabled() || isEventWithinOwnElements(event)) return;
291
+ closeOnPressOutside(event);
292
+ }
293
+ function handleTouchStart(event) {
294
+ if (getOutsidePressEvent() !== "sloppy" || !store.select("open") || !enabled() || isEventWithinOwnElements(event)) return;
295
+ const touch = event.touches[0];
296
+ if (touch) {
297
+ touchStateRef.value = {
298
+ startTime: Date.now(),
299
+ startX: touch.clientX,
300
+ startY: touch.clientY,
301
+ dismissOnTouchEnd: false,
302
+ dismissOnMouseDown: true
303
+ };
304
+ cancelDismissOnEndTimeout.start(1e3, () => {
305
+ if (touchStateRef.value) {
306
+ touchStateRef.value.dismissOnTouchEnd = false;
307
+ touchStateRef.value.dismissOnMouseDown = false;
308
+ }
309
+ });
310
+ }
311
+ }
312
+ function handleTouchStartCapture(event) {
313
+ currentPointerTypeRef.value = "touch";
314
+ addTargetEventListenerOnce(event, handleTouchStart);
315
+ }
316
+ function closeOnPressOutsideCapture(event) {
317
+ cancelDismissOnEndTimeout.clear();
318
+ if (event.type === "pointerdown") currentPointerTypeRef.value = event.pointerType;
319
+ if (event.type === "mousedown" && touchStateRef.value && !touchStateRef.value.dismissOnMouseDown) return;
320
+ addTargetEventListenerOnce(event, (targetEvent) => {
321
+ if (targetEvent.type === "pointerdown") handlePointerDown(targetEvent);
322
+ else closeOnPressOutside(targetEvent);
323
+ });
324
+ }
325
+ function handlePressEndCapture(event) {
326
+ if (!pressStartedInsideRef.value) return;
327
+ const pressStartedInsideDefaultPrevented = pressStartPreventedRef.value;
328
+ resetPressStartState();
329
+ if (getOutsidePressEvent() !== "intentional") return;
330
+ if (event.type === "pointercancel") {
331
+ if (pressStartedInsideDefaultPrevented) suppressImmediateOutsideClickAfterPreventedStart();
332
+ return;
333
+ }
334
+ if (isEventWithinFloatingTree(event)) return;
335
+ if (pressStartedInsideDefaultPrevented) {
336
+ suppressImmediateOutsideClickAfterPreventedStart();
337
+ return;
338
+ }
339
+ const shouldDismiss = outsidePress();
340
+ if (typeof shouldDismiss === "function" && !shouldDismiss(event)) return;
341
+ preventedPressSuppressionTimeout.clear();
342
+ suppressNextOutsideClickRef.value = true;
343
+ clearInsideVueTree();
344
+ }
345
+ function handleTouchMove(event) {
346
+ if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.value || isEventWithinOwnElements(event)) return;
347
+ const touch = event.touches[0];
348
+ if (!touch) return;
349
+ const deltaX = Math.abs(touch.clientX - touchStateRef.value.startX);
350
+ const deltaY = Math.abs(touch.clientY - touchStateRef.value.startY);
351
+ const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
352
+ if (distance > 5) touchStateRef.value.dismissOnTouchEnd = true;
353
+ if (distance > 10) {
354
+ closeOnPressOutside(event);
355
+ cancelDismissOnEndTimeout.clear();
356
+ touchStateRef.value = null;
357
+ }
358
+ }
359
+ function handleTouchMoveCapture(event) {
360
+ addTargetEventListenerOnce(event, handleTouchMove);
361
+ }
362
+ function handleTouchEnd(event) {
363
+ if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.value || isEventWithinOwnElements(event)) return;
364
+ if (touchStateRef.value.dismissOnTouchEnd) closeOnPressOutside(event);
365
+ cancelDismissOnEndTimeout.clear();
366
+ touchStateRef.value = null;
367
+ }
368
+ function handleTouchEndCapture(event) {
369
+ addTargetEventListenerOnce(event, handleTouchEnd);
370
+ }
371
+ const doc = require_control_SliderControl.ownerDocument(floatingElement.value ?? domReferenceElement.value);
372
+ const unsubscribe = mergeCleanups(escapeKey() ? mergeCleanups(addEventListener(doc, "keydown", closeOnEscapeKeyDown), addEventListener(doc, "compositionstart", handleCompositionStart), addEventListener(doc, "compositionend", handleCompositionEnd)) : void 0, outsidePressEnabled() ? mergeCleanups(addEventListener(doc, "click", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerdown", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerup", handlePressEndCapture, true), addEventListener(doc, "pointercancel", handlePressEndCapture, true), addEventListener(doc, "mousedown", closeOnPressOutsideCapture, true), addEventListener(doc, "mouseup", handlePressEndCapture, true), addEventListener(doc, "touchstart", handleTouchStartCapture, true), addEventListener(doc, "touchmove", handleTouchMoveCapture, true), addEventListener(doc, "touchend", handleTouchEndCapture, true)) : void 0);
373
+ onCleanup(() => {
374
+ unsubscribe();
375
+ compositionTimeout.clear();
376
+ preventedPressSuppressionTimeout.clear();
377
+ resetPressStartState();
378
+ suppressNextOutsideClickRef.value = false;
379
+ });
380
+ });
381
+ (0, vue.watchEffect)(() => {
382
+ outsidePress();
383
+ clearInsideVueTree();
384
+ });
385
+ (0, vue.onScopeDispose)(() => {
386
+ cancelDismissOnEndTimeout.clear();
387
+ clearInsideVueTreeTimeout.clear();
388
+ });
389
+ const reference = {
390
+ onKeydown: closeOnEscapeKeyDown,
391
+ onPointerdown: closeOnReferencePress,
392
+ onClick: closeOnReferencePress
393
+ };
394
+ return {
395
+ reference,
396
+ floating: {
397
+ onKeydown: closeOnEscapeKeyDown,
398
+ onPointerdown: markInsidePressStartPrevented,
399
+ onMousedown: markInsidePressStartPrevented,
400
+ onClickCapture: markInsideVueTree,
401
+ onMousedownCapture(event) {
402
+ markInsideVueTree();
403
+ markPressStartedInsideVueTree(event);
404
+ },
405
+ onPointerdownCapture(event) {
406
+ markInsideVueTree();
407
+ markPressStartedInsideVueTree(event);
408
+ },
409
+ onMouseupCapture: markInsideVueTree,
410
+ onTouchendCapture: markInsideVueTree,
411
+ onTouchmoveCapture: markInsideVueTree
412
+ },
413
+ trigger: reference
414
+ };
415
+ }
416
+
417
+ //#endregion
418
+ Object.defineProperty(exports, 'ARROW_DOWN', {
419
+ enumerable: true,
420
+ get: function () {
421
+ return ARROW_DOWN;
422
+ }
423
+ });
424
+ Object.defineProperty(exports, 'ARROW_LEFT', {
425
+ enumerable: true,
426
+ get: function () {
427
+ return ARROW_LEFT;
428
+ }
429
+ });
430
+ Object.defineProperty(exports, 'ARROW_RIGHT', {
431
+ enumerable: true,
432
+ get: function () {
433
+ return ARROW_RIGHT;
434
+ }
435
+ });
436
+ Object.defineProperty(exports, 'ARROW_UP', {
437
+ enumerable: true,
438
+ get: function () {
439
+ return ARROW_UP;
440
+ }
441
+ });
442
+ Object.defineProperty(exports, 'addEventListener', {
443
+ enumerable: true,
444
+ get: function () {
445
+ return addEventListener;
446
+ }
447
+ });
448
+ Object.defineProperty(exports, 'getNodeChildren', {
449
+ enumerable: true,
450
+ get: function () {
451
+ return getNodeChildren;
452
+ }
453
+ });
454
+ Object.defineProperty(exports, 'isFirefox', {
455
+ enumerable: true,
456
+ get: function () {
457
+ return isFirefox;
458
+ }
459
+ });
460
+ Object.defineProperty(exports, 'isIOS', {
461
+ enumerable: true,
462
+ get: function () {
463
+ return isIOS;
464
+ }
465
+ });
466
+ Object.defineProperty(exports, 'isInteractiveElement', {
467
+ enumerable: true,
468
+ get: function () {
469
+ return isInteractiveElement;
470
+ }
471
+ });
472
+ Object.defineProperty(exports, 'isTargetInsideEnabledTrigger', {
473
+ enumerable: true,
474
+ get: function () {
475
+ return isTargetInsideEnabledTrigger;
476
+ }
477
+ });
478
+ Object.defineProperty(exports, 'isWebKit', {
479
+ enumerable: true,
480
+ get: function () {
481
+ return isWebKit;
482
+ }
483
+ });
484
+ Object.defineProperty(exports, 'matchesFocusVisible', {
485
+ enumerable: true,
486
+ get: function () {
487
+ return matchesFocusVisible;
488
+ }
489
+ });
490
+ Object.defineProperty(exports, 'mergeCleanups', {
491
+ enumerable: true,
492
+ get: function () {
493
+ return mergeCleanups;
494
+ }
495
+ });
496
+ Object.defineProperty(exports, 'useDismiss', {
497
+ enumerable: true,
498
+ get: function () {
499
+ return useDismiss;
500
+ }
501
+ });
502
+ //# sourceMappingURL=useDismiss.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDismiss.cjs","names":["contains","platform","useFloatingTree","useTimeout","createChangeEventDetails","REASONS","getTarget","contains","Timeout","createAttribute","ownerDocument"],"sources":["../../src/floating-ui-vue/utils/constants.ts","../../src/floating-ui-vue/utils/element.ts","../../src/utils/detectBrowser.ts","../../src/utils/addEventListener.ts","../../src/utils/mergeCleanups.ts","../../src/utils/platform.ts","../../src/floating-ui-vue/utils/nodes.ts","../../src/floating-ui-vue/hooks/useDismiss.ts"],"sourcesContent":[],"mappings":"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"}