@dreamcommerce/aurora 3.0.0-13 → 3.0.0-15

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/build/cjs/external/@radix-ui/primitive/dist/index.mjs.js +6 -3
  2. package/build/cjs/external/@radix-ui/primitive/dist/index.mjs.js.map +1 -1
  3. package/build/cjs/external/@radix-ui/react-arrow/dist/index.mjs.js +19 -15
  4. package/build/cjs/external/@radix-ui/react-arrow/dist/index.mjs.js.map +1 -1
  5. package/build/cjs/external/@radix-ui/react-compose-refs/dist/index.mjs.js +14 -4
  6. package/build/cjs/external/@radix-ui/react-compose-refs/dist/index.mjs.js.map +1 -1
  7. package/build/cjs/external/@radix-ui/react-context/dist/index.mjs.js +54 -35
  8. package/build/cjs/external/@radix-ui/react-context/dist/index.mjs.js.map +1 -1
  9. package/build/cjs/external/@radix-ui/react-dismissable-layer/dist/index.mjs.js +168 -138
  10. package/build/cjs/external/@radix-ui/react-dismissable-layer/dist/index.mjs.js.map +1 -1
  11. package/build/cjs/external/@radix-ui/react-id/dist/index.mjs.js +13 -6
  12. package/build/cjs/external/@radix-ui/react-id/dist/index.mjs.js.map +1 -1
  13. package/build/cjs/external/@radix-ui/react-popper/dist/index.mjs.js +281 -223
  14. package/build/cjs/external/@radix-ui/react-popper/dist/index.mjs.js.map +1 -1
  15. package/build/cjs/external/@radix-ui/react-popper/external/@radix-ui/react-context/dist/index.mjs.js +51 -34
  16. package/build/cjs/external/@radix-ui/react-popper/external/@radix-ui/react-context/dist/index.mjs.js.map +1 -1
  17. package/build/cjs/external/@radix-ui/react-portal/dist/index.mjs.js +17 -6
  18. package/build/cjs/external/@radix-ui/react-portal/dist/index.mjs.js.map +1 -1
  19. package/build/cjs/external/@radix-ui/react-presence/dist/index.mjs.js +67 -53
  20. package/build/cjs/external/@radix-ui/react-presence/dist/index.mjs.js.map +1 -1
  21. package/build/cjs/external/@radix-ui/react-primitive/dist/index.mjs.js +16 -27
  22. package/build/cjs/external/@radix-ui/react-primitive/dist/index.mjs.js.map +1 -1
  23. package/build/cjs/external/@radix-ui/react-slot/dist/index.mjs.js +49 -33
  24. package/build/cjs/external/@radix-ui/react-slot/dist/index.mjs.js.map +1 -1
  25. package/build/cjs/external/@radix-ui/react-tooltip/dist/index.mjs.js +432 -338
  26. package/build/cjs/external/@radix-ui/react-tooltip/dist/index.mjs.js.map +1 -1
  27. package/build/cjs/external/@radix-ui/react-use-callback-ref/dist/index.mjs.js +11 -3
  28. package/build/cjs/external/@radix-ui/react-use-callback-ref/dist/index.mjs.js.map +1 -1
  29. package/build/cjs/external/@radix-ui/react-use-controllable-state/dist/index.mjs.js +34 -32
  30. package/build/cjs/external/@radix-ui/react-use-controllable-state/dist/index.mjs.js.map +1 -1
  31. package/build/cjs/external/@radix-ui/react-use-escape-keydown/dist/index.mjs.js +13 -6
  32. package/build/cjs/external/@radix-ui/react-use-escape-keydown/dist/index.mjs.js.map +1 -1
  33. package/build/cjs/external/@radix-ui/react-use-layout-effect/dist/index.mjs.js +1 -2
  34. package/build/cjs/external/@radix-ui/react-use-layout-effect/dist/index.mjs.js.map +1 -1
  35. package/build/cjs/external/@radix-ui/react-use-size/dist/index.mjs.js +26 -13
  36. package/build/cjs/external/@radix-ui/react-use-size/dist/index.mjs.js.map +1 -1
  37. package/build/cjs/external/@radix-ui/react-visually-hidden/dist/index.mjs.js +19 -26
  38. package/build/cjs/external/@radix-ui/react-visually-hidden/dist/index.mjs.js.map +1 -1
  39. package/build/cjs/external/tailwind-merge/dist/bundle-mjs.mjs.js +2586 -0
  40. package/build/{esm/external/tailwind-merge/dist/bundle-cjs.js.map → cjs/external/tailwind-merge/dist/bundle-mjs.mjs.js.map} +1 -1
  41. package/build/cjs/packages/aurora/src/utilities/cn.js +2 -2
  42. package/build/cjs/packages/aurora/src/utilities/cn.js.map +1 -1
  43. package/build/esm/external/@floating-ui/dom/dist/floating-ui.dom.mjs.js +1 -1
  44. package/build/esm/external/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs.js +1 -1
  45. package/build/esm/external/@radix-ui/primitive/dist/index.mjs.js +6 -3
  46. package/build/esm/external/@radix-ui/primitive/dist/index.mjs.js.map +1 -1
  47. package/build/esm/external/@radix-ui/react-arrow/dist/index.mjs.js +19 -15
  48. package/build/esm/external/@radix-ui/react-arrow/dist/index.mjs.js.map +1 -1
  49. package/build/esm/external/@radix-ui/react-compose-refs/dist/index.mjs.js +14 -4
  50. package/build/esm/external/@radix-ui/react-compose-refs/dist/index.mjs.js.map +1 -1
  51. package/build/esm/external/@radix-ui/react-context/dist/index.mjs.js +54 -35
  52. package/build/esm/external/@radix-ui/react-context/dist/index.mjs.js.map +1 -1
  53. package/build/esm/external/@radix-ui/react-dismissable-layer/dist/index.mjs.js +169 -139
  54. package/build/esm/external/@radix-ui/react-dismissable-layer/dist/index.mjs.js.map +1 -1
  55. package/build/esm/external/@radix-ui/react-id/dist/index.mjs.js +13 -6
  56. package/build/esm/external/@radix-ui/react-id/dist/index.mjs.js.map +1 -1
  57. package/build/esm/external/@radix-ui/react-popper/dist/index.mjs.js +282 -224
  58. package/build/esm/external/@radix-ui/react-popper/dist/index.mjs.js.map +1 -1
  59. package/build/esm/external/@radix-ui/react-popper/external/@radix-ui/react-context/dist/index.mjs.js +51 -34
  60. package/build/esm/external/@radix-ui/react-popper/external/@radix-ui/react-context/dist/index.mjs.js.map +1 -1
  61. package/build/esm/external/@radix-ui/react-portal/dist/index.mjs.js +17 -6
  62. package/build/esm/external/@radix-ui/react-portal/dist/index.mjs.js.map +1 -1
  63. package/build/esm/external/@radix-ui/react-presence/dist/index.mjs.js +67 -53
  64. package/build/esm/external/@radix-ui/react-presence/dist/index.mjs.js.map +1 -1
  65. package/build/esm/external/@radix-ui/react-primitive/dist/index.mjs.js +16 -27
  66. package/build/esm/external/@radix-ui/react-primitive/dist/index.mjs.js.map +1 -1
  67. package/build/esm/external/@radix-ui/react-slot/dist/index.mjs.js +49 -33
  68. package/build/esm/external/@radix-ui/react-slot/dist/index.mjs.js.map +1 -1
  69. package/build/esm/external/@radix-ui/react-tooltip/dist/index.mjs.js +424 -330
  70. package/build/esm/external/@radix-ui/react-tooltip/dist/index.mjs.js.map +1 -1
  71. package/build/esm/external/@radix-ui/react-use-callback-ref/dist/index.mjs.js +11 -3
  72. package/build/esm/external/@radix-ui/react-use-callback-ref/dist/index.mjs.js.map +1 -1
  73. package/build/esm/external/@radix-ui/react-use-controllable-state/dist/index.mjs.js +34 -32
  74. package/build/esm/external/@radix-ui/react-use-controllable-state/dist/index.mjs.js.map +1 -1
  75. package/build/esm/external/@radix-ui/react-use-escape-keydown/dist/index.mjs.js +13 -6
  76. package/build/esm/external/@radix-ui/react-use-escape-keydown/dist/index.mjs.js.map +1 -1
  77. package/build/esm/external/@radix-ui/react-use-layout-effect/dist/index.mjs.js +1 -2
  78. package/build/esm/external/@radix-ui/react-use-layout-effect/dist/index.mjs.js.map +1 -1
  79. package/build/esm/external/@radix-ui/react-use-size/dist/index.mjs.js +26 -13
  80. package/build/esm/external/@radix-ui/react-use-size/dist/index.mjs.js.map +1 -1
  81. package/build/esm/external/@radix-ui/react-visually-hidden/dist/index.mjs.js +19 -26
  82. package/build/esm/external/@radix-ui/react-visually-hidden/dist/index.mjs.js.map +1 -1
  83. package/build/esm/external/tailwind-merge/dist/bundle-mjs.mjs.js +2578 -0
  84. package/build/{cjs/external/tailwind-merge/dist/bundle-cjs.js.map → esm/external/tailwind-merge/dist/bundle-mjs.mjs.js.map} +1 -1
  85. package/build/esm/packages/aurora/src/utilities/cn.js +2 -2
  86. package/build/esm/packages/aurora/src/utilities/cn.js.map +1 -1
  87. package/package.json +1 -1
  88. package/build/cjs/_virtual/_commonjsHelpers.js +0 -11
  89. package/build/cjs/_virtual/_commonjsHelpers.js.map +0 -1
  90. package/build/cjs/external/tailwind-merge/dist/bundle-cjs.js +0 -2671
  91. package/build/esm/_virtual/_commonjsHelpers.js +0 -7
  92. package/build/esm/_virtual/_commonjsHelpers.js.map +0 -1
  93. package/build/esm/external/tailwind-merge/dist/bundle-cjs.js +0 -2667
