@progress/kendo-vue-buttons
Version:
52 lines (51 loc) • 1.71 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
let u = /* @__PURE__ */ function(r) {
return r.single = "single", r.multiple = "multiple", r.none = "none", r;
}({}), n = /* @__PURE__ */ function(r) {
return r.toggle = "toggle", r.remove = "remove", r;
}({});
const o = (r, e) => {
switch (e.selection) {
case u.single:
switch (e.type) {
case n.toggle: {
if (!Array.isArray(r) || r === null)
return e.payload === r ? null : e.payload;
throw new Error("State cannot be an array in single selection");
}
case n.remove:
return e.payload === r ? null : r;
default:
return r;
}
case u.multiple:
switch (e.type) {
case n.toggle: {
if (Array.isArray(r))
return r.some((l) => l === e.payload) ? r.filter((l) => l !== e.payload) : [...r, e.payload];
if (r === null)
return [e.payload];
throw new Error("State cannot be non-array in multiple selection");
}
case n.remove:
return Array.isArray(r) ? r.some((l) => l === e.payload) ? r.filter((l) => l !== e.payload) : [...r, e.payload] : r;
default:
return r;
}
case u.none:
return null;
default:
return r;
}
};
export {
n as SELECTION_ACTION,
u as SELECTION_TYPE,
o as selectionReducer
};