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,478 @@
1
+ import { computed, createBlock, createCommentVNode, defineComponent, inject, mergeProps, normalizeClass, openBlock, renderSlot, resolveDynamicComponent, unref, useAttrs, withCtx } from "vue";
2
+
3
+ //#region src/merge-props/mergeProps.ts
4
+ function makeEventPreventable(event) {
5
+ const baseUIEvent = event;
6
+ if (!baseUIEvent.preventBaseUIHandler) baseUIEvent.preventBaseUIHandler = () => {
7
+ baseUIEvent.baseUIHandlerPrevented = true;
8
+ };
9
+ return baseUIEvent;
10
+ }
11
+ function mergeClasses(ourClass, theirClass) {
12
+ if (theirClass) {
13
+ if (ourClass) return `${theirClass} ${ourClass}`;
14
+ return theirClass;
15
+ }
16
+ return ourClass;
17
+ }
18
+ function mergeObjects(a, b) {
19
+ if (a && !b) return a;
20
+ if (!a && b) return b;
21
+ if (a || b) return {
22
+ ...a,
23
+ ...b
24
+ };
25
+ }
26
+ function isEventHandler(key, value) {
27
+ return key.startsWith("on") && key.charCodeAt(2) >= 65 && key.charCodeAt(2) <= 90 && (typeof value === "function" || Array.isArray(value) || typeof value === "undefined");
28
+ }
29
+ /**
30
+ * Merges Vue prop/attr objects using Base UI Vue semantics.
31
+ *
32
+ * Later props overwrite earlier ones, except for:
33
+ * - Event listeners: merged so the rightmost listener runs first and can prevent earlier listeners.
34
+ * - `class`: merged in rightmost-first order.
35
+ * - `style`: merged using Vue's native style merging.
36
+ */
37
+ function mergeProps$1(...args) {
38
+ const definedArgs = args.filter((arg) => arg != null);
39
+ const merged = mergeProps(...definedArgs);
40
+ const classValue = mergeClassValues(definedArgs);
41
+ if (classValue !== void 0) merged.class = classValue;
42
+ for (const propName in merged) if (isEventHandler(propName, merged[propName])) merged[propName] = wrapEventHandlers(merged[propName]);
43
+ return merged;
44
+ }
45
+ /**
46
+ * Merges an array of Vue prop/attr objects using the same semantics as {@link mergeProps}.
47
+ *
48
+ * Useful when prop layers are assembled dynamically before being bound with `v-bind`.
49
+ */
50
+ function mergePropsN(props) {
51
+ const definedProps = props.filter((prop) => prop != null);
52
+ if (definedProps.length === 0) return {};
53
+ return mergeProps$1(...definedProps);
54
+ }
55
+ function mergeClassValues(args) {
56
+ const classValues = args.map((props) => props?.class).filter((value) => value != null);
57
+ if (classValues.length === 0) return;
58
+ return normalizeClass(classValues.reverse());
59
+ }
60
+ function wrapEventHandlers(handlers) {
61
+ if (Array.isArray(handlers)) {
62
+ const flatHandlers = handlers.flat(Infinity).filter((handler) => typeof handler === "function");
63
+ return (...args) => {
64
+ const preventableArgs = getPreventableArgs(args);
65
+ if (preventableArgs) {
66
+ let result;
67
+ for (let i = flatHandlers.length - 1; i >= 0; i -= 1) {
68
+ const handlerResult = flatHandlers[i](...preventableArgs.args);
69
+ if (result === void 0) result = handlerResult;
70
+ if (preventableArgs.event.baseUIHandlerPrevented) break;
71
+ }
72
+ return result;
73
+ }
74
+ let result;
75
+ for (let i = flatHandlers.length - 1; i >= 0; i -= 1) {
76
+ const handlerResult = flatHandlers[i](...args);
77
+ if (result === void 0) result = handlerResult;
78
+ }
79
+ return result;
80
+ };
81
+ }
82
+ if (typeof handlers !== "function") return handlers;
83
+ return (...args) => {
84
+ const preventableArgs = getPreventableArgs(args);
85
+ if (preventableArgs) return handlers(...preventableArgs.args);
86
+ return handlers(...args);
87
+ };
88
+ }
89
+ function getPreventableArgs(args) {
90
+ const eventIndex = args.findIndex(isPreventableEventArg);
91
+ if (eventIndex === -1) return null;
92
+ const nextArgs = [...args];
93
+ const event = makeEventPreventable(nextArgs[eventIndex]);
94
+ nextArgs[eventIndex] = event;
95
+ return {
96
+ args: nextArgs,
97
+ event
98
+ };
99
+ }
100
+ function isPreventableEventArg(value) {
101
+ return Boolean(value && typeof value === "object" && (value instanceof Event || "nativeEvent" in value || "preventBaseUIHandler" in value));
102
+ }
103
+
104
+ //#endregion
105
+ //#region src/utils/empty.ts
106
+ function NOOP() {}
107
+ const EMPTY_ARRAY = Object.freeze([]);
108
+ const EMPTY_OBJECT = Object.freeze({});
109
+
110
+ //#endregion
111
+ //#region src/utils/constants.ts
112
+ const DISABLED_TRANSITIONS_STYLE = { style: { transition: "none" } };
113
+
114
+ //#endregion
115
+ //#region src/utils/getStateAttributesProps.ts
116
+ function getStateAttributesProps(state, customMapping) {
117
+ const props = {};
118
+ for (const key in state) {
119
+ const value = state[key];
120
+ if (customMapping && Object.prototype.hasOwnProperty.call(customMapping, key)) {
121
+ const customProps = customMapping[key](value);
122
+ if (customProps != null) Object.assign(props, customProps);
123
+ continue;
124
+ }
125
+ if (value === true) props[`data-${key.toLowerCase()}`] = "";
126
+ else if (value !== false && value != null) props[`data-${key.toLowerCase()}`] = value.toString();
127
+ }
128
+ return props;
129
+ }
130
+
131
+ //#endregion
132
+ //#region src/utils/slot.ts
133
+ /**
134
+ * Pass as the `as` prop to make a component renderless.
135
+ */
136
+ const Slot = Symbol("Slot");
137
+
138
+ //#endregion
139
+ //#region src/utils/useMergedRefs.ts
140
+ /**
141
+ * Merges multiple refs or ref callbacks into a single template ref callback.
142
+ * Returns `undefined` when all input refs are nullish (optimization to avoid no-op callbacks).
143
+ *
144
+ * Supports cleanup callbacks: if a callback ref returns a function, it will be
145
+ * called on unmount (when the ref receives `null`) instead of calling the
146
+ * callback with `null` directly.
147
+ *
148
+ * Vue-specific: automatically unwraps `ComponentPublicInstance` to its root `$el`,
149
+ * since Vue template refs on components return the instance, not the DOM element.
150
+ *
151
+ * @example
152
+ * ```vue
153
+ * <script setup>
154
+ * const internalRef = ref(null)
155
+ * const externalRef = ref(null)
156
+ *
157
+ * const mergedRef = useMergedRefs(internalRef, externalRef)
158
+ * <\/script>
159
+ *
160
+ * <template>
161
+ * <div :ref="mergedRef"></div>
162
+ * </template>
163
+ * ```
164
+ */
165
+ function useMergedRefs(...refs) {
166
+ if (refs.every((ref) => ref == null)) return;
167
+ const cleanupCallbacks = Array.from({ length: refs.length }, () => null);
168
+ return (el) => {
169
+ const instance = resolveRefTarget(el);
170
+ if (instance != null) for (let i = 0; i < refs.length; i += 1) {
171
+ const ref = refs[i];
172
+ if (ref == null) continue;
173
+ if (typeof ref === "function") {
174
+ const refCleanup = ref(instance);
175
+ if (typeof refCleanup === "function") cleanupCallbacks[i] = refCleanup;
176
+ } else if ("value" in ref) ref.value = instance;
177
+ }
178
+ else for (let i = 0; i < refs.length; i += 1) {
179
+ const ref = refs[i];
180
+ if (ref == null) continue;
181
+ if (typeof ref === "function") {
182
+ const cleanupCallback = cleanupCallbacks[i];
183
+ if (typeof cleanupCallback === "function") {
184
+ cleanupCallback();
185
+ cleanupCallbacks[i] = null;
186
+ } else ref(null);
187
+ } else if ("value" in ref) ref.value = null;
188
+ }
189
+ };
190
+ }
191
+ function resolveRefTarget(el) {
192
+ if (el == null) return null;
193
+ if (el instanceof Element) return el;
194
+ if (typeof el === "object" && "element" in el) {
195
+ const exposedElement = unref(el.element);
196
+ if (exposedElement instanceof Element) return exposedElement;
197
+ }
198
+ if ("$el" in el) return el.$el;
199
+ return el;
200
+ }
201
+
202
+ //#endregion
203
+ //#region src/utils/useRenderElement.ts
204
+ /**
205
+ * Renders a Base UI element (internal composable).
206
+ *
207
+ * Assembles state-to-data-attribute conversion, class/style resolution,
208
+ * and ref wrapping into a single composable used by all polymorphic components.
209
+ *
210
+ * @param params - The render element parameters.
211
+ */
212
+ function useRenderElement(params) {
213
+ const renderless = computed(() => params.componentProps.as === Slot);
214
+ return {
215
+ tag: computed(() => {
216
+ if (renderless.value) return;
217
+ return params.componentProps.as ?? params.defaultTagName ?? "div";
218
+ }),
219
+ mergedProps: computed(() => {
220
+ const state = unref(params.state);
221
+ const rawProps = unref(params.props) ?? EMPTY_OBJECT;
222
+ const merged = {
223
+ ...getStateAttributesProps(state, params.stateAttributesMapping),
224
+ ...rawProps
225
+ };
226
+ const resolvedClass = typeof params.componentProps.class === "function" ? params.componentProps.class(state) : params.componentProps.class;
227
+ const resolvedStyle = typeof params.componentProps.style === "function" ? params.componentProps.style(state) : params.componentProps.style;
228
+ if (resolvedClass !== void 0) merged.class = normalizeClass$1(merged.class, resolvedClass);
229
+ if (resolvedStyle !== void 0) merged.style = normalizeStyle$1(merged.style, resolvedStyle);
230
+ return merged;
231
+ }),
232
+ renderless,
233
+ state: params.state,
234
+ ref: params.ref ? useMergedRefs(params.ref) : void 0
235
+ };
236
+ }
237
+ function normalizeClass$1(currentValue, nextValue) {
238
+ if (currentValue == null) return nextValue;
239
+ if (nextValue == null) return currentValue;
240
+ if (typeof currentValue === "string" && typeof nextValue === "string") return mergeClasses(currentValue, nextValue);
241
+ return [currentValue, nextValue];
242
+ }
243
+ function normalizeStyle$1(currentValue, nextValue) {
244
+ if (currentValue == null) return nextValue;
245
+ if (nextValue == null) return currentValue;
246
+ if (isPlainObject(currentValue) && isPlainObject(nextValue)) return mergeObjects(currentValue, nextValue);
247
+ return [currentValue, nextValue];
248
+ }
249
+ function isPlainObject(value) {
250
+ return value != null && typeof value === "object" && !Array.isArray(value);
251
+ }
252
+
253
+ //#endregion
254
+ //#region src/utils/popupStateMapping.ts
255
+ let CommonPopupDataAttributes = /* @__PURE__ */ function(CommonPopupDataAttributes) {
256
+ /**
257
+ * Present when the popup is open.
258
+ */
259
+ CommonPopupDataAttributes["open"] = "data-open";
260
+ /**
261
+ * Present when the popup is closed.
262
+ */
263
+ CommonPopupDataAttributes["closed"] = "data-closed";
264
+ /**
265
+ * Present when the popup is animating in.
266
+ */
267
+ CommonPopupDataAttributes["startingStyle"] = "data-starting-style";
268
+ /**
269
+ * Present when the popup is animating out.
270
+ */
271
+ CommonPopupDataAttributes["endingStyle"] = "data-ending-style";
272
+ /**
273
+ * Present when the anchor is hidden.
274
+ */
275
+ CommonPopupDataAttributes["anchorHidden"] = "data-anchor-hidden";
276
+ /**
277
+ * Indicates which side the popup is positioned relative to the trigger.
278
+ */
279
+ CommonPopupDataAttributes["side"] = "data-side";
280
+ /**
281
+ * Indicates how the popup is aligned relative to the specified side.
282
+ */
283
+ CommonPopupDataAttributes["align"] = "data-align";
284
+ /**
285
+ * Present when animations should be skipped.
286
+ */
287
+ CommonPopupDataAttributes["instant"] = "data-instant";
288
+ return CommonPopupDataAttributes;
289
+ }({});
290
+ let CommonTriggerDataAttributes = /* @__PURE__ */ function(CommonTriggerDataAttributes) {
291
+ /**
292
+ * Present when the popup is open.
293
+ */
294
+ CommonTriggerDataAttributes["popupOpen"] = "data-popup-open";
295
+ /**
296
+ * Present when the trigger is disabled.
297
+ */
298
+ CommonTriggerDataAttributes["triggerDisabled"] = "data-trigger-disabled";
299
+ return CommonTriggerDataAttributes;
300
+ }({});
301
+ const POPUP_OPEN_HOOK = { [CommonPopupDataAttributes.open]: "" };
302
+ const POPUP_CLOSED_HOOK = { [CommonPopupDataAttributes.closed]: "" };
303
+ const ANCHOR_HIDDEN_HOOK = { [CommonPopupDataAttributes.anchorHidden]: "" };
304
+ const TRIGGER_OPEN_HOOK = { [CommonTriggerDataAttributes.popupOpen]: "" };
305
+ const TRIGGER_DISABLED_HOOK = { [CommonTriggerDataAttributes.triggerDisabled]: "" };
306
+ const popupStateMapping = {
307
+ open(value) {
308
+ return value ? POPUP_OPEN_HOOK : POPUP_CLOSED_HOOK;
309
+ },
310
+ anchorHidden(value) {
311
+ return value ? ANCHOR_HIDDEN_HOOK : null;
312
+ },
313
+ side(value) {
314
+ return value ? { [CommonPopupDataAttributes.side]: value } : null;
315
+ },
316
+ align(value) {
317
+ return value ? { [CommonPopupDataAttributes.align]: value } : null;
318
+ },
319
+ instant(value) {
320
+ return value ? { [CommonPopupDataAttributes.instant]: value } : null;
321
+ }
322
+ };
323
+ const triggerStateMapping = {
324
+ open(value) {
325
+ return value ? TRIGGER_OPEN_HOOK : null;
326
+ },
327
+ disabled(value) {
328
+ return value ? TRIGGER_DISABLED_HOOK : null;
329
+ }
330
+ };
331
+
332
+ //#endregion
333
+ //#region src/tooltip/positioner/TooltipPositionerContext.ts
334
+ const tooltipPositionerContextKey = Symbol("TooltipPositionerContext");
335
+ function useTooltipPositionerContext() {
336
+ const context = inject(tooltipPositionerContextKey, void 0);
337
+ if (context === void 0) throw new Error("Base UI Vue: TooltipPositionerContext is missing. Tooltip parts must be placed within <TooltipPositioner>.");
338
+ return context;
339
+ }
340
+
341
+ //#endregion
342
+ //#region src/tooltip/root/TooltipRootContext.ts
343
+ const tooltipRootContextKey = Symbol("TooltipRootContext");
344
+ function useTooltipRootContext(optional = false) {
345
+ const context = inject(tooltipRootContextKey, void 0);
346
+ if (context === void 0 && !optional) throw new Error("Base UI Vue: TooltipRootContext is missing. Tooltip parts must be placed within <TooltipRoot> or receive a tooltip handle.");
347
+ return context;
348
+ }
349
+
350
+ //#endregion
351
+ //#region src/tooltip/arrow/TooltipArrowDataAttributes.ts
352
+ let TooltipArrowDataAttributes = /* @__PURE__ */ function(TooltipArrowDataAttributes) {
353
+ /**
354
+ * Present when the tooltip is open.
355
+ */
356
+ TooltipArrowDataAttributes[TooltipArrowDataAttributes["open"] = CommonPopupDataAttributes.open] = "open";
357
+ /**
358
+ * Present when the tooltip is closed.
359
+ */
360
+ TooltipArrowDataAttributes[TooltipArrowDataAttributes["closed"] = CommonPopupDataAttributes.closed] = "closed";
361
+ /**
362
+ * Indicates which side the popup is positioned relative to the trigger.
363
+ * @type {'top' | 'bottom' | 'left' | 'right' | 'inline-end' | 'inline-start'}
364
+ */
365
+ TooltipArrowDataAttributes[TooltipArrowDataAttributes["side"] = CommonPopupDataAttributes.side] = "side";
366
+ /**
367
+ * Indicates how the popup is aligned relative to specified side.
368
+ * @type {'start' | 'center' | 'end'}
369
+ */
370
+ TooltipArrowDataAttributes[TooltipArrowDataAttributes["align"] = CommonPopupDataAttributes.align] = "align";
371
+ /**
372
+ * Present when the tooltip arrow is uncentered.
373
+ */
374
+ TooltipArrowDataAttributes["uncentered"] = "data-uncentered";
375
+ /**
376
+ * Present if animations should be instant.
377
+ * @type {'delay' | 'dismiss' | 'focus'}
378
+ */
379
+ TooltipArrowDataAttributes["instant"] = "data-instant";
380
+ return TooltipArrowDataAttributes;
381
+ }({});
382
+
383
+ //#endregion
384
+ //#region src/tooltip/arrow/TooltipArrow.vue?vue&type=script&setup=true&lang.ts
385
+ var TooltipArrow_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
386
+ name: "TooltipArrow",
387
+ inheritAttrs: false,
388
+ __name: "TooltipArrow",
389
+ props: {
390
+ as: {
391
+ type: null,
392
+ required: false,
393
+ default: "div"
394
+ },
395
+ class: {
396
+ type: Function,
397
+ required: false,
398
+ skipCheck: true
399
+ },
400
+ style: {
401
+ type: [
402
+ Boolean,
403
+ null,
404
+ String,
405
+ Object,
406
+ Array,
407
+ Function
408
+ ],
409
+ required: false,
410
+ skipCheck: true
411
+ }
412
+ },
413
+ setup(__props) {
414
+ const props = __props;
415
+ const attrs = useAttrs();
416
+ const ctx = useTooltipRootContext();
417
+ const positioner = useTooltipPositionerContext();
418
+ const state = computed(() => ({
419
+ open: ctx.open.value,
420
+ side: positioner.side.value,
421
+ align: positioner.align.value,
422
+ uncentered: positioner.arrowUncentered.value,
423
+ instant: ctx.instantType.value
424
+ }));
425
+ const arrowStyle = computed(() => {
426
+ return positioner.arrowStyles.value;
427
+ });
428
+ const arrowProps = computed(() => {
429
+ const resolvedStyle = typeof props.style === "function" ? props.style(state.value) : props.style;
430
+ return {
431
+ ...attrs,
432
+ "aria-hidden": "true",
433
+ "style": [arrowStyle.value, resolvedStyle]
434
+ };
435
+ });
436
+ const { tag, mergedProps, renderless, ref: renderRef } = useRenderElement({
437
+ componentProps: {
438
+ as: props.as,
439
+ class: props.class
440
+ },
441
+ state,
442
+ props: arrowProps,
443
+ stateAttributesMapping: {
444
+ ...popupStateMapping,
445
+ uncentered(value) {
446
+ return value ? { [TooltipArrowDataAttributes.uncentered]: "" } : null;
447
+ },
448
+ instant(value) {
449
+ return value ? { [TooltipArrowDataAttributes.instant]: value } : null;
450
+ }
451
+ },
452
+ defaultTagName: "div",
453
+ ref: positioner.arrowRef
454
+ });
455
+ return (_ctx, _cache) => {
456
+ return unref(renderless) ? renderSlot(_ctx.$slots, "default", {
457
+ key: 0,
458
+ ref: unref(renderRef),
459
+ props: unref(mergedProps),
460
+ state: state.value
461
+ }) : (openBlock(), createBlock(resolveDynamicComponent(unref(tag)), mergeProps({
462
+ key: 1,
463
+ ref: unref(renderRef)
464
+ }, unref(mergedProps)), {
465
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", { state: state.value })]),
466
+ _: 3
467
+ }, 16));
468
+ };
469
+ }
470
+ });
471
+
472
+ //#endregion
473
+ //#region src/tooltip/arrow/TooltipArrow.vue
474
+ var TooltipArrow_default = TooltipArrow_vue_vue_type_script_setup_true_lang_default;
475
+
476
+ //#endregion
477
+ export { CommonPopupDataAttributes, CommonTriggerDataAttributes, DISABLED_TRANSITIONS_STYLE, EMPTY_ARRAY, EMPTY_OBJECT, NOOP, Slot, TooltipArrowDataAttributes, TooltipArrow_default, makeEventPreventable, mergeClasses, mergeObjects, mergeProps$1 as mergeProps, mergePropsN, popupStateMapping, tooltipPositionerContextKey, tooltipRootContextKey, triggerStateMapping, useMergedRefs, useRenderElement, useTooltipPositionerContext, useTooltipRootContext };
478
+ //# sourceMappingURL=TooltipArrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipArrow.js","names":["mergeProps","vueMergeProps","normalizeClass","normalizeStyle"],"sources":["../../src/merge-props/mergeProps.ts","../../src/utils/empty.ts","../../src/utils/constants.ts","../../src/utils/getStateAttributesProps.ts","../../src/utils/slot.ts","../../src/utils/useMergedRefs.ts","../../src/utils/useRenderElement.ts","../../src/utils/popupStateMapping.ts","../../src/tooltip/positioner/TooltipPositionerContext.ts","../../src/tooltip/root/TooltipRootContext.ts","../../src/tooltip/arrow/TooltipArrowDataAttributes.ts","../../src/tooltip/arrow/TooltipArrow.vue","../../src/tooltip/arrow/TooltipArrow.vue"],"sourcesContent":[],"mappings":"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"}