Files
2026-10-29 11:57:29 +01:00

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 };
}