@underverse-ui/underverse 2.0.35 → 2.0.36

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 (38) hide show
  1. package/api-reference.json +1 -1
  2. package/dist/DatePicker-FDOTQMNL.js +15 -0
  3. package/dist/{EmojiPicker-6H52Q4YE.js → EmojiPicker-Z7QPW4DA.js} +5 -4
  4. package/dist/EmojiPicker-Z7QPW4DA.js.map +1 -0
  5. package/dist/chunk-5GMQ23IU.js +719 -0
  6. package/dist/chunk-5GMQ23IU.js.map +1 -0
  7. package/dist/{chunk-L73HBI6E.js → chunk-5VCM2Z7M.js} +6 -4
  8. package/dist/{chunk-L73HBI6E.js.map → chunk-5VCM2Z7M.js.map} +1 -1
  9. package/dist/{chunk-6FAHXNDQ.js → chunk-6XQTRIP6.js} +10 -349
  10. package/dist/chunk-6XQTRIP6.js.map +1 -0
  11. package/dist/chunk-EN33T3LJ.js +358 -0
  12. package/dist/chunk-EN33T3LJ.js.map +1 -0
  13. package/dist/{chunk-WFQV7XFC.js → chunk-JABD2ONI.js} +3 -3
  14. package/dist/chunk-JG3U26V6.js +1692 -0
  15. package/dist/chunk-JG3U26V6.js.map +1 -0
  16. package/dist/{chunk-H4AVZA4K.js → chunk-SCW2XGCE.js} +462 -353
  17. package/dist/chunk-SCW2XGCE.js.map +1 -0
  18. package/dist/{chunk-W3QTP2DM.js → chunk-TSBKJELM.js} +2 -2
  19. package/dist/{chunk-F2P3DJSC.js → chunk-V4VZZHV7.js} +322 -1029
  20. package/dist/chunk-V4VZZHV7.js.map +1 -0
  21. package/dist/index.cjs +13472 -13308
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +20 -0
  24. package/dist/index.d.ts +20 -0
  25. package/dist/index.js +1942 -3569
  26. package/dist/index.js.map +1 -1
  27. package/dist/{menu-bar-MUISXLMR.js → menu-bar-MX3LXG6T.js} +6 -4
  28. package/dist/{menu-bar-MUISXLMR.js.map → menu-bar-MX3LXG6T.js.map} +1 -1
  29. package/dist/ueditor.cjs +2777 -1098
  30. package/dist/ueditor.cjs.map +1 -1
  31. package/dist/ueditor.js +6 -4
  32. package/package.json +1 -1
  33. package/dist/chunk-6FAHXNDQ.js.map +0 -1
  34. package/dist/chunk-F2P3DJSC.js.map +0 -1
  35. package/dist/chunk-H4AVZA4K.js.map +0 -1
  36. /package/dist/{EmojiPicker-6H52Q4YE.js.map → DatePicker-FDOTQMNL.js.map} +0 -0
  37. /package/dist/{chunk-WFQV7XFC.js.map → chunk-JABD2ONI.js.map} +0 -0
  38. /package/dist/{chunk-W3QTP2DM.js.map → chunk-TSBKJELM.js.map} +0 -0