@@ -1,4 +1,5 @@
1
- import { forwardRef, useRef, useCallback, useEffect, useState, useMemo } from 'react';
1
+ import { useState, useRef, useEffect, useCallback, useMemo, forwardRef } from 'react';
2
+ import { slicedToArray as _slicedToArray, objectSpread2 as _objectSpread2, objectWithoutProperties as _objectWithoutProperties, toConsumableArray as _toConsumableArray } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
2
3
  import { composeEventHandlers } from '../../primitive/dist/index.mjs.js';
3
4
  import { useComposedRefs } from '../../react-compose-refs/dist/index.mjs.js';
4
5
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -7,139 +8,156 @@ import { Slottable } from '../../react-slot/dist/index.mjs.js';
7
8
  import { Primitive } from '../../react-primitive/dist/index.mjs.js';
8
9
  import { DismissableLayer } from '../../react-dismissable-layer/dist/index.mjs.js';
9
10
  import { useId } from '../../react-id/dist/index.mjs.js';
10
- import { createPopperScope, Anchor, Content, Arrow, Root as Root2 } from '../../react-popper/dist/index.mjs.js';
11
+ import { createPopperScope, Root as Root2, Anchor, Content, Arrow } from '../../react-popper/dist/index.mjs.js';
11
12
  import { Portal as Portal$1 } from '../../react-portal/dist/index.mjs.js';
12
13
  import { Presence } from '../../react-presence/dist/index.mjs.js';
13
14
  import { useControllableState } from '../../react-use-controllable-state/dist/index.mjs.js';
14
15
  import { Root } from '../../react-visually-hidden/dist/index.mjs.js';
15
16
 
16
- var [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [
17
- createPopperScope
18
- ]);
17
+ var _excluded = ["__scopeTooltip"],
18
+ _excluded2 = ["forceMount", "side"],
19
+ _excluded3 = ["__scopeTooltip", "children", "aria-label", "onEscapeKeyDown", "onPointerDownOutside"],
20
+ _excluded4 = ["__scopeTooltip"];
21
+ var _createContextScope = createContextScope("Tooltip", [createPopperScope]),
22
+ _createContextScope2 = _slicedToArray(_createContextScope, 2),
23
+ createTooltipContext = _createContextScope2[0],
24
+ createTooltipScope = _createContextScope2[1];
19
25
  var usePopperScope = createPopperScope();
