@ariakit/react-core
Version:
Ariakit React core
125 lines (123 loc) • 3.7 kB
JavaScript
"use client";
import {
TooltipScopedContextProvider,
useTooltipProviderContext
} from "../__chunks/UUNLKF37.js";
import {
useHovercard
} from "../__chunks/HXWJHWVX.js";
import "../__chunks/PYFWN42T.js";
import "../__chunks/4LEWR5KQ.js";
import "../__chunks/AOOXE4FT.js";
import {
createDialogComponent
} from "../__chunks/KOWQMA5P.js";
import "../__chunks/27UGDV3K.js";
import "../__chunks/AOQQTIBO.js";
import "../__chunks/5M6RIVE2.js";
import "../__chunks/5L75JEQF.js";
import "../__chunks/POCYREJH.js";
import "../__chunks/GDMALITU.js";
import "../__chunks/6GXEOXGT.js";
import "../__chunks/VKPF3GCK.js";
import "../__chunks/R3NHSIAL.js";
import "../__chunks/SUN7W7XS.js";
import "../__chunks/336RKHJD.js";
import "../__chunks/QDZPIHAY.js";
import "../__chunks/CZ4GFWYL.js";
import "../__chunks/Z5GCVBAY.js";
import "../__chunks/IGR4SXG2.js";
import "../__chunks/677M2CI3.js";
import "../__chunks/S7U6BLGA.js";
import "../__chunks/QXEZ5Q7H.js";
import "../__chunks/3NDVDEB4.js";
import "../__chunks/AOUGVQZ3.js";
import "../__chunks/K2ZF5NU7.js";
import "../__chunks/63XF7ACK.js";
import "../__chunks/HIPI64MW.js";
import "../__chunks/NGV5ZW5X.js";
import "../__chunks/H5Z3PUKM.js";
import "../__chunks/AB647VKY.js";
import "../__chunks/467XRHWL.js";
import "../__chunks/2LVHRIRC.js";
import "../__chunks/FYYAZUDI.js";
import "../__chunks/3F6D4KUU.js";
import "../__chunks/SWN3JYXT.js";
import {
useStoreState
} from "../__chunks/SOQQIDO4.js";
import {
createElement,
createHook,
forwardRef
} from "../__chunks/L4OUMOCQ.js";
import {
useWrapElement
} from "../__chunks/W2TDKEPX.js";
import "../__chunks/AZVQSWGA.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 = useStoreState(
store,
(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
};