@ariakit/react-core
Version:
Ariakit React core
133 lines (131 loc) • 3.98 kB
JavaScript
"use client";
import {
TooltipScopedContextProvider,
useTooltipProviderContext
} from "../__chunks/L3J7PHFC.js";
import {
useHovercard
} from "../__chunks/IUFFNNPK.js";
import "../__chunks/X7QOZUD3.js";
import "../__chunks/7Z7JH52O.js";
import "../__chunks/C6DAL6ZN.js";
import {
createDialogComponent
} from "../__chunks/CAGBPNDP.js";
import "../__chunks/M5DFOEFU.js";
import "../__chunks/AOQQTIBO.js";
import "../__chunks/5M6RIVE2.js";
import "../__chunks/S2F2XXEH.js";
import "../__chunks/DXGKYUAD.js";
import "../__chunks/LC6GJMGV.js";
import "../__chunks/6GXEOXGT.js";
import "../__chunks/JZEJYXOQ.js";
import "../__chunks/HLTQOHKZ.js";
import "../__chunks/PVECYOSC.js";
import "../__chunks/SOMPWLIQ.js";
import "../__chunks/W6WVJJEY.js";
import "../__chunks/CZ4GFWYL.js";
import "../__chunks/Z5GCVBAY.js";
import "../__chunks/IGR4SXG2.js";
import "../__chunks/677M2CI3.js";
import "../__chunks/S7U6BLGA.js";
import "../__chunks/FVE2C5B3.js";
import "../__chunks/3NDVDEB4.js";
import "../__chunks/AOUGVQZ3.js";
import "../__chunks/K2ZF5NU7.js";
import "../__chunks/63XF7ACK.js";
import "../__chunks/K4R5DNTX.js";
import "../__chunks/Y2U4BRIM.js";
import "../__chunks/T22PY7TE.js";
import "../__chunks/QJ4LGO2N.js";
import "../__chunks/Y67KZUMI.js";
import "../__chunks/T2AZQXQU.js";
import "../__chunks/ABN76PSX.js";
import "../__chunks/OE2EFRVA.js";
import "../__chunks/SWN3JYXT.js";
import "../__chunks/RTNCFSKZ.js";
import {
createElement,
createHook,
forwardRef
} from "../__chunks/VOQWLFSQ.js";
import {
useWrapElement
} from "../__chunks/5GGHRIN3.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
};