{"version":3,"file":"use-map.cjs","names":[],"sources":["../../src/hooks/use-map.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\n\nexport interface UseMapResult<K, V> {\n    map: ReadonlyMap<K, V>;\n    set: (key: K, value: V) => void;\n    delete: (key: K) => void;\n    clear: () => void;\n    get: (key: K) => V | undefined;\n    has: (key: K) => boolean;\n    size: number;\n}\n\n/**\n * Reactive `Map` wrapper. Mutating via `set` / `delete` / `clear` triggers a\n * re-render and yields a fresh `map` reference each time.\n *\n * @typeParam K - key type.\n * @typeParam V - value type.\n * @param initial - initial entries.\n * @returns `{ map, set, delete, clear, get, has, size }`.\n */\nexport function useMap<K, V>(initial?: Iterable<readonly [K, V]>): UseMapResult<K, V> {\n    const [map, setMap] = useState<Map<K, V>>(() => new Map(initial));\n\n    const set = useCallback((key: K, value: V): void => {\n        setMap((current) => {\n            const next = new Map(current);\n            next.set(key, value);\n            return next;\n        });\n    }, []);\n\n    const remove = useCallback((key: K): void => {\n        setMap((current) => {\n            if (!current.has(key)) return current;\n            const next = new Map(current);\n            next.delete(key);\n            return next;\n        });\n    }, []);\n\n    const clear = useCallback((): void => {\n        setMap((current) => (current.size === 0 ? current : new Map<K, V>()));\n    }, []);\n\n    const get = useCallback((key: K): V | undefined => map.get(key), [map]);\n    const has = useCallback((key: K): boolean => map.has(key), [map]);\n\n    return useMemo<UseMapResult<K, V>>(\n        () => ({\n            map,\n            set,\n            delete: remove,\n            clear,\n            get,\n            has,\n            size: map.size,\n        }),\n        [map, set, remove, clear, get, has],\n    );\n}\n"],"mappings":"uBAqBA,SAAgB,EAAa,EAAyD,CAClF,GAAM,CAAC,EAAK,IAAA,EAAU,EAAA,SAAA,KAA0B,IAAI,IAAI,CAAO,CAAC,EAE1D,GAAA,EAAM,EAAA,YAAA,EAAa,EAAQ,IAAmB,CAChD,EAAQ,GAAY,CAChB,IAAM,EAAO,IAAI,IAAI,CAAO,EAE5B,OADA,EAAK,IAAI,EAAK,CAAK,EACZ,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAEC,GAAA,EAAS,EAAA,YAAA,CAAa,GAAiB,CACzC,EAAQ,GAAY,CAChB,GAAI,CAAC,EAAQ,IAAI,CAAG,EAAG,OAAO,EAC9B,IAAM,EAAO,IAAI,IAAI,CAAO,EAE5B,OADA,EAAK,OAAO,CAAG,EACR,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAEC,GAAA,EAAQ,EAAA,YAAA,KAAwB,CAClC,EAAQ,GAAa,EAAQ,OAAS,EAAI,EAAU,IAAI,GAAY,CACxE,EAAG,CAAC,CAAC,EAEC,GAAA,EAAM,EAAA,YAAA,CAAa,GAA0B,EAAI,IAAI,CAAG,EAAG,CAAC,CAAG,CAAC,EAChE,GAAA,EAAM,EAAA,YAAA,CAAa,GAAoB,EAAI,IAAI,CAAG,EAAG,CAAC,CAAG,CAAC,EAEhE,OAAA,EAAO,EAAA,QAAA,MACI,CACH,MACA,MACA,OAAQ,EACR,QACA,MACA,MACA,KAAM,EAAI,IACd,GACA,CAAC,EAAK,EAAK,EAAQ,EAAO,EAAK,CAAG,CACtC,CACJ"}