mirror of
https://github.com/fancive/obsidian-parallel-reader.git
synced 2026-07-22 17:20:24 +00:00
Install @biomejs/biome with lint and format config. Add npm lint/lint:fix scripts. Auto-fix formatting across all source files. Update tsconfig lib to ES2022 for Object.hasOwn support. Change-Id: I13e3ba2f106f7e3d03349080b7ed515d427d24a1
28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
'use strict';
|
|
|
|
import type { CardPatch, RawCard } from './types';
|
|
|
|
export function removeCardAt<T extends RawCard>(cards: T[], index: number): T[] {
|
|
const next = Array.isArray(cards) ? cards.slice() : [];
|
|
if (!Number.isInteger(index) || index < 0 || index >= next.length) return next;
|
|
next.splice(index, 1);
|
|
return next;
|
|
}
|
|
|
|
export function activeIndexAfterCardDelete(deleteIndex: number, previousLength: number, activeIdx: number): number {
|
|
if (!Number.isInteger(deleteIndex) || !Number.isInteger(previousLength) || previousLength <= 0) return activeIdx;
|
|
if (!Number.isInteger(activeIdx) || activeIdx < 0) return activeIdx;
|
|
if (deleteIndex < 0 || deleteIndex >= previousLength) return activeIdx;
|
|
const nextLength = previousLength - 1;
|
|
if (nextLength <= 0) return -1;
|
|
if (deleteIndex < activeIdx) return Math.max(0, activeIdx - 1);
|
|
if (deleteIndex === activeIdx) return Math.min(activeIdx, nextLength - 1);
|
|
return activeIdx;
|
|
}
|
|
|
|
export function updateCardAt<T extends RawCard>(cards: T[], index: number, patch: CardPatch): T[] {
|
|
const next = Array.isArray(cards) ? cards.slice() : [];
|
|
if (!Number.isInteger(index) || index < 0 || index >= next.length) return next;
|
|
next[index] = Object.assign({}, next[index], patch || {});
|
|
return next;
|
|
}
|