20
26
  var PROVIDER_NAME = "TooltipProvider";
21
27
  var DEFAULT_DELAY_DURATION = 700;
22
28
  var TOOLTIP_OPEN = "tooltip.open";
23
- var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
24
- var TooltipProvider = (props) => {
25
- const {
26
- __scopeTooltip,
27
- delayDuration = DEFAULT_DELAY_DURATION,
28
- skipDelayDuration = 300,
29
- disableHoverableContent = false,
30
- children
31
- } = props;
32
- const [isOpenDelayed, setIsOpenDelayed] = useState(true);
33
- const isPointerInTransitRef = useRef(false);
34
- const skipDelayTimerRef = useRef(0);
35
- useEffect(() => {
36
- const skipDelayTimer = skipDelayTimerRef.current;
37
- return () => window.clearTimeout(skipDelayTimer);
29
+ var _createTooltipContext = createTooltipContext(PROVIDER_NAME),
30
+ _createTooltipContext2 = _slicedToArray(_createTooltipContext, 2),
31
+ TooltipProviderContextProvider = _createTooltipContext2[0],
32
+ useTooltipProviderContext = _createTooltipContext2[1];
33
+ var TooltipProvider = function TooltipProvider(props) {
34
+ var __scopeTooltip = props.__scopeTooltip,
35
+ _props$delayDuration = props.delayDuration,
36
+ delayDuration = _props$delayDuration === void 0 ? DEFAULT_DELAY_DURATION : _props$delayDuration,
37
+ _props$skipDelayDurat = props.skipDelayDuration,
38
+ skipDelayDuration = _props$skipDelayDurat === void 0 ? 300 : _props$skipDelayDurat,
39
+ _props$disableHoverab = props.disableHoverableContent,
40
+ disableHoverableContent = _props$disableHoverab === void 0 ? false : _props$disableHoverab,
41
+ children = props.children;
42
+ var _React$useState = useState(true),
43
+ _React$useState2 = _slicedToArray(_React$useState, 2),
44
+ isOpenDelayed = _React$useState2[0],
45
+ setIsOpenDelayed = _React$useState2[1];
46
+ var isPointerInTransitRef = useRef(false);
47
+ var skipDelayTimerRef = useRef(0);
48
+ useEffect(function () {
49
+ var skipDelayTimer = skipDelayTimerRef.current;
50
+ return function () {
51
+ return window.clearTimeout(skipDelayTimer);
52
+ };
38
53
  }, []);
39
- return /* @__PURE__ */ jsx(
40
- TooltipProviderContextProvider,
41
- {
42
- scope: __scopeTooltip,
43
- isOpenDelayed,
44
- delayDuration,
45
- onOpen: useCallback(() => {
46
- window.clearTimeout(skipDelayTimerRef.current);
47
- setIsOpenDelayed(false);
48
- }, []),
49
- onClose: useCallback(() => {
50
- window.clearTimeout(skipDelayTimerRef.current);
51
- skipDelayTimerRef.current = window.setTimeout(
52
- () => setIsOpenDelayed(true),
53
- skipDelayDuration
54
- );
55
- }, [skipDelayDuration]),
56
- isPointerInTransitRef,
57
- onPointerInTransitChange: useCallback((inTransit) => {
58
- isPointerInTransitRef.current = inTransit;
59
- }, []),
60
- disableHoverableContent,
61
- children
62
- }
63
- );
54
+ return /* @__PURE__ */jsx(TooltipProviderContextProvider, {
55
+ scope: __scopeTooltip,
56
+ isOpenDelayed: isOpenDelayed,
57
+ delayDuration: delayDuration,
58
+ onOpen: useCallback(function () {
59
+ window.clearTimeout(skipDelayTimerRef.current);
60
+ setIsOpenDelayed(false);
61
+ }, []),
62
+ onClose: useCallback(function () {
63
+ window.clearTimeout(skipDelayTimerRef.current);
64
+ skipDelayTimerRef.current = window.setTimeout(function () {
65
+ return setIsOpenDelayed(true);
66
+ }, skipDelayDuration);
67
+ }, [skipDelayDuration]),
68
+ isPointerInTransitRef: isPointerInTransitRef,
69
+ onPointerInTransitChange: useCallback(function (inTransit) {
70
+ isPointerInTransitRef.current = inTransit;
71
+ }, []),
72
+ disableHoverableContent: disableHoverableContent,
73
+ children: children
74
+ });
64
75
  };
65
76
  TooltipProvider.displayName = PROVIDER_NAME;
66
77
  var TOOLTIP_NAME = "Tooltip";
67
- var [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);
68
- var Tooltip = (props) => {
69
- const {
70
- __scopeTooltip,
71
- children,
72
- open: openProp,
73
- defaultOpen = false,
74
- onOpenChange,
75
- disableHoverableContent: disableHoverableContentProp,
76
- delayDuration: delayDurationProp
77
- } = props;
78
- const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);
79
- const popperScope = usePopperScope(__scopeTooltip);
80
- const [trigger, setTrigger] = useState(null);
81
- const contentId = useId();
82
- const openTimerRef = useRef(0);
83
- const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;
84
- const delayDuration = delayDurationProp ?? providerContext.delayDuration;
85
- const wasOpenDelayedRef = useRef(false);
86
- const [open = false, setOpen] = useControllableState({
87
- prop: openProp,
88
- defaultProp: defaultOpen,
89
- onChange: (open2) => {
90
- if (open2) {
91
- providerContext.onOpen();
92
- document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));
93
- } else {
94
- providerContext.onClose();
78
+ var _createTooltipContext3 = createTooltipContext(TOOLTIP_NAME),
79
+ _createTooltipContext4 = _slicedToArray(_createTooltipContext3, 2),
80
+ TooltipContextProvider = _createTooltipContext4[0],
81
+ useTooltipContext = _createTooltipContext4[1];
82
+ var Tooltip = function Tooltip(props) {
83
+ var __scopeTooltip = props.__scopeTooltip,
84
+ children = props.children,
85
+ openProp = props.open,
86
+ _props$defaultOpen = props.defaultOpen,
87
+ defaultOpen = _props$defaultOpen === void 0 ? false : _props$defaultOpen,
88
+ onOpenChange = props.onOpenChange,
89
+ disableHoverableContentProp = props.disableHoverableContent,
90
+ delayDurationProp = props.delayDuration;
91
+ var providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);
92
+ var popperScope = usePopperScope(__scopeTooltip);
93
+ var _React$useState3 = useState(null),
94
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
95
+ trigger = _React$useState4[0],
96
+ setTrigger = _React$useState4[1];
97
+ var contentId = useId();
98
+ var openTimerRef = useRef(0);
99
+ var disableHoverableContent = disableHoverableContentProp !== null && disableHoverableContentProp !== void 0 ? disableHoverableContentProp : providerContext.disableHoverableContent;
100
+ var delayDuration = delayDurationProp !== null && delayDurationProp !== void 0 ? delayDurationProp : providerContext.delayDuration;
101
+ var wasOpenDelayedRef = useRef(false);
102
+ var _useControllableState = useControllableState({
103
+ prop: openProp,
104
+ defaultProp: defaultOpen,
105
+ onChange: function onChange(open2) {
106
+ if (open2) {
107
+ providerContext.onOpen();
108
+ document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));
109
+ } else {
110
+ providerContext.onClose();
111
+ }
112
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(open2);
95
113
  }
96
- onOpenChange?.(open2);
97
- }
98
- });
99
- const stateAttribute = useMemo(() => {
114
+ }),
115
+ _useControllableState2 = _slicedToArray(_useControllableState, 2),
116
+ _useControllableState3 = _useControllableState2[0],
117
+ open = _useControllableState3 === void 0 ? false : _useControllableState3,
118
+ setOpen = _useControllableState2[1];
119
+ var stateAttribute = useMemo(function () {
100
120
  return open ? wasOpenDelayedRef.current ? "delayed-open" : "instant-open" : "closed";
101
121
  }, [open]);
102
- const handleOpen = useCallback(() => {
122
+ var handleOpen = useCallback(function () {
103
123
  window.clearTimeout(openTimerRef.current);
104
124
  openTimerRef.current = 0;
105
125
  wasOpenDelayedRef.current = false;
106
126
  setOpen(true);
107
127
  }, [setOpen]);
108
- const handleClose = useCallback(() => {
128
+ var handleClose = useCallback(function () {
109
129
  window.clearTimeout(openTimerRef.current);
110
130
  openTimerRef.current = 0;
111
131
  setOpen(false);
112
132
  }, [setOpen]);
113
- const handleDelayedOpen = useCallback(() => {
133
+ var handleDelayedOpen = useCallback(function () {
114
134
  window.clearTimeout(openTimerRef.current);
115
- openTimerRef.current = window.setTimeout(() => {
135
+ openTimerRef.current = window.setTimeout(function () {
116
136
  wasOpenDelayedRef.current = true;
117
137
  setOpen(true);
118
138
  openTimerRef.current = 0;
119
139
  }, delayDuration);
120
140
  }, [delayDuration, setOpen]);
121
- useEffect(() => {
122
- return () => {
141
+ useEffect(function () {
142
+ return function () {
123
143
  if (openTimerRef.current) {
124
144
  window.clearTimeout(openTimerRef.current);
125
145
  openTimerRef.current = 0;
126
146
  }
127
147
  };
128
148
  }, []);
129
- return /* @__PURE__ */ jsx(Root2, { ...popperScope, children: /* @__PURE__ */ jsx(
130
- TooltipContextProvider,
131
- {
149
+ return /* @__PURE__ */jsx(Root2, _objectSpread2(_objectSpread2({}, popperScope), {}, {
150
+ children: /* @__PURE__ */jsx(TooltipContextProvider, {
132
151
  scope: __scopeTooltip,
133
- contentId,
134
- open,
135
- stateAttribute,
136
- trigger,
152
+ contentId: contentId,
153
+ open: open,
154
+ stateAttribute: stateAttribute,
155
+ trigger: trigger,
137
156
  onTriggerChange: setTrigger,
138
- onTriggerEnter: useCallback(() => {
139
- if (providerContext.isOpenDelayed) handleDelayedOpen();
140
- else handleOpen();
157
+ onTriggerEnter: useCallback(function () {
158
+ if (providerContext.isOpenDelayed) handleDelayedOpen();else handleOpen();
141
159
  }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen]),
142
- onTriggerLeave: useCallback(() => {
160
+ onTriggerLeave: useCallback(function () {
143
161
  if (disableHoverableContent) {
144
162
  handleClose();
145
163
  } else {
@@ -149,126 +167,175 @@ var Tooltip = (props) => {
149
167
  }, [handleClose, disableHoverableContent]),
150
168
  onOpen: handleOpen,
151
169
  onClose: handleClose,
152
- disableHoverableContent,
153
- children
154
- }
155
- ) });
170
+ disableHoverableContent: disableHoverableContent,
171
+ children: children
172
+ })
173
+ }));
156
174
  };
157
175
  Tooltip.displayName = TOOLTIP_NAME;
158
176
  var TRIGGER_NAME = "TooltipTrigger";
159
- var TooltipTrigger = forwardRef(
160
- (props, forwardedRef) => {
161
- const { __scopeTooltip, ...triggerProps } = props;
162
- const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);
163
- const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);
164
- const popperScope = usePopperScope(__scopeTooltip);
165
- const ref = useRef(null);
166
- const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);
167
- const isPointerDownRef = useRef(false);
168
- const hasPointerMoveOpenedRef = useRef(false);
169
- const handlePointerUp = useCallback(() => isPointerDownRef.current = false, []);
170
- useEffect(() => {
171
- return () => document.removeEventListener("pointerup", handlePointerUp);
172
- }, [handlePointerUp]);
173
- return /* @__PURE__ */ jsx(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(
174
- Primitive.button,
175
- {
176
- "aria-describedby": context.open ? context.contentId : void 0,
177
- "data-state": context.stateAttribute,
178
- ...triggerProps,
179
- ref: composedRefs,
180
- onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {
181
- if (event.pointerType === "touch") return;
182
- if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {
183
- context.onTriggerEnter();
184
- hasPointerMoveOpenedRef.current = true;
185
- }
186
- }),
187
- onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {
188
- context.onTriggerLeave();
189
- hasPointerMoveOpenedRef.current = false;
190
- }),
191
- onPointerDown: composeEventHandlers(props.onPointerDown, () => {
192
- isPointerDownRef.current = true;
193
- document.addEventListener("pointerup", handlePointerUp, { once: true });
194
- }),
195
- onFocus: composeEventHandlers(props.onFocus, () => {
196
- if (!isPointerDownRef.current) context.onOpen();
197
- }),
198
- onBlur: composeEventHandlers(props.onBlur, context.onClose),
199
- onClick: composeEventHandlers(props.onClick, context.onClose)
200
- }
201
- ) });
202
- }
203
- );
177
+ var TooltipTrigger = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
178
+ var __scopeTooltip = props.__scopeTooltip,
179
+ triggerProps = _objectWithoutProperties(props, _excluded);
180
+ var context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);
181
+ var providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);
182
+ var popperScope = usePopperScope(__scopeTooltip);
183
+ var ref = useRef(null);
184
+ var composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);
185
+ var isPointerDownRef = useRef(false);
186
+ var hasPointerMoveOpenedRef = useRef(false);
187
+ var handlePointerUp = useCallback(function () {
188
+ return isPointerDownRef.current = false;
189
+ }, []);
190
+ useEffect(function () {
191
+ return function () {
192
+ return document.removeEventListener("pointerup", handlePointerUp);
193
+ };
194
+ }, [handlePointerUp]);
195
+ return /* @__PURE__ */jsx(Anchor, _objectSpread2(_objectSpread2({
196
+ asChild: true
197
+ }, popperScope), {}, {
198
+ children: /* @__PURE__ */jsx(Primitive.button, _objectSpread2(_objectSpread2({
199
+ "aria-describedby": context.open ? context.contentId : void 0,
200
+ "data-state": context.stateAttribute
201
+ }, triggerProps), {}, {
202
+ ref: composedRefs,
203
+ onPointerMove: composeEventHandlers(props.onPointerMove, function (event) {
204
+ if (event.pointerType === "touch") return;
205
+ if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {
206
+ context.onTriggerEnter();
207
+ hasPointerMoveOpenedRef.current = true;
208
+ }
209
+ }),
210
+ onPointerLeave: composeEventHandlers(props.onPointerLeave, function () {
211
+ context.onTriggerLeave();
212
+ hasPointerMoveOpenedRef.current = false;
213
+ }),
214
+ onPointerDown: composeEventHandlers(props.onPointerDown, function () {
215
+ isPointerDownRef.current = true;
216
+ document.addEventListener("pointerup", handlePointerUp, {
217
+ once: true
218
+ });
219
+ }),
220
+ onFocus: composeEventHandlers(props.onFocus, function () {
221
+ if (!isPointerDownRef.current) context.onOpen();
222
+ }),
223
+ onBlur: composeEventHandlers(props.onBlur, context.onClose),
224
+ onClick: composeEventHandlers(props.onClick, context.onClose)
225
+ }))
226
+ }));
227
+ });
204
228
  TooltipTrigger.displayName = TRIGGER_NAME;
205
229
  var PORTAL_NAME = "TooltipPortal";
206
- var [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {
207
- forceMount: void 0
208
- });
209
- var TooltipPortal = (props) => {
210
- const { __scopeTooltip, forceMount, children, container } = props;
211
- const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);
212
- return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Portal$1, { asChild: true, container, children }) }) });
230
+ var _createTooltipContext5 = createTooltipContext(PORTAL_NAME, {
231
+ forceMount: void 0
232
+ }),
233
+ _createTooltipContext6 = _slicedToArray(_createTooltipContext5, 2),
234
+ PortalProvider = _createTooltipContext6[0],
235
+ usePortalContext = _createTooltipContext6[1];
236
+ var TooltipPortal = function TooltipPortal(props) {
237
+ var __scopeTooltip = props.__scopeTooltip,
238
+ forceMount = props.forceMount,
239
+ children = props.children,
240
+ container = props.container;
241
+ var context = useTooltipContext(PORTAL_NAME, __scopeTooltip);
242
+ return /* @__PURE__ */jsx(PortalProvider, {
243
+ scope: __scopeTooltip,
244
+ forceMount: forceMount,
245
+ children: /* @__PURE__ */jsx(Presence, {
246
+ present: forceMount || context.open,
247
+ children: /* @__PURE__ */jsx(Portal$1, {
248
+ asChild: true,
249
+ container: container,
250
+ children: children
251
+ })
252
+ })
253
+ });
213
254
  };
214
255
  TooltipPortal.displayName = PORTAL_NAME;
215
256
  var CONTENT_NAME = "TooltipContent";
216
- var TooltipContent = forwardRef(
217
- (props, forwardedRef) => {
218
- const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);
219
- const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
220
- const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
221
- 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 }) });
222
- }
223
- );
224
- var TooltipContentHoverable = forwardRef((props, forwardedRef) => {
225
- const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
226
- const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);
227
- const ref = useRef(null);
228
- const composedRefs = useComposedRefs(forwardedRef, ref);
229
- const [pointerGraceArea, setPointerGraceArea] = useState(null);
230
- const { trigger, onClose } = context;
231
- const content = ref.current;
232
- const { onPointerInTransitChange } = providerContext;
233
- const handleRemoveGraceArea = useCallback(() => {
257
+ var TooltipContent = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
258
+ var portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);
259
+ var _props$forceMount = props.forceMount,
260
+ forceMount = _props$forceMount === void 0 ? portalContext.forceMount : _props$forceMount,
261
+ _props$side = props.side,
262
+ side = _props$side === void 0 ? "top" : _props$side,
263
+ contentProps = _objectWithoutProperties(props, _excluded2);
264
+ var context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
265
+ return /* @__PURE__ */jsx(Presence, {
266
+ present: forceMount || context.open,
267
+ children: context.disableHoverableContent ? /* @__PURE__ */jsx(TooltipContentImpl, _objectSpread2(_objectSpread2({
268
+ side: side
269
+ }, contentProps), {}, {
270
+ ref: forwardedRef
271
+ })) : /* @__PURE__ */jsx(TooltipContentHoverable, _objectSpread2(_objectSpread2({
272
+ side: side
273
+ }, contentProps), {}, {
274
+ ref: forwardedRef
275
+ }))
276
+ });
277
+ });
278
+ var TooltipContentHoverable = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
279
+ var context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
280
+ var providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);
281
+ var ref = useRef(null);
282
+ var composedRefs = useComposedRefs(forwardedRef, ref);
283
+ var _React$useState5 = useState(null),
284
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
285
+ pointerGraceArea = _React$useState6[0],
286
+ setPointerGraceArea = _React$useState6[1];
287
+ var trigger = context.trigger,
288
+ onClose = context.onClose;
289
+ var content = ref.current;
290
+ var onPointerInTransitChange = providerContext.onPointerInTransitChange;
291
+ var handleRemoveGraceArea = useCallback(function () {
234
292
  setPointerGraceArea(null);
235
293
  onPointerInTransitChange(false);
236
294
  }, [onPointerInTransitChange]);
