@ariakit/react-core
Version:
Ariakit React core
82 lines (60 loc) • 3.04 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _KVXNVDJKcjs = require('./KVXNVDJK.cjs');
var _F4ZQFU26cjs = require('./F4ZQFU26.cjs');
var _WULEED4Qcjs = require('./WULEED4Q.cjs');
var _OZM4QA2Vcjs = require('./OZM4QA2V.cjs');
var _7EQBAZ46cjs = require('./7EQBAZ46.cjs');
// src/disclosure/disclosure.tsx
var _misc = require('@ariakit/core/utils/misc');
var _react = require('react');
var TagName = "button";
var symbol = Symbol("disclosure");
var useDisclosure = _WULEED4Qcjs.createHook.call(void 0,
function useDisclosure2(_a) {
var _b = _a, { store, toggleOnClick = true } = _b, props = _7EQBAZ46cjs.__objRest.call(void 0, _b, ["store", "toggleOnClick"]);
const context = _KVXNVDJKcjs.useDisclosureProviderContext.call(void 0, );
store = store || context;
_misc.invariant.call(void 0,
store,
process.env.NODE_ENV !== "production" && "Disclosure must receive a `store` prop or be wrapped in a DisclosureProvider component."
);
const ref = _react.useRef.call(void 0, null);
const [expanded, setExpanded] = _react.useState.call(void 0, false);
const disclosureElement = store.useState("disclosureElement");
const open = store.useState("open");
_react.useEffect.call(void 0, () => {
let isCurrentDisclosure = disclosureElement === ref.current;
if (!(disclosureElement == null ? void 0 : disclosureElement.isConnected)) {
store == null ? void 0 : store.setDisclosureElement(ref.current);
isCurrentDisclosure = true;
}
setExpanded(open && isCurrentDisclosure);
}, [disclosureElement, store, open]);
const onClickProp = props.onClick;
const toggleOnClickProp = _OZM4QA2Vcjs.useBooleanEvent.call(void 0, toggleOnClick);
const [isDuplicate, metadataProps] = _OZM4QA2Vcjs.useMetadataProps.call(void 0, props, symbol, true);
const onClick = _OZM4QA2Vcjs.useEvent.call(void 0, (event) => {
onClickProp == null ? void 0 : onClickProp(event);
if (event.defaultPrevented) return;
if (isDuplicate) return;
if (!toggleOnClickProp(event)) return;
store == null ? void 0 : store.setDisclosureElement(event.currentTarget);
store == null ? void 0 : store.toggle();
});
const contentElement = store.useState("contentElement");
props = _7EQBAZ46cjs.__spreadProps.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, {
"aria-expanded": expanded,
"aria-controls": contentElement == null ? void 0 : contentElement.id
}, metadataProps), props), {
ref: _OZM4QA2Vcjs.useMergeRefs.call(void 0, ref, props.ref),
onClick
});
props = _F4ZQFU26cjs.useButton.call(void 0, props);
return props;
}
);
var Disclosure = _WULEED4Qcjs.forwardRef.call(void 0, function Disclosure2(props) {
const htmlProps = useDisclosure(props);
return _WULEED4Qcjs.createElement.call(void 0, TagName, htmlProps);
});
exports.useDisclosure = useDisclosure; exports.Disclosure = Disclosure;