@ariakit/react
Version:
Toolkit for building accessible web apps with React
249 lines (204 loc) • 9.74 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _JGG73QWScjs = require('./JGG73QWS.cjs');
var _G2NDLMHVcjs = require('./G2NDLMHV.cjs');
var _KJ5H7OHHcjs = require('./KJ5H7OHH.cjs');
var _5FQZLBJ7cjs = require('./5FQZLBJ7.cjs');
var _LZ6L3ECGcjs = require('./LZ6L3ECG.cjs');
// ../ariakit-react-components/dist/tooltip/tooltip-context.js
var ctx = _LZ6L3ECGcjs.createStoreContext.call(void 0, [_JGG73QWScjs.HovercardContextProvider], [_JGG73QWScjs.HovercardScopedContextProvider]);
var useTooltipContext = ctx.useContext;
var useTooltipScopedContext = ctx.useScopedContext;
var useTooltipProviderContext = ctx.useProviderContext;
var TooltipContextProvider = ctx.ContextProvider;
var TooltipScopedContextProvider = ctx.ScopedContextProvider;
// ../ariakit-react-components/dist/tooltip/tooltip.js
var _jsxruntime = require('react/jsx-runtime');
var TagName = "div";
var useTooltip = _LZ6L3ECGcjs.createHook.call(void 0, function useTooltip2({ store, portal = true, gutter = 8, preserveTabOrder = false, hideOnHoverOutside = true, hideOnInteractOutside = true, ...props }) {
const context = useTooltipProviderContext();
store = store || context;
_LZ6L3ECGcjs.invariant.call(void 0, store, process.env.NODE_ENV !== "production" && "Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component.");
props = _LZ6L3ECGcjs.useWrapElement.call(void 0, props, (element) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipScopedContextProvider, {
value: store,
children: element
}), [store]);
props = {
role: _5FQZLBJ7cjs.useStoreState.call(void 0, store, (state) => state.type === "description" ? "tooltip" : "none"),
...props
};
props = _JGG73QWScjs.useHovercard.call(void 0, {
...props,
store,
portal,
gutter,
preserveTabOrder,
hideOnHoverOutside(event) {
if (_LZ6L3ECGcjs.isFalsyBooleanCallback.call(void 0, 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 (_LZ6L3ECGcjs.isFalsyBooleanCallback.call(void 0, hideOnInteractOutside, event)) return false;
const anchorElement = store == null ? void 0 : store.getState().anchorElement;
if (!anchorElement) return true;
if (_LZ6L3ECGcjs.contains.call(void 0, anchorElement, event.target)) return false;
return true;
}
});
return props;
});
var Tooltip = _KJ5H7OHHcjs.createDialogComponent.call(void 0, _LZ6L3ECGcjs.forwardRef.call(void 0, function Tooltip2(props) {
return _LZ6L3ECGcjs.createElement.call(void 0, TagName, useTooltip(props));
}), useTooltipProviderContext);
// ../ariakit-react-components/dist/tooltip/tooltip-anchor.js
var _react = require('react');
var TagName2 = "div";
var globalStore = _5FQZLBJ7cjs.createStore.call(void 0, { activeStore: null });
var hidingStores = /* @__PURE__ */ new WeakSet();
function createRemoveStoreCallback(store) {
return () => {
const { activeStore } = globalStore.getState();
if (activeStore !== store) return;
globalStore.setState("activeStore", null);
};
}
function hideStore(store) {
if (!store) return;
hidingStores.add(store);
store.hide();
queueMicrotask(() => hidingStores.delete(store));
}
var useTooltipAnchor = _LZ6L3ECGcjs.createHook.call(void 0, function useTooltipAnchor2({ store, showOnHover = true, ...props }) {
const context = useTooltipProviderContext();
store = store || context;
_LZ6L3ECGcjs.invariant.call(void 0, store, process.env.NODE_ENV !== "production" && "TooltipAnchor must receive a `store` prop or be wrapped in a TooltipProvider component.");
const canShowOnHoverRef = _react.useRef.call(void 0, false);
_react.useEffect.call(void 0, () => {
return _5FQZLBJ7cjs.sync.call(void 0, store, ["mounted"], (state) => {
if (state.mounted) return;
canShowOnHoverRef.current = false;
});
}, [store]);
_react.useEffect.call(void 0, () => {
if (!store) return;
const removeStore = createRemoveStoreCallback(store);
return _LZ6L3ECGcjs.chain.call(void 0, removeStore, _5FQZLBJ7cjs.sync.call(void 0, store, ["mounted"], (state) => {
if (!store) return;
if (state.mounted) {
const { activeStore } = globalStore.getState();
if (activeStore !== store) {
if (hidingStores.has(store)) return;
hideStore(activeStore);
}
return globalStore.setState("activeStore", store);
}
const id = setTimeout(removeStore, store.getState().skipTimeout);
return () => clearTimeout(id);
}));
}, [store]);
const onMouseEnterProp = props.onMouseEnter;
const onMouseEnter = _LZ6L3ECGcjs.useEvent.call(void 0, (event) => {
onMouseEnterProp == null ? void 0 : onMouseEnterProp(event);
canShowOnHoverRef.current = true;
});
const onFocusVisibleProp = props.onFocusVisible;
const onFocusVisible = _LZ6L3ECGcjs.useEvent.call(void 0, (event) => {
onFocusVisibleProp == null ? void 0 : onFocusVisibleProp(event);
if (event.defaultPrevented) return;
store == null ? void 0 : store.setAnchorElement(event.currentTarget);
store == null ? void 0 : store.show();
});
const onBlurProp = props.onBlur;
const onBlur = _LZ6L3ECGcjs.useEvent.call(void 0, (event) => {
onBlurProp == null ? void 0 : onBlurProp(event);
if (event.defaultPrevented) return;
const { activeStore } = globalStore.getState();
canShowOnHoverRef.current = false;
if (activeStore === store) globalStore.setState("activeStore", null);
});
const labelledBy = _5FQZLBJ7cjs.useStoreState.call(void 0, store, (state) => {
var _a;
return state.type === "label" ? (_a = state.contentElement) == null ? void 0 : _a.id : void 0;
});
props = {
"aria-labelledby": props["aria-label"] == null ? labelledBy : void 0,
...props,
onMouseEnter,
onFocusVisible,
onBlur
};
props = _JGG73QWScjs.useHovercardAnchor.call(void 0, {
store,
showOnHover(event) {
if (!canShowOnHoverRef.current) return false;
if (_LZ6L3ECGcjs.isFalsyBooleanCallback.call(void 0, showOnHover, event)) return false;
const { activeStore } = globalStore.getState();
if (!activeStore) return true;
store == null ? void 0 : store.show();
return false;
},
...props
});
return props;
});
var TooltipAnchor = _LZ6L3ECGcjs.forwardRef.call(void 0, function TooltipAnchor2(props) {
return _LZ6L3ECGcjs.createElement.call(void 0, TagName2, useTooltipAnchor(props));
});
// ../ariakit-react-components/dist/tooltip/tooltip-arrow.js
var TagName3 = "div";
var useTooltipArrow = _LZ6L3ECGcjs.createHook.call(void 0, function useTooltipArrow2({ store, size = 16, ...props }) {
const context = useTooltipContext();
store = store || context;
_LZ6L3ECGcjs.invariant.call(void 0, store, process.env.NODE_ENV !== "production" && "TooltipArrow must be wrapped in a Tooltip component.");
props = _G2NDLMHVcjs.usePopoverArrow.call(void 0, {
store,
size,
...props
});
return props;
});
var TooltipArrow = _LZ6L3ECGcjs.forwardRef.call(void 0, function TooltipArrow2(props) {
return _LZ6L3ECGcjs.createElement.call(void 0, TagName3, useTooltipArrow(props));
});
// ../ariakit-components/dist/tooltip/tooltip-store.js
function createTooltipStore(props = {}) {
var _a;
if (process.env.NODE_ENV !== "production") {
if (props.type === "label") console.warn("The `type` option on the tooltip store is deprecated.", "Render a visually hidden label or use the `aria-label` or `aria-labelledby` attributes on the anchor element instead.", "See https://ariakit.com/components/tooltip#tooltip-anchors-must-have-accessible-names");
}
const syncState = (_a = props.store) == null ? void 0 : _a.getState();
const hovercard = _JGG73QWScjs.createHovercardStore.call(void 0, {
...props,
placement: _LZ6L3ECGcjs.defaultValue.call(void 0, props.placement, syncState == null ? void 0 : syncState.placement, "top"),
hideTimeout: _LZ6L3ECGcjs.defaultValue.call(void 0, props.hideTimeout, syncState == null ? void 0 : syncState.hideTimeout, 0)
});
const tooltip = _5FQZLBJ7cjs.createStore.call(void 0, {
...hovercard.getState(),
type: _LZ6L3ECGcjs.defaultValue.call(void 0, props.type, syncState == null ? void 0 : syncState.type, "description"),
skipTimeout: _LZ6L3ECGcjs.defaultValue.call(void 0, props.skipTimeout, syncState == null ? void 0 : syncState.skipTimeout, 300)
}, hovercard, props.store);
return {
...hovercard,
...tooltip
};
}
// ../ariakit-react-components/dist/tooltip/tooltip-store.js
function useTooltipStoreProps(store, update, props) {
_5FQZLBJ7cjs.useStoreProps.call(void 0, store, props, "type");
_5FQZLBJ7cjs.useStoreProps.call(void 0, store, props, "skipTimeout");
return _JGG73QWScjs.useHovercardStoreProps.call(void 0, store, update, props);
}
function useTooltipStore(props = {}) {
const [store, update] = _5FQZLBJ7cjs.useStore.call(void 0, createTooltipStore, props);
return useTooltipStoreProps(store, update, props);
}
// ../ariakit-react-components/dist/tooltip/tooltip-provider.js
function TooltipProvider(props = {}) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipContextProvider, {
value: useTooltipStore(props),
children: props.children
});
}
exports.useTooltipContext = useTooltipContext; exports.Tooltip = Tooltip; exports.TooltipAnchor = TooltipAnchor; exports.TooltipArrow = TooltipArrow; exports.useTooltipStore = useTooltipStore; exports.TooltipProvider = TooltipProvider;