@ariakit/core
Version:
Ariakit core
163 lines (140 loc) • 5.42 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _BVPEDDW6cjs = require('../__chunks/BVPEDDW6.cjs');
var _RNIVVQWXcjs = require('../__chunks/RNIVVQWX.cjs');
var _GDZQUFNPcjs = require('../__chunks/GDZQUFNP.cjs');
require('../__chunks/YMCSKJHR.cjs');
require('../__chunks/V4YF2QA6.cjs');
require('../__chunks/MNBBM5CR.cjs');
require('../__chunks/726BNPQZ.cjs');
var _ASR6PAFNcjs = require('../__chunks/ASR6PAFN.cjs');
var _MLCPLY2Pcjs = require('../__chunks/MLCPLY2P.cjs');
var _7EQBAZ46cjs = require('../__chunks/7EQBAZ46.cjs');
// src/select/select-store.ts
function createSelectStore(_a = {}) {
var _b = _a, {
combobox
} = _b, props = _7EQBAZ46cjs.__objRest.call(void 0, _b, [
"combobox"
]);
const store = _ASR6PAFNcjs.mergeStore.call(void 0,
props.store,
_ASR6PAFNcjs.omit.call(void 0, combobox, [
"value",
"items",
"renderedItems",
"baseElement",
"arrowElement",
"anchorElement",
"contentElement",
"popoverElement",
"disclosureElement"
])
);
_ASR6PAFNcjs.throwOnConflictingProps.call(void 0, props, store);
const syncState = store.getState();
const composite = _RNIVVQWXcjs.createCompositeStore.call(void 0, _7EQBAZ46cjs.__spreadProps.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, {}, props), {
store,
virtualFocus: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.virtualFocus,
syncState.virtualFocus,
true
),
includesBaseElement: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.includesBaseElement,
syncState.includesBaseElement,
false
),
activeId: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.activeId,
syncState.activeId,
props.defaultActiveId,
null
),
orientation: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.orientation,
syncState.orientation,
"vertical"
)
}));
const popover = _BVPEDDW6cjs.createPopoverStore.call(void 0, _7EQBAZ46cjs.__spreadProps.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, {}, props), {
store,
placement: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.placement,
syncState.placement,
"bottom-start"
)
}));
const initialValue = new String("");
const initialState = _7EQBAZ46cjs.__spreadProps.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, {}, composite.getState()), popover.getState()), {
value: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.value,
syncState.value,
props.defaultValue,
initialValue
),
setValueOnMove: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.setValueOnMove,
syncState.setValueOnMove,
false
),
labelElement: _MLCPLY2Pcjs.defaultValue.call(void 0, syncState.labelElement, null),
selectElement: _MLCPLY2Pcjs.defaultValue.call(void 0, syncState.selectElement, null),
listElement: _MLCPLY2Pcjs.defaultValue.call(void 0, syncState.listElement, null)
});
const select = _ASR6PAFNcjs.createStore.call(void 0, initialState, composite, popover, store);
_ASR6PAFNcjs.setup.call(void 0,
select,
() => _ASR6PAFNcjs.sync.call(void 0, select, ["value", "items"], (state) => {
if (state.value !== initialValue) return;
if (!state.items.length) return;
const item = state.items.find(
(item2) => !item2.disabled && item2.value != null
);
if ((item == null ? void 0 : item.value) == null) return;
select.setState("value", item.value);
})
);
_ASR6PAFNcjs.setup.call(void 0,
select,
() => _ASR6PAFNcjs.sync.call(void 0, select, ["mounted"], (state) => {
if (state.mounted) return;
select.setState("activeId", initialState.activeId);
})
);
_ASR6PAFNcjs.setup.call(void 0,
select,
() => _ASR6PAFNcjs.sync.call(void 0, select, ["mounted", "items", "value"], (state) => {
if (combobox) return;
if (state.mounted) return;
const values = _GDZQUFNPcjs.toArray.call(void 0, state.value);
const lastValue = values[values.length - 1];
if (lastValue == null) return;
const item = state.items.find(
(item2) => !item2.disabled && item2.value === lastValue
);
if (!item) return;
select.setState("activeId", item.id);
})
);
_ASR6PAFNcjs.setup.call(void 0,
select,
() => _ASR6PAFNcjs.batch.call(void 0, select, ["setValueOnMove", "moves"], (state) => {
const { mounted, value, activeId } = select.getState();
if (!state.setValueOnMove && mounted) return;
if (Array.isArray(value)) return;
if (!state.moves) return;
if (!activeId) return;
const item = composite.item(activeId);
if (!item || item.disabled || item.value == null) return;
select.setState("value", item.value);
})
);
return _7EQBAZ46cjs.__spreadProps.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, {}, composite), popover), select), {
combobox,
setValue: (value) => select.setState("value", value),
setLabelElement: (element) => select.setState("labelElement", element),
setSelectElement: (element) => select.setState("selectElement", element),
setListElement: (element) => select.setState("listElement", element)
});
}
exports.createSelectStore = createSelectStore;