53 lines
2.2 KiB
JavaScript
53 lines
2.2 KiB
JavaScript
// Generated, do not edit. sha256:0655118dcbbdee6f738790678dd93e04fa937dd8c25c946b1d37d8d899f98d2a
|
|
export function sameSelection(a, b) {
|
|
if (!a || !b) return a === b;
|
|
if (a.kind || b.kind) return a.kind === b.kind;
|
|
if (a.account != null || b.account != null) return a.account === b.account;
|
|
return String(a.assetIds) === String(b.assetIds);
|
|
}
|
|
|
|
export function selectionFromStored(bewaard) {
|
|
if (!bewaard || typeof bewaard !== 'object') return null;
|
|
if (bewaard.kind) return { kind: String(bewaard.kind) };
|
|
const ids = Array.isArray(bewaard.assetIds) ? bewaard.assetIds.map(Number).filter(n => Number.isInteger(n) && n > 0) : [];
|
|
const account = Number(bewaard.account);
|
|
if (bewaard.account != null && Number.isInteger(account) && account >= 0) return { account, assetIds: ids };
|
|
return ids.length ? { assetIds: ids } : null;
|
|
}
|
|
|
|
export function hiddenFromStored(bewaard, { allowZero = false } = {}) {
|
|
if (!Array.isArray(bewaard)) return new Set();
|
|
return new Set(bewaard.map(Number).filter(n => Number.isInteger(n) && (allowZero ? n >= 0 : n > 0)));
|
|
}
|
|
|
|
export function hiddenAfterFilter(hidden, itemIds, selected) {
|
|
const chips = new Set(itemIds);
|
|
const s = new Set([...hidden].filter(id => !chips.has(id)));
|
|
for (const id of itemIds) if (!selected.has(id)) s.add(id);
|
|
return [...s].sort((a, b) => (typeof a === 'number' && typeof b === 'number' ? a - b : String(a).localeCompare(String(b))));
|
|
}
|
|
|
|
export const NO_ACCOUNT_KIND = 'none';
|
|
export const accountKindOf = c => c.account?.kind ?? NO_ACCOUNT_KIND;
|
|
|
|
export function hiddenKindsFromStored(bewaard, allowed = []) {
|
|
if (!Array.isArray(bewaard)) return new Set();
|
|
const geldig = new Set([...allowed, NO_ACCOUNT_KIND]);
|
|
return new Set(bewaard.map(String).filter(k => geldig.has(k)));
|
|
}
|
|
|
|
export function accountKindItems(cards = []) {
|
|
const uit = [];
|
|
for (const c of cards) {
|
|
const kind = accountKindOf(c);
|
|
if (!uit.includes(kind)) uit.push(kind);
|
|
}
|
|
return uit;
|
|
}
|
|
|
|
export function splitHidden(kaarten = [], hidden = new Set(), keyOf = k => k.asset.id) {
|
|
const shown = [], verborgen = [];
|
|
for (const k of kaarten) (hidden.has(keyOf(k)) ? verborgen : shown).push(k);
|
|
return { shown, hidden: verborgen };
|
|
}
|