237
- const handleCreateGraceArea = useCallback(
238
- (event, hoverTarget) => {
239
- const currentTarget = event.currentTarget;
240
- const exitPoint = { x: event.clientX, y: event.clientY };
241
- const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
242
- const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);
243
- const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());
244
- const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);
245
- setPointerGraceArea(graceArea);
246
- onPointerInTransitChange(true);
247
- },
248
- [onPointerInTransitChange]
249
- );
250
- useEffect(() => {
251
- return () => handleRemoveGraceArea();
295
+ var handleCreateGraceArea = useCallback(function (event, hoverTarget) {
296
+ var currentTarget = event.currentTarget;
297
+ var exitPoint = {
298
+ x: event.clientX,
299
+ y: event.clientY
300
+ };
301
+ var exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
302
+ var paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);
303
+ var hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());
304
+ var graceArea = getHull([].concat(_toConsumableArray(paddedExitPoints), _toConsumableArray(hoverTargetPoints)));
305
+ setPointerGraceArea(graceArea);
306
+ onPointerInTransitChange(true);
307
+ }, [onPointerInTransitChange]);
308
+ useEffect(function () {
309
+ return function () {
310
+ return handleRemoveGraceArea();
311
+ };
252
312
  }, [handleRemoveGraceArea]);
