lizaui 9.0.13 → 9.0.16

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 (70) 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-CA3Y2GZ1.js → button-B0fpJrMg.js} +2 -2
  5. package/dist/chunks/{button-CA3Y2GZ1.js.map → button-B0fpJrMg.js.map} +1 -1
  6. package/dist/chunks/{checkbox-qzZKMLRN.js → checkbox-C1Sssumg.js} +2 -2
  7. package/dist/chunks/{checkbox-qzZKMLRN.js.map → checkbox-C1Sssumg.js.map} +1 -1
  8. package/dist/chunks/{floating-ui.dom-N5ROFCJy.js → floating-ui.dom-B9hvXzxg.js} +11 -1
  9. package/dist/chunks/{floating-ui.dom-N5ROFCJy.js.map → floating-ui.dom-B9hvXzxg.js.map} +1 -1
  10. package/dist/chunks/{floating-ui.dom-NqZWWqNg.js → floating-ui.dom-DRSBqyFN.js} +14 -4
  11. package/dist/chunks/{floating-ui.dom-NqZWWqNg.js.map → floating-ui.dom-DRSBqyFN.js.map} +1 -1
  12. package/dist/chunks/floating-ui.react-dom-BUZLdP4-.js +294 -0
  13. package/dist/chunks/floating-ui.react-dom-BUZLdP4-.js.map +1 -0
  14. package/dist/chunks/floating-ui.react-dom-CI1b2uK3.js +310 -0
  15. package/dist/chunks/floating-ui.react-dom-CI1b2uK3.js.map +1 -0
  16. package/dist/chunks/{index-DiC9dI6_.js → index-B4RTH1-D.js} +4 -4
  17. package/dist/chunks/{index-DiC9dI6_.js.map → index-B4RTH1-D.js.map} +1 -1
  18. package/dist/chunks/{scroll-area-CgJodNZ_.js → scroll-area-B-5YmafW.js} +27 -27
  19. package/dist/chunks/{scroll-area-CgJodNZ_.js.map → scroll-area-B-5YmafW.js.map} +1 -1
  20. package/dist/chunks/{scroll-area-BcM0NCEM.js → scroll-area-WNAy-5-i.js} +3 -3
  21. package/dist/chunks/{scroll-area-BcM0NCEM.js.map → scroll-area-WNAy-5-i.js.map} +1 -1
  22. package/dist/chunks/{select-DyihZY-4.js → select-C9BYUpJm.js} +439 -83
  23. package/dist/chunks/select-C9BYUpJm.js.map +1 -0
  24. package/dist/chunks/{select-DaKy-WhC.js → select-CLIZOVIj.js} +366 -10
  25. package/dist/chunks/select-CLIZOVIj.js.map +1 -0
  26. package/dist/chunks/{textarea-By2Vv44z.js → textarea-D2_KC-J4.js} +587 -36
  27. package/dist/chunks/textarea-D2_KC-J4.js.map +1 -0
  28. package/dist/chunks/{textarea-ClJsk9Gp.js → textarea-_HQpXiCX.js} +586 -35
  29. package/dist/chunks/textarea-_HQpXiCX.js.map +1 -0
  30. package/dist/chunks/tooltip-DgenLCkC.js +1921 -0
  31. package/dist/chunks/tooltip-DgenLCkC.js.map +1 -0
  32. package/dist/chunks/tooltip-nCIpADfj.js +1937 -0
  33. package/dist/chunks/tooltip-nCIpADfj.js.map +1 -0
  34. package/dist/components/tooltip/tooltip.d.ts +1 -1
  35. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  36. package/dist/divider/index.es.js +1 -1
  37. package/dist/modal/index.es.js +1 -1
  38. package/dist/pagination/index.cjs.js +2 -2
  39. package/dist/pagination/index.es.js +3 -3
  40. package/dist/phone-input/index.cjs.js +2 -2
  41. package/dist/phone-input/index.es.js +3 -3
  42. package/dist/select-input/index.cjs.js +1 -1
  43. package/dist/select-input/index.es.js +2 -2
  44. package/dist/table/index.cjs.js +1 -1
  45. package/dist/table/index.es.js +2 -2
  46. package/dist/time-input/index.cjs.js +1 -1
  47. package/dist/time-input/index.es.js +2 -2
  48. package/dist/tooltip/index.cjs.js +1 -1
  49. package/dist/tooltip/index.es.js +1 -1
  50. package/dist/ui/index.cjs.js +290 -292
  51. package/dist/ui/index.cjs.js.map +1 -1
  52. package/dist/ui/index.es.js +180 -182
  53. package/dist/ui/index.es.js.map +1 -1
  54. package/package.json +2 -2
  55. package/dist/chunks/index-CuySPbdY.js +0 -559
  56. package/dist/chunks/index-CuySPbdY.js.map +0 -1
  57. package/dist/chunks/index-DBDBh58Q.js +0 -575
  58. package/dist/chunks/index-DBDBh58Q.js.map +0 -1
  59. package/dist/chunks/index-DNSql2gU.js +0 -662
  60. package/dist/chunks/index-DNSql2gU.js.map +0 -1
  61. package/dist/chunks/index-DlZi5TkN.js +0 -646
  62. package/dist/chunks/index-DlZi5TkN.js.map +0 -1
  63. package/dist/chunks/select-DaKy-WhC.js.map +0 -1
  64. package/dist/chunks/select-DyihZY-4.js.map +0 -1
  65. package/dist/chunks/textarea-By2Vv44z.js.map +0 -1
  66. package/dist/chunks/textarea-ClJsk9Gp.js.map +0 -1
  67. package/dist/chunks/tooltip-D4UvkD2G.js +0 -525
  68. package/dist/chunks/tooltip-D4UvkD2G.js.map +0 -1
  69. package/dist/chunks/tooltip-WGeoFpGx.js +0 -541
  70. package/dist/chunks/tooltip-WGeoFpGx.js.map +0 -1
