@radix-ui/react-tooltip 0.1.8-rc.7 → 1.0.0-rc.1

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.
package/dist/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import * as React from "react";
2
2
  import { DismissableLayer } from "@radix-ui/react-dismissable-layer";
3
3
  import * as PopperPrimitive from "@radix-ui/react-popper";
4
+ import { Portal as _Portal1 } from "@radix-ui/react-portal";
4
5
  import * as Radix from "@radix-ui/react-primitive";
5
6
  import { Primitive } from "@radix-ui/react-primitive";
6
7
  export const createTooltipScope: import("@radix-ui/react-context").CreateScope;
7
8
  interface TooltipProviderProps {
8
9
  children: React.ReactNode;
9
10
  /**
10
- * The duration from when the mouse enters the trigger until the tooltip gets opened.
11
+ * The duration from when the pointer enters the trigger until the tooltip gets opened.
11
12
  * @defaultValue 700
12
13
  */
13
14
  delayDuration?: number;
@@ -16,6 +17,11 @@ interface TooltipProviderProps {
16
17
  * @defaultValue 300
17
18
  */
18
19
  skipDelayDuration?: number;
20
+ /**
21
+ * When `true`, trying to hover the content will result in the tooltip closing as the pointer leaves the trigger.
22
+ * @defaultValue false
23
+ */
24
+ disableHoverableContent?: boolean;
19
25
  }
20
26
  export const TooltipProvider: React.FC<TooltipProviderProps>;
21
27
  export interface TooltipProps {
@@ -24,17 +30,32 @@ export interface TooltipProps {
24
30
  defaultOpen?: boolean;
25
31
  onOpenChange?: (open: boolean) => void;
26
32
  /**
27
- * The duration from when the mouse enters the trigger until the tooltip gets opened. This will
33
+ * The duration from when the pointer enters the trigger until the tooltip gets opened. This will
28
34
  * override the prop with the same name passed to Provider.
29
35
  * @defaultValue 700
30
36
  */
31
37
  delayDuration?: number;
38
+ /**
39
+ * When `true`, trying to hover the content will result in the tooltip closing as the pointer leaves the trigger.
40
+ * @defaultValue false
41
+ */
42
+ disableHoverableContent?: boolean;
32
43
  }
33
44
  export const Tooltip: React.FC<TooltipProps>;
34
45
  type PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;
35
46
  export interface TooltipTriggerProps extends PrimitiveButtonProps {
36
47
  }
37
48
  export const TooltipTrigger: React.ForwardRefExoticComponent<TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
49
+ type PortalProps = React.ComponentPropsWithoutRef<typeof _Portal1>;
50
+ export interface TooltipPortalProps extends Omit<PortalProps, 'asChild'> {
51
+ children?: React.ReactNode;
52
+ /**
53
+ * Used to force mounting when more control is needed. Useful when
54
+ * controlling animation with React animation libraries.
55
+ */
56
+ forceMount?: true;
57
+ }
58
+ export const TooltipPortal: React.FC<TooltipPortalProps>;
38
59
  export interface TooltipContentProps extends TooltipContentImplProps {
39
60
  /**
40
61
  * Used to force mounting when more control is needed. Useful when
@@ -60,11 +81,6 @@ interface TooltipContentImplProps extends PopperContentProps {
60
81
  * Can be prevented.
61
82
  */
62
83
  onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];
63
- /**
64
- * Whether the Tooltip should render in a Portal
65
- * (default: `true`)
66
- */
67
- portalled?: boolean;
68
84
  }
69
85
  type PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;
70
86
  export interface TooltipArrowProps extends PopperArrowProps {
@@ -73,6 +89,7 @@ export const TooltipArrow: React.ForwardRefExoticComponent<TooltipArrowProps & R
73
89
  export const Provider: React.FC<TooltipProviderProps>;
74
90
  export const Root: React.FC<TooltipProps>;
75
91
  export const Trigger: React.ForwardRefExoticComponent<TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
92
+ export const Portal: React.FC<TooltipPortalProps>;
76
93
  export const Content: React.ForwardRefExoticComponent<TooltipContentProps & React.RefAttributes<HTMLDivElement>>;
77
94
  export const Arrow: React.ForwardRefExoticComponent<TooltipArrowProps & React.RefAttributes<SVGSVGElement>>;
78
95
 
@@ -1 +1 @@
1
- {"mappings":"A;A;A;A;A;AAmBA,OAAA,yFAEE,CAAC;AA0BH;IACE,QAAQ,EAAE,MAAM,SAAS,CAAC;IAC1B;A;A;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;A;A;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,OAAA,MAAM,iBAAiB,MAAM,EAAE,CAAC,oBAAoB,CAqCnD,CAAC;AAwBF;IACE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEvC;A;A;A;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,OAAA,MAAM,SAAS,MAAM,EAAE,CAAC,YAAY,CA4EnC,CAAC;AAWF,4BAA4B,MAAM,wBAAwB,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC;AACpF,oCAA8B,SAAQ,oBAAoB;CAAG;AAE7D,OAAA,MAAM,6GA0CL,CAAC;AAWF,oCAA8B,SAAQ,uBAAuB;IAC3D;A;A;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,0GAUL,CAAC;AAGF,6BAA6B,MAAM,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;AACrF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,OAAO,CAAC,CAAC;AACzF,iCAAkC,SAAQ,kBAAkB;IAC1D;A;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;A;A;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC3D;A;A;OAGG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;IAErE;A;A;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA8ED,wBAAwB,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,KAAK,CAAC,CAAC;AACrF,kCAA4B,SAAQ,gBAAgB;CAAG;AAEvD,OAAA,MAAM,qGAML,CAAC;AAMF,OAAA,MAAM,wCAA0B,CAAC;AACjC,OAAA,MAAM,4BAAc,CAAC;AACrB,OAAA,MAAM,sGAAwB,CAAC;AAC/B,OAAA,MAAM,mGAAwB,CAAC;AAC/B,OAAA,MAAM,8FAAoB,CAAC","sources":["./packages/react/tooltip/src/packages/react/tooltip/src/Tooltip.tsx","./packages/react/tooltip/src/packages/react/tooltip/src/index.ts"],"sourcesContent":[null,null],"names":[],"version":3,"file":"index.d.ts.map"}
1
+ {"mappings":";;;;;;AAmBA,OAAA,yFAEE,CAAC;AAwBH;IACE,QAAQ,EAAE,MAAM,SAAS,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,OAAA,MAAM,iBAAiB,MAAM,EAAE,CAAC,oBAAoB,CA4CnD,CAAC;AA0BF;IACE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,OAAA,MAAM,SAAS,MAAM,EAAE,CAAC,YAAY,CA2FnC,CAAC;AAWF,4BAA4B,MAAM,wBAAwB,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC;AACpF,oCAA8B,SAAQ,oBAAoB;CAAG;AAE7D,OAAA,MAAM,6GAyDL,CAAC;AAeF,mBAAmB,MAAM,wBAAwB,CAAC,eAAsB,CAAC,CAAC;AAC1E,mCAA6B,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IAC/D,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,eAAe,MAAM,EAAE,CAAC,kBAAkB,CAY/C,CAAC;AAWF,oCAA8B,SAAQ,uBAAuB;IAC3D;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,0GAgBL,CAAC;AA6FF,6BAA6B,MAAM,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;AACrF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,OAAO,CAAC,CAAC;AACzF,iCAAkC,SAAQ,kBAAkB;IAC1D;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC3D;;;OAGG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;CACtE;AA4ED,wBAAwB,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,KAAK,CAAC,CAAC;AACrF,kCAA4B,SAAQ,gBAAgB;CAAG;AAEvD,OAAA,MAAM,qGAcL,CAAC;AA+GF,OAAA,MAAM,wCAA0B,CAAC;AACjC,OAAA,MAAM,4BAAc,CAAC;AACrB,OAAA,MAAM,sGAAwB,CAAC;AAC/B,OAAA,MAAM,oCAAsB,CAAC;AAC7B,OAAA,MAAM,mGAAwB,CAAC;AAC/B,OAAA,MAAM,8FAAoB,CAAC","sources":["packages/react/tooltip/src/packages/react/tooltip/src/Tooltip.tsx","packages/react/tooltip/src/packages/react/tooltip/src/index.ts","packages/react/tooltip/src/index.ts"],"sourcesContent":[null,null,"export {\n createTooltipScope,\n //\n TooltipProvider,\n Tooltip,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n TooltipArrow,\n //\n Provider,\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './Tooltip';\nexport type {\n TooltipProps,\n TooltipTriggerProps,\n TooltipPortalProps,\n TooltipContentProps,\n TooltipArrowProps,\n} from './Tooltip';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
package/dist/index.js CHANGED
@@ -1,2 +1,564 @@
1
- var e,t=T({},require("@radix-ui/react-visually-hidden")),o=require("@radix-ui/react-use-controllable-state").useControllableState,r=require("@radix-ui/react-slot").Slottable,n=require("@radix-ui/react-primitive").Primitive,i=require("@radix-ui/react-presence").Presence,a=require("@radix-ui/react-portal").Portal,s=require("@radix-ui/react-popper"),l=T({},s),u=s.createPopperScope,c=require("@radix-ui/react-id").useId,p=require("@radix-ui/react-dismissable-layer").DismissableLayer,d=require("@radix-ui/react-context").createContextScope,m=require("@radix-ui/react-compose-refs").useComposedRefs,f=require("@radix-ui/primitive").composeEventHandlers,w=T({},require("react")),E=(e=require("@babel/runtime/helpers/extends"))&&e.__esModule?e.default:e;function T(e,t){return Object.keys(t).forEach((function(o){"default"!==o&&"__esModule"!==o&&Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[o]}})})),e}const[C,g]=d("Tooltip",[u]);exports.createTooltipScope=g;const x=u(),b=700,[v,y]=C("TooltipProvider",{isOpenDelayed:!0,delayDuration:b,onOpen:()=>{},onClose:()=>{}}),D=e=>{const{__scopeTooltip:t,delayDuration:o=b,skipDelayDuration:r=300,children:n}=e,[i,a]=w.useState(!0),s=w.useRef(0);return w.useEffect((()=>{const e=s.current;return()=>window.clearTimeout(e)}),[]),/*#__PURE__*/w.createElement(v,{scope:t,isOpenDelayed:i,delayDuration:o,onOpen:w.useCallback((()=>{window.clearTimeout(s.current),a(!1)}),[]),onClose:w.useCallback((()=>{window.clearTimeout(s.current),s.current=window.setTimeout((()=>a(!0)),r)}),[r])},n)};exports.TooltipProvider=D;const[O,_]=C("Tooltip"),h=e=>{const{__scopeTooltip:t,children:r,open:n,defaultOpen:i=!1,onOpenChange:a,delayDuration:s}=e,u=y("Tooltip",t),p=x(t),[d,m]=w.useState(null),f=c(),E=w.useRef(0),T=null!=s?s:u.delayDuration,C=w.useRef(!1),{onOpen:g,onClose:b}=u,[v=!1,D]=o({prop:n,defaultProp:i,onChange:e=>{e&&(document.dispatchEvent(new CustomEvent("tooltip.open")),g()),null==a||a(e)}}),_=w.useMemo((()=>v?C.current?"delayed-open":"instant-open":"closed"),[v]),h=w.useCallback((()=>{window.clearTimeout(E.current),C.current=!1,D(!0)}),[D]),q=w.useCallback((()=>{window.clearTimeout(E.current),E.current=window.setTimeout((()=>{C.current=!0,D(!0)}),T)}),[T,D]);return w.useEffect((()=>()=>window.clearTimeout(E.current)),[]),/*#__PURE__*/w.createElement(l.Root,p,/*#__PURE__*/w.createElement(O,{scope:t,contentId:f,open:v,stateAttribute:_,trigger:d,onTriggerChange:m,onTriggerEnter:w.useCallback((()=>{u.isOpenDelayed?q():h()}),[u.isOpenDelayed,q,h]),onOpen:w.useCallback(h,[h]),onClose:w.useCallback((()=>{window.clearTimeout(E.current),D(!1),b()}),[D,b])},r))};exports.Tooltip=h;const q=/*#__PURE__*/w.forwardRef(((e,t)=>{const{__scopeTooltip:o,...r}=e,i=_("TooltipTrigger",o),a=x(o),s=m(t,i.onTriggerChange),u=w.useRef(!1),c=w.useCallback((()=>u.current=!1),[]);return w.useEffect((()=>()=>document.removeEventListener("mouseup",c)),[c]),/*#__PURE__*/w.createElement(l.Anchor,E({asChild:!0},a),/*#__PURE__*/w.createElement(n.button,E({"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute},r,{ref:s,onMouseEnter:f(e.onMouseEnter,i.onTriggerEnter),onMouseLeave:f(e.onMouseLeave,i.onClose),onMouseDown:f(e.onMouseDown,(()=>{u.current=!0,document.addEventListener("mouseup",c,{once:!0})})),onFocus:f(e.onFocus,(()=>{u.current||i.onOpen()})),onBlur:f(e.onBlur,i.onClose),onClick:f(e.onClick,(e=>{0===e.detail&&i.onClose()}))})))}));exports.TooltipTrigger=q;const k=/*#__PURE__*/w.forwardRef(((e,t)=>{const{forceMount:o,...r}=e,n=_("TooltipContent",e.__scopeTooltip);/*#__PURE__*/return w.createElement(i,{present:o||n.open},/*#__PURE__*/w.createElement(P,E({ref:t},r)))}));exports.TooltipContent=k;const P=/*#__PURE__*/w.forwardRef(((e,o)=>{const{__scopeTooltip:n,children:i,"aria-label":s,portalled:u=!0,onEscapeKeyDown:c,onPointerDownOutside:d,...m}=e,f=_("TooltipContent",n),T=x(n),C=u?a:w.Fragment,{onClose:g}=f;return w.useEffect((()=>(document.addEventListener("tooltip.open",g),()=>document.removeEventListener("tooltip.open",g))),[g]),w.useEffect((()=>{if(f.trigger){const e=e=>{const t=e.target;null!=t&&t.contains(f.trigger)&&g()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[f.trigger,g]),/*#__PURE__*/w.createElement(C,null,/*#__PURE__*/w.createElement(p,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:c,onPointerDownOutside:d,onFocusOutside:e=>e.preventDefault(),onDismiss:g},/*#__PURE__*/w.createElement(l.Content,E({"data-state":f.stateAttribute},T,m,{ref:o,style:{...m.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)"}}),/*#__PURE__*/w.createElement(r,null,i),/*#__PURE__*/w.createElement(t.Root,{id:f.contentId,role:"tooltip"},s||i))))})),R=/*#__PURE__*/w.forwardRef(((e,t)=>{const{__scopeTooltip:o,...r}=e,n=x(o);/*#__PURE__*/return w.createElement(l.Arrow,E({},n,r,{ref:t}))}));/*#__PURE__*/exports.TooltipArrow=R;const M=D;exports.Provider=M;const L=h;exports.Root=L;const A=q;exports.Trigger=A;const S=k;exports.Content=S;const F=R;exports.Arrow=F;
1
+ var $iVrL9$babelruntimehelpersextends = require("@babel/runtime/helpers/extends");
2
+ var $iVrL9$react = require("react");
3
+ var $iVrL9$radixuiprimitive = require("@radix-ui/primitive");
4
+ var $iVrL9$radixuireactcomposerefs = require("@radix-ui/react-compose-refs");
5
+ var $iVrL9$radixuireactcontext = require("@radix-ui/react-context");
6
+ var $iVrL9$radixuireactdismissablelayer = require("@radix-ui/react-dismissable-layer");
7
+ var $iVrL9$radixuireactid = require("@radix-ui/react-id");
8
+ var $iVrL9$radixuireactpopper = require("@radix-ui/react-popper");
9
+ var $iVrL9$radixuireactportal = require("@radix-ui/react-portal");
10
+ var $iVrL9$radixuireactpresence = require("@radix-ui/react-presence");
11
+ var $iVrL9$radixuireactprimitive = require("@radix-ui/react-primitive");
12
+ var $iVrL9$radixuireactslot = require("@radix-ui/react-slot");
13
+ var $iVrL9$radixuireactusecontrollablestate = require("@radix-ui/react-use-controllable-state");
14
+ var $iVrL9$radixuireactvisuallyhidden = require("@radix-ui/react-visually-hidden");
15
+
16
+ function $parcel$export(e, n, v, s) {
17
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
18
+ }
19
+ function $parcel$interopDefault(a) {
20
+ return a && a.__esModule ? a.default : a;
21
+ }
22
+
23
+ $parcel$export(module.exports, "createTooltipScope", () => $c34afbc43c90cc6f$export$1c540a2224f0d865);
24
+ $parcel$export(module.exports, "TooltipProvider", () => $c34afbc43c90cc6f$export$f78649fb9ca566b8);
25
+ $parcel$export(module.exports, "Tooltip", () => $c34afbc43c90cc6f$export$28c660c63b792dea);
26
+ $parcel$export(module.exports, "TooltipTrigger", () => $c34afbc43c90cc6f$export$8c610744efcf8a1d);
27
+ $parcel$export(module.exports, "TooltipPortal", () => $c34afbc43c90cc6f$export$7b36b8f925ab7497);
28
+ $parcel$export(module.exports, "TooltipContent", () => $c34afbc43c90cc6f$export$e9003e2be37ec060);
29
+ $parcel$export(module.exports, "TooltipArrow", () => $c34afbc43c90cc6f$export$c27ee0ad710f7559);
30
+ $parcel$export(module.exports, "Provider", () => $c34afbc43c90cc6f$export$2881499e37b75b9a);
31
+ $parcel$export(module.exports, "Root", () => $c34afbc43c90cc6f$export$be92b6f5f03c0fe9);
32
+ $parcel$export(module.exports, "Trigger", () => $c34afbc43c90cc6f$export$41fb9f06171c75f4);
33
+ $parcel$export(module.exports, "Portal", () => $c34afbc43c90cc6f$export$602eac185826482c);
34
+ $parcel$export(module.exports, "Content", () => $c34afbc43c90cc6f$export$7c6e2c02157bb7d2);
35
+ $parcel$export(module.exports, "Arrow", () => $c34afbc43c90cc6f$export$21b07c8f274aebd5);
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+ const [$c34afbc43c90cc6f$var$createTooltipContext, $c34afbc43c90cc6f$export$1c540a2224f0d865] = $iVrL9$radixuireactcontext.createContextScope('Tooltip', [
52
+ $iVrL9$radixuireactpopper.createPopperScope
53
+ ]);
54
+ const $c34afbc43c90cc6f$var$usePopperScope = $iVrL9$radixuireactpopper.createPopperScope();
55
+ /* -------------------------------------------------------------------------------------------------
56
+ * TooltipProvider
57
+ * -----------------------------------------------------------------------------------------------*/ const $c34afbc43c90cc6f$var$PROVIDER_NAME = 'TooltipProvider';
58
+ const $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION = 700;
59
+ const $c34afbc43c90cc6f$var$TOOLTIP_OPEN = 'tooltip.open';
60
+ const [$c34afbc43c90cc6f$var$TooltipProviderContextProvider, $c34afbc43c90cc6f$var$useTooltipProviderContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$PROVIDER_NAME);
61
+ const $c34afbc43c90cc6f$export$f78649fb9ca566b8 = (props)=>{
62
+ const { __scopeTooltip: __scopeTooltip , delayDuration: delayDuration = $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION , skipDelayDuration: skipDelayDuration = 300 , disableHoverableContent: disableHoverableContent = false , children: children } = props;
63
+ const [isOpenDelayed, setIsOpenDelayed] = $iVrL9$react.useState(true);
64
+ const isPointerInTransitRef = $iVrL9$react.useRef(false);
65
+ const skipDelayTimerRef = $iVrL9$react.useRef(0);
66
+ $iVrL9$react.useEffect(()=>{
67
+ const skipDelayTimer = skipDelayTimerRef.current;
68
+ return ()=>window.clearTimeout(skipDelayTimer)
69
+ ;
70
+ }, []);
71
+ return /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipProviderContextProvider, {
72
+ scope: __scopeTooltip,
73
+ isOpenDelayed: isOpenDelayed,
74
+ delayDuration: delayDuration,
75
+ onOpen: $iVrL9$react.useCallback(()=>{
76
+ window.clearTimeout(skipDelayTimerRef.current);
77
+ setIsOpenDelayed(false);
78
+ }, []),
79
+ onClose: $iVrL9$react.useCallback(()=>{
80
+ window.clearTimeout(skipDelayTimerRef.current);
81
+ skipDelayTimerRef.current = window.setTimeout(()=>setIsOpenDelayed(true)
82
+ , skipDelayDuration);
83
+ }, [
84
+ skipDelayDuration
85
+ ]),
86
+ isPointerInTransitRef: isPointerInTransitRef,
87
+ onPointerInTransitChange: $iVrL9$react.useCallback((inTransit)=>{
88
+ isPointerInTransitRef.current = inTransit;
89
+ }, []),
90
+ disableHoverableContent: disableHoverableContent
91
+ }, children);
92
+ };
93
+ /*#__PURE__*/ Object.assign($c34afbc43c90cc6f$export$f78649fb9ca566b8, {
94
+ displayName: $c34afbc43c90cc6f$var$PROVIDER_NAME
95
+ });
96
+ /* -------------------------------------------------------------------------------------------------
97
+ * Tooltip
98
+ * -----------------------------------------------------------------------------------------------*/ const $c34afbc43c90cc6f$var$TOOLTIP_NAME = 'Tooltip';
99
+ const [$c34afbc43c90cc6f$var$TooltipContextProvider, $c34afbc43c90cc6f$var$useTooltipContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$TOOLTIP_NAME);
100
+ const $c34afbc43c90cc6f$export$28c660c63b792dea = (props)=>{
101
+ const { __scopeTooltip: __scopeTooltip , children: children , open: openProp , defaultOpen: defaultOpen = false , onOpenChange: onOpenChange , disableHoverableContent: disableHoverableContentProp , delayDuration: delayDurationProp } = props;
102
+ const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$TOOLTIP_NAME, props.__scopeTooltip);
103
+ const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip);
104
+ const [trigger, setTrigger] = $iVrL9$react.useState(null);
105
+ const contentId = $iVrL9$radixuireactid.useId();
106
+ const openTimerRef = $iVrL9$react.useRef(0);
107
+ const disableHoverableContent = disableHoverableContentProp !== null && disableHoverableContentProp !== void 0 ? disableHoverableContentProp : providerContext.disableHoverableContent;
108
+ const delayDuration = delayDurationProp !== null && delayDurationProp !== void 0 ? delayDurationProp : providerContext.delayDuration;
109
+ const wasOpenDelayedRef = $iVrL9$react.useRef(false);
110
+ const [open1 = false, setOpen] = $iVrL9$radixuireactusecontrollablestate.useControllableState({
111
+ prop: openProp,
112
+ defaultProp: defaultOpen,
113
+ onChange: (open)=>{
114
+ if (open) {
115
+ providerContext.onOpen(); // as `onChange` is called within a lifecycle method we
116
+ // avoid dispatching via `dispatchDiscreteCustomEvent`.
117
+ document.dispatchEvent(new CustomEvent($c34afbc43c90cc6f$var$TOOLTIP_OPEN));
118
+ } else providerContext.onClose();
119
+ onOpenChange === null || onOpenChange === void 0 || onOpenChange(open);
120
+ }
121
+ });
122
+ const stateAttribute = $iVrL9$react.useMemo(()=>{
123
+ return open1 ? wasOpenDelayedRef.current ? 'delayed-open' : 'instant-open' : 'closed';
124
+ }, [
125
+ open1
126
+ ]);
127
+ const handleOpen = $iVrL9$react.useCallback(()=>{
128
+ window.clearTimeout(openTimerRef.current);
129
+ wasOpenDelayedRef.current = false;
130
+ setOpen(true);
131
+ }, [
132
+ setOpen
133
+ ]);
134
+ const handleClose = $iVrL9$react.useCallback(()=>{
135
+ window.clearTimeout(openTimerRef.current);
136
+ setOpen(false);
137
+ }, [
138
+ setOpen
139
+ ]);
140
+ const handleDelayedOpen = $iVrL9$react.useCallback(()=>{
141
+ window.clearTimeout(openTimerRef.current);
142
+ openTimerRef.current = window.setTimeout(()=>{
143
+ wasOpenDelayedRef.current = true;
144
+ setOpen(true);
145
+ }, delayDuration);
146
+ }, [
147
+ delayDuration,
148
+ setOpen
149
+ ]);
150
+ $iVrL9$react.useEffect(()=>{
151
+ return ()=>window.clearTimeout(openTimerRef.current)
152
+ ;
153
+ }, []);
154
+ return /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactpopper.Root, popperScope, /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContextProvider, {
155
+ scope: __scopeTooltip,
156
+ contentId: contentId,
157
+ open: open1,
158
+ stateAttribute: stateAttribute,
159
+ trigger: trigger,
160
+ onTriggerChange: setTrigger,
161
+ onTriggerEnter: $iVrL9$react.useCallback(()=>{
162
+ if (providerContext.isOpenDelayed) handleDelayedOpen();
163
+ else handleOpen();
164
+ }, [
165
+ providerContext.isOpenDelayed,
166
+ handleDelayedOpen,
167
+ handleOpen
168
+ ]),
169
+ onTriggerLeave: $iVrL9$react.useCallback(()=>{
170
+ if (disableHoverableContent) handleClose();
171
+ else // Clear the timer in case the pointer leaves the trigger before the tooltip is opened.
172
+ window.clearTimeout(openTimerRef.current);
173
+ }, [
174
+ handleClose,
175
+ disableHoverableContent
176
+ ]),
177
+ onOpen: handleOpen,
178
+ onClose: handleClose,
179
+ disableHoverableContent: disableHoverableContent
180
+ }, children));
181
+ };
182
+ /*#__PURE__*/ Object.assign($c34afbc43c90cc6f$export$28c660c63b792dea, {
183
+ displayName: $c34afbc43c90cc6f$var$TOOLTIP_NAME
184
+ });
185
+ /* -------------------------------------------------------------------------------------------------
186
+ * TooltipTrigger
187
+ * -----------------------------------------------------------------------------------------------*/ const $c34afbc43c90cc6f$var$TRIGGER_NAME = 'TooltipTrigger';
188
+ const $c34afbc43c90cc6f$export$8c610744efcf8a1d = /*#__PURE__*/ $iVrL9$react.forwardRef((props, forwardedRef)=>{
189
+ const { __scopeTooltip: __scopeTooltip , ...triggerProps } = props;
190
+ const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$TRIGGER_NAME, __scopeTooltip);
191
+ const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$TRIGGER_NAME, __scopeTooltip);
192
+ const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip);
193
+ const ref = $iVrL9$react.useRef(null);
194
+ const composedRefs = $iVrL9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref, context.onTriggerChange);
195
+ const isPointerDownRef = $iVrL9$react.useRef(false);
196
+ const hasPointerMoveOpenedRef = $iVrL9$react.useRef(false);
197
+ const handlePointerUp = $iVrL9$react.useCallback(()=>isPointerDownRef.current = false
198
+ , []);
199
+ $iVrL9$react.useEffect(()=>{
200
+ return ()=>document.removeEventListener('pointerup', handlePointerUp)
201
+ ;
202
+ }, [
203
+ handlePointerUp
204
+ ]);
205
+ return /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactpopper.Anchor, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({
206
+ asChild: true
207
+ }, popperScope), /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactprimitive.Primitive.button, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({
208
+ // We purposefully avoid adding `type=button` here because tooltip triggers are also
209
+ // commonly anchors and the anchor `type` attribute signifies MIME type.
210
+ "aria-describedby": context.open ? context.contentId : undefined,
211
+ "data-state": context.stateAttribute
212
+ }, triggerProps, {
213
+ ref: composedRefs,
214
+ onPointerMove: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerMove, (event)=>{
215
+ if (event.pointerType === 'touch') return;
216
+ if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {
217
+ context.onTriggerEnter();
218
+ hasPointerMoveOpenedRef.current = true;
219
+ }
220
+ }),
221
+ onPointerLeave: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerLeave, ()=>{
222
+ context.onTriggerLeave();
223
+ hasPointerMoveOpenedRef.current = false;
224
+ }),
225
+ onPointerDown: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerDown, ()=>{
226
+ isPointerDownRef.current = true;
227
+ document.addEventListener('pointerup', handlePointerUp, {
228
+ once: true
229
+ });
230
+ }),
231
+ onFocus: $iVrL9$radixuiprimitive.composeEventHandlers(props.onFocus, ()=>{
232
+ if (!isPointerDownRef.current) context.onOpen();
233
+ }),
234
+ onBlur: $iVrL9$radixuiprimitive.composeEventHandlers(props.onBlur, context.onClose),
235
+ onClick: $iVrL9$radixuiprimitive.composeEventHandlers(props.onClick, (event)=>{
236
+ // keyboard click will occur under different conditions for different node
237
+ // types so we use `onClick` instead of `onKeyDown` to respect that
238
+ const isKeyboardClick = event.detail === 0;
239
+ if (isKeyboardClick) context.onClose();
240
+ })
241
+ })));
242
+ });
243
+ /*#__PURE__*/ Object.assign($c34afbc43c90cc6f$export$8c610744efcf8a1d, {
244
+ displayName: $c34afbc43c90cc6f$var$TRIGGER_NAME
245
+ });
246
+ /* -------------------------------------------------------------------------------------------------
247
+ * TooltipPortal
248
+ * -----------------------------------------------------------------------------------------------*/ const $c34afbc43c90cc6f$var$PORTAL_NAME = 'TooltipPortal';
249
+ const [$c34afbc43c90cc6f$var$PortalProvider, $c34afbc43c90cc6f$var$usePortalContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$PORTAL_NAME, {
250
+ forceMount: undefined
251
+ });
252
+ const $c34afbc43c90cc6f$export$7b36b8f925ab7497 = (props)=>{
253
+ const { __scopeTooltip: __scopeTooltip , forceMount: forceMount , children: children , container: container } = props;
254
+ const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$PORTAL_NAME, __scopeTooltip);
255
+ return /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$PortalProvider, {
256
+ scope: __scopeTooltip,
257
+ forceMount: forceMount
258
+ }, /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactpresence.Presence, {
259
+ present: forceMount || context.open
260
+ }, /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactportal.Portal, {
261
+ asChild: true,
262
+ container: container
263
+ }, children)));
264
+ };
265
+ /*#__PURE__*/ Object.assign($c34afbc43c90cc6f$export$7b36b8f925ab7497, {
266
+ displayName: $c34afbc43c90cc6f$var$PORTAL_NAME
267
+ });
268
+ /* -------------------------------------------------------------------------------------------------
269
+ * TooltipContent
270
+ * -----------------------------------------------------------------------------------------------*/ const $c34afbc43c90cc6f$var$CONTENT_NAME = 'TooltipContent';
271
+ const $c34afbc43c90cc6f$export$e9003e2be37ec060 = /*#__PURE__*/ $iVrL9$react.forwardRef((props, forwardedRef)=>{
272
+ const portalContext = $c34afbc43c90cc6f$var$usePortalContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip);
273
+ const { forceMount: forceMount = portalContext.forceMount , side: side = 'top' , ...contentProps } = props;
274
+ const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip);
275
+ return /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactpresence.Presence, {
276
+ present: forceMount || context.open
277
+ }, context.disableHoverableContent ? /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentImpl, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({
278
+ side: side
279
+ }, contentProps, {
280
+ ref: forwardedRef
281
+ })) : /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentHoverable, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({
282
+ side: side
283
+ }, contentProps, {
284
+ ref: forwardedRef
285
+ })));
286
+ });
287
+ const $c34afbc43c90cc6f$var$TooltipContentHoverable = /*#__PURE__*/ $iVrL9$react.forwardRef((props, forwardedRef)=>{
288
+ const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip);
289
+ const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip);
290
+ const ref = $iVrL9$react.useRef(null);
291
+ const composedRefs = $iVrL9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
292
+ const [pointerGraceArea, setPointerGraceArea] = $iVrL9$react.useState(null);
293
+ const { trigger: trigger , onClose: onClose } = context;
294
+ const content = ref.current;
295
+ const { onPointerInTransitChange: onPointerInTransitChange } = providerContext;
296
+ const handleRemoveGraceArea = $iVrL9$react.useCallback(()=>{
297
+ setPointerGraceArea(null);
298
+ onPointerInTransitChange(false);
299
+ }, [
300
+ onPointerInTransitChange
301
+ ]);
302
+ const handleCreateGraceArea = $iVrL9$react.useCallback((event, hoverTarget)=>{
303
+ const currentTarget = event.currentTarget;
304
+ const exitPoint = {
305
+ x: event.clientX,
306
+ y: event.clientY
307
+ };
308
+ const exitSide = $c34afbc43c90cc6f$var$getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
309
+ const bleed = exitSide === 'right' || exitSide === 'bottom' ? -5 : 5;
310
+ const isXAxis = exitSide === 'right' || exitSide === 'left';
311
+ const startPoint = isXAxis ? {
312
+ x: event.clientX + bleed,
313
+ y: event.clientY
314
+ } : {
315
+ x: event.clientX,
316
+ y: event.clientY + bleed
317
+ };
318
+ const hoverTargetPoints = $c34afbc43c90cc6f$var$getPointsFromRect(hoverTarget.getBoundingClientRect());
319
+ const graceArea = $c34afbc43c90cc6f$var$getHull([
320
+ startPoint,
321
+ ...hoverTargetPoints
322
+ ]);
323
+ setPointerGraceArea(graceArea);
324
+ onPointerInTransitChange(true);
325
+ }, [
326
+ onPointerInTransitChange
327
+ ]);
328
+ $iVrL9$react.useEffect(()=>{
329
+ return ()=>handleRemoveGraceArea()
330
+ ;
331
+ }, [
332
+ handleRemoveGraceArea
333
+ ]);
334
+ $iVrL9$react.useEffect(()=>{
335
+ if (trigger && content) {
336
+ const handleTriggerLeave = (event)=>handleCreateGraceArea(event, content)
337
+ ;
338
+ const handleContentLeave = (event)=>handleCreateGraceArea(event, trigger)
339
+ ;
340
+ trigger.addEventListener('pointerleave', handleTriggerLeave);
341
+ content.addEventListener('pointerleave', handleContentLeave);
342
+ return ()=>{
343
+ trigger.removeEventListener('pointerleave', handleTriggerLeave);
344
+ content.removeEventListener('pointerleave', handleContentLeave);
345
+ };
346
+ }
347
+ }, [
348
+ trigger,
349
+ content,
350
+ handleCreateGraceArea,
351
+ handleRemoveGraceArea
352
+ ]);
353
+ $iVrL9$react.useEffect(()=>{
354
+ if (pointerGraceArea) {
355
+ const handleTrackPointerGrace = (event)=>{
356
+ const target = event.target;
357
+ const pointerPosition = {
358
+ x: event.clientX,
359
+ y: event.clientY
360
+ };
361
+ const hasEnteredTarget = (trigger === null || trigger === void 0 ? void 0 : trigger.contains(target)) || (content === null || content === void 0 ? void 0 : content.contains(target));
362
+ const isPointerOutsideGraceArea = !$c34afbc43c90cc6f$var$isPointInPolygon(pointerPosition, pointerGraceArea);
363
+ if (hasEnteredTarget) handleRemoveGraceArea();
364
+ else if (isPointerOutsideGraceArea) {
365
+ handleRemoveGraceArea();
366
+ onClose();
367
+ }
368
+ };
369
+ document.addEventListener('pointermove', handleTrackPointerGrace);
370
+ return ()=>document.removeEventListener('pointermove', handleTrackPointerGrace)
371
+ ;
372
+ }
373
+ }, [
374
+ trigger,
375
+ content,
376
+ pointerGraceArea,
377
+ onClose,
378
+ handleRemoveGraceArea
379
+ ]);
380
+ return /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentImpl, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({}, props, {
381
+ ref: composedRefs
382
+ }));
383
+ });
384
+ const [$c34afbc43c90cc6f$var$VisuallyHiddenContentContextProvider, $c34afbc43c90cc6f$var$useVisuallyHiddenContentContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$TOOLTIP_NAME, {
385
+ isInside: false
386
+ });
387
+ const $c34afbc43c90cc6f$var$TooltipContentImpl = /*#__PURE__*/ $iVrL9$react.forwardRef((props, forwardedRef)=>{
388
+ const { __scopeTooltip: __scopeTooltip , children: children , 'aria-label': ariaLabel , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , ...contentProps } = props;
389
+ const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, __scopeTooltip);
390
+ const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip);
391
+ const { onClose: onClose } = context; // Close this tooltip if another one opens
392
+ $iVrL9$react.useEffect(()=>{
393
+ document.addEventListener($c34afbc43c90cc6f$var$TOOLTIP_OPEN, onClose);
394
+ return ()=>document.removeEventListener($c34afbc43c90cc6f$var$TOOLTIP_OPEN, onClose)
395
+ ;
396
+ }, [
397
+ onClose
398
+ ]); // Close the tooltip if the trigger is scrolled
399
+ $iVrL9$react.useEffect(()=>{
400
+ if (context.trigger) {
401
+ const handleScroll = (event)=>{
402
+ const target = event.target;
403
+ if (target !== null && target !== void 0 && target.contains(context.trigger)) onClose();
404
+ };
405
+ window.addEventListener('scroll', handleScroll, {
406
+ capture: true
407
+ });
408
+ return ()=>window.removeEventListener('scroll', handleScroll, {
409
+ capture: true
410
+ })
411
+ ;
412
+ }
413
+ }, [
414
+ context.trigger,
415
+ onClose
416
+ ]);
417
+ return /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactdismissablelayer.DismissableLayer, {
418
+ asChild: true,
419
+ disableOutsidePointerEvents: false,
420
+ onEscapeKeyDown: onEscapeKeyDown,
421
+ onPointerDownOutside: onPointerDownOutside,
422
+ onFocusOutside: (event)=>event.preventDefault()
423
+ ,
424
+ onDismiss: onClose
425
+ }, /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactpopper.Content, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({
426
+ "data-state": context.stateAttribute
427
+ }, popperScope, contentProps, {
428
+ ref: forwardedRef,
429
+ style: {
430
+ ...contentProps.style,
431
+ // re-namespace exposed content custom property
432
+ ['--radix-tooltip-content-transform-origin']: 'var(--radix-popper-transform-origin)'
433
+ }
434
+ }), /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactslot.Slottable, null, children), /*#__PURE__*/ $iVrL9$react.createElement($c34afbc43c90cc6f$var$VisuallyHiddenContentContextProvider, {
435
+ scope: __scopeTooltip,
436
+ isInside: true
437
+ }, /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactvisuallyhidden.Root, {
438
+ id: context.contentId,
439
+ role: "tooltip"
440
+ }, ariaLabel || children))));
441
+ });
442
+ /*#__PURE__*/ Object.assign($c34afbc43c90cc6f$export$e9003e2be37ec060, {
443
+ displayName: $c34afbc43c90cc6f$var$CONTENT_NAME
444
+ });
445
+ /* -------------------------------------------------------------------------------------------------
446
+ * TooltipArrow
447
+ * -----------------------------------------------------------------------------------------------*/ const $c34afbc43c90cc6f$var$ARROW_NAME = 'TooltipArrow';
448
+ const $c34afbc43c90cc6f$export$c27ee0ad710f7559 = /*#__PURE__*/ $iVrL9$react.forwardRef((props, forwardedRef)=>{
449
+ const { __scopeTooltip: __scopeTooltip , ...arrowProps } = props;
450
+ const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip);
451
+ const visuallyHiddenContentContext = $c34afbc43c90cc6f$var$useVisuallyHiddenContentContext($c34afbc43c90cc6f$var$ARROW_NAME, __scopeTooltip); // if the arrow is inside the `VisuallyHidden`, we don't want to render it all to
452
+ // prevent issues in positioning the arrow due to the duplicate
453
+ return visuallyHiddenContentContext.isInside ? null : /*#__PURE__*/ $iVrL9$react.createElement($iVrL9$radixuireactpopper.Arrow, ($parcel$interopDefault($iVrL9$babelruntimehelpersextends))({}, popperScope, arrowProps, {
454
+ ref: forwardedRef
455
+ }));
456
+ });
457
+ /*#__PURE__*/ Object.assign($c34afbc43c90cc6f$export$c27ee0ad710f7559, {
458
+ displayName: $c34afbc43c90cc6f$var$ARROW_NAME
459
+ });
460
+ /* -----------------------------------------------------------------------------------------------*/ function $c34afbc43c90cc6f$var$getExitSideFromRect(point, rect) {
461
+ const top = Math.abs(rect.top - point.y);
462
+ const bottom = Math.abs(rect.bottom - point.y);
463
+ const right = Math.abs(rect.right - point.x);
464
+ const left = Math.abs(rect.left - point.x);
465
+ switch(Math.min(top, bottom, right, left)){
466
+ case left:
467
+ return 'left';
468
+ case right:
469
+ return 'right';
470
+ case top:
471
+ return 'top';
472
+ case bottom:
473
+ return 'bottom';
474
+ default:
475
+ return null;
476
+ }
477
+ }
478
+ function $c34afbc43c90cc6f$var$getPointsFromRect(rect) {
479
+ const { top: top , right: right , bottom: bottom , left: left } = rect;
480
+ return [
481
+ {
482
+ x: left,
483
+ y: top
484
+ },
485
+ {
486
+ x: right,
487
+ y: top
488
+ },
489
+ {
490
+ x: right,
491
+ y: bottom
492
+ },
493
+ {
494
+ x: left,
495
+ y: bottom
496
+ }
497
+ ];
498
+ } // Determine if a point is inside of a polygon.
499
+ // Based on https://github.com/substack/point-in-polygon
500
+ function $c34afbc43c90cc6f$var$isPointInPolygon(point, polygon) {
501
+ const { x: x , y: y } = point;
502
+ let inside = false;
503
+ for(let i = 0, j = polygon.length - 1; i < polygon.length; j = i++){
504
+ const xi = polygon[i].x;
505
+ const yi = polygon[i].y;
506
+ const xj = polygon[j].x;
507
+ const yj = polygon[j].y; // prettier-ignore
508
+ const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
509
+ if (intersect) inside = !inside;
510
+ }
511
+ return inside;
512
+ } // Returns a new array of points representing the convex hull of the given set of points.
513
+ // https://www.nayuki.io/page/convex-hull-algorithm
514
+ function $c34afbc43c90cc6f$var$getHull(points) {
515
+ const newPoints = points.slice();
516
+ newPoints.sort((a, b)=>{
517
+ if (a.x < b.x) return -1;
518
+ else if (a.x > b.x) return 1;
519
+ else if (a.y < b.y) return -1;
520
+ else if (a.y > b.y) return 1;
521
+ else return 0;
522
+ });
523
+ return $c34afbc43c90cc6f$var$getHullPresorted(newPoints);
524
+ } // Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time.
525
+ function $c34afbc43c90cc6f$var$getHullPresorted(points) {
526
+ if (points.length <= 1) return points.slice();
527
+ const upperHull = [];
528
+ for(let i = 0; i < points.length; i++){
529
+ const p = points[i];
530
+ while(upperHull.length >= 2){
531
+ const q = upperHull[upperHull.length - 1];
532
+ const r = upperHull[upperHull.length - 2];
533
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();
534
+ else break;
535
+ }
536
+ upperHull.push(p);
537
+ }
538
+ upperHull.pop();
539
+ const lowerHull = [];
540
+ for(let i1 = points.length - 1; i1 >= 0; i1--){
541
+ const p = points[i1];
542
+ while(lowerHull.length >= 2){
543
+ const q = lowerHull[lowerHull.length - 1];
544
+ const r = lowerHull[lowerHull.length - 2];
545
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();
546
+ else break;
547
+ }
548
+ lowerHull.push(p);
549
+ }
550
+ lowerHull.pop();
551
+ if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) return upperHull;
552
+ else return upperHull.concat(lowerHull);
553
+ }
554
+ const $c34afbc43c90cc6f$export$2881499e37b75b9a = $c34afbc43c90cc6f$export$f78649fb9ca566b8;
555
+ const $c34afbc43c90cc6f$export$be92b6f5f03c0fe9 = $c34afbc43c90cc6f$export$28c660c63b792dea;
556
+ const $c34afbc43c90cc6f$export$41fb9f06171c75f4 = $c34afbc43c90cc6f$export$8c610744efcf8a1d;
557
+ const $c34afbc43c90cc6f$export$602eac185826482c = $c34afbc43c90cc6f$export$7b36b8f925ab7497;
558
+ const $c34afbc43c90cc6f$export$7c6e2c02157bb7d2 = $c34afbc43c90cc6f$export$e9003e2be37ec060;
559
+ const $c34afbc43c90cc6f$export$21b07c8f274aebd5 = $c34afbc43c90cc6f$export$c27ee0ad710f7559;
560
+
561
+
562
+
563
+
2
564
  //# sourceMappingURL=index.js.map