UNPKG

@synapsecloud/lib-react

Version:

Helper library for web applications built on React Js

64 lines 1.87 kB
import { useReducer } from 'react'; function createReducer() { return function (state, action) { switch (action.type) { case 'add': { state.set.add(action.value); break; } case 'delete': { state.set.delete(action.value); break; } case 'clear': { state.set.clear(); break; } case 'reset': { return { set: new Set(action.values || []) }; } default: break; } return { set: state.set, }; }; } export function useSet(arr = []) { const [state, dispatch] = useReducer(createReducer(), { set: new Set(arr), }); return { add: (value) => { dispatch({ type: 'add', value }); return value; }, delete: (value) => { dispatch({ type: 'delete', value }); return value; }, clear: () => dispatch({ type: 'clear' }), reset: function (values = []) { dispatch({ type: 'reset', values }); return this; }, forEach: (callback) => state.set.forEach(callback), map: function (callback) { return [...state.set].map(callback); }, has: (value) => state.set.has(value), entries: () => state.set.entries(), values: () => state.set.values(), keys: () => state.set.keys(), size: state.set.size, *[Symbol.iterator]() { const iterator1 = state.set[Symbol.iterator](); for (const item of iterator1) { yield item; } }, [Symbol.toStringTag]: state.set[Symbol.toStringTag], }; } //# sourceMappingURL=useSet.js.map