UNPKG

@darwish/hooks-core

Version:

61 lines (60 loc) 2.33 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var utils_is_1 = require("@darwish/utils-is"); function useSet(initialValue) { var init = (0, react_1.useCallback)(function () { if ((0, utils_is_1.isArray)(initialValue)) { return new Set(initialValue); } return new Set(initialValue); }, [initialValue]); var _a = (0, react_1.useState)(init), state = _a[0], setState = _a[1]; var has = (0, react_1.useCallback)(function (hasValue) { return state.has(hasValue); }, [initialValue, state]); var stableActions = (0, react_1.useMemo)(function () { return { add: function (addValue) { setState(function (prev) { return new Set(__spreadArray(__spreadArray([], Array.from(prev), true), [addValue], false)); }); }, remove: function (removeValue) { setState(function (prev) { return new Set(Array.from(prev).filter(function (v) { return v !== removeValue; })); }); }, toggle: function (toggleValue) { if (has(toggleValue)) { stableActions.remove(toggleValue); } else { stableActions.add(toggleValue); } }, reset: function () { setState(init); }, }; }, [setState, state]); var utils = __assign({ has: has }, stableActions); return [state, utils]; } exports.default = useSet;