/* Copyright 2026 Marimo. All rights reserved. */ export const Sets = { /** * Merge multiple iterables into a single set. */ merge(...sets: Iterable[]): Set { const result = new Set(); for (const set of sets) { for (const item of set) { result.add(item); } } return result; }, /** * Check if two sets are equal (contain the same elements). */ equals(set1: Set, set2: Set): boolean { if (set1.size !== set2.size) { return false; } for (const item of set1) { if (!set2.has(item)) { return false; } } return true; }, /** * Return a new set with `item` toggled — removed if present, added if not. */ toggle(set: Set, item: T): Set { const result = new Set(set); if (result.has(item)) { result.delete(item); } else { result.add(item); } return result; }, };