253
- useEffect(() => {
313
+ useEffect(function () {
254
314
  if (trigger && content) {
255
- const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);
256
- const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);
315
+ var handleTriggerLeave = function handleTriggerLeave(event) {
316
+ return handleCreateGraceArea(event, content);
317
+ };
318
+ var handleContentLeave = function handleContentLeave(event) {
319
+ return handleCreateGraceArea(event, trigger);
320
+ };
257
321
  trigger.addEventListener("pointerleave", handleTriggerLeave);
258
322
  content.addEventListener("pointerleave", handleContentLeave);
259
- return () => {
323
+ return function () {
260
324
  trigger.removeEventListener("pointerleave", handleTriggerLeave);
261
325
  content.removeEventListener("pointerleave", handleContentLeave);
262
326
  };
263
327
  }
264
328
  }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);
265
- useEffect(() => {
329
+ useEffect(function () {
266
330
  if (pointerGraceArea) {
267
- const handleTrackPointerGrace = (event) => {
268
- const target = event.target;
269
- const pointerPosition = { x: event.clientX, y: event.clientY };
270
- const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);
271
- const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);
331
+ var handleTrackPointerGrace = function handleTrackPointerGrace(event) {
332
+ var target = event.target;
333
+ var pointerPosition = {
334
+ x: event.clientX,
335
+ y: event.clientY
336
+ };
337
+ var hasEnteredTarget = (trigger === null || trigger === void 0 ? void 0 : trigger.contains(target)) || (content === null || content === void 0 ? void 0 : content.contains(target));
338
+ var isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);
272
339
  if (hasEnteredTarget) {
273
340
  handleRemoveGraceArea();
274
341
  } else if (isPointerOutsideGraceArea) {
@@ -277,95 +344,104 @@ var TooltipContentHoverable = forwardRef((props, forwardedRef) => {
277
344
  }
278
345
  };
279
346
  document.addEventListener("pointermove", handleTrackPointerGrace);
280
- return () => document.removeEventListener("pointermove", handleTrackPointerGrace);
347
+ return function () {
348
+ return document.removeEventListener("pointermove", handleTrackPointerGrace);
349
+ };
281
350
  }
282
351
  }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);
283
- return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });
352
+ return /* @__PURE__ */jsx(TooltipContentImpl, _objectSpread2(_objectSpread2({}, props), {}, {
353
+ ref: composedRefs
354
+ }));
355
+ });
356
+ var _createTooltipContext7 = createTooltipContext(TOOLTIP_NAME, {
357
+ isInside: false
358
+ }),
359
+ _createTooltipContext8 = _slicedToArray(_createTooltipContext7, 2),
360
+ VisuallyHiddenContentContextProvider = _createTooltipContext8[0],
361
+ useVisuallyHiddenContentContext = _createTooltipContext8[1];
362
+ var TooltipContentImpl = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
363
+ var __scopeTooltip = props.__scopeTooltip,
364
+ children = props.children,
365
+ ariaLabel = props["aria-label"],
366
+ onEscapeKeyDown = props.onEscapeKeyDown,
367
+ onPointerDownOutside = props.onPointerDownOutside,
368
+ contentProps = _objectWithoutProperties(props, _excluded3);
369
+ var context = useTooltipContext(CONTENT_NAME, __scopeTooltip);
370
+ var popperScope = usePopperScope(__scopeTooltip);
371
+ var onClose = context.onClose;
372
+ useEffect(function () {
373
+ document.addEventListener(TOOLTIP_OPEN, onClose);
374
+ return function () {
375
+ return document.removeEventListener(TOOLTIP_OPEN, onClose);
376
+ };
377
+ }, [onClose]);
378
+ useEffect(function () {
379
+ if (context.trigger) {
380
+ var handleScroll = function handleScroll(event) {
381
+ var target = event.target;
382
+ if (target !== null && target !== void 0 && target.contains(context.trigger)) onClose();
383
+ };
384
+ window.addEventListener("scroll", handleScroll, {
385
+ capture: true
386
+ });
387
+ return function () {
388
+ return window.removeEventListener("scroll", handleScroll, {
389
+ capture: true
390
+ });
391
+ };
392
+ }
393
+ }, [context.trigger, onClose]);
394
+ return /* @__PURE__ */jsx(DismissableLayer, {
395
+ asChild: true,
396
+ disableOutsidePointerEvents: false,
397
+ onEscapeKeyDown: onEscapeKeyDown,
398
+ onPointerDownOutside: onPointerDownOutside,
399
+ onFocusOutside: function onFocusOutside(event) {
400
+ return event.preventDefault();
401
+ },
402
+ onDismiss: onClose,
403
+ children: /* @__PURE__ */jsxs(Content, _objectSpread2(_objectSpread2(_objectSpread2({
404
+ "data-state": context.stateAttribute
405
+ }, popperScope), contentProps), {}, {
406
+ ref: forwardedRef,
407
+ style: _objectSpread2(_objectSpread2({}, contentProps.style), {
408
+ "--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
409
+ "--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
410
+ "--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
411
+ "--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
412
+ "--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
413
+ }),
414
+ children: [/* @__PURE__ */jsx(Slottable, {
415
+ children: children
416
+ }), /* @__PURE__ */jsx(VisuallyHiddenContentContextProvider, {
417
+ scope: __scopeTooltip,
418
+ isInside: true,
419
+ children: /* @__PURE__ */jsx(Root, {
420
+ id: context.contentId,
421
+ role: "tooltip",
422
+ children: ariaLabel || children
423
+ })
424
+ })]
425
+ }))
426
+ });
284
427
  });
