import { useEffect, useState } from "react" export function useSet(items: T[]): Set { const [set, setSet] = useState>(() => { return new Set(items) }) useEffect(() => { const newSet = new Set(items) if (identical(set, newSet)) { return } setSet(newSet) }, [set, items]) return set } function identical(s1: Set, s2: Set) { return s1.size === s2.size && Array.from(s1).every(v => s2.has(v)) }