@addsign/moje-agenda-shared-lib 2.0.0 → 2.0.3

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 (93) hide show
  1. package/dist/Dialog-CLPZ1Y00.js +422 -0
  2. package/dist/Dialog-CLPZ1Y00.js.map +1 -0
  3. package/dist/Dialog-IPFWYptw.js +421 -0
  4. package/dist/Dialog-IPFWYptw.js.map +1 -0
  5. package/dist/assets/style.css +25 -6
  6. package/dist/components/datatable/DataTable.js +5 -2
  7. package/dist/components/datatable/DataTable.js.map +1 -1
  8. package/dist/components/datatable/DataTableServer.js +5 -2
  9. package/dist/components/datatable/DataTableServer.js.map +1 -1
  10. package/dist/components/form/AutocompleteSearchBar.js +5 -2
  11. package/dist/components/form/AutocompleteSearchBar.js.map +1 -1
  12. package/dist/components/form/AutocompleteSearchBarServer.js +5 -2
  13. package/dist/components/form/AutocompleteSearchBarServer.js.map +1 -1
  14. package/dist/components/form/FileInput.js +6 -3
  15. package/dist/components/form/FileInput.js.map +1 -1
  16. package/dist/components/form/FileInputMultiple.js +6 -3
  17. package/dist/components/form/FileInputMultiple.js.map +1 -1
  18. package/dist/components/form/FormField.js +5 -2
  19. package/dist/components/form/FormField.js.map +1 -1
  20. package/dist/components/form/PositionsSelectorSingle.js +5 -2
  21. package/dist/components/form/PositionsSelectorSingle.js.map +1 -1
  22. package/dist/components/form/SelectField.js +5 -2
  23. package/dist/components/form/SelectField.js.map +1 -1
  24. package/dist/components/profiles/ProfileOverview.js +5 -2
  25. package/dist/components/profiles/ProfileOverview.js.map +1 -1
  26. package/dist/components/ui/Combobox.d.ts +14 -1
  27. package/dist/components/ui/Combobox.js +122 -98
  28. package/dist/components/ui/Combobox.js.map +1 -1
  29. package/dist/components/ui/Dialog.js +1 -1
  30. package/dist/components/ui/ScrollArea.js +3 -3
  31. package/dist/components/ui/button.js +4 -4
  32. package/dist/components/ui/button.js.map +1 -1
  33. package/dist/components/ui/command.js +3 -3
  34. package/dist/components/ui/command.js.map +1 -1
  35. package/dist/components/ui/form.js +1 -1
  36. package/dist/components/ui/input.d.ts +5 -1
  37. package/dist/components/ui/input.js +92 -13
  38. package/dist/components/ui/input.js.map +1 -1
  39. package/dist/components/ui/label.js +1 -1
  40. package/dist/components/ui/popover.js +6 -5
  41. package/dist/components/ui/popover.js.map +1 -1
  42. package/dist/components/ui/radioGroup.js +4 -4
  43. package/dist/components/ui/select.d.ts +3 -1
  44. package/dist/components/ui/select.js +10 -35
  45. package/dist/components/ui/select.js.map +1 -1
  46. package/dist/components/ui/separator.d.ts +4 -0
  47. package/dist/components/ui/separator.js +48 -0
  48. package/dist/components/ui/separator.js.map +1 -0
  49. package/dist/components/ui/tooltip.d.ts +7 -0
  50. package/dist/components/ui/tooltip.js +509 -0
  51. package/dist/components/ui/tooltip.js.map +1 -0
  52. package/dist/index-B3cR4C4Z.js +2203 -0
  53. package/dist/index-B3cR4C4Z.js.map +1 -0
  54. package/dist/index-B761_inZ.js +28884 -0
  55. package/dist/index-B761_inZ.js.map +1 -0
  56. package/dist/index-BF3Kkq7m.js +2212 -0
  57. package/dist/index-BF3Kkq7m.js.map +1 -0
  58. package/dist/index-BULFV6Qz.js +2266 -0
  59. package/dist/index-BULFV6Qz.js.map +1 -0
  60. package/dist/index-Bjw9JvWH.js +131 -0
  61. package/dist/index-Bjw9JvWH.js.map +1 -0
  62. package/dist/index-Bm-YZac9.js +28864 -0
  63. package/dist/index-Bm-YZac9.js.map +1 -0
  64. package/dist/index-BzZGaGRV.js +230 -0
  65. package/dist/index-BzZGaGRV.js.map +1 -0
  66. package/dist/index-C4pkvuV-.js +1395 -0
  67. package/dist/index-C4pkvuV-.js.map +1 -0
  68. package/dist/index-C59RTYp9.js +140 -0
  69. package/dist/index-C59RTYp9.js.map +1 -0
  70. package/dist/index-D8AkGh-j.js +1173 -0
  71. package/dist/index-D8AkGh-j.js.map +1 -0
  72. package/dist/index-D9mvqz1C.js +97 -0
  73. package/dist/index-D9mvqz1C.js.map +1 -0
  74. package/dist/index-M6rMtqtn.js +2203 -0
  75. package/dist/index-M6rMtqtn.js.map +1 -0
  76. package/dist/index-cCT-Qkr7.js +36 -0
  77. package/dist/index-cCT-Qkr7.js.map +1 -0
  78. package/dist/index.es-XWsfbnWC.js +9628 -0
  79. package/dist/index.es-XWsfbnWC.js.map +1 -0
  80. package/dist/jspdf.plugin.autotable-DXW3wQb-.js +11475 -0
  81. package/dist/jspdf.plugin.autotable-DXW3wQb-.js.map +1 -0
  82. package/dist/main.d.ts +4 -0
  83. package/dist/main.js +23 -5
  84. package/dist/main.js.map +1 -1
  85. package/lib/components/ui/Combobox.tsx +159 -102
  86. package/lib/components/ui/button.tsx +3 -3
  87. package/lib/components/ui/command.tsx +1 -1
  88. package/lib/components/ui/input.tsx +96 -10
  89. package/lib/components/ui/select.tsx +9 -5
  90. package/lib/components/ui/separator.tsx +29 -0
  91. package/lib/components/ui/tooltip.tsx +28 -0
  92. package/lib/main.ts +4 -0
  93. package/package.json +3 -1