285
- var [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });
286
- var TooltipContentImpl = forwardRef(
287
- (props, forwardedRef) => {
288
- const {
289
- __scopeTooltip,
290
- children,
291
- "aria-label": ariaLabel,
292
- onEscapeKeyDown,
293
- onPointerDownOutside,
294
- ...contentProps
295
- } = props;
296
- const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);
297
- const popperScope = usePopperScope(__scopeTooltip);
298
- const { onClose } = context;
299
- useEffect(() => {
300
- document.addEventListener(TOOLTIP_OPEN, onClose);
301
- return () => document.removeEventListener(TOOLTIP_OPEN, onClose);
302
- }, [onClose]);
303
- useEffect(() => {
304
- if (context.trigger) {
305
- const handleScroll = (event) => {
306
- const target = event.target;
307
- if (target?.contains(context.trigger)) onClose();
308
- };
309
- window.addEventListener("scroll", handleScroll, { capture: true });
310
- return () => window.removeEventListener("scroll", handleScroll, { capture: true });
311
- }
312
- }, [context.trigger, onClose]);
313
- return /* @__PURE__ */ jsx(
314
- DismissableLayer,
315
- {
316
- asChild: true,
317
- disableOutsidePointerEvents: false,
318
- onEscapeKeyDown,
319
- onPointerDownOutside,
320
- onFocusOutside: (event) => event.preventDefault(),
321
- onDismiss: onClose,
322
- children: /* @__PURE__ */ jsxs(
323
- Content,
324
- {
325
- "data-state": context.stateAttribute,
326
- ...popperScope,
327
- ...contentProps,
328
- ref: forwardedRef,
329
- style: {
330
- ...contentProps.style,
331
- // re-namespace exposed content custom properties
332
- ...{
333
- "--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
334
- "--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
335
- "--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
336
- "--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
337
- "--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
338
- }
339
- },
340
- children: [
341
- /* @__PURE__ */ jsx(Slottable, { children }),
342
- /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(Root, { id: context.contentId, role: "tooltip", children: ariaLabel || children }) })
343
- ]
344
- }
345
- )
346
- }
347
- );
348
- }
349
- );
350
428
  TooltipContent.displayName = CONTENT_NAME;
