lizaui 9.0.11 → 9.0.12

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 (73) hide show
  1. package/dist/button/index.es.js +1 -1
  2. package/dist/calendar/index.es.js +1 -1
  3. package/dist/checkbox/index.es.js +1 -1
  4. package/dist/chunks/{button-B0fpJrMg.js → button-CA3Y2GZ1.js} +2 -2
  5. package/dist/chunks/{button-B0fpJrMg.js.map → button-CA3Y2GZ1.js.map} +1 -1
  6. package/dist/chunks/{checkbox-C1Sssumg.js → checkbox-qzZKMLRN.js} +2 -2
  7. package/dist/chunks/{checkbox-C1Sssumg.js.map → checkbox-qzZKMLRN.js.map} +1 -1
  8. package/dist/chunks/{floating-ui.dom-DsMDyTcd.js → floating-ui.dom-N5ROFCJy.js} +1 -10
  9. package/dist/chunks/{floating-ui.dom-DsMDyTcd.js.map → floating-ui.dom-N5ROFCJy.js.map} +1 -1
  10. package/dist/chunks/{floating-ui.dom-Bd-QJw02.js → floating-ui.dom-NqZWWqNg.js} +4 -13
  11. package/dist/chunks/{floating-ui.dom-Bd-QJw02.js.map → floating-ui.dom-NqZWWqNg.js.map} +1 -1
  12. package/dist/chunks/index-CuySPbdY.js +559 -0
  13. package/dist/chunks/index-CuySPbdY.js.map +1 -0
  14. package/dist/chunks/index-DBDBh58Q.js +575 -0
  15. package/dist/chunks/index-DBDBh58Q.js.map +1 -0
  16. package/dist/chunks/index-DNSql2gU.js +662 -0
  17. package/dist/chunks/index-DNSql2gU.js.map +1 -0
  18. package/dist/chunks/{index-B4RTH1-D.js → index-DiC9dI6_.js} +4 -4
  19. package/dist/chunks/{index-B4RTH1-D.js.map → index-DiC9dI6_.js.map} +1 -1
  20. package/dist/chunks/index-DlZi5TkN.js +646 -0
  21. package/dist/chunks/index-DlZi5TkN.js.map +1 -0
  22. package/dist/chunks/{scroll-area-C0NhSIO2.js → scroll-area-BboZbU1u.js} +27 -27
  23. package/dist/chunks/{scroll-area-C0NhSIO2.js.map → scroll-area-BboZbU1u.js.map} +1 -1
  24. package/dist/chunks/{scroll-area-JgKF61tc.js → scroll-area-DKkgpH-S.js} +3 -3
  25. package/dist/chunks/{scroll-area-JgKF61tc.js.map → scroll-area-DKkgpH-S.js.map} +1 -1
  26. package/dist/chunks/{select-DGnc8VJi.js → select-MSYUKpRI.js} +83 -439
  27. package/dist/chunks/select-MSYUKpRI.js.map +1 -0
  28. package/dist/chunks/{select-Dpyj5dUk.js → select-s-z596Y4.js} +10 -366
  29. package/dist/chunks/select-s-z596Y4.js.map +1 -0
  30. package/dist/chunks/{textarea-D2_KC-J4.js → textarea-By2Vv44z.js} +36 -587
  31. package/dist/chunks/textarea-By2Vv44z.js.map +1 -0
  32. package/dist/chunks/{textarea-_HQpXiCX.js → textarea-ClJsk9Gp.js} +35 -586
  33. package/dist/chunks/textarea-ClJsk9Gp.js.map +1 -0
  34. package/dist/chunks/tooltip-BP--5Wj2.js +525 -0
  35. package/dist/chunks/tooltip-BP--5Wj2.js.map +1 -0
  36. package/dist/chunks/tooltip-KggPQa5m.js +541 -0
  37. package/dist/chunks/tooltip-KggPQa5m.js.map +1 -0
  38. package/dist/components/tooltip/tooltip-nice.d.ts +11 -0
  39. package/dist/components/tooltip/tooltip-nice.d.ts.map +1 -0
  40. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  41. package/dist/components/ui/tooltip.d.ts +8 -0
  42. package/dist/components/ui/tooltip.d.ts.map +1 -0
  43. package/dist/divider/index.es.js +1 -1
  44. package/dist/modal/index.es.js +1 -1
  45. package/dist/pagination/index.cjs.js +2 -2
  46. package/dist/pagination/index.es.js +3 -3
  47. package/dist/phone-input/index.cjs.js +2 -2
  48. package/dist/phone-input/index.es.js +3 -3
  49. package/dist/select-input/index.cjs.js +1 -1
  50. package/dist/select-input/index.es.js +2 -2
  51. package/dist/table/index.cjs.js +1 -1
  52. package/dist/table/index.es.js +2 -2
  53. package/dist/time-input/index.cjs.js +1 -1
  54. package/dist/time-input/index.es.js +2 -2
  55. package/dist/tooltip/index.cjs.js +1 -1
  56. package/dist/tooltip/index.es.js +1 -1
  57. package/dist/ui/index.cjs.js +292 -290
  58. package/dist/ui/index.cjs.js.map +1 -1
  59. package/dist/ui/index.es.js +182 -180
  60. package/dist/ui/index.es.js.map +1 -1
  61. package/package.json +10 -9
  62. package/dist/chunks/floating-ui.react-dom-CjlUwp8V.js +0 -294
  63. package/dist/chunks/floating-ui.react-dom-CjlUwp8V.js.map +0 -1
  64. package/dist/chunks/floating-ui.react-dom-D5BI9L2i.js +0 -310
  65. package/dist/chunks/floating-ui.react-dom-D5BI9L2i.js.map +0 -1
  66. package/dist/chunks/select-DGnc8VJi.js.map +0 -1
  67. package/dist/chunks/select-Dpyj5dUk.js.map +0 -1
  68. package/dist/chunks/textarea-D2_KC-J4.js.map +0 -1
  69. package/dist/chunks/textarea-_HQpXiCX.js.map +0 -1
  70. package/dist/chunks/tooltip-GGFk8ALK.js +0 -1402
  71. package/dist/chunks/tooltip-GGFk8ALK.js.map +0 -1
  72. package/dist/chunks/tooltip-JwIbppjO.js +0 -1387
  73. package/dist/chunks/tooltip-JwIbppjO.js.map +0 -1