@@ -1,525 +0,0 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import * as React from "react";
3
- import { twMerge } from "tailwind-merge";
4
- import clsx from "clsx";
5
- 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";
6
- import { u as useComposedRefs, c as createSlottable } from "./index-DiC9dI6_.js";
7
- import { c as createPopperScope, R as Root2, A as Anchor, a as Arrow, C as Content, b as Root } from "./index-DlZi5TkN.js";
8
- import { c as cn } from "./utils-H80jjgLf.js";
9
- var [createTooltipContext] = 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 TooltipContainer({ ...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
- "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-content1 fill-content1 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", sideOffset = 0 }) => {
511
- const mergedClass = 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__ */ jsxs(TooltipContainer, { children: [
518
- /* @__PURE__ */ jsx(TooltipTrigger, { children }),
519
- /* @__PURE__ */ jsx(TooltipContent, { className: mergedClass, side: placement, sideOffset, children: content })
520
- ] });
521
- };
522
- export {
523
- Tooltip as T
524
- };
525
- //# sourceMappingURL=tooltip-D4UvkD2G.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip-D4UvkD2G.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/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 React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport clsx from \"clsx\";\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 TooltipContainer({ ...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\"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-content1 fill-content1 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}\ninterface TooltipProps {\n\tchildren: React.ReactNode;\n\tcontent: React.ReactNode;\n\tplacement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n\tclassName?: string;\n\tsideOffset?: number;\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({ children, content, className, placement = \"top\", sideOffset = 0 }) => {\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\treturn (\n\t\t<TooltipContainer>\n\t\t\t<TooltipTrigger>{children}</TooltipTrigger>\n\t\t\t<TooltipContent className={mergedClass} side={placement} sideOffset={sideOffset}>\n\t\t\t\t{content}\n\t\t\t</TooltipContent>\n\t\t</TooltipContainer>\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]}