351
429
  var ARROW_NAME = "TooltipArrow";
352
- var TooltipArrow = forwardRef(
353
- (props, forwardedRef) => {
354
- const { __scopeTooltip, ...arrowProps } = props;
355
- const popperScope = usePopperScope(__scopeTooltip);
356
- const visuallyHiddenContentContext = useVisuallyHiddenContentContext(
357
- ARROW_NAME,
358
- __scopeTooltip
359
- );
360
- return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });
361
- }
362
- );
430
+ var TooltipArrow = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
431
+ var __scopeTooltip = props.__scopeTooltip,
432
+ arrowProps = _objectWithoutProperties(props, _excluded4);
433
+ var popperScope = usePopperScope(__scopeTooltip);
434
+ var visuallyHiddenContentContext = useVisuallyHiddenContentContext(ARROW_NAME, __scopeTooltip);
435
+ return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */jsx(Arrow, _objectSpread2(_objectSpread2(_objectSpread2({}, popperScope), arrowProps), {}, {
436
+ ref: forwardedRef
437
+ }));
438
+ });
363
439
  TooltipArrow.displayName = ARROW_NAME;
364
440
  function getExitSideFromRect(point, rect) {
365
- const top = Math.abs(rect.top - point.y);
366
- const bottom = Math.abs(rect.bottom - point.y);
367
- const right = Math.abs(rect.right - point.x);
368
- const left = Math.abs(rect.left - point.x);
441
+ var top = Math.abs(rect.top - point.y);
442
+ var bottom = Math.abs(rect.bottom - point.y);
443
+ var right = Math.abs(rect.right - point.x);
444
+ var left = Math.abs(rect.left - point.x);
369
445
  switch (Math.min(top, bottom, right, left)) {
370
446
  case left:
371
447
  return "left";
@@ -379,93 +455,111 @@ function getExitSideFromRect(point, rect) {
379
455
  throw new Error("unreachable");
380
456
  }
381
457
  }
382
- function getPaddedExitPoints(exitPoint, exitSide, padding = 5) {
383
- const paddedExitPoints = [];
458
+ function getPaddedExitPoints(exitPoint, exitSide) {
459
+ var padding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;
460
+ var paddedExitPoints = [];
384
461
  switch (exitSide) {
385
462
  case "top":
386
- paddedExitPoints.push(
387
- { x: exitPoint.x - padding, y: exitPoint.y + padding },
388
- { x: exitPoint.x + padding, y: exitPoint.y + padding }
389
- );
463
+ paddedExitPoints.push({
464
+ x: exitPoint.x - padding,
465
+ y: exitPoint.y + padding
466
+ }, {
467
+ x: exitPoint.x + padding,
468
+ y: exitPoint.y + padding
469
+ });
390
470
  break;
391
471
  case "bottom":
392
- paddedExitPoints.push(
393
- { x: exitPoint.x - padding, y: exitPoint.y - padding },
394
- { x: exitPoint.x + padding, y: exitPoint.y - padding }
395
- );
472
+ paddedExitPoints.push({
473
+ x: exitPoint.x - padding,
474
+ y: exitPoint.y - padding
475
+ }, {
476
+ x: exitPoint.x + padding,
477
+ y: exitPoint.y - padding
478
+ });
396
479
  break;
397
480
  case "left":
398
- paddedExitPoints.push(
399
- { x: exitPoint.x + padding, y: exitPoint.y - padding },
400
- { x: exitPoint.x + padding, y: exitPoint.y + padding }
401
- );
481
+ paddedExitPoints.push({
482
+ x: exitPoint.x + padding,
483
+ y: exitPoint.y - padding
484
+ }, {
485
+ x: exitPoint.x + padding,
486
+ y: exitPoint.y + padding
487
+ });
402
488
  break;
403
489
  case "right":
404
- paddedExitPoints.push(
405
- { x: exitPoint.x - padding, y: exitPoint.y - padding },
406
- { x: exitPoint.x - padding, y: exitPoint.y + padding }
407
- );
490
+ paddedExitPoints.push({
491
+ x: exitPoint.x - padding,
492
+ y: exitPoint.y - padding
493
+ }, {
494
+ x: exitPoint.x - padding,
495
+ y: exitPoint.y + padding
496
+ });
408
497
  break;
409
498
  }
410
499
  return paddedExitPoints;
411
500
  }
412
501
  function getPointsFromRect(rect) {
413
- const { top, right, bottom, left } = rect;
414
- return [
415
- { x: left, y: top },
416
- { x: right, y: top },
417
- { x: right, y: bottom },
418
- { x: left, y: bottom }
419
- ];
502
+ var top = rect.top,
503
+ right = rect.right,
504
+ bottom = rect.bottom,
505
+ left = rect.left;
506
+ return [{
507
+ x: left,
508
+ y: top
509
+ }, {
510
+ x: right,
511
+ y: top
512
+ }, {
513
+ x: right,
514
+ y: bottom
515
+ }, {
516
+ x: left,
517
+ y: bottom
518
+ }];
420
519
  }
421
520
  function isPointInPolygon(point, polygon) {
422
- const { x, y } = point;
423
- let inside = false;
424
- for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
425
- const xi = polygon[i].x;
426
- const yi = polygon[i].y;
427
- const xj = polygon[j].x;
428
- const yj = polygon[j].y;
429
- const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
521
+ var x = point.x,
522
+ y = point.y;
523
+ var inside = false;
524
+ for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
525
+ var xi = polygon[i].x;
526
+ var yi = polygon[i].y;
527
+ var xj = polygon[j].x;
528
+ var yj = polygon[j].y;
529
+ var intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
430
530
  if (intersect) inside = !inside;
431
531
  }
432
532
  return inside;
433
533
  }
434
534
  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;
535
+ var newPoints = points.slice();
536
+ newPoints.sort(function (a, b) {
537
+ if (a.x < b.x) return -1;else if (a.x > b.x) return 1;else if (a.y < b.y) return -1;else if (a.y > b.y) return 1;else return 0;
442
538
  });
443
539
  return getHullPresorted(newPoints);
444
540
  }
