UNPKG

rooks

Version:

Essential React custom hooks ⚓ to super charge your components!

50 lines (49 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSetState = void 0; var react_1 = require("react"); /** * useSetState * @description Manage the state of a Set in React. * @param {Set<T>} initialSetValue The initial value of the set to manage. * @returns {UseSetStateReturnValue<T>} The state of the Set and the controls. * @see {@link https://react-hooks.org/docs/useSetState} * @example * import { useSetState } from "./useSetState"; * const [set, setControls] = useSetState(new Set()); * setControls.add(1); // {1} * setControls.add(2); // {1, 2} * setControls.delete(1); // {2} * setControls.clear(); // {} * */ function useSetState(initialSetValue) { var _a = (0, react_1.useState)(new Set(initialSetValue)), setValue = _a[0], setSetValue = _a[1]; var add = (0, react_1.useCallback)(function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } setSetValue(new Set(setValue.add.apply(setValue, args))); }, [setValue, setSetValue]); var deleteValue = (0, react_1.useCallback)(function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var newSetValue = new Set(setValue); newSetValue.delete.apply(newSetValue, args); setSetValue(newSetValue); }, [setValue, setSetValue]); var clear = (0, react_1.useCallback)(function () { setSetValue(new Set()); }, [setSetValue]); var controls = (0, react_1.useMemo)(function () { return { add: add, delete: deleteValue, clear: clear }; }, [add, deleteValue, clear]); var returnValue = (0, react_1.useMemo)(function () { return [setValue, controls]; }, [setValue, controls]); return returnValue; } exports.useSetState = useSetState;