UNPKG

stone-kit

Version:
73 lines (72 loc) 2.28 kB
const A = (e, n, r, i) => e.value === "selectAll" ? !1 : i && r ? !r.includes(`${e.value}`) : n.some((s) => s.value === e.value), J = ({ option: e, setSelectedOptions: n, selectedOptions: r, disabledOptions: i, onChange: s, mode: m, optionsParentArr: c, clickableOptions: y, isDisabledNotClickable: u }) => { if (!Array.isArray(e)) { if (i.some((l) => l.value === e.value)) return; let f = r.some((l) => l.value === e.value) ? e.value === "selectAll" && c ? [] : r.some((l) => l.value === "selectAll") ? r.filter((l) => l.value !== e.value && l.value !== "selectAll") : r.filter((l) => l.value !== e.value) : e.value === "selectAll" && c ? c.flatMap((S) => { if ("options" in S) { const a = S.options.filter( (t) => !A(t, i, y, u) ); return a.length > 0 ? [S, ...a] : []; } else return A(S, i, y, u) ? [] : [S]; }) : [...r, e]; if (m === "single") { const l = [e]; n(l), s && s(l); return; } if (m === "double") { if ("options" in e) { if (r.map((t) => JSON.stringify(t)).includes(JSON.stringify(e))) f = f.filter( (t) => !e.options.map((w) => JSON.stringify(w)).includes(JSON.stringify(t)) ); else if (Array.isArray(e.options)) { const t = e.options.filter( (w) => !A(w, i, y, u) ); f = [...f, ...t]; } } const l = c?.filter((a) => "options" in a && a.options.some((t) => t.value === e.value))[0]; !(l && r.map((a) => JSON.stringify(a)).includes(JSON.stringify(l))) && l && f.push(l); } n(f), s && s(f); } }, N = ({ option: e, setSelectedOptions: n, selectedOptions: r, disabledOptions: i, onChange: s, clickableOptions: m, isDisabledNotClickable: c }) => { if (Array.isArray(e)) { const y = e.filter( (u) => !A(u, i, m, c) ); if (y.every((u) => r.some((v) => v.value === u.value))) { const u = r.filter((v) => !e.some((f) => f.value === v.value)); n(u), s && s(u); } else { const u = y.filter((f) => !r.some((l) => l.value === f.value)), v = [...r, ...u]; n(v), s && s(v); } } }; export { N as handleClickModeCategory, J as handleClickModeOption };