@ariakit/react
Version:
Toolkit for building accessible web apps with React
124 lines (91 loc) • 3.96 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _ZGRVC6GZcjs = require('./ZGRVC6GZ.cjs');
var _HEDXFQCWcjs = require('./HEDXFQCW.cjs');
var _FHQLDZSWcjs = require('./FHQLDZSW.cjs');
var _5FQZLBJ7cjs = require('./5FQZLBJ7.cjs');
var _LZ6L3ECGcjs = require('./LZ6L3ECG.cjs');
// ../ariakit-react-components/dist/radio/radio-group.js
var _jsxruntime = require('react/jsx-runtime');
var TagName = "div";
function isCheckedRadio(element) {
if (!element) return false;
if (element.tagName === "INPUT") {
const { type, checked } = element;
if (type === "radio") return checked;
}
if (element.getAttribute("role") !== "radio") return false;
return element.getAttribute("aria-checked") === "true";
}
function getCheckedRadioId(store) {
var _a;
const { renderedItems } = store.getState();
return (_a = renderedItems.find((item) => isCheckedRadio(item.element))) == null ? void 0 : _a.id;
}
var useRadioGroup = _LZ6L3ECGcjs.createHook.call(void 0, function useRadioGroup2({ store, ...props }) {
const context = _ZGRVC6GZcjs.useRadioProviderContext.call(void 0, );
store = store || context;
_LZ6L3ECGcjs.invariant.call(void 0, store, process.env.NODE_ENV !== "production" && "RadioGroup must receive a `store` prop or be wrapped in a RadioProvider component.");
props = _LZ6L3ECGcjs.useWrapElement.call(void 0, props, (element) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ZGRVC6GZcjs.RadioScopedContextProvider, {
value: store,
children: element
}), [store]);
const onBlurCaptureProp = props.onBlurCapture;
const onBlurCapture = _LZ6L3ECGcjs.useEvent.call(void 0, (event) => {
onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event);
if (event.defaultPrevented) return;
if (!_LZ6L3ECGcjs.isFocusEventOutside.call(void 0, event)) return;
const checkedId = getCheckedRadioId(store);
if (!checkedId) return;
store.setActiveId(checkedId);
});
props = {
role: "radiogroup",
...props,
onBlurCapture
};
props = _HEDXFQCWcjs.useComposite.call(void 0, {
store,
...props
});
return props;
});
var RadioGroup = _LZ6L3ECGcjs.forwardRef.call(void 0, function RadioGroup2(props) {
return _LZ6L3ECGcjs.createElement.call(void 0, TagName, useRadioGroup(props));
});
// ../ariakit-components/dist/radio/radio-store.js
function createRadioStore(props = {}) {
var _a;
const syncState = (_a = props.store) == null ? void 0 : _a.getState();
const composite = _FHQLDZSWcjs.createCompositeStore.call(void 0, {
...props,
focusLoop: _LZ6L3ECGcjs.defaultValue.call(void 0, props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true)
});
const radio = _5FQZLBJ7cjs.createStore.call(void 0, {
...composite.getState(),
value: _LZ6L3ECGcjs.defaultValue.call(void 0, props.value, syncState == null ? void 0 : syncState.value, props.defaultValue, null)
}, composite, props.store);
return {
...composite,
...radio,
setValue: (value) => radio.setState("value", value)
};
}
// ../ariakit-react-components/dist/radio/radio-store.js
function useRadioStoreProps(store, update, props) {
store = _HEDXFQCWcjs.useCompositeStoreProps.call(void 0, store, update, props);
_5FQZLBJ7cjs.useStoreProps.call(void 0, store, props, "value", "setValue");
return store;
}
function useRadioStore(props = {}) {
props = _HEDXFQCWcjs.useCompositeStoreOptions.call(void 0, props);
const [store, update] = _5FQZLBJ7cjs.useStore.call(void 0, createRadioStore, props);
return useRadioStoreProps(store, update, props);
}
// ../ariakit-react-components/dist/radio/radio-provider.js
function RadioProvider(props = {}) {
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ZGRVC6GZcjs.RadioContextProvider, {
value: useRadioStore(props),
children: props.children
});
}
exports.RadioGroup = RadioGroup; exports.useRadioStore = useRadioStore; exports.RadioProvider = RadioProvider;