@ariakit/core
Version:
Ariakit core
133 lines (111 loc) • 4.24 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _RL7DKHOFcjs = require('../__chunks/RL7DKHOF.cjs');
require('../__chunks/BVPEDDW6.cjs');
var _RNIVVQWXcjs = require('../__chunks/RNIVVQWX.cjs');
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/menu/menu-store.ts
function createMenuStore(_a = {}) {
var _b = _a, {
combobox,
parent,
menubar
} = _b, props = _7EQBAZ46cjs.__objRest.call(void 0, _b, [
"combobox",
"parent",
"menubar"
]);
const parentIsMenubar = !!menubar && !parent;
const store = _ASR6PAFNcjs.mergeStore.call(void 0,
props.store,
_ASR6PAFNcjs.pick.call(void 0, parent, ["values"]),
_ASR6PAFNcjs.omit.call(void 0, combobox, [
"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,
orientation: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.orientation,
syncState.orientation,
"vertical"
)
}));
const hovercard = _RL7DKHOFcjs.createHovercardStore.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"
),
timeout: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.timeout,
syncState.timeout,
parentIsMenubar ? 0 : 150
),
hideTimeout: _MLCPLY2Pcjs.defaultValue.call(void 0, props.hideTimeout, syncState.hideTimeout, 0)
}));
const initialState = _7EQBAZ46cjs.__spreadProps.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, {}, composite.getState()), hovercard.getState()), {
initialFocus: _MLCPLY2Pcjs.defaultValue.call(void 0, syncState.initialFocus, "container"),
values: _MLCPLY2Pcjs.defaultValue.call(void 0,
props.values,
syncState.values,
props.defaultValues,
{}
)
});
const menu = _ASR6PAFNcjs.createStore.call(void 0, initialState, composite, hovercard, store);
_ASR6PAFNcjs.setup.call(void 0,
menu,
() => _ASR6PAFNcjs.sync.call(void 0, menu, ["mounted"], (state) => {
if (state.mounted) return;
menu.setState("activeId", null);
})
);
_ASR6PAFNcjs.setup.call(void 0,
menu,
() => _ASR6PAFNcjs.sync.call(void 0, parent, ["orientation"], (state) => {
menu.setState(
"placement",
state.orientation === "vertical" ? "right-start" : "bottom-start"
);
})
);
return _7EQBAZ46cjs.__spreadProps.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, {}, composite), hovercard), menu), {
combobox,
parent,
menubar,
hideAll: () => {
hovercard.hide();
parent == null ? void 0 : parent.hideAll();
},
setInitialFocus: (value) => menu.setState("initialFocus", value),
setValues: (values) => menu.setState("values", values),
setValue: (name, value) => {
if (name === "__proto__") return;
if (name === "constructor") return;
if (Array.isArray(name)) return;
menu.setState("values", (values) => {
const prevValue = values[name];
const nextValue = _MLCPLY2Pcjs.applyState.call(void 0, value, prevValue);
if (nextValue === prevValue) return values;
return _7EQBAZ46cjs.__spreadProps.call(void 0, _7EQBAZ46cjs.__spreadValues.call(void 0, {}, values), {
[name]: nextValue !== void 0 && nextValue
});
});
}
});
}
exports.createMenuStore = createMenuStore;