@ariakit/react-core
Version:
Ariakit React core
133 lines (131 loc) • 3.98 kB
JavaScript
"use client";
import {
TooltipScopedContextProvider,
useTooltipProviderContext
} from "../__chunks/F4IYJ42G.js";
import {
useHovercard
} from "../__chunks/ZFX5QU3H.js";
import "../__chunks/X7QOZUD3.js";
import "../__chunks/EM5CXX6A.js";
import "../__chunks/G7GW6PWC.js";
import {
createDialogComponent
} from "../__chunks/DVTPF4J4.js";
import "../__chunks/WAGAC6PJ.js";
import "../__chunks/AOQQTIBO.js";
import "../__chunks/5M6RIVE2.js";
import "../__chunks/W3VI7GFU.js";
import "../__chunks/XX67R432.js";
import "../__chunks/ZWYATQFU.js";
import "../__chunks/6GXEOXGT.js";
import "../__chunks/HP6HHD56.js";
import "../__chunks/HLTQOHKZ.js";
import "../__chunks/TOU75OXH.js";
import "../__chunks/BGQ3KQ5M.js";
import "../__chunks/YKJECYU7.js";
import "../__chunks/CZ4GFWYL.js";
import "../__chunks/Z5GCVBAY.js";
import "../__chunks/IGR4SXG2.js";
import "../__chunks/677M2CI3.js";
import "../__chunks/S7U6BLGA.js";
import "../__chunks/JEWPFJH2.js";
import "../__chunks/3NDVDEB4.js";
import "../__chunks/AOUGVQZ3.js";
import "../__chunks/K2ZF5NU7.js";
import "../__chunks/63XF7ACK.js";
import "../__chunks/KFH4SEIX.js";
import "../__chunks/BM6PGYQY.js";
import "../__chunks/WYCIER3C.js";
import "../__chunks/XL7CSKGW.js";
import "../__chunks/MTZPJQMC.js";
import "../__chunks/RS7LB2H4.js";
import "../__chunks/S6EF7IVO.js";
import "../__chunks/PFRGBC2K.js";
import "../__chunks/SWN3JYXT.js";
import "../__chunks/YV4JVR4I.js";
import {
createElement,
createHook,
forwardRef
} from "../__chunks/LMDWO4NN.js";
import {
useWrapElement
} from "../__chunks/ABQUS43J.js";
import "../__chunks/SK3NAZA3.js";
import {
__objRest,
__spreadProps,
__spreadValues
} from "../__chunks/3YLGPPWQ.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(_a) {
var _b = _a, {
store,
portal = true,
gutter = 8,
preserveTabOrder = false,
hideOnHoverOutside = true,
hideOnInteractOutside = true
} = _b, props = __objRest(_b, [
"store",
"portal",
"gutter",
"preserveTabOrder",
"hideOnHoverOutside",
"hideOnInteractOutside"
]);
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 = __spreadValues({ role }, props);
props = useHovercard(__spreadProps(__spreadValues({}, 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
};