@react-hookz/web
Version:
React hooks done right, for browser and SSR.
49 lines (48 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useMap = void 0;
var react_1 = require("react");
var __1 = require("..");
var proto = Map.prototype;
/**
* Tracks the state of a `Map`.
*
* @param entries Initial entries iterator for underlying `Map` constructor.
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function useMap(entries) {
var mapRef = (0, react_1.useRef)();
var rerender = (0, __1.useRerender)();
if (!mapRef.current) {
var map_1 = new Map(entries);
mapRef.current = map_1;
map_1.set = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
proto.set.apply(map_1, args);
rerender();
return map_1;
};
map_1.clear = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
proto.clear.apply(map_1, args);
rerender();
};
map_1.delete = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var res = proto.delete.apply(map_1, args);
rerender();
return res;
};
}
return mapRef.current;
}
exports.useMap = useMap;