UNPKG

@react-hookz/web

Version:

React hooks done right, for browser and SSR.

45 lines (44 loc) 1.33 kB
import { useRef } from 'react'; import { useRerender } from '..'; var proto = Set.prototype; /** * Tracks the state of a `Set`. * * @param values Initial values iterator for underlying `Set` constructor. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function useSet(values) { var setRef = useRef(); var rerender = useRerender(); if (!setRef.current) { var set_1 = new Set(values); setRef.current = set_1; set_1.add = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } proto.add.apply(set_1, args); rerender(); return set_1; }; set_1.clear = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } proto.clear.apply(set_1, args); rerender(); }; set_1.delete = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var res = proto.delete.apply(set_1, args); rerender(); return res; }; } return setRef.current; }