@darwish/hooks-core
Version:
33 lines (32 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var utils_is_1 = require("@darwish/utils-is");
var react_1 = require("react");
function useStorage(type, key, defaultValue) {
var _a = (0, react_1.useState)(function () {
var _a, _b;
if (typeof window === "undefined")
return undefined;
try {
return window[type].getItem(key) === null
? defaultValue
: (_a = JSON.parse(window[type].getItem(key))) !== null && _a !== void 0 ? _a : defaultValue;
}
catch (_c) {
return (_b = window[type].getItem(key)) !== null && _b !== void 0 ? _b : defaultValue;
}
}), storage = _a[0], setStorage = _a[1];
var updateStorage = function (value) {
value = (0, utils_is_1.isFunction)(value) ? value(storage) : value;
window[type].setItem(key, (0, utils_is_1.isString)(value) ? value : JSON.stringify(value));
setStorage(value);
};
var removeStorage = function () {
window[type].removeItem(key);
if (storage) {
setStorage(undefined);
}
};
return [storage, updateStorage, removeStorage];
}
exports.default = useStorage;