@octanejs/base-ui 0.1.31 → 0.1.32

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 (201) hide show
  1. package/dist/cjs/accordion.cjs +497 -0
  2. package/dist/cjs/alert-dialog.cjs +65 -0
  3. package/dist/cjs/avatar.cjs +234 -0
  4. package/dist/cjs/button.cjs +54 -0
  5. package/dist/cjs/checkbox-group.cjs +165 -0
  6. package/dist/cjs/checkbox.cjs +475 -0
  7. package/dist/cjs/collapsible.cjs +700 -0
  8. package/dist/cjs/context-menu.cjs +257 -0
  9. package/dist/cjs/csp-provider.cjs +40 -0
  10. package/dist/cjs/dialog.cjs +741 -0
  11. package/dist/cjs/direction-provider.cjs +35 -0
  12. package/dist/cjs/field.cjs +559 -0
  13. package/dist/cjs/fieldset.cjs +101 -0
  14. package/dist/cjs/form.cjs +177 -0
  15. package/dist/cjs/index.cjs +133 -0
  16. package/dist/cjs/input.cjs +32 -0
  17. package/dist/cjs/internal.cjs +51 -0
  18. package/dist/cjs/menu.cjs +2420 -0
  19. package/dist/cjs/menubar.cjs +132 -0
  20. package/dist/cjs/merge-props.cjs +34 -0
  21. package/dist/cjs/meter.cjs +169 -0
  22. package/dist/cjs/number-field.cjs +812 -0
  23. package/dist/cjs/popover.cjs +966 -0
  24. package/dist/cjs/preview-card.cjs +632 -0
  25. package/dist/cjs/progress.cjs +206 -0
  26. package/dist/cjs/radio-group.cjs +264 -0
  27. package/dist/cjs/radio.cjs +327 -0
  28. package/dist/cjs/separator.cjs +44 -0
  29. package/dist/cjs/slider.cjs +1384 -0
  30. package/dist/cjs/switch.cjs +306 -0
  31. package/dist/cjs/tabs.cjs +727 -0
  32. package/dist/cjs/toast.cjs +1766 -0
  33. package/dist/cjs/toggle-group.cjs +118 -0
  34. package/dist/cjs/toggle.cjs +121 -0
  35. package/dist/cjs/tooltip.cjs +835 -0
  36. package/dist/cjs/unstable-use-media-query.cjs +79 -0
  37. package/dist/cjs/use-render.cjs +40 -0
  38. package/dist/cjs/utils/CSPContext.cjs +38 -0
  39. package/dist/cjs/utils/CheckboxGroupContext.cjs +40 -0
  40. package/dist/cjs/utils/CompositeRootContext.cjs +40 -0
  41. package/dist/cjs/utils/ContextMenuRootContext.cjs +42 -0
  42. package/dist/cjs/utils/DirectionContext.cjs +34 -0
  43. package/dist/cjs/utils/FloatingPortalLite.cjs +47 -0
  44. package/dist/cjs/utils/InternalBackdrop.cjs +49 -0
  45. package/dist/cjs/utils/MenubarContext.cjs +40 -0
  46. package/dist/cjs/utils/RadioGroupContext.cjs +34 -0
  47. package/dist/cjs/utils/RequestQueue.cjs +111 -0
  48. package/dist/cjs/utils/TimeoutManager.cjs +50 -0
  49. package/dist/cjs/utils/ToggleGroupContext.cjs +40 -0
  50. package/dist/cjs/utils/adaptiveOriginMiddleware.cjs +94 -0
  51. package/dist/cjs/utils/addEventListener.cjs +33 -0
  52. package/dist/cjs/utils/areArraysEqual.cjs +30 -0
  53. package/dist/cjs/utils/clamp.cjs +30 -0
  54. package/dist/cjs/utils/closePart.cjs +70 -0
  55. package/dist/cjs/utils/collapsibleOpenStateMapping.cjs +42 -0
  56. package/dist/cjs/utils/composeRefs.cjs +68 -0
  57. package/dist/cjs/utils/composite/CompositeItem.cjs +59 -0
  58. package/dist/cjs/utils/composite/CompositeList.cjs +177 -0
  59. package/dist/cjs/utils/composite/CompositeListContext.cjs +43 -0
  60. package/dist/cjs/utils/composite/CompositeRoot.cjs +118 -0
  61. package/dist/cjs/utils/composite/grid-utils.cjs +343 -0
  62. package/dist/cjs/utils/composite/gridNavigation.cjs +92 -0
  63. package/dist/cjs/utils/composite/keys.cjs +174 -0
  64. package/dist/cjs/utils/composite/list-utils.cjs +90 -0
  65. package/dist/cjs/utils/composite/useCompositeItem.cjs +63 -0
  66. package/dist/cjs/utils/composite/useCompositeListItem.cjs +104 -0
  67. package/dist/cjs/utils/composite/useCompositeRoot.cjs +263 -0
  68. package/dist/cjs/utils/constants.cjs +56 -0
  69. package/dist/cjs/utils/contains.cjs +46 -0
  70. package/dist/cjs/utils/createChangeEventDetails.cjs +92 -0
  71. package/dist/cjs/utils/dom.cjs +35 -0
  72. package/dist/cjs/utils/empty.cjs +34 -0
  73. package/dist/cjs/utils/field/FieldItemContext.cjs +34 -0
  74. package/dist/cjs/utils/field/FieldRootContext.cjs +80 -0
  75. package/dist/cjs/utils/field/FormContext.cjs +41 -0
  76. package/dist/cjs/utils/field/LabelableContext.cjs +43 -0
  77. package/dist/cjs/utils/field/LabelableProvider.cjs +115 -0
  78. package/dist/cjs/utils/field/constants.cjs +68 -0
  79. package/dist/cjs/utils/field/getCombinedFieldValidityData.cjs +36 -0
  80. package/dist/cjs/utils/field/useAriaLabelledBy.cjs +87 -0
  81. package/dist/cjs/utils/field/useFieldControlRegistration.cjs +165 -0
  82. package/dist/cjs/utils/field/useFieldValidation.cjs +285 -0
  83. package/dist/cjs/utils/field/useLabel.cjs +99 -0
  84. package/dist/cjs/utils/field/useLabelableId.cjs +105 -0
  85. package/dist/cjs/utils/field/useRegisterFieldControl.cjs +60 -0
  86. package/dist/cjs/utils/findRootOwnerId.cjs +37 -0
  87. package/dist/cjs/utils/floating/FloatingDelayGroup.cjs +219 -0
  88. package/dist/cjs/utils/floating/FloatingFocusManager.cjs +685 -0
  89. package/dist/cjs/utils/floating/FloatingPortal.cjs +230 -0
  90. package/dist/cjs/utils/floating/FloatingRootStore.cjs +87 -0
  91. package/dist/cjs/utils/floating/FloatingTree.cjs +86 -0
  92. package/dist/cjs/utils/floating/FloatingTreeStore.cjs +41 -0
  93. package/dist/cjs/utils/floating/FocusGuard.cjs +54 -0
  94. package/dist/cjs/utils/floating/composite.cjs +42 -0
  95. package/dist/cjs/utils/floating/constants.cjs +34 -0
  96. package/dist/cjs/utils/floating/createAttribute.cjs +30 -0
  97. package/dist/cjs/utils/floating/createEventEmitter.cjs +44 -0
  98. package/dist/cjs/utils/floating/element.cjs +103 -0
  99. package/dist/cjs/utils/floating/enqueueFocus.cjs +51 -0
  100. package/dist/cjs/utils/floating/event.cjs +65 -0
  101. package/dist/cjs/utils/floating/getEmptyRootContext.cjs +42 -0
  102. package/dist/cjs/utils/floating/gridNavigation.cjs +45 -0
  103. package/dist/cjs/utils/floating/markOthers.cjs +181 -0
  104. package/dist/cjs/utils/floating/nodes.cjs +48 -0
  105. package/dist/cjs/utils/floating/safePolygon.cjs +301 -0
  106. package/dist/cjs/utils/floating/tabbable.cjs +242 -0
  107. package/dist/cjs/utils/floating/types.cjs +16 -0
  108. package/dist/cjs/utils/floating/useClick.cjs +153 -0
  109. package/dist/cjs/utils/floating/useClientPoint.cjs +225 -0
  110. package/dist/cjs/utils/floating/useDismiss.cjs +506 -0
  111. package/dist/cjs/utils/floating/useFloating.cjs +186 -0
  112. package/dist/cjs/utils/floating/useFloatingRootContext.cjs +75 -0
  113. package/dist/cjs/utils/floating/useFocus.cjs +184 -0
  114. package/dist/cjs/utils/floating/useHoverFloatingInteraction.cjs +231 -0
  115. package/dist/cjs/utils/floating/useHoverInteractionSharedState.cjs +113 -0
  116. package/dist/cjs/utils/floating/useHoverReferenceInteraction.cjs +380 -0
  117. package/dist/cjs/utils/floating/useHoverShared.cjs +65 -0
  118. package/dist/cjs/utils/floating/useListNavigation.cjs +665 -0
  119. package/dist/cjs/utils/floating/useSyncedFloatingRootContext.cjs +91 -0
  120. package/dist/cjs/utils/floating/useTypeahead.cjs +187 -0
  121. package/dist/cjs/utils/formatNumber.cjs +60 -0
  122. package/dist/cjs/utils/generateId.cjs +32 -0
  123. package/dist/cjs/utils/getCssDimensions.cjs +42 -0
  124. package/dist/cjs/utils/getDefaultFormSubmitter.cjs +42 -0
  125. package/dist/cjs/utils/getDisabledMountTransitionStyles.cjs +32 -0
  126. package/dist/cjs/utils/getElementRef.cjs +35 -0
  127. package/dist/cjs/utils/getPseudoElementBounds.cjs +56 -0
  128. package/dist/cjs/utils/getStateAttributesProps.cjs +46 -0
  129. package/dist/cjs/utils/hideMiddleware.cjs +42 -0
  130. package/dist/cjs/utils/inertValue.cjs +30 -0
  131. package/dist/cjs/utils/matchesFocusVisible.cjs +38 -0
  132. package/dist/cjs/utils/mergeCleanups.cjs +37 -0
  133. package/dist/cjs/utils/mergeObjects.cjs +39 -0
  134. package/dist/cjs/utils/mergeProps.cjs +182 -0
  135. package/dist/cjs/utils/noop.cjs +29 -0
  136. package/dist/cjs/utils/number/constants.cjs +34 -0
  137. package/dist/cjs/utils/number/parse.cjs +258 -0
  138. package/dist/cjs/utils/number/types.cjs +16 -0
  139. package/dist/cjs/utils/number/validate.cjs +104 -0
  140. package/dist/cjs/utils/owner.cjs +35 -0
  141. package/dist/cjs/utils/platform.cjs +83 -0
  142. package/dist/cjs/utils/popupStateMapping.cjs +74 -0
  143. package/dist/cjs/utils/popups/index.cjs +39 -0
  144. package/dist/cjs/utils/popups/inlineRect.cjs +218 -0
  145. package/dist/cjs/utils/popups/popupStoreUtils.cjs +379 -0
  146. package/dist/cjs/utils/popups/popupTriggerMap.cjs +76 -0
  147. package/dist/cjs/utils/popups/store.cjs +118 -0
  148. package/dist/cjs/utils/popups/useTriggerFocusGuards.cjs +72 -0
  149. package/dist/cjs/utils/resolveAriaLabelledBy.cjs +35 -0
  150. package/dist/cjs/utils/resolveClassName.cjs +30 -0
  151. package/dist/cjs/utils/resolveRef.cjs +33 -0
  152. package/dist/cjs/utils/resolveStyle.cjs +30 -0
  153. package/dist/cjs/utils/serializeValue.cjs +40 -0
  154. package/dist/cjs/utils/slider/asc.cjs +30 -0
  155. package/dist/cjs/utils/slider/getMidpoint.cjs +34 -0
  156. package/dist/cjs/utils/slider/getPushedThumbValues.cjs +73 -0
  157. package/dist/cjs/utils/slider/getSliderValue.cjs +42 -0
  158. package/dist/cjs/utils/slider/replaceArrayItemAtIndex.cjs +33 -0
  159. package/dist/cjs/utils/slider/resolveThumbCollision.cjs +155 -0
  160. package/dist/cjs/utils/slider/roundValueToStep.cjs +45 -0
  161. package/dist/cjs/utils/slider/validateMinimumDistance.cjs +40 -0
  162. package/dist/cjs/utils/slider/valueArrayToPercentages.cjs +36 -0
  163. package/dist/cjs/utils/store/ReactStore.cjs +135 -0
  164. package/dist/cjs/utils/store/Store.cjs +83 -0
  165. package/dist/cjs/utils/store/createSelector.cjs +74 -0
  166. package/dist/cjs/utils/store/useStore.cjs +51 -0
  167. package/dist/cjs/utils/stringifyLocale.cjs +36 -0
  168. package/dist/cjs/utils/useAnchorPositioning.cjs +421 -0
  169. package/dist/cjs/utils/useAnchoredPopupScrollLock.cjs +59 -0
  170. package/dist/cjs/utils/useAnimationFrame.cjs +93 -0
  171. package/dist/cjs/utils/useAnimationsFinished.cjs +98 -0
  172. package/dist/cjs/utils/useBaseUiId.cjs +36 -0
  173. package/dist/cjs/utils/useButton.cjs +177 -0
  174. package/dist/cjs/utils/useCheckboxGroupParent.cjs +114 -0
  175. package/dist/cjs/utils/useControlled.cjs +47 -0
  176. package/dist/cjs/utils/useEnhancedClickHandler.cjs +60 -0
  177. package/dist/cjs/utils/useFocusableWhenDisabled.cjs +77 -0
  178. package/dist/cjs/utils/useForcedRerendering.cjs +35 -0
  179. package/dist/cjs/utils/useIsHydrating.cjs +44 -0
  180. package/dist/cjs/utils/useMixedToggleClickHandler.cjs +66 -0
  181. package/dist/cjs/utils/useOnFirstRender.cjs +35 -0
  182. package/dist/cjs/utils/useOnMount.cjs +36 -0
  183. package/dist/cjs/utils/useOpenChangeComplete.cjs +57 -0
  184. package/dist/cjs/utils/useOpenInteractionType.cjs +69 -0
  185. package/dist/cjs/utils/usePopupAutoResize.cjs +191 -0
  186. package/dist/cjs/utils/usePopupViewport.cjs +283 -0
  187. package/dist/cjs/utils/usePositioner.cjs +53 -0
  188. package/dist/cjs/utils/usePressAndHold.cjs +51 -0
  189. package/dist/cjs/utils/usePreviousValue.cjs +47 -0
  190. package/dist/cjs/utils/useRefWithInit.cjs +41 -0
  191. package/dist/cjs/utils/useRegisteredLabelId.cjs +48 -0
  192. package/dist/cjs/utils/useRenderElement.cjs +106 -0
  193. package/dist/cjs/utils/useScrollLock.cjs +232 -0
  194. package/dist/cjs/utils/useStableCallback.cjs +41 -0
  195. package/dist/cjs/utils/useTimeout.cjs +66 -0
  196. package/dist/cjs/utils/useTransitionStatus.cjs +116 -0
  197. package/dist/cjs/utils/useValueAsRef.cjs +43 -0
  198. package/dist/cjs/utils/useValueChanged.cjs +55 -0
  199. package/dist/cjs/utils/valueToPercent.cjs +30 -0
  200. package/dist/cjs/utils/visuallyHidden.cjs +49 -0
  201. package/package.json +20 -8
