@ariakit/react-core
Version:
Ariakit React core
99 lines (82 loc) • 3.12 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _6DC6MIBCcjs = require('../__chunks/6DC6MIBC.cjs');
var _RVNZYGSOcjs = require('../__chunks/RVNZYGSO.cjs');
var _5RHEK3U2cjs = require('../__chunks/5RHEK3U2.cjs');
require('../__chunks/QXXNZT2I.cjs');
require('../__chunks/5WCU5NVK.cjs');
require('../__chunks/57Z4CQLB.cjs');
require('../__chunks/GCJBB4ZT.cjs');
var _EMYYI4CZcjs = require('../__chunks/EMYYI4CZ.cjs');
require('../__chunks/QJGTENWI.cjs');
var _WBFXWJUHcjs = require('../__chunks/WBFXWJUH.cjs');
require('../__chunks/MZ2HG624.cjs');
require('../__chunks/XMDZRF6Y.cjs');
// src/select/select-renderer.tsx
var _array = require('@ariakit/core/utils/array');
var _react = require('react');
var TagName = "div";
function getItemObject(item) {
if (!item || typeof item !== "object") {
return { value: `${item}` };
}
return item;
}
function findIndicesByValue(items, value) {
var _a;
const values = _array.toArray.call(void 0, value);
const indices = [];
for (const [index, item] of items.entries()) {
if (indices.length === values.length) break;
const object = getItemObject(item);
if (object.value != null && values.includes(object.value)) {
indices.push(index);
} else if ((_a = object.items) == null ? void 0 : _a.length) {
const childIndices = findIndicesByValue(object.items, value);
if (childIndices.length) {
indices.push(index);
}
}
}
return indices;
}
function useSelectRenderer({
store,
orientation: orientationProp,
persistentIndices: persistentIndicesProp,
items: itemsProp,
value: valueProp,
...props
}) {
const context = _6DC6MIBCcjs.useSelectContext.call(void 0, );
store = store || context;
const items = _EMYYI4CZcjs.useStoreState.call(void 0, store, (state) => {
if (!state) return itemsProp;
if (!state.mounted) return 0;
return itemsProp != null ? itemsProp : state.items;
});
const value = _EMYYI4CZcjs.useStoreState.call(void 0, store, (state) => valueProp != null ? valueProp : state == null ? void 0 : state.value);
const valueIndices = _react.useMemo.call(void 0, () => {
if (!items) return [];
if (value == null) return [];
if (typeof items === "number") return [];
if (!items.length) return [];
return findIndicesByValue(items, value);
}, [items, value]);
const persistentIndices = _react.useMemo.call(void 0, () => {
if (persistentIndicesProp) {
return [...persistentIndicesProp, ...valueIndices];
}
return valueIndices;
}, [valueIndices, persistentIndicesProp]);
return _RVNZYGSOcjs.useCompositeRenderer.call(void 0, {
store,
items,
persistentIndices,
...props
});
}
var SelectRenderer = _WBFXWJUHcjs.forwardRef.call(void 0, function SelectRenderer2(props) {
const htmlProps = useSelectRenderer(props);
return _WBFXWJUHcjs.createElement.call(void 0, TagName, htmlProps);
});
exports.SelectRenderer = SelectRenderer; exports.getSelectRendererItem = _5RHEK3U2cjs.getCollectionRendererItem; exports.getSelectRendererItemId = _5RHEK3U2cjs.getCollectionRendererItemId;