UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

42 lines (39 loc) 1.13 kB
'use client'; import { useRef } from 'react'; import { useForceUpdate } from '../use-force-update/use-force-update.mjs'; function readonlySetLikeToSet(input) { if (input instanceof Set) { return input; } const result = /* @__PURE__ */ new Set(); for (const item of input) { result.add(item); } return result; } function useSet(values) { const setRef = useRef(new Set(values)); const forceUpdate = useForceUpdate(); setRef.current.add = (...args) => { const res = Set.prototype.add.apply(setRef.current, args); forceUpdate(); return res; }; setRef.current.clear = (...args) => { Set.prototype.clear.apply(setRef.current, args); forceUpdate(); }; setRef.current.delete = (...args) => { const res = Set.prototype.delete.apply(setRef.current, args); forceUpdate(); return res; }; setRef.current.union = (other) => { const result = new Set(setRef.current); readonlySetLikeToSet(other).forEach((item) => result.add(item)); return result; }; return setRef.current; } export { readonlySetLikeToSet, useSet }; //# sourceMappingURL=use-set.mjs.map