@ariakit/react-core
Version:
Ariakit React core
122 lines (120 loc) • 3.66 kB
JavaScript
"use client";
import {
TooltipScopedContextProvider,
useTooltipProviderContext
} from "../__chunks/WVT277Z4.js";
import {
useHovercard
} from "../__chunks/7QZRSZWP.js";
import "../__chunks/X7QOZUD3.js";
import "../__chunks/2WDBOH5E.js";
import "../__chunks/4Z6JSVUY.js";
import {
createDialogComponent
} from "../__chunks/2S4Q4M35.js";
import "../__chunks/SWBQ42SL.js";
import "../__chunks/AOQQTIBO.js";
import "../__chunks/5M6RIVE2.js";
import "../__chunks/IEBFIEPB.js";
import "../__chunks/RBTTLCIN.js";
import "../__chunks/UG4JNWMY.js";
import "../__chunks/6GXEOXGT.js";
import "../__chunks/Y7OMCS5T.js";
import "../__chunks/HLTQOHKZ.js";
import "../__chunks/DJAL6CN3.js";
import "../__chunks/NQXOL4RD.js";
import "../__chunks/NE2XEEQN.js";
import "../__chunks/CZ4GFWYL.js";
import "../__chunks/Z5GCVBAY.js";
import "../__chunks/IGR4SXG2.js";
import "../__chunks/677M2CI3.js";
import "../__chunks/S7U6BLGA.js";
import "../__chunks/LVVSG7VH.js";
import "../__chunks/3NDVDEB4.js";
import "../__chunks/AOUGVQZ3.js";
import "../__chunks/K2ZF5NU7.js";
import "../__chunks/63XF7ACK.js";
import "../__chunks/HAX24JB7.js";
import "../__chunks/5NIUVND5.js";
import "../__chunks/33YRLYNQ.js";
import "../__chunks/HIN2NSI2.js";
import "../__chunks/MWF5B7KS.js";
import "../__chunks/63N3TCQX.js";
import "../__chunks/FFSBKSAM.js";
import "../__chunks/US3TW2XI.js";
import "../__chunks/SWN3JYXT.js";
import "../__chunks/Q3KUZPD7.js";
import {
createElement,
createHook,
forwardRef
} from "../__chunks/ILRXHV7V.js";
import {
useWrapElement
} from "../__chunks/K2XTQB3X.js";
import "../__chunks/YXGXYGQX.js";
// src/tooltip/tooltip.tsx
import { contains } from "@ariakit/core/utils/dom";
import { invariant, isFalsyBooleanCallback } from "@ariakit/core/utils/misc";
import { jsx } from "react/jsx-runtime";
var TagName = "div";
var useTooltip = createHook(
function useTooltip2({
store,
portal = true,
gutter = 8,
preserveTabOrder = false,
hideOnHoverOutside = true,
hideOnInteractOutside = true,
...props
}) {
const context = useTooltipProviderContext();
store = store || context;
invariant(
store,
process.env.NODE_ENV !== "production" && "Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component."
);
props = useWrapElement(
props,
(element) => /* @__PURE__ */ jsx(TooltipScopedContextProvider, { value: store, children: element }),
[store]
);
const role = store.useState(
(state) => state.type === "description" ? "tooltip" : "none"
);
props = { role, ...props };
props = useHovercard({
...props,
store,
portal,
gutter,
preserveTabOrder,
hideOnHoverOutside(event) {
if (isFalsyBooleanCallback(hideOnHoverOutside, event)) return false;
const anchorElement = store == null ? void 0 : store.getState().anchorElement;
if (!anchorElement) return true;
if ("focusVisible" in anchorElement.dataset) return false;
return true;
},
hideOnInteractOutside: (event) => {
if (isFalsyBooleanCallback(hideOnInteractOutside, event)) return false;
const anchorElement = store == null ? void 0 : store.getState().anchorElement;
if (!anchorElement) return true;
if (contains(anchorElement, event.target)) return false;
return true;
}
});
return props;
}
);
var Tooltip = createDialogComponent(
forwardRef(function Tooltip2(props) {
const htmlProps = useTooltip(props);
return createElement(TagName, htmlProps);
}),
useTooltipProviderContext
);
export {
Tooltip,
useTooltip
};