synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
42 lines • 1.33 kB
JavaScript
;
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