@@ -0,0 +1,509 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { c as createContextScope, a as composeEventHandlers } from "../../index-BpHbTxNe.js";
4
+ import { u as useComposedRefs, a as Slottable } from "../../index-D9mvqz1C.js";
5
+ import { D as DismissableLayer } from "../../index-BzZGaGRV.js";
6
+ import { a as useId, u as useControllableState } from "../../index-BzVVosDl.js";
7
+ import { c as createPopperScope, A as Anchor, C as Content, a as Arrow, R as Root2 } from "../../index-B3cR4C4Z.js";
8
+ import { P as Presence } from "../../index-Bjw9JvWH.js";
9
+ import { P as Primitive } from "../../index-B761_inZ.js";
10
+ import { R as Root } from "../../index-cCT-Qkr7.js";
11
+ import { cn } from "../../utils/utils.js";
12
+ var [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [
13
+ createPopperScope
14
+ ]);
15
+ var usePopperScope = createPopperScope();
16
+ var PROVIDER_NAME = "TooltipProvider";
17
+ var DEFAULT_DELAY_DURATION = 700;
18
+ var TOOLTIP_OPEN = "tooltip.open";
19
+ var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
20
+ var TooltipProvider$1 = (props) => {
21
+ const {
22
+ __scopeTooltip,
23
+ delayDuration = DEFAULT_DELAY_DURATION,
24
+ skipDelayDuration = 300,
25
+ disableHoverableContent = false,
26
+ children
27
+ } = props;
28
+ const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);
29
+ const isPointerInTransitRef = React.useRef(false);
30
+ const skipDelayTimerRef = React.useRef(0);
31
+ React.useEffect(() => {
32
+ const skipDelayTimer = skipDelayTimerRef.current;
33
+ return () => window.clearTimeout(skipDelayTimer);
34
+ }, []);
35
+ return /* @__PURE__ */ jsx(
36
+ TooltipProviderContextProvider,
37
+ {
38
+ scope: __scopeTooltip,
39
+ isOpenDelayed,
40
+ delayDuration,
41
+ onOpen: React.useCallback(() => {
42
+ window.clearTimeout(skipDelayTimerRef.current);
43
+ setIsOpenDelayed(false);
44
+ }, []),
45
+ onClose: React.useCallback(() => {
46
+ window.clearTimeout(skipDelayTimerRef.current);
47
+ skipDelayTimerRef.current = window.setTimeout(
48
+ () => setIsOpenDelayed(true),
49
+ skipDelayDuration
50
+ );
51
+ }, [skipDelayDuration]),
52
+ isPointerInTransitRef,
53
+ onPointerInTransitChange: React.useCallback((inTransit) => {
54
+ isPointerInTransitRef.current = inTransit;
55
+ }, []),
56
+ disableHoverableContent,
57
+ children
58
+ }
59
+ );
60
+ };
61
+ TooltipProvider$1.displayName = PROVIDER_NAME;
62
+ var TOOLTIP_NAME = "Tooltip";
63
+ var [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);
64
+ var Tooltip$1 = (props) => {
65
+ const {
66
+ __scopeTooltip,
67
+ children,
68
+ open: openProp,
69
+ defaultOpen = false,
70
+ onOpenChange,
71
+ disableHoverableContent: disableHoverableContentProp,
72
+ delayDuration: delayDurationProp
73
+ } = props;
74
+ const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);
75
+ const popperScope = usePopperScope(__scopeTooltip);
76
+ const [trigger, setTrigger] = React.useState(null);
77
+ const contentId = useId();
78
+ const openTimerRef = React.useRef(0);
79
+ const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;
80
+ const delayDuration = delayDurationProp ?? providerContext.delayDuration;
81
+ const wasOpenDelayedRef = React.useRef(false);
82
+ const [open = false, setOpen] = useControllableState({
83
+ prop: openProp,
84
+ defaultProp: defaultOpen,
85
+ onChange: (open2) => {
86
+ if (open2) {
87
+ providerContext.onOpen();
88
+ document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));
89
+ } else {
90
+ providerContext.onClose();
91
+ }
92
+ onOpenChange == null ? void 0 : onOpenChange(open2);
93
+ }
94
+ });
95
+ const stateAttribute = React.useMemo(() => {
96
+ return open ? wasOpenDelayedRef.current ? "delayed-open" : "instant-open" : "closed";
97
+ }, [open]);
98
+ const handleOpen = React.useCallback(() => {
99
+ window.clearTimeout(openTimerRef.current);
100
+ openTimerRef.current = 0;
101
+ wasOpenDelayedRef.current = false;
102
+ setOpen(true);
103
+ }, [setOpen]);
104
+ const handleClose = React.useCallback(() => {
105
+ window.clearTimeout(openTimerRef.current);
106
+ openTimerRef.current = 0;
107
+ setOpen(false);
108
+ }, [setOpen]);
109
+ const handleDelayedOpen = React.useCallback(() => {
110
+ window.clearTimeout(openTimerRef.current);
111
+ openTimerRef.current = window.setTimeout(() => {
112
+ wasOpenDelayedRef.current = true;
113
+ setOpen(true);
114
+ openTimerRef.current = 0;
115
+ }, delayDuration);
116
+ }, [delayDuration, setOpen]);
117
+ React.useEffect(() => {
118
+ return () => {
119
+ if (openTimerRef.current) {
120
+ window.clearTimeout(openTimerRef.current);
121
+ openTimerRef.current = 0;
122
+ }
123
+ };
124
+ }, []);
125
+ return /* @__PURE__ */ jsx(Root2, { ...popperScope, children: /* @__PURE__ */ jsx(
126
+ TooltipContextProvider,
127
+ {
128
+ scope: __scopeTooltip,
129
+ contentId,
130
+ open,
131
+ stateAttribute,
132
+ trigger,
133
+ onTriggerChange: setTrigger,
134
+ onTriggerEnter: React.useCallback(() => {
135
+ if (providerContext.isOpenDelayed)
136
+ handleDelayedOpen();
137
+ else
138
+ handleOpen();
139
+ }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen]),
140
+ onTriggerLeave: React.useCallback(() => {
141
+ if (disableHoverableContent) {
142
+ handleClose();
143
+ } else {
144
+ window.clearTimeout(openTimerRef.current);
145
+ openTimerRef.current = 0;
146
+ }
147
+ }, [handleClose, disableHoverableContent]),
148
+ onOpen: handleOpen,
149
+ onClose: handleClose,
150
+ disableHoverableContent,
151
+ children
152
+ }
153
+ ) });
154
+ };
155
+ Tooltip$1.displayName = TOOLTIP_NAME;
156
+ var TRIGGER_NAME = "TooltipTrigger";
157
+ var TooltipTrigger$1 = React.forwardRef(
158
+ (props, forwardedRef) => {
159
+ const { __scopeTooltip, ...triggerProps } = props;
160
+ const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);
161
+ const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);
162
+ const popperScope = usePopperScope(__scopeTooltip);
163
+ const ref = React.useRef(null);
164
+ const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);
165
+ const isPointerDownRef = React.useRef(false);
166
+ const hasPointerMoveOpenedRef = React.useRef(false);
167
+ const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);
168
+ React.useEffect(() => {
169
+ return () => document.removeEventListener("pointerup", handlePointerUp);
170
+ }, [handlePointerUp]);
171
+ return /* @__PURE__ */ jsx(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(
172
+ Primitive.button,
173
+ {
174
+ "aria-describedby": context.open ? context.contentId : void 0,
175
+ "data-state": context.stateAttribute,
176
+ ...triggerProps,
177
+ ref: composedRefs,
178
+ onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {
179
+ if (event.pointerType === "touch")
180
+ return;
181
+ if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {
182
+ context.onTriggerEnter();
183
+ hasPointerMoveOpenedRef.current = true;
184
+ }
185
+ }),
186
+ onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {
187
+ context.onTriggerLeave();
188
+ hasPointerMoveOpenedRef.current = false;
189
+ }),
190
+ onPointerDown: composeEventHandlers(props.onPointerDown, () => {
191
+ isPointerDownRef.current = true;
192
+ document.addEventListener("pointerup", handlePointerUp, { once: true });
193
+ }),
194
+ onFocus: composeEventHandlers(props.onFocus, () => {
195
+ if (!isPointerDownRef.current)
196
+ context.onOpen();
197
+ }),
198
+ onBlur: composeEventHandlers(props.onBlur, context.onClose),
199
+ onClick: composeEventHandlers(props.onClick, context.onClose)
200
+ }
201
+ ) });
202
+ }
203
+ );
204
+ TooltipTrigger$1.displayName = TRIGGER_NAME;
205
+ var PORTAL_NAME = "TooltipPortal";
206
+ var [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {
207
+ forceMount: void 0
208
+ });
209
+ var CONTENT_NAME = "TooltipContent";
210
+ var TooltipContent$1 = React.forwardRef(
211
+ (props, forwardedRef) => {
212
+ const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);
213
+ const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
214
+ const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
215
+ 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 }) });
216
+ }
217
+ );
218
+ var TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {
219
+ const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
220
+ const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);
221
+ const ref = React.useRef(null);
222
+ const composedRefs = useComposedRefs(forwardedRef, ref);
223
+ const [pointerGraceArea, setPointerGraceArea] = React.useState(null);
224
+ const { trigger, onClose } = context;
225
+ const content = ref.current;
226
+ const { onPointerInTransitChange } = providerContext;
227
+ const handleRemoveGraceArea = React.useCallback(() => {
228
+ setPointerGraceArea(null);
229
+ onPointerInTransitChange(false);
230
+ }, [onPointerInTransitChange]);
231
+ const handleCreateGraceArea = React.useCallback(
232
+ (event, hoverTarget) => {
233
+ const currentTarget = event.currentTarget;
234
+ const exitPoint = { x: event.clientX, y: event.clientY };
235
+ const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
236
+ const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);
237
+ const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());
238
+ const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);
239
+ setPointerGraceArea(graceArea);
240
+ onPointerInTransitChange(true);
241
+ },
242
+ [onPointerInTransitChange]
243
+ );
244
+ React.useEffect(() => {
245
+ return () => handleRemoveGraceArea();
246
+ }, [handleRemoveGraceArea]);
247
+ React.useEffect(() => {
248
+ if (trigger && content) {
249
+ const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);
250
+ const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);
251
+ trigger.addEventListener("pointerleave", handleTriggerLeave);
252
+ content.addEventListener("pointerleave", handleContentLeave);
253
+ return () => {
254
+ trigger.removeEventListener("pointerleave", handleTriggerLeave);
255
+ content.removeEventListener("pointerleave", handleContentLeave);
256
+ };
257
+ }
258
+ }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);
259
+ React.useEffect(() => {
260
+ if (pointerGraceArea) {
261
+ const handleTrackPointerGrace = (event) => {
262
+ const target = event.target;
263
+ const pointerPosition = { x: event.clientX, y: event.clientY };
264
+ const hasEnteredTarget = (trigger == null ? void 0 : trigger.contains(target)) || (content == null ? void 0 : content.contains(target));
265
+ const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);
266
+ if (hasEnteredTarget) {
267
+ handleRemoveGraceArea();
268
+ } else if (isPointerOutsideGraceArea) {
269
+ handleRemoveGraceArea();
270
+ onClose();
271
+ }
272
+ };
273
+ document.addEventListener("pointermove", handleTrackPointerGrace);
274
+ return () => document.removeEventListener("pointermove", handleTrackPointerGrace);
275
+ }
276
+ }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);
277
+ return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });
278
+ });
279
+ var [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });
280
+ var TooltipContentImpl = React.forwardRef(
281
+ (props, forwardedRef) => {
282
+ const {
283
+ __scopeTooltip,
284
+ children,
285
+ "aria-label": ariaLabel,
286
+ onEscapeKeyDown,
287
+ onPointerDownOutside,
288
+ ...contentProps
289
+ } = props;
290
+ const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);
291
+ const popperScope = usePopperScope(__scopeTooltip);
292
+ const { onClose } = context;
293
+ React.useEffect(() => {
294
+ document.addEventListener(TOOLTIP_OPEN, onClose);
295
+ return () => document.removeEventListener(TOOLTIP_OPEN, onClose);
296
+ }, [onClose]);
297
+ React.useEffect(() => {
298
+ if (context.trigger) {
299
+ const handleScroll = (event) => {
300
+ const target = event.target;
301
+ if (target == null ? void 0 : target.contains(context.trigger))
302
+ onClose();
303
+ };
304
+ window.addEventListener("scroll", handleScroll, { capture: true });
305
+ return () => window.removeEventListener("scroll", handleScroll, { capture: true });
306
+ }
307
+ }, [context.trigger, onClose]);
308
+ return /* @__PURE__ */ jsx(
309
+ DismissableLayer,
310
+ {
311
+ asChild: true,
312
+ disableOutsidePointerEvents: false,
313
+ onEscapeKeyDown,
314
+ onPointerDownOutside,
315
+ onFocusOutside: (event) => event.preventDefault(),
316
+ onDismiss: onClose,
317
+ children: /* @__PURE__ */ jsxs(
318
+ Content,
319
+ {
320
+ "data-state": context.stateAttribute,
321
+ ...popperScope,
322
+ ...contentProps,
323
+ ref: forwardedRef,
324
+ style: {
325
+ ...contentProps.style,
326
+ // re-namespace exposed content custom properties
327
+ ...{
328
+ "--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
329
+ "--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
330
+ "--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
331
+ "--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
332
+ "--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
333
+ }
334
+ },
335
+ children: [
336
+ /* @__PURE__ */ jsx(Slottable, { children }),
337
+ /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(Root, { id: context.contentId, role: "tooltip", children: ariaLabel || children }) })
338
+ ]
339
+ }
340
+ )
341
+ }
342
+ );
343
+ }
344
+ );
345
+ TooltipContent$1.displayName = CONTENT_NAME;
346
+ var ARROW_NAME = "TooltipArrow";
347
+ var TooltipArrow = React.forwardRef(
348
+ (props, forwardedRef) => {
349
+ const { __scopeTooltip, ...arrowProps } = props;
350
+ const popperScope = usePopperScope(__scopeTooltip);
351
+ const visuallyHiddenContentContext = useVisuallyHiddenContentContext(
352
+ ARROW_NAME,
353
+ __scopeTooltip
354
+ );
355
+ return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });
356
+ }
357
+ );
358
+ TooltipArrow.displayName = ARROW_NAME;
359
+ function getExitSideFromRect(point, rect) {
360
+ const top = Math.abs(rect.top - point.y);
361
+ const bottom = Math.abs(rect.bottom - point.y);
362
+ const right = Math.abs(rect.right - point.x);
363
+ const left = Math.abs(rect.left - point.x);
364
+ switch (Math.min(top, bottom, right, left)) {
365
+ case left:
366
+ return "left";
367
+ case right:
368
+ return "right";
369
+ case top:
370
+ return "top";
371
+ case bottom:
372
+ return "bottom";
373
+ default:
374
+ throw new Error("unreachable");
375
+ }
376
+ }
377
+ function getPaddedExitPoints(exitPoint, exitSide, padding = 5) {
378
+ const paddedExitPoints = [];
379
+ switch (exitSide) {
380
+ case "top":
381
+ paddedExitPoints.push(
382
+ { x: exitPoint.x - padding, y: exitPoint.y + padding },
383
+ { x: exitPoint.x + padding, y: exitPoint.y + padding }
384
+ );
385
+ break;
386
+ case "bottom":
387
+ paddedExitPoints.push(
388
+ { x: exitPoint.x - padding, y: exitPoint.y - padding },
389
+ { x: exitPoint.x + padding, y: exitPoint.y - padding }
390
+ );
391
+ break;
392
+ case "left":
393
+ paddedExitPoints.push(
394
+ { x: exitPoint.x + padding, y: exitPoint.y - padding },
395
+ { x: exitPoint.x + padding, y: exitPoint.y + padding }
396
+ );
397
+ break;
398
+ case "right":
399
+ paddedExitPoints.push(
400
+ { x: exitPoint.x - padding, y: exitPoint.y - padding },
401
+ { x: exitPoint.x - padding, y: exitPoint.y + padding }
402
+ );
403
+ break;
404
+ }
405
+ return paddedExitPoints;
406
+ }
407
+ function getPointsFromRect(rect) {
408
+ const { top, right, bottom, left } = rect;
409
+ return [
410
+ { x: left, y: top },
411
+ { x: right, y: top },
412
+ { x: right, y: bottom },
413
+ { x: left, y: bottom }
414
+ ];
415
+ }
416
+ function isPointInPolygon(point, polygon) {
417
+ const { x, y } = point;
418
+ let inside = false;
419
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
420
+ const xi = polygon[i].x;
421
+ const yi = polygon[i].y;
422
+ const xj = polygon[j].x;
423
+ const yj = polygon[j].y;
424
+ const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
425
+ if (intersect)
426
+ inside = !inside;
427
+ }
428
+ return inside;
429
+ }
430
+ function getHull(points) {
431
+ const newPoints = points.slice();
432
+ newPoints.sort((a, b) => {
433
+ if (a.x < b.x)
434
+ return -1;
435
+ else if (a.x > b.x)
436
+ return 1;
437
+ else if (a.y < b.y)
438
+ return -1;
439
+ else if (a.y > b.y)
440
+ return 1;
441
+ else
442
+ return 0;
443
+ });
444
+ return getHullPresorted(newPoints);
445
+ }
446
+ function getHullPresorted(points) {
447
+ if (points.length <= 1)
448
+ return points.slice();
449
+ const upperHull = [];
450
+ for (let i = 0; i < points.length; i++) {
451
+ const p = points[i];
452
+ while (upperHull.length >= 2) {
453
+ const q = upperHull[upperHull.length - 1];
454
+ const r = upperHull[upperHull.length - 2];
455
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))
456
+ upperHull.pop();
457
+ else
458
+ break;
459
+ }
460
+ upperHull.push(p);
461
+ }
462
+ upperHull.pop();
463
+ const lowerHull = [];
464
+ for (let i = points.length - 1; i >= 0; i--) {
465
+ const p = points[i];
466
+ while (lowerHull.length >= 2) {
467
+ const q = lowerHull[lowerHull.length - 1];
468
+ const r = lowerHull[lowerHull.length - 2];
469
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))
470
+ lowerHull.pop();
471
+ else
472
+ break;
473
+ }
474
+ lowerHull.push(p);
475
+ }
476
+ lowerHull.pop();
477
+ if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {
478
+ return upperHull;
479
+ } else {
480
+ return upperHull.concat(lowerHull);
481
+ }
482
+ }
483
+ var Provider = TooltipProvider$1;
484
+ var Root3 = Tooltip$1;
485
+ var Trigger = TooltipTrigger$1;
486
+ var Content2 = TooltipContent$1;
487
+ const TooltipProvider = Provider;
488
+ const Tooltip = Root3;
489
+ const TooltipTrigger = Trigger;
490
+ const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
491
+ Content2,
492
+ {
493
+ ref,
494
+ sideOffset,
495
+ className: cn(
496
+ "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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",
497
+ className
498
+ ),
499
+ ...props
500
+ }
501
+ ));
502
+ TooltipContent.displayName = Content2.displayName;
503
+ export {
504
+ Tooltip,
505
+ TooltipContent,
506
+ TooltipProvider,
507
+ TooltipTrigger
508
+ };
509
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sources":["../../../node_modules/@radix-ui/react-tooltip/dist/index.mjs","../../../lib/components/ui/tooltip.tsx"],"sourcesContent":["\"use client\";\n\n// packages/react/tooltip/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 { Slottable } 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 [isOpenDelayed, setIsOpenDelayed] = React.useState(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 isOpenDelayed,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n setIsOpenDelayed(false);\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(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 = false,\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 = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\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 });\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.isOpenDelayed) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayed, 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 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 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 xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].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\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\n\r\nimport { cn } from \"../../utils/utils\";\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider;\r\n\r\nconst Tooltip = TooltipPrimitive.Root;\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger;\r\n\r\nconst TooltipContent = React.forwardRef<\r\n React.ElementRef<typeof TooltipPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <TooltipPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\r\n"],"names":["TooltipProvider","Tooltip","PopperPrimitive.Root","TooltipTrigger","PopperPrimitive.Anchor","TooltipContent","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","PopperPrimitive.Arrow","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","TooltipPrimitive.Content"],"mappings":"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","x_google_ignoreList":[0]}