@octanejs/base-ui 0.1.30 → 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,379 @@
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 popupStoreUtils_exports = {};
20
+ __export(popupStoreUtils_exports, {
21
+ FOCUSABLE_POPUP_PROPS: () => FOCUSABLE_POPUP_PROPS,
22
+ applyPopupOpenChange: () => applyPopupOpenChange,
23
+ attachPreventUnmountOnClose: () => attachPreventUnmountOnClose,
24
+ createDefaultInitialFocus: () => createDefaultInitialFocus,
25
+ setPopupOpenState: () => setPopupOpenState,
26
+ useImplicitActiveTrigger: () => useImplicitActiveTrigger,
27
+ useInitialOpenSync: () => useInitialOpenSync,
28
+ useOpenStateTransitions: () => useOpenStateTransitions,
29
+ usePopupInteractionProps: () => usePopupInteractionProps,
30
+ usePopupRootSync: () => usePopupRootSync,
31
+ usePopupStore: () => usePopupStore,
32
+ useTriggerDataForwarding: () => useTriggerDataForwarding,
33
+ useTriggerRegistration: () => useTriggerRegistration
34
+ });
35
+ module.exports = __toCommonJS(popupStoreUtils_exports);
36
+ var import_octane = require("octane");
37
+ var import_internal = require("../../internal.cjs");
38
+ var import_useStableCallback = require("../useStableCallback.cjs");
39
+ var import_useOnFirstRender = require("../useOnFirstRender.cjs");
40
+ var import_useTransitionStatus = require("../useTransitionStatus.cjs");
41
+ var import_useOpenChangeComplete = require("../useOpenChangeComplete.cjs");
42
+ var import_empty = require("../empty.cjs");
43
+ var import_constants = require("../floating/constants.cjs");
44
+ var import_FloatingTree = require("../floating/FloatingTree.cjs");
45
+ var import_useSyncedFloatingRootContext = require("../floating/useSyncedFloatingRootContext.cjs");
46
+ var import_createChangeEventDetails = require("../createChangeEventDetails.cjs");
47
+ const FOCUSABLE_POPUP_PROPS = {
48
+ tabIndex: -1,
49
+ [import_constants.FOCUSABLE_ATTRIBUTE]: ""
50
+ };
51
+ function createDefaultInitialFocus(popupRef) {
52
+ return (interactionType) => interactionType === "touch" ? popupRef.current : true;
53
+ }
54
+ function usePopupStore(externalStore, createStore, treatPopupAsFloatingElement, slot) {
55
+ const floatingId = (0, import_octane.useId)((0, import_internal.subSlot)(slot, "fid"));
56
+ const nested = (0, import_FloatingTree.useFloatingParentNodeId)() != null;
57
+ const internalStoreRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "store"));
58
+ if (externalStore === void 0 && internalStoreRef.current === null) {
59
+ internalStoreRef.current = createStore(floatingId, nested);
60
+ }
61
+ const store = externalStore ?? internalStoreRef.current;
62
+ (0, import_useSyncedFloatingRootContext.useSyncedFloatingRootContext)(
63
+ {
64
+ popupStore: store,
65
+ treatPopupAsFloatingElement,
66
+ floatingRootContext: store.state.floatingRootContext,
67
+ floatingId,
68
+ nested,
69
+ onOpenChange: store.setOpen
70
+ },
71
+ (0, import_internal.subSlot)(slot, "synced")
72
+ );
73
+ return { store, internalStore: internalStoreRef.current };
74
+ }
75
+ function useTriggerRegistration(id, store, slot) {
76
+ const registeredElementIdRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "rid"));
77
+ const registeredElementRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "rel"));
78
+ return (0, import_octane.useCallback)(
79
+ (element) => {
80
+ if (id === void 0) {
81
+ return;
82
+ }
83
+ let shouldSyncTriggerCount = false;
84
+ if (registeredElementIdRef.current !== null) {
85
+ const registeredId = registeredElementIdRef.current;
86
+ const registeredElement = registeredElementRef.current;
87
+ const currentElement = store.context.triggerElements.getById(registeredId);
88
+ if (registeredElement && currentElement === registeredElement) {
89
+ store.context.triggerElements.delete(registeredId);
90
+ shouldSyncTriggerCount = true;
91
+ }
92
+ registeredElementIdRef.current = null;
93
+ registeredElementRef.current = null;
94
+ }
95
+ if (element !== null) {
96
+ registeredElementIdRef.current = id;
97
+ registeredElementRef.current = element;
98
+ store.context.triggerElements.add(id, element);
99
+ shouldSyncTriggerCount = true;
100
+ }
101
+ if (shouldSyncTriggerCount) {
102
+ const triggerCount = store.context.triggerElements.size;
103
+ if (store.select("open") && store.state.triggerCount !== triggerCount) {
104
+ store.set("triggerCount", triggerCount);
105
+ }
106
+ }
107
+ },
108
+ [store, id],
109
+ (0, import_internal.subSlot)(slot, "cb")
110
+ );
111
+ }
112
+ function setPopupOpenState(state, open, trigger, preventUnmountOnClose = false) {
113
+ if (open) {
114
+ state.preventUnmountingOnClose = false;
115
+ } else if (preventUnmountOnClose) {
116
+ state.preventUnmountingOnClose = true;
117
+ }
118
+ const triggerId = trigger?.id ?? null;
119
+ if (triggerId || open) {
120
+ state.activeTriggerId = triggerId;
121
+ state.activeTriggerElement = trigger ?? null;
122
+ }
123
+ }
124
+ function attachPreventUnmountOnClose(eventDetails) {
125
+ let preventUnmountOnClose = false;
126
+ eventDetails.preventUnmountOnClose = () => {
127
+ preventUnmountOnClose = true;
128
+ };
129
+ return () => preventUnmountOnClose;
130
+ }
131
+ function applyPopupOpenChange(store, nextOpen, eventDetails, options = {}) {
132
+ const reason = eventDetails.reason;
133
+ const isHover = reason === import_createChangeEventDetails.REASONS.triggerHover;
134
+ const isFocusOpen = nextOpen && reason === import_createChangeEventDetails.REASONS.triggerFocus;
135
+ const isDismissClose = !nextOpen && (reason === import_createChangeEventDetails.REASONS.triggerPress || reason === import_createChangeEventDetails.REASONS.escapeKey);
136
+ const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails);
137
+ store.context.onOpenChange?.(nextOpen, eventDetails);
138
+ if (eventDetails.isCanceled) {
139
+ return;
140
+ }
141
+ options.onBeforeDispatch?.();
142
+ store.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
143
+ const changeState = () => {
144
+ const updatedState = { ...options.extraState, open: nextOpen };
145
+ if (isFocusOpen) {
146
+ updatedState.instantType = "focus";
147
+ } else if (isDismissClose) {
148
+ updatedState.instantType = "dismiss";
149
+ } else if (isHover) {
150
+ updatedState.instantType = void 0;
151
+ }
152
+ setPopupOpenState(updatedState, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose());
153
+ store.update(updatedState);
154
+ };
155
+ if (isHover) {
156
+ (0, import_octane.flushSync)(changeState);
157
+ } else {
158
+ changeState();
159
+ }
160
+ }
161
+ function useInitialOpenSync(store, openProp, defaultOpen, defaultTriggerId, slot) {
162
+ (0, import_useOnFirstRender.useOnFirstRender)(
163
+ () => {
164
+ if (openProp === void 0 && store.state.open === false && defaultOpen) {
165
+ store.state = {
166
+ ...store.state,
167
+ open: true,
168
+ activeTriggerId: defaultTriggerId,
169
+ preventUnmountingOnClose: false
170
+ };
171
+ }
172
+ },
173
+ (0, import_internal.subSlot)(slot, "first")
174
+ );
175
+ }
176
+ function useTriggerDataForwarding(triggerId, triggerElementRef, store, stateUpdates, slot) {
177
+ const isMountedByThisTrigger = store.useState(
178
+ "isMountedByTrigger",
179
+ (0, import_internal.subSlot)(slot, "mbt"),
180
+ triggerId
181
+ );
182
+ const baseRegisterTrigger = useTriggerRegistration(triggerId, store, (0, import_internal.subSlot)(slot, "reg"));
183
+ const registerTrigger = (0, import_useStableCallback.useStableCallback)(
184
+ (element) => {
185
+ baseRegisterTrigger(element);
186
+ if (!element) {
187
+ return;
188
+ }
189
+ const open = store.select("open");
190
+ const activeTriggerId = store.select("activeTriggerId");
191
+ if (activeTriggerId === triggerId) {
192
+ store.update({
193
+ activeTriggerElement: element,
194
+ ...open ? stateUpdates : null
195
+ });
196
+ return;
197
+ }
198
+ if (activeTriggerId == null && open) {
199
+ store.update({
200
+ activeTriggerId: triggerId,
201
+ activeTriggerElement: element,
202
+ ...stateUpdates
203
+ });
204
+ }
205
+ },
206
+ (0, import_internal.subSlot)(slot, "regcb")
207
+ );
208
+ (0, import_octane.useLayoutEffect)(
209
+ () => {
210
+ if (isMountedByThisTrigger) {
211
+ store.update({
212
+ activeTriggerElement: triggerElementRef.current,
213
+ ...stateUpdates
214
+ });
215
+ }
216
+ },
217
+ [isMountedByThisTrigger, store, triggerElementRef, ...Object.values(stateUpdates)],
218
+ (0, import_internal.subSlot)(slot, "e")
219
+ );
220
+ return { registerTrigger, isMountedByThisTrigger };
221
+ }
222
+ function useImplicitActiveTrigger(store, options, slot) {
223
+ const { closeOnActiveTriggerUnmount = false } = options;
224
+ const open = store.useState("open", (0, import_internal.subSlot)(slot, "open"));
225
+ const reactiveTriggerCount = store.useState("triggerCount", (0, import_internal.subSlot)(slot, "tc"));
226
+ (0, import_octane.useLayoutEffect)(
227
+ () => {
228
+ if (!open) {
229
+ if (store.state.triggerCount !== 0) {
230
+ store.set("triggerCount", 0);
231
+ }
232
+ return;
233
+ }
234
+ const triggerCount = store.context.triggerElements.size;
235
+ const stateUpdates = {};
236
+ if (store.state.triggerCount !== triggerCount) {
237
+ stateUpdates.triggerCount = triggerCount;
238
+ }
239
+ const activeTriggerId = store.select("activeTriggerId");
240
+ let lostActiveTriggerId = null;
241
+ if (activeTriggerId) {
242
+ const activeTriggerElement = store.context.triggerElements.getById(activeTriggerId);
243
+ if (!activeTriggerElement) {
244
+ lostActiveTriggerId = activeTriggerId;
245
+ } else if (activeTriggerElement !== store.state.activeTriggerElement) {
246
+ stateUpdates.activeTriggerElement = activeTriggerElement;
247
+ }
248
+ }
249
+ if (!lostActiveTriggerId && !activeTriggerId && triggerCount === 1) {
250
+ const iteratorResult = store.context.triggerElements.entries().next();
251
+ if (!iteratorResult.done) {
252
+ const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value;
253
+ stateUpdates.activeTriggerId = implicitTriggerId;
254
+ stateUpdates.activeTriggerElement = implicitTriggerElement;
255
+ }
256
+ }
257
+ if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0 || stateUpdates.activeTriggerElement !== void 0) {
258
+ store.update(stateUpdates);
259
+ }
260
+ if (lostActiveTriggerId) {
261
+ if (closeOnActiveTriggerUnmount) {
262
+ queueMicrotask(() => {
263
+ if (store.select("open") && store.select("activeTriggerId") === lostActiveTriggerId && !store.context.triggerElements.getById(lostActiveTriggerId)) {
264
+ const eventDetails = (0, import_createChangeEventDetails.createChangeEventDetails)(import_createChangeEventDetails.REASONS.none);
265
+ store.setOpen(false, eventDetails);
266
+ if (!eventDetails.isCanceled) {
267
+ store.update({
268
+ activeTriggerId: null,
269
+ activeTriggerElement: null
270
+ });
271
+ }
272
+ }
273
+ });
274
+ }
275
+ }
276
+ },
277
+ [open, store, reactiveTriggerCount, closeOnActiveTriggerUnmount],
278
+ (0, import_internal.subSlot)(slot, "e")
279
+ );
280
+ }
281
+ function useOpenStateTransitions(open, store, onUnmount, slot) {
282
+ const { mounted, setMounted, transitionStatus } = (0, import_useTransitionStatus.useTransitionStatus)(
283
+ open,
284
+ void 0,
285
+ void 0,
286
+ (0, import_internal.subSlot)(slot, "ts")
287
+ );
288
+ const preventUnmountingOnClose = store.useState(
289
+ "preventUnmountingOnClose",
290
+ (0, import_internal.subSlot)(slot, "puoc")
291
+ );
292
+ const syncedPreventUnmountingOnClose = open ? false : preventUnmountingOnClose;
293
+ store.useSyncedValues(
294
+ {
295
+ mounted,
296
+ transitionStatus,
297
+ preventUnmountingOnClose: syncedPreventUnmountingOnClose
298
+ },
299
+ (0, import_internal.subSlot)(slot, "sync")
300
+ );
301
+ const forceUnmount = (0, import_useStableCallback.useStableCallback)(
302
+ () => {
303
+ setMounted(false);
304
+ store.update({
305
+ activeTriggerId: null,
306
+ activeTriggerElement: null,
307
+ mounted: false,
308
+ preventUnmountingOnClose: false
309
+ });
310
+ onUnmount?.();
311
+ store.context.onOpenChangeComplete?.(false);
312
+ },
313
+ (0, import_internal.subSlot)(slot, "fu")
314
+ );
315
+ (0, import_useOpenChangeComplete.useOpenChangeComplete)(
316
+ {
317
+ enabled: mounted && !open && !syncedPreventUnmountingOnClose,
318
+ open,
319
+ ref: store.context.popupRef,
320
+ onComplete() {
321
+ if (!open) {
322
+ forceUnmount();
323
+ }
324
+ }
325
+ },
326
+ (0, import_internal.subSlot)(slot, "occ")
327
+ );
328
+ return { forceUnmount, transitionStatus };
329
+ }
330
+ function usePopupInteractionProps(store, statePart, slot) {
331
+ store.useSyncedValues(statePart, (0, import_internal.subSlot)(slot, "sync"));
332
+ (0, import_octane.useLayoutEffect)(
333
+ () => () => {
334
+ store.update({
335
+ activeTriggerProps: import_empty.EMPTY_OBJECT,
336
+ inactiveTriggerProps: import_empty.EMPTY_OBJECT,
337
+ popupProps: import_empty.EMPTY_OBJECT
338
+ });
339
+ },
340
+ [store],
341
+ (0, import_internal.subSlot)(slot, "e")
342
+ );
343
+ }
344
+ function usePopupRootSync(store, open, slot) {
345
+ (0, import_octane.useLayoutEffect)(
346
+ () => {
347
+ if (!open && store.state.openMethod !== null) {
348
+ store.set("openMethod", null);
349
+ }
350
+ },
351
+ [open, store],
352
+ (0, import_internal.subSlot)(slot, "e1")
353
+ );
354
+ (0, import_octane.useLayoutEffect)(
355
+ () => () => {
356
+ if (store.state.openMethod !== null) {
357
+ store.set("openMethod", null);
358
+ }
359
+ },
360
+ [store],
361
+ (0, import_internal.subSlot)(slot, "e2")
362
+ );
363
+ }
364
+ // Annotate the CommonJS export names for ESM import in node:
365
+ 0 && (module.exports = {
366
+ FOCUSABLE_POPUP_PROPS,
367
+ applyPopupOpenChange,
368
+ attachPreventUnmountOnClose,
369
+ createDefaultInitialFocus,
370
+ setPopupOpenState,
371
+ useImplicitActiveTrigger,
372
+ useInitialOpenSync,
373
+ useOpenStateTransitions,
374
+ usePopupInteractionProps,
375
+ usePopupRootSync,
376
+ usePopupStore,
377
+ useTriggerDataForwarding,
378
+ useTriggerRegistration
379
+ });
@@ -0,0 +1,76 @@
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 popupTriggerMap_exports = {};
20
+ __export(popupTriggerMap_exports, {
21
+ PopupTriggerMap: () => PopupTriggerMap
22
+ });
23
+ module.exports = __toCommonJS(popupTriggerMap_exports);
24
+ class PopupTriggerMap {
25
+ elementsSet;
26
+ idMap;
27
+ constructor() {
28
+ this.elementsSet = /* @__PURE__ */ new Set();
29
+ this.idMap = /* @__PURE__ */ new Map();
30
+ }
31
+ add(id, element) {
32
+ const existingElement = this.idMap.get(id);
33
+ if (existingElement === element) {
34
+ return;
35
+ }
36
+ if (existingElement !== void 0) {
37
+ this.elementsSet.delete(existingElement);
38
+ }
39
+ this.elementsSet.add(element);
40
+ this.idMap.set(id, element);
41
+ }
42
+ delete(id) {
43
+ const element = this.idMap.get(id);
44
+ if (element) {
45
+ this.elementsSet.delete(element);
46
+ this.idMap.delete(id);
47
+ }
48
+ }
49
+ hasElement(element) {
50
+ return this.elementsSet.has(element);
51
+ }
52
+ hasMatchingElement(predicate) {
53
+ for (const element of this.elementsSet) {
54
+ if (predicate(element)) {
55
+ return true;
56
+ }
57
+ }
58
+ return false;
59
+ }
60
+ getById(id) {
61
+ return this.idMap.get(id);
62
+ }
63
+ entries() {
64
+ return this.idMap.entries();
65
+ }
66
+ elements() {
67
+ return this.elementsSet.values();
68
+ }
69
+ get size() {
70
+ return this.idMap.size;
71
+ }
72
+ }
73
+ // Annotate the CommonJS export names for ESM import in node:
74
+ 0 && (module.exports = {
75
+ PopupTriggerMap
76
+ });
@@ -0,0 +1,118 @@
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 store_exports = {};
20
+ __export(store_exports, {
21
+ createInitialPopupStoreState: () => createInitialPopupStoreState,
22
+ createPopupFloatingRootContext: () => createPopupFloatingRootContext,
23
+ popupStoreSelectors: () => popupStoreSelectors
24
+ });
25
+ module.exports = __toCommonJS(store_exports);
26
+ var import_createSelector = require("../store/createSelector.cjs");
27
+ var import_empty = require("../empty.cjs");
28
+ var import_FloatingRootStore = require("../floating/FloatingRootStore.cjs");
29
+ var import_getEmptyRootContext = require("../floating/getEmptyRootContext.cjs");
30
+ function createInitialPopupStoreState() {
31
+ return {
32
+ open: false,
33
+ openProp: void 0,
34
+ mounted: false,
35
+ transitionStatus: void 0,
36
+ floatingRootContext: (0, import_getEmptyRootContext.getEmptyRootContext)(),
37
+ floatingId: void 0,
38
+ triggerCount: 0,
39
+ preventUnmountingOnClose: false,
40
+ payload: void 0,
41
+ activeTriggerId: null,
42
+ activeTriggerElement: null,
43
+ triggerIdProp: void 0,
44
+ popupElement: null,
45
+ positionerElement: null,
46
+ activeTriggerProps: import_empty.EMPTY_OBJECT,
47
+ inactiveTriggerProps: import_empty.EMPTY_OBJECT,
48
+ popupProps: import_empty.EMPTY_OBJECT
49
+ };
50
+ }
51
+ function createPopupFloatingRootContext(triggerElements, floatingId, nested = false) {
52
+ return new import_FloatingRootStore.FloatingRootStore({
53
+ open: false,
54
+ transitionStatus: void 0,
55
+ floatingElement: null,
56
+ referenceElement: null,
57
+ triggerElements,
58
+ floatingId,
59
+ syncOnly: true,
60
+ nested,
61
+ onOpenChange: void 0
62
+ });
63
+ }
64
+ const activeTriggerIdSelector = (0, import_createSelector.createSelector)(
65
+ (state) => state.triggerIdProp ?? state.activeTriggerId
66
+ );
67
+ const openSelector = (0, import_createSelector.createSelector)((state) => state.openProp ?? state.open);
68
+ const popupIdSelector = (0, import_createSelector.createSelector)((state) => {
69
+ const popupId = state.popupElement?.id ?? state.floatingId;
70
+ return popupId || void 0;
71
+ });
72
+ function triggerOwnsOpenPopup(state, triggerId) {
73
+ return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) === triggerId;
74
+ }
75
+ function triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) {
76
+ if (triggerOwnsOpenPopup(state, triggerId)) {
77
+ return true;
78
+ }
79
+ return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) == null && state.triggerCount === 1;
80
+ }
81
+ const popupStoreSelectors = {
82
+ open: openSelector,
83
+ mounted: (0, import_createSelector.createSelector)((state) => state.mounted),
84
+ transitionStatus: (0, import_createSelector.createSelector)((state) => state.transitionStatus),
85
+ floatingRootContext: (0, import_createSelector.createSelector)((state) => state.floatingRootContext),
86
+ triggerCount: (0, import_createSelector.createSelector)((state) => state.triggerCount),
87
+ preventUnmountingOnClose: (0, import_createSelector.createSelector)((state) => state.preventUnmountingOnClose),
88
+ payload: (0, import_createSelector.createSelector)((state) => state.payload),
89
+ activeTriggerId: activeTriggerIdSelector,
90
+ activeTriggerElement: (0, import_createSelector.createSelector)(
91
+ (state) => state.mounted ? state.activeTriggerElement : null
92
+ ),
93
+ popupId: popupIdSelector,
94
+ isTriggerActive: (0, import_createSelector.createSelector)(
95
+ (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId
96
+ ),
97
+ isOpenedByTrigger: (0, import_createSelector.createSelector)(
98
+ (state, triggerId) => triggerOwnsOpenPopup(state, triggerId)
99
+ ),
100
+ isMountedByTrigger: (0, import_createSelector.createSelector)(
101
+ (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted
102
+ ),
103
+ triggerProps: (0, import_createSelector.createSelector)(
104
+ (state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps
105
+ ),
106
+ triggerPopupId: (0, import_createSelector.createSelector)(
107
+ (state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : void 0
108
+ ),
109
+ popupProps: (0, import_createSelector.createSelector)((state) => state.popupProps),
110
+ popupElement: (0, import_createSelector.createSelector)((state) => state.popupElement),
111
+ positionerElement: (0, import_createSelector.createSelector)((state) => state.positionerElement)
112
+ };
113
+ // Annotate the CommonJS export names for ESM import in node:
114
+ 0 && (module.exports = {
115
+ createInitialPopupStoreState,
116
+ createPopupFloatingRootContext,
117
+ popupStoreSelectors
118
+ });
@@ -0,0 +1,72 @@
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 useTriggerFocusGuards_exports = {};
20
+ __export(useTriggerFocusGuards_exports, {
21
+ useTriggerFocusGuards: () => useTriggerFocusGuards
22
+ });
23
+ module.exports = __toCommonJS(useTriggerFocusGuards_exports);
24
+ var import_octane = require("octane");
25
+ var import_internal = require("../../internal.cjs");
26
+ var import_element = require("../floating/element.cjs");
27
+ var import_tabbable = require("../floating/tabbable.cjs");
28
+ var import_createChangeEventDetails = require("../createChangeEventDetails.cjs");
29
+ function useTriggerFocusGuards(store, triggerElementRef, slot) {
30
+ const preFocusGuardRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "pre"));
31
+ function handlePreFocusGuardFocus(event) {
32
+ (0, import_octane.flushSync)(() => {
33
+ store.setOpen(
34
+ false,
35
+ (0, import_createChangeEventDetails.createChangeEventDetails)(import_createChangeEventDetails.REASONS.focusOut, event, event.currentTarget)
36
+ );
37
+ });
38
+ const previousTabbable = (0, import_tabbable.getTabbableBeforeElement)(
39
+ preFocusGuardRef.current
40
+ );
41
+ previousTabbable?.focus();
42
+ }
43
+ function handleFocusTargetFocus(event) {
44
+ const positionerElement = store.select("positionerElement");
45
+ if (positionerElement && (0, import_tabbable.isOutsideEvent)(event, positionerElement)) {
46
+ store.context.beforeContentFocusGuardRef.current?.focus();
47
+ } else {
48
+ (0, import_octane.flushSync)(() => {
49
+ store.setOpen(
50
+ false,
51
+ (0, import_createChangeEventDetails.createChangeEventDetails)(import_createChangeEventDetails.REASONS.focusOut, event, event.currentTarget)
52
+ );
53
+ });
54
+ let nextTabbable = (0, import_tabbable.getTabbableAfterElement)(
55
+ store.context.triggerFocusTargetRef.current || triggerElementRef.current
56
+ );
57
+ while (nextTabbable !== null && (0, import_element.contains)(positionerElement, nextTabbable)) {
58
+ const prevTabbable = nextTabbable;
59
+ nextTabbable = (0, import_tabbable.getNextTabbable)(nextTabbable);
60
+ if (nextTabbable === prevTabbable) {
61
+ break;
62
+ }
63
+ }
64
+ nextTabbable?.focus();
65
+ }
66
+ }
67
+ return { preFocusGuardRef, handlePreFocusGuardFocus, handleFocusTargetFocus };
68
+ }
69
+ // Annotate the CommonJS export names for ESM import in node:
70
+ 0 && (module.exports = {
71
+ useTriggerFocusGuards
72
+ });
@@ -0,0 +1,35 @@
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 resolveAriaLabelledBy_exports = {};
20
+ __export(resolveAriaLabelledBy_exports, {
21
+ getDefaultLabelId: () => getDefaultLabelId,
22
+ resolveAriaLabelledBy: () => resolveAriaLabelledBy
23
+ });
24
+ module.exports = __toCommonJS(resolveAriaLabelledBy_exports);
25
+ function getDefaultLabelId(id) {
26
+ return id == null ? void 0 : `${id}-label`;
27
+ }
28
+ function resolveAriaLabelledBy(fieldLabelId, localLabelId) {
29
+ return fieldLabelId ?? localLabelId;
30
+ }
31
+ // Annotate the CommonJS export names for ESM import in node:
32
+ 0 && (module.exports = {
33
+ getDefaultLabelId,
34
+ resolveAriaLabelledBy
35
+ });