@@ -0,0 +1,525 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { c as createContextScope, u as useId, a as useControllableState, P as Primitive, b as composeEventHandlers, d as Presence, e as Portal$1, D as DismissableLayer } from "./index-CuySPbdY.js";
4
+ import { u as useComposedRefs, c as createSlottable } from "./index-DiC9dI6_.js";
5
+ import { c as createPopperScope, R as Root2, A as Anchor, a as Arrow, C as Content, b as Root } from "./index-DlZi5TkN.js";
6
+ import { c as cn } from "./utils-H80jjgLf.js";
7
+ import { twMerge } from "tailwind-merge";
8
+ import clsx from "clsx";
9
+ var [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [
10
+ createPopperScope
11
+ ]);
12
+ var usePopperScope = createPopperScope();
13
+ var PROVIDER_NAME = "TooltipProvider";
14
+ var DEFAULT_DELAY_DURATION = 700;
15
+ var TOOLTIP_OPEN = "tooltip.open";
16
+ var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
17
+ var TooltipProvider$1 = (props) => {
18
+ const {
19
+ __scopeTooltip,
20
+ delayDuration = DEFAULT_DELAY_DURATION,
21
+ skipDelayDuration = 300,
22
+ disableHoverableContent = false,
23
+ children
24
+ } = props;
25
+ const isOpenDelayedRef = React.useRef(true);
26
+ const isPointerInTransitRef = React.useRef(false);
27
+ const skipDelayTimerRef = React.useRef(0);
28
+ React.useEffect(() => {
29
+ const skipDelayTimer = skipDelayTimerRef.current;
30
+ return () => window.clearTimeout(skipDelayTimer);
31
+ }, []);
32
+ return /* @__PURE__ */ jsx(
33
+ TooltipProviderContextProvider,
34
+ {
35
+ scope: __scopeTooltip,
36
+ isOpenDelayedRef,
37
+ delayDuration,
38
+ onOpen: React.useCallback(() => {
39
+ window.clearTimeout(skipDelayTimerRef.current);
40
+ isOpenDelayedRef.current = false;
41
+ }, []),
42
+ onClose: React.useCallback(() => {
43
+ window.clearTimeout(skipDelayTimerRef.current);
44
+ skipDelayTimerRef.current = window.setTimeout(
45
+ () => isOpenDelayedRef.current = true,
46
+ skipDelayDuration
47
+ );
48
+ }, [skipDelayDuration]),
49
+ isPointerInTransitRef,
50
+ onPointerInTransitChange: React.useCallback((inTransit) => {
51
+ isPointerInTransitRef.current = inTransit;
52
+ }, []),
53
+ disableHoverableContent,
54
+ children
55
+ }
56
+ );
57
+ };
58
+ TooltipProvider$1.displayName = PROVIDER_NAME;
59
+ var TOOLTIP_NAME = "Tooltip";
60
+ var [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);
61
+ var Tooltip$1 = (props) => {
62
+ const {
63
+ __scopeTooltip,
64
+ children,
65
+ open: openProp,
66
+ defaultOpen,
67
+ onOpenChange,
68
+ disableHoverableContent: disableHoverableContentProp,
69
+ delayDuration: delayDurationProp
70
+ } = props;
71
+ const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);
72
+ const popperScope = usePopperScope(__scopeTooltip);
73
+ const [trigger, setTrigger] = React.useState(null);
74
+ const contentId = useId();
75
+ const openTimerRef = React.useRef(0);
76
+ const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;
77
+ const delayDuration = delayDurationProp ?? providerContext.delayDuration;
78
+ const wasOpenDelayedRef = React.useRef(false);
79
+ const [open, setOpen] = useControllableState({
80
+ prop: openProp,
81
+ defaultProp: defaultOpen ?? false,
82
+ onChange: (open2) => {
83
+ if (open2) {
84
+ providerContext.onOpen();
85
+ document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));
86
+ } else {
87
+ providerContext.onClose();
88
+ }
89
+ onOpenChange?.(open2);
90
+ },
91
+ caller: TOOLTIP_NAME
92
+ });
93
+ const stateAttribute = React.useMemo(() => {
94
+ return open ? wasOpenDelayedRef.current ? "delayed-open" : "instant-open" : "closed";
95
+ }, [open]);
96
+ const handleOpen = React.useCallback(() => {
97
+ window.clearTimeout(openTimerRef.current);
98
+ openTimerRef.current = 0;
99
+ wasOpenDelayedRef.current = false;
100
+ setOpen(true);
101
+ }, [setOpen]);
102
+ const handleClose = React.useCallback(() => {
103
+ window.clearTimeout(openTimerRef.current);
104
+ openTimerRef.current = 0;
105
+ setOpen(false);
106
+ }, [setOpen]);
107
+ const handleDelayedOpen = React.useCallback(() => {
108
+ window.clearTimeout(openTimerRef.current);
109
+ openTimerRef.current = window.setTimeout(() => {
110
+ wasOpenDelayedRef.current = true;
111
+ setOpen(true);
112
+ openTimerRef.current = 0;
113
+ }, delayDuration);
114
+ }, [delayDuration, setOpen]);
115
+ React.useEffect(() => {
116
+ return () => {
117
+ if (openTimerRef.current) {
118
+ window.clearTimeout(openTimerRef.current);
119
+ openTimerRef.current = 0;
120
+ }
121
+ };
122
+ }, []);
123
+ return /* @__PURE__ */ jsx(Root2, { ...popperScope, children: /* @__PURE__ */ jsx(
124
+ TooltipContextProvider,
125
+ {
126
+ scope: __scopeTooltip,
127
+ contentId,
128
+ open,
129
+ stateAttribute,
130
+ trigger,
131
+ onTriggerChange: setTrigger,
132
+ onTriggerEnter: React.useCallback(() => {
133
+ if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();
134
+ else handleOpen();
135
+ }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),
136
+ onTriggerLeave: React.useCallback(() => {
137
+ if (disableHoverableContent) {
138
+ handleClose();
139
+ } else {
140
+ window.clearTimeout(openTimerRef.current);
141
+ openTimerRef.current = 0;
142
+ }
143
+ }, [handleClose, disableHoverableContent]),
144
+ onOpen: handleOpen,
145
+ onClose: handleClose,
146
+ disableHoverableContent,
147
+ children
148
+ }
149
+ ) });
150
+ };
151
+ Tooltip$1.displayName = TOOLTIP_NAME;
152
+ var TRIGGER_NAME = "TooltipTrigger";
153
+ var TooltipTrigger$1 = React.forwardRef(
154
+ (props, forwardedRef) => {
155
+ const { __scopeTooltip, ...triggerProps } = props;
156
+ const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);
157
+ const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);
158
+ const popperScope = usePopperScope(__scopeTooltip);
159
+ const ref = React.useRef(null);
160
+ const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);
161
+ const isPointerDownRef = React.useRef(false);
162
+ const hasPointerMoveOpenedRef = React.useRef(false);
163
+ const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);
164
+ React.useEffect(() => {
165
+ return () => document.removeEventListener("pointerup", handlePointerUp);
166
+ }, [handlePointerUp]);
167
+ return /* @__PURE__ */ jsx(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(
168
+ Primitive.button,
169
+ {
170
+ "aria-describedby": context.open ? context.contentId : void 0,
171
+ "data-state": context.stateAttribute,
172
+ ...triggerProps,
173
+ ref: composedRefs,
174
+ onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {
175
+ if (event.pointerType === "touch") return;
176
+ if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {
177
+ context.onTriggerEnter();
178
+ hasPointerMoveOpenedRef.current = true;
179
+ }
180
+ }),
181
+ onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {
182
+ context.onTriggerLeave();
183
+ hasPointerMoveOpenedRef.current = false;
184
+ }),
185
+ onPointerDown: composeEventHandlers(props.onPointerDown, () => {
186
+ if (context.open) {
187
+ context.onClose();
188
+ }
189
+ isPointerDownRef.current = true;
190
+ document.addEventListener("pointerup", handlePointerUp, { once: true });
191
+ }),
192
+ onFocus: composeEventHandlers(props.onFocus, () => {
193
+ if (!isPointerDownRef.current) context.onOpen();
194
+ }),
195
+ onBlur: composeEventHandlers(props.onBlur, context.onClose),
196
+ onClick: composeEventHandlers(props.onClick, context.onClose)
197
+ }
198
+ ) });
199
+ }
200
+ );
201
+ TooltipTrigger$1.displayName = TRIGGER_NAME;
202
+ var PORTAL_NAME = "TooltipPortal";
203
+ var [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {
204
+ forceMount: void 0
205
+ });
206
+ var TooltipPortal = (props) => {
207
+ const { __scopeTooltip, forceMount, children, container } = props;
208
+ const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);
209
+ return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Portal$1, { asChild: true, container, children }) }) });
210
+ };
211
+ TooltipPortal.displayName = PORTAL_NAME;
212
+ var CONTENT_NAME = "TooltipContent";
213
+ var TooltipContent$1 = React.forwardRef(
214
+ (props, forwardedRef) => {
215
+ const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);
216
+ const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
217
+ const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
218
+ return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });
219
+ }
220
+ );
221
+ var TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {
222
+ const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
223
+ const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);
224
+ const ref = React.useRef(null);
225
+ const composedRefs = useComposedRefs(forwardedRef, ref);
226
+ const [pointerGraceArea, setPointerGraceArea] = React.useState(null);
227
+ const { trigger, onClose } = context;
228
+ const content = ref.current;
229
+ const { onPointerInTransitChange } = providerContext;
230
+ const handleRemoveGraceArea = React.useCallback(() => {
231
+ setPointerGraceArea(null);
232
+ onPointerInTransitChange(false);
233
+ }, [onPointerInTransitChange]);
234
+ const handleCreateGraceArea = React.useCallback(
235
+ (event, hoverTarget) => {
236
+ const currentTarget = event.currentTarget;
237
+ const exitPoint = { x: event.clientX, y: event.clientY };
238
+ const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
239
+ const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);
240
+ const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());
241
+ const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);
242
+ setPointerGraceArea(graceArea);
243
+ onPointerInTransitChange(true);
244
+ },
245
+ [onPointerInTransitChange]
246
+ );
247
+ React.useEffect(() => {
248
+ return () => handleRemoveGraceArea();
249
+ }, [handleRemoveGraceArea]);
250
+ React.useEffect(() => {
251
+ if (trigger && content) {
252
+ const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);
253
+ const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);
254
+ trigger.addEventListener("pointerleave", handleTriggerLeave);
255
+ content.addEventListener("pointerleave", handleContentLeave);
256
+ return () => {
257
+ trigger.removeEventListener("pointerleave", handleTriggerLeave);
258
+ content.removeEventListener("pointerleave", handleContentLeave);
259
+ };
260
+ }
261
+ }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);
262
+ React.useEffect(() => {
263
+ if (pointerGraceArea) {
264
+ const handleTrackPointerGrace = (event) => {
265
+ const target = event.target;
266
+ const pointerPosition = { x: event.clientX, y: event.clientY };
267
+ const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);
268
+ const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);
269
+ if (hasEnteredTarget) {
270
+ handleRemoveGraceArea();
271
+ } else if (isPointerOutsideGraceArea) {
272
+ handleRemoveGraceArea();
273
+ onClose();
274
+ }
275
+ };
276
+ document.addEventListener("pointermove", handleTrackPointerGrace);
277
+ return () => document.removeEventListener("pointermove", handleTrackPointerGrace);
278
+ }
279
+ }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);
280
+ return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });
281
+ });
282
+ var [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });
283
+ var Slottable = createSlottable("TooltipContent");
284
+ var TooltipContentImpl = React.forwardRef(
285
+ (props, forwardedRef) => {
286
+ const {
287
+ __scopeTooltip,
288
+ children,
289
+ "aria-label": ariaLabel,
290
+ onEscapeKeyDown,
291
+ onPointerDownOutside,
292
+ ...contentProps
293
+ } = props;
294
+ const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);
295
+ const popperScope = usePopperScope(__scopeTooltip);
296
+ const { onClose } = context;
297
+ React.useEffect(() => {
298
+ document.addEventListener(TOOLTIP_OPEN, onClose);
299
+ return () => document.removeEventListener(TOOLTIP_OPEN, onClose);
300
+ }, [onClose]);
301
+ React.useEffect(() => {
302
+ if (context.trigger) {
303
+ const handleScroll = (event) => {
304
+ const target = event.target;
305
+ if (target?.contains(context.trigger)) onClose();
306
+ };
307
+ window.addEventListener("scroll", handleScroll, { capture: true });
308
+ return () => window.removeEventListener("scroll", handleScroll, { capture: true });
309
+ }
310
+ }, [context.trigger, onClose]);
311
+ return /* @__PURE__ */ jsx(
312
+ DismissableLayer,
313
+ {
314
+ asChild: true,
315
+ disableOutsidePointerEvents: false,
316
+ onEscapeKeyDown,
317
+ onPointerDownOutside,
318
+ onFocusOutside: (event) => event.preventDefault(),
319
+ onDismiss: onClose,
320
+ children: /* @__PURE__ */ jsxs(
321
+ Content,
322
+ {
323
+ "data-state": context.stateAttribute,
324
+ ...popperScope,
325
+ ...contentProps,
326
+ ref: forwardedRef,
327
+ style: {
328
+ ...contentProps.style,
329
+ // re-namespace exposed content custom properties
330
+ ...{
331
+ "--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
332
+ "--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
333
+ "--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
334
+ "--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
335
+ "--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
336
+ }
337
+ },
338
+ children: [
339
+ /* @__PURE__ */ jsx(Slottable, { children }),
340
+ /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(Root, { id: context.contentId, role: "tooltip", children: ariaLabel || children }) })
341
+ ]
342
+ }
343
+ )
344
+ }
345
+ );
346
+ }
347
+ );
348
+ TooltipContent$1.displayName = CONTENT_NAME;
349
+ var ARROW_NAME = "TooltipArrow";
350
+ var TooltipArrow = React.forwardRef(
351
+ (props, forwardedRef) => {
352
+ const { __scopeTooltip, ...arrowProps } = props;
353
+ const popperScope = usePopperScope(__scopeTooltip);
354
+ const visuallyHiddenContentContext = useVisuallyHiddenContentContext(
355
+ ARROW_NAME,
356
+ __scopeTooltip
357
+ );
358
+ return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });
359
+ }
360
+ );
361
+ TooltipArrow.displayName = ARROW_NAME;
362
+ function getExitSideFromRect(point, rect) {
363
+ const top = Math.abs(rect.top - point.y);
364
+ const bottom = Math.abs(rect.bottom - point.y);
365
+ const right = Math.abs(rect.right - point.x);
366
+ const left = Math.abs(rect.left - point.x);
367
+ switch (Math.min(top, bottom, right, left)) {
368
+ case left:
369
+ return "left";
370
+ case right:
371
+ return "right";
372
+ case top:
373
+ return "top";
374
+ case bottom:
375
+ return "bottom";
376
+ default:
377
+ throw new Error("unreachable");
378
+ }
379
+ }
380
+ function getPaddedExitPoints(exitPoint, exitSide, padding = 5) {
381
+ const paddedExitPoints = [];
382
+ switch (exitSide) {
383
+ case "top":
384
+ paddedExitPoints.push(
385
+ { x: exitPoint.x - padding, y: exitPoint.y + padding },
386
+ { x: exitPoint.x + padding, y: exitPoint.y + padding }
387
+ );
388
+ break;
389
+ case "bottom":
390
+ paddedExitPoints.push(
391
+ { x: exitPoint.x - padding, y: exitPoint.y - padding },
392
+ { x: exitPoint.x + padding, y: exitPoint.y - padding }
393
+ );
394
+ break;
395
+ case "left":
396
+ paddedExitPoints.push(
397
+ { x: exitPoint.x + padding, y: exitPoint.y - padding },
398
+ { x: exitPoint.x + padding, y: exitPoint.y + padding }
399
+ );
400
+ break;
401
+ case "right":
402
+ paddedExitPoints.push(
403
+ { x: exitPoint.x - padding, y: exitPoint.y - padding },
404
+ { x: exitPoint.x - padding, y: exitPoint.y + padding }
405
+ );
406
+ break;
407
+ }
408
+ return paddedExitPoints;
409
+ }
410
+ function getPointsFromRect(rect) {
411
+ const { top, right, bottom, left } = rect;
412
+ return [
413
+ { x: left, y: top },
414
+ { x: right, y: top },
415
+ { x: right, y: bottom },
416
+ { x: left, y: bottom }
417
+ ];
418
+ }
419
+ function isPointInPolygon(point, polygon) {
420
+ const { x, y } = point;
421
+ let inside = false;
422
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
423
+ const ii = polygon[i];
424
+ const jj = polygon[j];
425
+ const xi = ii.x;
426
+ const yi = ii.y;
427
+ const xj = jj.x;
428
+ const yj = jj.y;
429
+ const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
430
+ if (intersect) inside = !inside;
431
+ }
432
+ return inside;
433
+ }
434
+ function getHull(points) {
435
+ const newPoints = points.slice();
436
+ newPoints.sort((a, b) => {
437
+ if (a.x < b.x) return -1;
438
+ else if (a.x > b.x) return 1;
439
+ else if (a.y < b.y) return -1;
440
+ else if (a.y > b.y) return 1;
441
+ else return 0;
442
+ });
443
+ return getHullPresorted(newPoints);
444
+ }
445
+ function getHullPresorted(points) {
446
+ if (points.length <= 1) return points.slice();
447
+ const upperHull = [];
448
+ for (let i = 0; i < points.length; i++) {
449
+ const p = points[i];
450
+ while (upperHull.length >= 2) {
451
+ const q = upperHull[upperHull.length - 1];
452
+ const r = upperHull[upperHull.length - 2];
453
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();
454
+ else break;
455
+ }
456
+ upperHull.push(p);
457
+ }
458
+ upperHull.pop();
459
+ const lowerHull = [];
460
+ for (let i = points.length - 1; i >= 0; i--) {
461
+ const p = points[i];
462
+ while (lowerHull.length >= 2) {
463
+ const q = lowerHull[lowerHull.length - 1];
464
+ const r = lowerHull[lowerHull.length - 2];
465
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();
466
+ else break;
467
+ }
468
+ lowerHull.push(p);
469
+ }
470
+ lowerHull.pop();
471
+ if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {
472
+ return upperHull;
473
+ } else {
474
+ return upperHull.concat(lowerHull);
475
+ }
476
+ }
477
+ var Provider = TooltipProvider$1;
478
+ var Root3 = Tooltip$1;
479
+ var Trigger = TooltipTrigger$1;
480
+ var Portal = TooltipPortal;
481
+ var Content2 = TooltipContent$1;
482
+ var Arrow2 = TooltipArrow;
483
+ function TooltipProvider({ delayDuration = 0, ...props }) {
484
+ return /* @__PURE__ */ jsx(Provider, { "data-slot": "tooltip-provider", delayDuration, ...props });
485
+ }
486
+ function TooltipMain({ ...props }) {
487
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(Root3, { "data-slot": "tooltip", ...props }) });
488
+ }
489
+ function TooltipTrigger({ ...props }) {
490
+ return /* @__PURE__ */ jsx(Trigger, { "data-slot": "tooltip-trigger", ...props });
491
+ }
492
+ function TooltipContent({ className, sideOffset = 0, children, ...props }) {
493
+ return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(
494
+ Content2,
495
+ {
496
+ "data-slot": "tooltip-content",
497
+ sideOffset,
498
+ className: cn(
499
+ "bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
500
+ className
501
+ ),
502
+ ...props,
503
+ children: [
504
+ children,
505
+ /* @__PURE__ */ jsx(Arrow2, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
506
+ ]
507
+ }
508
+ ) });
509
+ }
510
+ const Tooltip = ({ children, content, className, placement = "top", showArrow = true }) => {
511
+ twMerge(
512
+ clsx(
513
+ "bg-content1 font-normal text-sm rounded-md filter-(--filter-drop-shadow-small) flex justify-center items-center z-10 px-2.5 py-1 outline-none box-border subpixel-antialiased normal-case",
514
+ className
515
+ )
516
+ );
517
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(TooltipMain, { children: [
518
+ /* @__PURE__ */ jsx(TooltipTrigger, { children }),
519
+ /* @__PURE__ */ jsx(TooltipContent, { children: content })
520
+ ] }) });
521
+ };
522
+ export {
523
+ Tooltip as T
524
+ };
525
+ //# sourceMappingURL=tooltip-BP--5Wj2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip-BP--5Wj2.js","sources":["../../node_modules/.pnpm/@radix-ui+react-tooltip@1.2.8_@types+react-dom@19.1.9_@types+react@19.1.14__@types+react@19.1_qmnolanwhktlj7hcdwdtgr57qq/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../../src/components/ui/tooltip.tsx","../../src/components/tooltip/tooltip.tsx"],"sourcesContent":["\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n },\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction TooltipProvider({ delayDuration = 0, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n\treturn <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\nfunction TooltipMain({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n\treturn (\n\t\t<TooltipProvider>\n\t\t\t<TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n\t\t</TooltipProvider>\n\t);\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n\treturn <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({ className, sideOffset = 0, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n\treturn (\n\t\t<TooltipPrimitive.Portal>\n\t\t\t<TooltipPrimitive.Content\n\t\t\t\tdata-slot=\"tooltip-content\"\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t\t<TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n\t\t\t</TooltipPrimitive.Content>\n\t\t</TooltipPrimitive.Portal>\n\t);\n}\n\nexport { TooltipMain, TooltipTrigger, TooltipContent, TooltipProvider };\n","import React from \"react\";\nimport { TooltipContent, TooltipMain, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { twMerge } from \"tailwind-merge\";\nimport clsx from \"clsx\";\n\ninterface TooltipProps {\n\tchildren: React.ReactNode;\n\tcontent: React.ReactNode;\n\tplacement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n\tclassName?: string;\n\tshowArrow?: boolean;\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({ children, content, className, placement = \"top\", showArrow = true }) => {\n\tconst mergedClass = twMerge(\n\t\tclsx(\n\t\t\t\"bg-content1 font-normal text-sm rounded-md filter-(--filter-drop-shadow-small) flex justify-center items-center z-10 px-2.5 py-1 outline-none box-border subpixel-antialiased normal-case\",\n\t\t\tclassName,\n\t\t),\n\t);\n\n console.log(\"content\", placement, showArrow, mergedClass);\n\n\treturn (\n\t\t<>\n\t\t\t<TooltipMain>\n\t\t\t\t<TooltipTrigger>{children}</TooltipTrigger>\n\t\t\t\t<TooltipContent>\n\t\t\t\t\t{content}\n\t\t\t\t</TooltipContent>\n\t\t\t</TooltipMain>\n\t\t</>\n\t);\n};\n"],"names":["TooltipProvider","Tooltip","PopperPrimitive.Root","TooltipTrigger","PopperPrimitive.Anchor","PortalPrimitive","TooltipContent","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","PopperPrimitive.Arrow","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","TooltipPrimitive.Portal","TooltipPrimitive.Content","TooltipPrimitive.Arrow"],"mappings":"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","x_google_ignoreList":[0]}