@@ -0,0 +1,380 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var useHoverReferenceInteraction_exports = {};
20
+ __export(useHoverReferenceInteraction_exports, {
21
+ safePolygon: () => import_safePolygon.safePolygon,
22
+ useHoverReferenceInteraction: () => useHoverReferenceInteraction
23
+ });
24
+ module.exports = __toCommonJS(useHoverReferenceInteraction_exports);
25
+ var import_octane = require("octane");
26
+ var import_internal = require("../../internal.cjs");
27
+ var import_addEventListener = require("../addEventListener.cjs");
28
+ var import_mergeCleanups = require("../mergeCleanups.cjs");
29
+ var import_owner = require("../owner.cjs");
30
+ var import_useStableCallback = require("../useStableCallback.cjs");
31
+ var import_useValueAsRef = require("../useValueAsRef.cjs");
32
+ var import_dom = require("../dom.cjs");
33
+ var import_createChangeEventDetails = require("../createChangeEventDetails.cjs");
34
+ var import_FloatingTree = require("./FloatingTree.cjs");
35
+ var import_element = require("./element.cjs");
36
+ var import_event = require("./event.cjs");
37
+ var import_useHoverInteractionSharedState = require("./useHoverInteractionSharedState.cjs");
38
+ var import_useHoverShared = require("./useHoverShared.cjs");
39
+ var import_safePolygon = require("./safePolygon.cjs");
40
+ const EMPTY_REF = { current: null };
41
+ function useHoverReferenceInteraction(...args) {
42
+ const [user, slotArg] = (0, import_internal.splitSlot)(args);
43
+ const slot = slotArg ?? (0, import_internal.S)("useHoverReferenceInteraction");
44
+ const context = user[0];
45
+ const props = user[1] ?? {};
46
+ const {
47
+ enabled = true,
48
+ delay = 0,
49
+ handleClose = null,
50
+ mouseOnly = false,
51
+ restMs = 0,
52
+ move = true,
53
+ triggerElementRef = EMPTY_REF,
54
+ externalTree,
55
+ isActiveTrigger = true,
56
+ getHandleCloseContext,
57
+ isClosing,
58
+ shouldOpen: shouldOpenProp
59
+ } = props;
60
+ const store = context != null && "rootStore" in context ? context.rootStore : context;
61
+ const dataRef = store?.context.dataRef;
62
+ const events = store?.context.events;
63
+ const tree = (0, import_FloatingTree.useFloatingTree)(externalTree);
64
+ const instance = (0, import_useHoverInteractionSharedState.useHoverInteractionSharedState)(store, (0, import_internal.subSlot)(slot, "shared"));
65
+ const isHoverCloseActiveRef = (0, import_octane.useRef)(false, (0, import_internal.subSlot)(slot, "hca"));
66
+ const handleCloseRef = (0, import_useValueAsRef.useValueAsRef)(handleClose, (0, import_internal.subSlot)(slot, "hc"));
67
+ const delayRef = (0, import_useValueAsRef.useValueAsRef)(delay, (0, import_internal.subSlot)(slot, "delay"));
68
+ const restMsRef = (0, import_useValueAsRef.useValueAsRef)(restMs, (0, import_internal.subSlot)(slot, "rest"));
69
+ const enabledRef = (0, import_useValueAsRef.useValueAsRef)(enabled, (0, import_internal.subSlot)(slot, "en"));
70
+ const shouldOpenRef = (0, import_useValueAsRef.useValueAsRef)(
71
+ shouldOpenProp,
72
+ (0, import_internal.subSlot)(slot, "so")
73
+ );
74
+ const isClosingRef = (0, import_useValueAsRef.useValueAsRef)(isClosing, (0, import_internal.subSlot)(slot, "cl"));
75
+ const isClickLikeOpenEvent = (0, import_useStableCallback.useStableCallback)(
76
+ () => {
77
+ return (0, import_useHoverShared.isClickLikeOpenEvent)(dataRef.current.openEvent?.type, instance.interactedInside);
78
+ },
79
+ (0, import_internal.subSlot)(slot, "iclo")
80
+ );
81
+ const checkShouldOpen = (0, import_useStableCallback.useStableCallback)(
82
+ () => {
83
+ return shouldOpenRef.current?.() !== false;
84
+ },
85
+ (0, import_internal.subSlot)(slot, "cso")
86
+ );
87
+ const isOverInactiveTrigger = (0, import_useStableCallback.useStableCallback)(
88
+ (currentDomReference, currentTarget, target) => {
89
+ const allTriggers = store.context.triggerElements;
90
+ if (allTriggers.hasElement(currentTarget)) {
91
+ return !currentDomReference || !(0, import_element.contains)(currentDomReference, currentTarget);
92
+ }
93
+ if (!(0, import_dom.isElement)(target)) {
94
+ return false;
95
+ }
96
+ const targetElement = target;
97
+ return allTriggers.hasMatchingElement((trigger) => (0, import_element.contains)(trigger, targetElement)) && (!currentDomReference || !(0, import_element.contains)(currentDomReference, targetElement));
98
+ },
99
+ (0, import_internal.subSlot)(slot, "ooit")
100
+ );
101
+ const cleanupMouseMoveHandler = (0, import_useStableCallback.useStableCallback)(
102
+ () => {
103
+ if (!instance.handler) {
104
+ return;
105
+ }
106
+ const doc = (0, import_owner.ownerDocument)(store.select("domReferenceElement"));
107
+ doc.removeEventListener("mousemove", instance.handler);
108
+ instance.handler = void 0;
109
+ },
110
+ (0, import_internal.subSlot)(slot, "cmmh")
111
+ );
112
+ const clearPointerEvents = (0, import_useStableCallback.useStableCallback)(
113
+ () => {
114
+ (0, import_useHoverInteractionSharedState.clearSafePolygonPointerEventsMutation)(instance);
115
+ },
116
+ (0, import_internal.subSlot)(slot, "cpe")
117
+ );
118
+ if (isActiveTrigger) {
119
+ instance.handleCloseOptions = handleCloseRef.current?.__options;
120
+ }
121
+ (0, import_octane.useEffect)(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler], (0, import_internal.subSlot)(slot, "e:cleanup"));
122
+ (0, import_octane.useEffect)(
123
+ () => {
124
+ if (!enabled) {
125
+ return void 0;
126
+ }
127
+ function onOpenChangeLocal(details) {
128
+ if (!details.open) {
129
+ isHoverCloseActiveRef.current = details.reason === import_createChangeEventDetails.REASONS.triggerHover;
130
+ cleanupMouseMoveHandler();
131
+ instance.openChangeTimeout.clear();
132
+ instance.restTimeout.clear();
133
+ instance.blockMouseMove = true;
134
+ instance.restTimeoutPending = false;
135
+ } else {
136
+ isHoverCloseActiveRef.current = false;
137
+ }
138
+ }
139
+ events.on("openchange", onOpenChangeLocal);
140
+ return () => {
141
+ events.off("openchange", onOpenChangeLocal);
142
+ };
143
+ },
144
+ [enabled, events, instance, cleanupMouseMoveHandler],
145
+ (0, import_internal.subSlot)(slot, "e:openchange")
146
+ );
147
+ (0, import_octane.useEffect)(
148
+ () => {
149
+ if (!enabled) {
150
+ return void 0;
151
+ }
152
+ function closeWithDelay(event, runElseBranch = true) {
153
+ const closeDelay = (0, import_useHoverShared.getDelay)(delayRef.current, "close", instance.pointerType);
154
+ if (closeDelay) {
155
+ instance.openChangeTimeout.start(closeDelay, () => {
156
+ store.setOpen(false, (0, import_createChangeEventDetails.createChangeEventDetails)(import_createChangeEventDetails.REASONS.triggerHover, event));
157
+ tree?.events.emit("floating.closed", event);
158
+ });
159
+ } else if (runElseBranch) {
160
+ instance.openChangeTimeout.clear();
161
+ store.setOpen(false, (0, import_createChangeEventDetails.createChangeEventDetails)(import_createChangeEventDetails.REASONS.triggerHover, event));
162
+ tree?.events.emit("floating.closed", event);
163
+ }
164
+ }
165
+ const trigger = triggerElementRef.current ?? (isActiveTrigger ? store.select("domReferenceElement") : null);
166
+ if (!(0, import_dom.isElement)(trigger)) {
167
+ return void 0;
168
+ }
169
+ function onMouseEnter(event) {
170
+ instance.openChangeTimeout.clear();
171
+ instance.blockMouseMove = false;
172
+ if (mouseOnly && !(0, import_event.isMouseLikePointerType)(instance.pointerType)) {
173
+ return;
174
+ }
175
+ const restMsValue = (0, import_useHoverShared.getRestMs)(restMsRef.current);
176
+ const openDelay = (0, import_useHoverShared.getDelay)(delayRef.current, "open", instance.pointerType);
177
+ const eventTarget = (0, import_element.getTarget)(event);
178
+ const currentTarget = event.currentTarget ?? null;
179
+ const currentDomReference = store.select("domReferenceElement");
180
+ let triggerNode = currentTarget;
181
+ if ((0, import_dom.isElement)(eventTarget) && !store.context.triggerElements.hasElement(eventTarget)) {
182
+ for (const triggerElement of store.context.triggerElements.elements()) {
183
+ if ((0, import_element.contains)(triggerElement, eventTarget)) {
184
+ triggerNode = triggerElement;
185
+ break;
186
+ }
187
+ }
188
+ }
189
+ if ((0, import_dom.isElement)(currentTarget) && (0, import_dom.isElement)(currentDomReference) && !store.context.triggerElements.hasElement(currentTarget) && (0, import_element.contains)(currentTarget, currentDomReference)) {
190
+ triggerNode = currentDomReference;
191
+ }
192
+ const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget);
193
+ const isOpen = store.select("open");
194
+ const isInClosingTransition = isClosingRef.current?.() ?? store.select("transitionStatus") === "ending";
195
+ const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current;
196
+ const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && (0, import_dom.isElement)(triggerNode) && (0, import_dom.isElement)(currentDomReference) && (0, import_element.contains)(currentDomReference, triggerNode) && isHoverCloseTransition;
197
+ const isRestOnlyDelay = restMsValue > 0 && !openDelay;
198
+ const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition;
199
+ const shouldOpen = !isOpen || isOverInactive;
200
+ if (shouldOpenImmediately) {
201
+ if (checkShouldOpen()) {
202
+ store.setOpen(true, (0, import_createChangeEventDetails.createChangeEventDetails)(import_createChangeEventDetails.REASONS.triggerHover, event, triggerNode));
203
+ }
204
+ return;
205
+ }
206
+ if (isRestOnlyDelay) {
207
+ return;
208
+ }
209
+ if (openDelay) {
210
+ instance.openChangeTimeout.start(openDelay, () => {
211
+ if (shouldOpen && checkShouldOpen()) {
212
+ store.setOpen(
213
+ true,
214
+ (0, import_createChangeEventDetails.createChangeEventDetails)(import_createChangeEventDetails.REASONS.triggerHover, event, triggerNode)
215
+ );
216
+ }
217
+ });
218
+ } else if (shouldOpen) {
219
+ if (checkShouldOpen()) {
220
+ store.setOpen(true, (0, import_createChangeEventDetails.createChangeEventDetails)(import_createChangeEventDetails.REASONS.triggerHover, event, triggerNode));
221
+ }
222
+ }
223
+ }
224
+ function onMouseLeave(event) {
225
+ if (isClickLikeOpenEvent()) {
226
+ clearPointerEvents();
227
+ return;
228
+ }
229
+ cleanupMouseMoveHandler();
230
+ const domReferenceElement = store.select("domReferenceElement");
231
+ const doc = (0, import_owner.ownerDocument)(domReferenceElement);
232
+ instance.restTimeout.clear();
233
+ instance.restTimeoutPending = false;
234
+ const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.();
235
+ if ((0, import_useHoverShared.isInsideEnabledTrigger)(event.relatedTarget, store.context.triggerElements)) {
236
+ return;
237
+ }
238
+ if (handleCloseRef.current && handleCloseContextBase) {
239
+ if (!store.select("open")) {
240
+ instance.openChangeTimeout.clear();
241
+ }
242
+ const currentTrigger = triggerElementRef.current;
243
+ instance.handler = handleCloseRef.current({
244
+ ...handleCloseContextBase,
245
+ tree,
246
+ x: event.clientX,
247
+ y: event.clientY,
248
+ onClose() {
249
+ clearPointerEvents();
250
+ cleanupMouseMoveHandler();
251
+ if (enabledRef.current && !isClickLikeOpenEvent() && currentTrigger === store.select("domReferenceElement")) {
252
+ closeWithDelay(event, true);
253
+ }
254
+ }
255
+ });
256
+ const activeHandler = instance.handler;
257
+ doc.addEventListener("mousemove", activeHandler);
258
+ activeHandler(event);
259
+ return;
260
+ }
261
+ const shouldClose = instance.pointerType === "touch" ? !(0, import_element.contains)(store.select("floatingElement"), event.relatedTarget) : true;
262
+ if (shouldClose) {
263
+ closeWithDelay(event);
264
+ }
265
+ }
266
+ if (move) {
267
+ return (0, import_mergeCleanups.mergeCleanups)(
268
+ (0, import_addEventListener.addEventListener)(trigger, "mousemove", onMouseEnter, { once: true }),
269
+ (0, import_addEventListener.addEventListener)(trigger, "mouseenter", onMouseEnter),
270
+ (0, import_addEventListener.addEventListener)(trigger, "mouseleave", onMouseLeave)
271
+ );
272
+ }
273
+ return (0, import_mergeCleanups.mergeCleanups)(
274
+ (0, import_addEventListener.addEventListener)(trigger, "mouseenter", onMouseEnter),
275
+ (0, import_addEventListener.addEventListener)(trigger, "mouseleave", onMouseLeave)
276
+ );
277
+ },
278
+ [
279
+ cleanupMouseMoveHandler,
280
+ clearPointerEvents,
281
+ dataRef,
282
+ delayRef,
283
+ store,
284
+ enabled,
285
+ handleCloseRef,
286
+ instance,
287
+ isActiveTrigger,
288
+ isOverInactiveTrigger,
289
+ isClickLikeOpenEvent,
290
+ mouseOnly,
291
+ move,
292
+ restMsRef,
293
+ triggerElementRef,
294
+ tree,
295
+ enabledRef,
296
+ getHandleCloseContext,
297
+ isClosingRef,
298
+ checkShouldOpen
299
+ ],
300
+ (0, import_internal.subSlot)(slot, "e:listeners")
301
+ );
302
+ return (0, import_octane.useMemo)(
303
+ () => {
304
+ if (!enabled) {
305
+ return void 0;
306
+ }
307
+ function setPointerRef(event) {
308
+ instance.pointerType = event.pointerType;
309
+ }
310
+ return {
311
+ onPointerDown: setPointerRef,
312
+ onPointerEnter: setPointerRef,
313
+ onMouseMove(event) {
314
+ const trigger = event.currentTarget;
315
+ const currentDomReference = store.select("domReferenceElement");
316
+ const currentOpen = store.select("open");
317
+ const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target);
318
+ if (mouseOnly && !(0, import_event.isMouseLikePointerType)(instance.pointerType)) {
319
+ return;
320
+ }
321
+ if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) {
322
+ const floatingElement = store.select("floatingElement");
323
+ if (floatingElement) {
324
+ const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body;
325
+ (0, import_useHoverInteractionSharedState.applySafePolygonPointerEventsMutation)(instance, {
326
+ scopeElement,
327
+ referenceElement: trigger,
328
+ floatingElement
329
+ });
330
+ }
331
+ }
332
+ const restMsValue = (0, import_useHoverShared.getRestMs)(restMsRef.current);
333
+ if (currentOpen && !isOverInactive || restMsValue === 0) {
334
+ return;
335
+ }
336
+ if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) {
337
+ return;
338
+ }
339
+ instance.restTimeout.clear();
340
+ function handleMouseMove() {
341
+ instance.restTimeoutPending = false;
342
+ if (isClickLikeOpenEvent()) {
343
+ return;
344
+ }
345
+ const latestOpen = store.select("open");
346
+ if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) {
347
+ store.setOpen(true, (0, import_createChangeEventDetails.createChangeEventDetails)(import_createChangeEventDetails.REASONS.triggerHover, event, trigger));
348
+ }
349
+ }
350
+ if (instance.pointerType === "touch") {
351
+ (0, import_octane.flushSync)(() => {
352
+ handleMouseMove();
353
+ });
354
+ } else if (isOverInactive && currentOpen) {
355
+ handleMouseMove();
356
+ } else {
357
+ instance.restTimeoutPending = true;
358
+ instance.restTimeout.start(restMsValue, handleMouseMove);
359
+ }
360
+ }
361
+ };
362
+ },
363
+ [
364
+ enabled,
365
+ instance,
366
+ isClickLikeOpenEvent,
367
+ isOverInactiveTrigger,
368
+ mouseOnly,
369
+ store,
370
+ restMsRef,
371
+ checkShouldOpen
372
+ ],
373
+ (0, import_internal.subSlot)(slot, "props")
374
+ );
375
+ }
376
+ // Annotate the CommonJS export names for ESM import in node:
377
+ 0 && (module.exports = {
378
+ safePolygon,
379
+ useHoverReferenceInteraction
380
+ });
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var useHoverShared_exports = {};
20
+ __export(useHoverShared_exports, {
21
+ getDelay: () => getDelay,
22
+ getRestMs: () => getRestMs,
23
+ isClickLikeOpenEvent: () => isClickLikeOpenEvent,
24
+ isHoverOpenEvent: () => isHoverOpenEvent,
25
+ isInsideEnabledTrigger: () => import_element.isTargetInsideEnabledTrigger
26
+ });
27
+ module.exports = __toCommonJS(useHoverShared_exports);
28
+ var import_event = require("./event.cjs");
29
+ var import_element = require("./element.cjs");
30
+ function resolveValue(value, pointerType) {
31
+ if (pointerType != null && !(0, import_event.isMouseLikePointerType)(pointerType)) {
32
+ return 0;
33
+ }
34
+ if (typeof value === "function") {
35
+ return value();
36
+ }
37
+ return value;
38
+ }
39
+ function getDelay(value, prop, pointerType) {
40
+ const result = resolveValue(value, pointerType);
41
+ if (typeof result === "number") {
42
+ return result;
43
+ }
44
+ return result?.[prop];
45
+ }
46
+ function getRestMs(value) {
47
+ if (typeof value === "function") {
48
+ return value();
49
+ }
50
+ return value;
51
+ }
52
+ function isClickLikeOpenEvent(openEventType, interactedInside) {
53
+ return interactedInside || openEventType === "click" || openEventType === "mousedown";
54
+ }
55
+ function isHoverOpenEvent(openEventType) {
56
+ return Boolean(openEventType?.includes("mouse")) && openEventType !== "mousedown";
57
+ }
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ getDelay,
61
+ getRestMs,
62
+ isClickLikeOpenEvent,
63
+ isHoverOpenEvent,
64
+ isInsideEnabledTrigger
65
+ });