/** * Filters a 2D series of `{name, ...}` records, keeping only items whose * `name` is in the locked set. Multi-series shape is preserved (one inner * array per series). Used by the LockSelection action's data transform. */ export function filterByLockedItems( input: unknown, lockedItems: readonly (string | number)[], ): unknown { if (lockedItems.length === 0) return input if (!Array.isArray(input)) return input const set = new Set(lockedItems) return input.map((series: unknown): unknown => { if (!Array.isArray(series)) return series return series.filter((item: unknown) => { if (item == null) return false if (typeof item === 'object' && 'name' in item) { const name = (item as { name: unknown }).name if (typeof name === 'string' || typeof name === 'number') { return set.has(name) } return false } return false }) }) }