UNPKG

synapse-react-client

Version:

[![Build Status](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client.svg?branch=main)](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synaps

42 lines 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSet = void 0; var react_1 = require("react"); /** * Hook for storing an ES6 set in React state. Methods that mutate the set have been hidden via TypeScript, * so if you adhere to the type definitions, the set is essentially immutable. * Modifications to the set should only be done via the functions returned by the hook, which will create a new object to trigger rerendering. * @param initialState * @returns */ function useSet(initialState) { var _a = (0, react_1.useState)(new Set(initialState)), set = _a[0], setSet = _a[1]; function add() { var items = []; for (var _i = 0; _i < arguments.length; _i++) { items[_i] = arguments[_i]; } var newSet = new Set(set); for (var _a = 0, items_1 = items; _a < items_1.length; _a++) { var item = items_1[_a]; newSet.add(item); } setSet(newSet); } function remove(item) { var newSet = new Set(set); newSet.delete(item); setSet(newSet); } function clear() { setSet(new Set()); } return { set: set, add: add, remove: remove, clear: clear, }; } exports.useSet = useSet; //# sourceMappingURL=useSet.js.map