@@ -0,0 +1,358 @@
1
+ import {
2
+ chainEventHandlers,
3
+ cn,
4
+ mergeRefs,
5
+ resolveUEditorPortalContainer,
6
+ useUEditorPortalContainerGetter
7
+ } from "./chunk-6XQTRIP6.js";
8
+
9
+ // src/components/Tooltip.tsx
10
+ import * as React from "react";
11
+ import { createPortal } from "react-dom";
12
+
13
+ // src/hooks/useHydrated.ts
14
+ import { useSyncExternalStore } from "react";
15
+ var subscribe = () => () => {
16
+ };
17
+ var getSnapshot = () => true;
18
+ var getServerSnapshot = () => false;
19
+ function useHydrated() {
20
+ return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
21
+ }
22
+
23
+ // src/components/Tooltip.tsx
24
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
25
+ var variantStyles = {
26
+ default: "bg-popover text-popover-foreground border-border/50",
27
+ info: "bg-info text-info-foreground border-info/20",
28
+ warning: "bg-warning text-warning-foreground border-warning/20",
29
+ error: "bg-destructive text-destructive-foreground border-destructive/20",
30
+ success: "bg-success text-success-foreground border-success/20"
31
+ };
32
+ var clamp = (value, min, max) => Math.max(min, Math.min(max, value));
33
+ function getTransformOrigin(side) {
34
+ switch (side) {
35
+ case "top":
36
+ return "center bottom";
37
+ case "bottom":
38
+ return "center top";
39
+ case "left":
40
+ return "right center";
41
+ case "right":
42
+ return "left center";
43
+ }
44
+ }
45
+ function computeTooltipPosition(args) {
46
+ const { triggerRect, contentSize, placement, offset, padding, viewport } = args;
47
+ let side = placement;
48
+ const fitsTop = triggerRect.top - offset - contentSize.height >= padding;
49
+ const fitsBottom = triggerRect.bottom + offset + contentSize.height <= viewport.height - padding;
50
+ const fitsLeft = triggerRect.left - offset - contentSize.width >= padding;
51
+ const fitsRight = triggerRect.right + offset + contentSize.width <= viewport.width - padding;
52
+ if (side === "top" && !fitsTop && fitsBottom) side = "bottom";
53
+ if (side === "bottom" && !fitsBottom && fitsTop) side = "top";
54
+ if (side === "left" && !fitsLeft && fitsRight) side = "right";
55
+ if (side === "right" && !fitsRight && fitsLeft) side = "left";
56
+ const centerX = triggerRect.left + triggerRect.width / 2;
57
+ const centerY = triggerRect.top + triggerRect.height / 2;
58
+ let left = 0;
59
+ let top = 0;
60
+ if (side === "top") {
61
+ top = triggerRect.top - offset - contentSize.height;
62
+ left = centerX - contentSize.width / 2;
63
+ } else if (side === "bottom") {
64
+ top = triggerRect.bottom + offset;
65
+ left = centerX - contentSize.width / 2;
66
+ } else if (side === "left") {
67
+ top = centerY - contentSize.height / 2;
68
+ left = triggerRect.left - offset - contentSize.width;
69
+ } else {
70
+ top = centerY - contentSize.height / 2;
71
+ left = triggerRect.right + offset;
72
+ }
73
+ left = clamp(left, padding, viewport.width - contentSize.width - padding);
74
+ top = clamp(top, padding, viewport.height - contentSize.height - padding);
75
+ return { top, left, side };
76
+ }
77
+ var Tooltip = React.forwardRef(({
78
+ children,
79
+ content,
80
+ placement = "top",
81
+ delay = { open: 200, close: 300 },
82
+ className,
83
+ disabled = false,
84
+ variant = "default",
85
+ asChild = true,
86
+ ...triggerPassthroughProps
87
+ }, forwardedRef) => {
88
+ const [isOpen, setIsOpen] = React.useState(false);
89
+ const isMounted = useHydrated();
90
+ const triggerRef = React.useRef(null);
91
+ const positionerRef = React.useRef(null);
92
+ const panelRef = React.useRef(null);
93
+ const timeoutRef = React.useRef(void 0);
94
+ const lastAppliedRef = React.useRef(null);
95
+ const openedByPointerRef = React.useRef(false);
96
+ const triggerSelector = React.useId();
97
+ const tooltipId = React.useId();
98
+ const getPortalContainer = useUEditorPortalContainerGetter();
99
+ const portalContainer = isOpen ? resolveUEditorPortalContainer(getPortalContainer) : null;
100
+ const portalDocument = portalContainer?.ownerDocument ?? null;
101
+ const portalWindow = portalDocument?.defaultView ?? null;
102
+ const delayOpen = typeof delay === "object" ? delay.open || 700 : delay;
103
+ const delayClose = typeof delay === "object" ? delay.close || 300 : delay;
104
+ const offset = 8;
105
+ const padding = 8;
106
+ const updatePosition = React.useCallback(() => {
107
+ const triggerEl = triggerRef.current;
108
+ const positionerEl = positionerRef.current;
109
+ const panelEl = panelRef.current;
110
+ if (!triggerEl || !positionerEl || !panelEl) return;
111
+ const triggerRect = triggerEl.getBoundingClientRect();
112
+ const measuredWidth = panelEl.offsetWidth;
113
+ const measuredHeight = panelEl.offsetHeight;
114
+ const rect = panelEl.getBoundingClientRect();
115
+ const contentWidth = measuredWidth || rect.width;
116
+ const contentHeight = measuredHeight || rect.height;
117
+ const next = computeTooltipPosition({
118
+ triggerRect,
119
+ contentSize: { width: contentWidth, height: contentHeight },
120
+ placement,
121
+ offset,
122
+ padding,
123
+ viewport: {
124
+ width: portalWindow?.innerWidth ?? window.innerWidth,
125
+ height: portalWindow?.innerHeight ?? window.innerHeight
126
+ }
127
+ });
128
+ const top = Math.round(next.top);
129
+ const left = Math.round(next.left);
130
+ const prev = lastAppliedRef.current;
131
+ const same = prev && Math.abs(prev.top - top) < 0.5 && Math.abs(prev.left - left) < 0.5 && prev.side === next.side;
132
+ if (same) return;
133
+ lastAppliedRef.current = { top, left, side: next.side };
134
+ positionerEl.style.transform = `translate3d(${left}px, ${top}px, 0)`;
135
+ panelEl.style.transformOrigin = getTransformOrigin(next.side);
136
+ if (positionerEl.style.visibility !== "visible") positionerEl.style.visibility = "visible";
137
+ }, [placement, portalWindow]);
138
+ const handleMouseEnter = () => {
139
+ if (disabled) return;
140
+ openedByPointerRef.current = true;
141
+ clearTimeout(timeoutRef.current);
142
+ timeoutRef.current = setTimeout(() => {
143
+ setIsOpen(true);
144
+ }, delayOpen);
145
+ };
146
+ const handleMouseLeave = () => {
147
+ clearTimeout(timeoutRef.current);
148
+ timeoutRef.current = setTimeout(() => {
149
+ setIsOpen(false);
150
+ }, delayClose);
151
+ };
152
+ const closeNow = React.useCallback(() => {
153
+ clearTimeout(timeoutRef.current);
154
+ openedByPointerRef.current = false;
155
+ setIsOpen(false);
156
+ }, []);
157
+ const handleFocus = () => {
158
+ if (disabled) return;
159
+ openedByPointerRef.current = false;
160
+ setIsOpen(true);
161
+ };
162
+ const handleBlur = () => {
163
+ openedByPointerRef.current = false;
164
+ setIsOpen(false);
165
+ };
166
+ React.useEffect(() => {
167
+ return () => clearTimeout(timeoutRef.current);
168
+ }, []);
169
+ React.useEffect(() => {
170
+ if (isOpen) return;
171
+ clearTimeout(timeoutRef.current);
172
+ }, [isOpen]);
173
+ React.useLayoutEffect(() => {
174
+ if (!isOpen || !portalWindow) {
175
+ lastAppliedRef.current = null;
176
+ return;
177
+ }
178
+ updatePosition();
179
+ let raf1 = 0;
180
+ let raf2 = 0;
181
+ raf1 = portalWindow.requestAnimationFrame(() => {
182
+ updatePosition();
183
+ raf2 = portalWindow.requestAnimationFrame(() => updatePosition());
184
+ });
185
+ return () => {
186
+ portalWindow.cancelAnimationFrame(raf1);
187
+ portalWindow.cancelAnimationFrame(raf2);
188
+ };
189
+ }, [isOpen, portalWindow, updatePosition]);
190
+ React.useEffect(() => {
191
+ if (!isOpen || !portalDocument || !portalWindow) return;
192
+ let raf = 0;
193
+ const handler = () => {
194
+ portalWindow.cancelAnimationFrame(raf);
195
+ raf = portalWindow.requestAnimationFrame(() => updatePosition());
196
+ };
197
+ handler();
198
+ portalWindow.addEventListener("resize", handler);
199
+ portalWindow.addEventListener("scroll", handler, true);
200
+ portalDocument.addEventListener("scroll", handler, true);
201
+ return () => {
202
+ portalWindow.cancelAnimationFrame(raf);
203
+ portalWindow.removeEventListener("resize", handler);
204
+ portalWindow.removeEventListener("scroll", handler, true);
205
+ portalDocument.removeEventListener("scroll", handler, true);
206
+ };
207
+ }, [isOpen, portalDocument, portalWindow, updatePosition]);
208
+ React.useEffect(() => {
209
+ if (!isOpen || !portalWindow) return;
210
+ const ResizeObserverCtor = portalWindow.ResizeObserver;
211
+ if (!ResizeObserverCtor) return;
212
+ const ro = new ResizeObserverCtor(() => updatePosition());
213
+ if (triggerRef.current) ro.observe(triggerRef.current);
214
+ if (panelRef.current) ro.observe(panelRef.current);
215
+ return () => ro.disconnect();
216
+ }, [isOpen, portalWindow, updatePosition]);
217
+ React.useEffect(() => {
218
+ if (!isOpen || !portalDocument) return;
219
+ const handleDocumentKeyDown = (event) => {
220
+ if (event.key === "Escape") closeNow();
221
+ };
222
+ const handleDocumentPointerMove = (event) => {
223
+ if (!openedByPointerRef.current) return;
224
+ const triggerEl = triggerRef.current;
225
+ if (!triggerEl) {
226
+ closeNow();
227
+ return;
228
+ }
229
+ const rect = triggerEl.getBoundingClientRect();
230
+ const tolerance = 2;
231
+ const insideTrigger = event.clientX >= rect.left - tolerance && event.clientX <= rect.right + tolerance && event.clientY >= rect.top - tolerance && event.clientY <= rect.bottom + tolerance;
232
+ if (!insideTrigger) closeNow();
233
+ };
234
+ portalDocument.addEventListener("pointerdown", closeNow, true);
235
+ portalDocument.addEventListener("keydown", handleDocumentKeyDown);
236
+ portalDocument.addEventListener("pointermove", handleDocumentPointerMove, true);
237
+ return () => {
238
+ portalDocument.removeEventListener("pointerdown", closeNow, true);
239
+ portalDocument.removeEventListener("keydown", handleDocumentKeyDown);
240
+ portalDocument.removeEventListener("pointermove", handleDocumentPointerMove, true);
241
+ };
242
+ }, [closeNow, isOpen, portalDocument]);
243
+ const childProps = children.props;
244
+ const childRef = childProps.ref;
245
+ const passthroughRef = mergeRefs(forwardedRef, childRef, (node) => {
246
+ triggerRef.current = node;
247
+ });
248
+ if (disabled || !content) {
249
+ if (!asChild) return children;
250
+ return React.cloneElement(children, {
251
+ ...triggerPassthroughProps,
252
+ ref: passthroughRef
253
+ });
254
+ }
255
+ const triggerProps = {
256
+ ...triggerPassthroughProps,
257
+ ref: passthroughRef,
258
+ "data-underverse-tooltip-trigger": triggerSelector,
259
+ "aria-describedby": isOpen ? [childProps["aria-describedby"], triggerPassthroughProps["aria-describedby"], tooltipId].filter(Boolean).join(" ") : childProps["aria-describedby"] ?? triggerPassthroughProps["aria-describedby"],
260
+ onMouseEnter: chainEventHandlers(
261
+ triggerPassthroughProps.onMouseEnter,
262
+ childProps.onMouseEnter,
263
+ (e) => {
264
+ triggerRef.current = e.currentTarget;
265
+ handleMouseEnter();
266
+ }
267
+ ),
268
+ onMouseLeave: chainEventHandlers(
269
+ triggerPassthroughProps.onMouseLeave,
270
+ childProps.onMouseLeave,
271
+ (e) => {
272
+ triggerRef.current = e.currentTarget;
273
+ handleMouseLeave();
274
+ }
275
+ ),
276
+ onPointerDown: chainEventHandlers(
277
+ triggerPassthroughProps.onPointerDown,
278
+ childProps.onPointerDown,
279
+ (e) => {
280
+ triggerRef.current = e.currentTarget;
281
+ closeNow();
282
+ }
283
+ ),
284
+ onClick: chainEventHandlers(
285
+ triggerPassthroughProps.onClick,
286
+ childProps.onClick,
287
+ (e) => {
288
+ triggerRef.current = e.currentTarget;
289
+ closeNow();
290
+ }
291
+ ),
292
+ onFocus: chainEventHandlers(
293
+ triggerPassthroughProps.onFocus,
294
+ childProps.onFocus,
295
+ (e) => {
296
+ triggerRef.current = e.currentTarget;
297
+ handleFocus();
298
+ }
299
+ ),
300
+ onBlur: chainEventHandlers(
301
+ triggerPassthroughProps.onBlur,
302
+ childProps.onBlur,
303
+ () => {
304
+ handleBlur();
305
+ }
306
+ )
307
+ };
308
+ const trigger = asChild ? React.cloneElement(children, triggerProps) : /* @__PURE__ */ jsx("span", { ...triggerProps, children });
309
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
310
+ trigger,
311
+ isMounted && isOpen && portalContainer && createPortal(
312
+ /* @__PURE__ */ jsx(
313
+ "div",
314
+ {
315
+ ref: positionerRef,
316
+ style: {
317
+ position: "fixed",
318
+ top: 0,
319
+ left: 0,
320
+ transform: "translate3d(0, 0, 0)",
321
+ zIndex: 99999,
322
+ visibility: "hidden",
323
+ pointerEvents: "none",
324
+ willChange: "transform"
325
+ },
326
+ children: /* @__PURE__ */ jsx(
327
+ "div",
328
+ {
329
+ ref: panelRef,
330
+ id: tooltipId,
331
+ role: "tooltip",
332
+ style: {
333
+ opacity: 1,
334
+ transition: "opacity 150ms",
335
+ transformOrigin: getTransformOrigin(placement)
336
+ },
337
+ className: cn(
338
+ "px-3 py-2 text-sm font-medium rounded-xl shadow-lg border",
339
+ "max-w-xs wrap-break-word backdrop-blur-sm",
340
+ variantStyles[variant],
341
+ className
342
+ ),
343
+ children: content
344
+ }
345
+ )
346
+ }
347
+ ),
348
+ portalContainer
349
+ )
350
+ ] });
351
+ });
352
+ Tooltip.displayName = "Tooltip";
353
+
354
+ export {
355
+ useHydrated,
356
+ Tooltip
357
+ };
358
+ //# sourceMappingURL=chunk-EN33T3LJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Tooltip.tsx","../src/hooks/useHydrated.ts"],"sourcesContent":["\"use client\";\n\n/* eslint-disable react-hooks/refs -- Tooltip composes child refs and updates them only from ref/event callbacks; the compiler cannot prove that cloneElement defers those callbacks. */\n\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../utils/cn\";\nimport { useHydrated } from \"../hooks/useHydrated\";\nimport { chainEventHandlers, mergeRefs } from \"../utils/react-compose\";\nimport { resolveUEditorPortalContainer, useUEditorPortalContainerGetter } from \"./UEditor/portal-context\";\n\ntype Side = \"top\" | \"right\" | \"bottom\" | \"left\";\ntype TooltipPlacement = Side;\n\n/** Public props for the `Tooltip` component. */\ntype TooltipProps = Omit<React.HTMLAttributes<HTMLElement>, \"children\" | \"content\"> & {\n children: React.ReactElement;\n content: React.ReactNode;\n placement?: TooltipPlacement;\n delay?: number | { open?: number; close?: number };\n className?: string;\n disabled?: boolean;\n variant?: \"default\" | \"info\" | \"warning\" | \"error\" | \"success\";\n /** When true, augment the child directly instead of adding a wrapper. Default: true */\n asChild?: boolean;\n};\n\nconst variantStyles = {\n default: \"bg-popover text-popover-foreground border-border/50\",\n info: \"bg-info text-info-foreground border-info/20\",\n warning: \"bg-warning text-warning-foreground border-warning/20\",\n error: \"bg-destructive text-destructive-foreground border-destructive/20\",\n success: \"bg-success text-success-foreground border-success/20\",\n};\n\nconst clamp = (value: number, min: number, max: number) => Math.max(min, Math.min(max, value));\n\nfunction getTransformOrigin(side: Side) {\n switch (side) {\n case \"top\":\n return \"center bottom\";\n case \"bottom\":\n return \"center top\";\n case \"left\":\n return \"right center\";\n case \"right\":\n return \"left center\";\n }\n}\n\nfunction computeTooltipPosition(args: {\n triggerRect: DOMRect;\n contentSize: { width: number; height: number };\n placement: TooltipPlacement;\n offset: number;\n padding: number;\n viewport: { width: number; height: number };\n}): { top: number; left: number; side: Side } {\n const { triggerRect, contentSize, placement, offset, padding, viewport } = args;\n let side: Side = placement;\n\n const fitsTop = triggerRect.top - offset - contentSize.height >= padding;\n const fitsBottom = triggerRect.bottom + offset + contentSize.height <= viewport.height - padding;\n const fitsLeft = triggerRect.left - offset - contentSize.width >= padding;\n const fitsRight = triggerRect.right + offset + contentSize.width <= viewport.width - padding;\n\n if (side === \"top\" && !fitsTop && fitsBottom) side = \"bottom\";\n if (side === \"bottom\" && !fitsBottom && fitsTop) side = \"top\";\n if (side === \"left\" && !fitsLeft && fitsRight) side = \"right\";\n if (side === \"right\" && !fitsRight && fitsLeft) side = \"left\";\n\n const centerX = triggerRect.left + triggerRect.width / 2;\n const centerY = triggerRect.top + triggerRect.height / 2;\n\n let left = 0;\n let top = 0;\n\n if (side === \"top\") {\n top = triggerRect.top - offset - contentSize.height;\n left = centerX - contentSize.width / 2;\n } else if (side === \"bottom\") {\n top = triggerRect.bottom + offset;\n left = centerX - contentSize.width / 2;\n } else if (side === \"left\") {\n top = centerY - contentSize.height / 2;\n left = triggerRect.left - offset - contentSize.width;\n } else {\n top = centerY - contentSize.height / 2;\n left = triggerRect.right + offset;\n }\n\n left = clamp(left, padding, viewport.width - contentSize.width - padding);\n top = clamp(top, padding, viewport.height - contentSize.height - padding);\n\n return { top, left, side };\n}\n\nexport const Tooltip = React.forwardRef<HTMLElement, TooltipProps>(({\n children,\n content,\n placement = \"top\",\n delay = { open: 200, close: 300 },\n className,\n disabled = false,\n variant = \"default\",\n asChild = true,\n ...triggerPassthroughProps\n}, forwardedRef) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const isMounted = useHydrated();\n const triggerRef = React.useRef<HTMLElement>(null);\n const positionerRef = React.useRef<HTMLDivElement>(null);\n const panelRef = React.useRef<HTMLDivElement>(null);\n const timeoutRef = React.useRef<NodeJS.Timeout | undefined>(undefined);\n const lastAppliedRef = React.useRef<{ top: number; left: number; side: Side } | null>(null);\n const openedByPointerRef = React.useRef(false);\n const triggerSelector = React.useId();\n const tooltipId = React.useId();\n const getPortalContainer = useUEditorPortalContainerGetter();\n const portalContainer = isOpen ? resolveUEditorPortalContainer(getPortalContainer) : null;\n const portalDocument = portalContainer?.ownerDocument ?? null;\n const portalWindow = portalDocument?.defaultView ?? null;\n\n const delayOpen = typeof delay === \"object\" ? delay.open || 700 : delay;\n const delayClose = typeof delay === \"object\" ? delay.close || 300 : delay;\n\n const offset = 8;\n const padding = 8;\n\n const updatePosition = React.useCallback(() => {\n const triggerEl = triggerRef.current;\n const positionerEl = positionerRef.current;\n const panelEl = panelRef.current;\n if (!triggerEl || !positionerEl || !panelEl) return;\n\n const triggerRect = triggerEl.getBoundingClientRect();\n const measuredWidth = panelEl.offsetWidth;\n const measuredHeight = panelEl.offsetHeight;\n const rect = panelEl.getBoundingClientRect();\n\n const contentWidth = measuredWidth || rect.width;\n const contentHeight = measuredHeight || rect.height;\n\n const next = computeTooltipPosition({\n triggerRect,\n contentSize: { width: contentWidth, height: contentHeight },\n placement,\n offset,\n padding,\n viewport: {\n width: portalWindow?.innerWidth ?? window.innerWidth,\n height: portalWindow?.innerHeight ?? window.innerHeight,\n },\n });\n\n const top = Math.round(next.top);\n const left = Math.round(next.left);\n\n const prev = lastAppliedRef.current;\n const same = prev && Math.abs(prev.top - top) < 0.5 && Math.abs(prev.left - left) < 0.5 && prev.side === next.side;\n if (same) return;\n\n lastAppliedRef.current = { top, left, side: next.side };\n positionerEl.style.transform = `translate3d(${left}px, ${top}px, 0)`;\n panelEl.style.transformOrigin = getTransformOrigin(next.side);\n if (positionerEl.style.visibility !== \"visible\") positionerEl.style.visibility = \"visible\";\n }, [placement, portalWindow]);\n\n const handleMouseEnter = () => {\n if (disabled) return;\n openedByPointerRef.current = true;\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => {\n setIsOpen(true);\n }, delayOpen);\n };\n\n const handleMouseLeave = () => {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => {\n setIsOpen(false);\n }, delayClose);\n };\n\n const closeNow = React.useCallback(() => {\n clearTimeout(timeoutRef.current);\n openedByPointerRef.current = false;\n setIsOpen(false);\n }, []);\n\n const handleFocus = () => {\n if (disabled) return;\n openedByPointerRef.current = false;\n setIsOpen(true);\n };\n\n const handleBlur = () => {\n openedByPointerRef.current = false;\n setIsOpen(false);\n };\n\n React.useEffect(() => {\n return () => clearTimeout(timeoutRef.current);\n }, []);\n\n React.useEffect(() => {\n if (isOpen) return;\n clearTimeout(timeoutRef.current);\n }, [isOpen]);\n\n // Compute a stable position right after opening (before paint), then re-check a couple frames later.\n React.useLayoutEffect(() => {\n if (!isOpen || !portalWindow) {\n lastAppliedRef.current = null;\n return;\n }\n updatePosition();\n let raf1 = 0;\n let raf2 = 0;\n raf1 = portalWindow.requestAnimationFrame(() => {\n updatePosition();\n raf2 = portalWindow.requestAnimationFrame(() => updatePosition());\n });\n return () => {\n portalWindow.cancelAnimationFrame(raf1);\n portalWindow.cancelAnimationFrame(raf2);\n };\n }, [isOpen, portalWindow, updatePosition]);\n\n React.useEffect(() => {\n if (!isOpen || !portalDocument || !portalWindow) return;\n let raf = 0;\n const handler = () => {\n portalWindow.cancelAnimationFrame(raf);\n raf = portalWindow.requestAnimationFrame(() => updatePosition());\n };\n handler();\n portalWindow.addEventListener(\"resize\", handler);\n portalWindow.addEventListener(\"scroll\", handler, true);\n portalDocument.addEventListener(\"scroll\", handler, true);\n return () => {\n portalWindow.cancelAnimationFrame(raf);\n portalWindow.removeEventListener(\"resize\", handler);\n portalWindow.removeEventListener(\"scroll\", handler, true);\n portalDocument.removeEventListener(\"scroll\", handler, true);\n };\n }, [isOpen, portalDocument, portalWindow, updatePosition]);\n\n React.useEffect(() => {\n if (!isOpen || !portalWindow) return;\n const ResizeObserverCtor = portalWindow.ResizeObserver;\n if (!ResizeObserverCtor) return;\n const ro = new ResizeObserverCtor(() => updatePosition());\n if (triggerRef.current) ro.observe(triggerRef.current);\n if (panelRef.current) ro.observe(panelRef.current);\n return () => ro.disconnect();\n }, [isOpen, portalWindow, updatePosition]);\n\n React.useEffect(() => {\n if (!isOpen || !portalDocument) return;\n\n const handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") closeNow();\n };\n\n const handleDocumentPointerMove = (event: PointerEvent) => {\n if (!openedByPointerRef.current) return;\n\n const triggerEl = triggerRef.current;\n if (!triggerEl) {\n closeNow();\n return;\n }\n\n const rect = triggerEl.getBoundingClientRect();\n const tolerance = 2;\n const insideTrigger =\n event.clientX >= rect.left - tolerance &&\n event.clientX <= rect.right + tolerance &&\n event.clientY >= rect.top - tolerance &&\n event.clientY <= rect.bottom + tolerance;\n\n if (!insideTrigger) closeNow();\n };\n\n portalDocument.addEventListener(\"pointerdown\", closeNow, true);\n portalDocument.addEventListener(\"keydown\", handleDocumentKeyDown);\n portalDocument.addEventListener(\"pointermove\", handleDocumentPointerMove, true);\n\n return () => {\n portalDocument.removeEventListener(\"pointerdown\", closeNow, true);\n portalDocument.removeEventListener(\"keydown\", handleDocumentKeyDown);\n portalDocument.removeEventListener(\"pointermove\", handleDocumentPointerMove, true);\n };\n }, [closeNow, isOpen, portalDocument]);\n\n const childProps = children.props as React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> };\n const childRef = childProps.ref;\n const passthroughRef = mergeRefs<HTMLElement>(forwardedRef, childRef, (node) => {\n triggerRef.current = node;\n });\n\n if (disabled || !content) {\n if (!asChild) return children;\n return React.cloneElement(children as React.ReactElement<any>, {\n ...triggerPassthroughProps,\n ref: passthroughRef,\n });\n }\n\n const triggerProps = {\n ...triggerPassthroughProps,\n ref: passthroughRef,\n \"data-underverse-tooltip-trigger\": triggerSelector,\n \"aria-describedby\": isOpen\n ? [childProps[\"aria-describedby\"], triggerPassthroughProps[\"aria-describedby\"], tooltipId].filter(Boolean).join(\" \")\n : childProps[\"aria-describedby\"] ?? triggerPassthroughProps[\"aria-describedby\"],\n onMouseEnter: chainEventHandlers<React.MouseEvent<HTMLElement>>(\n triggerPassthroughProps.onMouseEnter,\n childProps.onMouseEnter,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n handleMouseEnter();\n },\n ),\n onMouseLeave: chainEventHandlers<React.MouseEvent<HTMLElement>>(\n triggerPassthroughProps.onMouseLeave,\n childProps.onMouseLeave,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n handleMouseLeave();\n },\n ),\n onPointerDown: chainEventHandlers<React.PointerEvent<HTMLElement>>(\n triggerPassthroughProps.onPointerDown,\n childProps.onPointerDown,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n closeNow();\n },\n ),\n onClick: chainEventHandlers<React.MouseEvent<HTMLElement>>(\n triggerPassthroughProps.onClick,\n childProps.onClick,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n closeNow();\n },\n ),\n onFocus: chainEventHandlers<React.FocusEvent<HTMLElement>>(\n triggerPassthroughProps.onFocus,\n childProps.onFocus,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n handleFocus();\n },\n ),\n onBlur: chainEventHandlers<React.FocusEvent<HTMLElement>>(\n triggerPassthroughProps.onBlur,\n childProps.onBlur,\n () => {\n handleBlur();\n },\n ),\n } satisfies React.HTMLAttributes<HTMLElement> & {\n ref: React.Ref<HTMLElement>;\n \"data-underverse-tooltip-trigger\": string;\n };\n\n const trigger = asChild ? (\n React.cloneElement(children, triggerProps)\n ) : (\n <span {...triggerProps}>{children}</span>\n );\n\n return (\n <>\n {trigger}\n {isMounted &&\n isOpen &&\n portalContainer &&\n createPortal(\n <div\n ref={positionerRef}\n style={{\n position: \"fixed\",\n top: 0,\n left: 0,\n transform: \"translate3d(0, 0, 0)\",\n zIndex: 99999,\n visibility: \"hidden\",\n pointerEvents: \"none\",\n willChange: \"transform\",\n }}\n >\n <div\n ref={panelRef}\n id={tooltipId}\n role=\"tooltip\"\n style={{\n opacity: 1,\n transition: \"opacity 150ms\",\n transformOrigin: getTransformOrigin(placement),\n }}\n className={cn(\n \"px-3 py-2 text-sm font-medium rounded-xl shadow-lg border\",\n \"max-w-xs wrap-break-word backdrop-blur-sm\",\n variantStyles[variant],\n className,\n )}\n >\n {content}\n </div>\n </div>,\n portalContainer,\n )}\n </>\n );\n});\n\nTooltip.displayName = \"Tooltip\";\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst subscribe = () => () => {};\nconst getSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\nexport function useHydrated() {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n"],"mappings":"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","names":[]}
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getPanelBorderRadiusClass,
3
3
  useUnderverseUIConfig
4
- } from "./chunk-F2P3DJSC.js";
4
+ } from "./chunk-5GMQ23IU.js";
5
5
  import {
6
6
  cn,
7
7
  useGlobalI18n
8
- } from "./chunk-6FAHXNDQ.js";
8
+ } from "./chunk-6XQTRIP6.js";
9
9
 
10
10
  // src/components/Modal.tsx
11
11
  import * as React from "react";
@@ -253,4 +253,4 @@ var Modal_default = Modal;
253
253
  export {
254
254
  Modal_default
255
255
  };
256
- //# sourceMappingURL=chunk-WFQV7XFC.js.map
256
+ //# sourceMappingURL=chunk-JABD2ONI.js.map