@react-hookz/web
Version:
React hooks done right, for browser and SSR.
45 lines (44 loc) • 1.33 kB
JavaScript
import { useRef } from 'react';
import { useRerender } from '..';
var proto = Set.prototype;
/**
* Tracks the state of a `Set`.
*
* @param values Initial values iterator for underlying `Set` constructor.
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function useSet(values) {
var setRef = useRef();
var rerender = useRerender();
if (!setRef.current) {
var set_1 = new Set(values);
setRef.current = set_1;
set_1.add = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
proto.add.apply(set_1, args);
rerender();
return set_1;
};
set_1.clear = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
proto.clear.apply(set_1, args);
rerender();
};
set_1.delete = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var res = proto.delete.apply(set_1, args);
rerender();
return res;
};
}
return setRef.current;
}