@ariakit/react
Version:
Toolkit for building accessible web apps with React
76 lines (56 loc) • 2.73 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _ITEGEFBHcjs = require('./ITEGEFBH.cjs');
var _I4KB2YNAcjs = require('./I4KB2YNA.cjs');
var _5FQZLBJ7cjs = require('./5FQZLBJ7.cjs');
var _LZ6L3ECGcjs = require('./LZ6L3ECG.cjs');
// ../ariakit-react-components/dist/disclosure/disclosure.js
var _react = require('react');
var TagName = "button";
var symbol = /* @__PURE__ */ Symbol("disclosure");
var useDisclosure = _LZ6L3ECGcjs.createHook.call(void 0, function useDisclosure2({ store, toggleOnClick = true, ...props }) {
var _a;
const context = _ITEGEFBHcjs.useDisclosureProviderContext.call(void 0, );
store = store || context;
_LZ6L3ECGcjs.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 = _5FQZLBJ7cjs.useStoreState.call(void 0, store, "disclosureElement");
const open = _5FQZLBJ7cjs.useStoreState.call(void 0, store, "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 = _LZ6L3ECGcjs.useBooleanEvent.call(void 0, toggleOnClick);
const [isDuplicate, metadataProps] = _LZ6L3ECGcjs.useMetadataProps.call(void 0, props, symbol, true);
const onClick = _LZ6L3ECGcjs.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();
});
props = {
"aria-expanded": expanded,
"aria-controls": (_a = _5FQZLBJ7cjs.useStoreState.call(void 0, store, "contentElement")) == null ? void 0 : _a.id,
...metadataProps,
...props,
ref: _LZ6L3ECGcjs.useMergeRefs.call(void 0, ref, props.ref),
onClick
};
props = _I4KB2YNAcjs.useButton.call(void 0, props);
return props;
});
var Disclosure = _LZ6L3ECGcjs.forwardRef.call(void 0, function Disclosure2(props) {
return _LZ6L3ECGcjs.createElement.call(void 0, TagName, useDisclosure(props));
});
exports.useDisclosure = useDisclosure; exports.Disclosure = Disclosure;