445
541
  function getHullPresorted(points) {
446
542
  if (points.length <= 1) return points.slice();
447
- const upperHull = [];
448
- for (let i = 0; i < points.length; i++) {
449
- const p = points[i];
543
+ var upperHull = [];
544
+ for (var i = 0; i < points.length; i++) {
545
+ var p = points[i];
450
546
  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;
547
+ var q = upperHull[upperHull.length - 1];
548
+ var r = upperHull[upperHull.length - 2];
549
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();else break;
455
550
  }
456
551
  upperHull.push(p);
457
552
  }
458
553
  upperHull.pop();
459
- const lowerHull = [];
460
- for (let i = points.length - 1; i >= 0; i--) {
461
- const p = points[i];
554
+ var lowerHull = [];
555
+ for (var _i = points.length - 1; _i >= 0; _i--) {
556
+ var _p = points[_i];
462
557
  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;
558
+ var _q = lowerHull[lowerHull.length - 1];
559
+ var _r = lowerHull[lowerHull.length - 2];
560
+ if ((_q.x - _r.x) * (_p.y - _r.y) >= (_q.y - _r.y) * (_p.x - _r.x)) lowerHull.pop();else break;
467
561
  }
468
- lowerHull.push(p);
562
+ lowerHull.push(_p);
469
563
  }
470
564
  lowerHull.pop();
471
565
  if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {