UNPKG

@darwish/hooks-core

Version:

33 lines (32 loc) 1.23 kB
"use strict"; 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;