use-local-storage-state
Advanced tools
Comparing version 8.0.0 to 8.0.1
15
index.js
@@ -1,4 +0,11 @@ | ||
import useLocalStorageState from './src/useLocalStorageState'; | ||
import createLocalStorageStateHook from './src/createLocalStorageStateHook'; | ||
export default useLocalStorageState; | ||
export { useLocalStorageState, createLocalStorageStateHook }; | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.createLocalStorageStateHook = exports.useLocalStorageState = void 0; | ||
const useLocalStorageState_1 = __importDefault(require("./src/useLocalStorageState")); | ||
exports.useLocalStorageState = useLocalStorageState_1.default; | ||
const createLocalStorageStateHook_1 = __importDefault(require("./src/createLocalStorageStateHook")); | ||
exports.createLocalStorageStateHook = createLocalStorageStateHook_1.default; | ||
exports.default = useLocalStorageState_1.default; |
{ | ||
"name": "use-local-storage-state", | ||
"version": "8.0.0", | ||
"version": "8.0.1", | ||
"description": "React hook that persist data in local storage. Done right.", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -1,8 +0,13 @@ | ||
import { useEffect, useMemo } from 'react'; | ||
import useLocalStorageStateBase from './useLocalStorageStateBase'; | ||
export default function createLocalStorageStateHook(key, defaultValue) { | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const react_1 = require("react"); | ||
const useLocalStorageStateBase_1 = __importDefault(require("./useLocalStorageStateBase")); | ||
function createLocalStorageStateHook(key, defaultValue) { | ||
const updates = []; | ||
return function useLocalStorageStateHook() { | ||
const [value, setValue, isPersistent] = useLocalStorageStateBase(key, defaultValue); | ||
const updateValue = useMemo(() => { | ||
const [value, setValue, isPersistent] = useLocalStorageStateBase_1.default(key, defaultValue); | ||
const updateValue = react_1.useMemo(() => { | ||
const fn = (newValue) => { | ||
@@ -20,3 +25,3 @@ for (const update of updates) { | ||
}, []); | ||
useEffect(() => { | ||
react_1.useEffect(() => { | ||
updates.push(setValue); | ||
@@ -28,1 +33,2 @@ return () => void updates.splice(updates.indexOf(setValue), 1); | ||
} | ||
exports.default = createLocalStorageStateHook; |
@@ -0,1 +1,3 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
/** | ||
@@ -11,3 +13,3 @@ * Abstraction for localStorage that uses an in-memory fallback when localStorage throws an error. | ||
const data = {}; | ||
export default { | ||
exports.default = { | ||
get(key, defaultValue) { | ||
@@ -14,0 +16,0 @@ var _a; |
@@ -1,3 +0,8 @@ | ||
import { useEffect } from 'react'; | ||
import useLocalStorageStateBase from './useLocalStorageStateBase'; | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const react_1 = require("react"); | ||
const useLocalStorageStateBase_1 = __importDefault(require("./useLocalStorageStateBase")); | ||
/** | ||
@@ -9,8 +14,8 @@ * Used to track usages of `useLocalStorageState()` with identical `key` values. If we encounter | ||
const initializedStorageKeys = new Set(); | ||
export default function useLocalStorageState(key, defaultValue) { | ||
const value = useLocalStorageStateBase(key, defaultValue); | ||
function useLocalStorageState(key, defaultValue) { | ||
const value = useLocalStorageStateBase_1.default(key, defaultValue); | ||
/** | ||
* Detects incorrect usage of the library and throws an error with a suggestion how to fix it. | ||
*/ | ||
useEffect(() => { | ||
react_1.useEffect(() => { | ||
if (initializedStorageKeys.has(key)) { | ||
@@ -29,1 +34,2 @@ throw new Error(`Multiple instances of useLocalStorageState() has been initialized with the same key. ` + | ||
} | ||
exports.default = useLocalStorageState; |
@@ -1,12 +0,17 @@ | ||
import storage from './storage'; | ||
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; | ||
export default function useLocalStorageStateBase(key, defaultValue) { | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const storage_1 = __importDefault(require("./storage")); | ||
const react_1 = require("react"); | ||
function useLocalStorageStateBase(key, defaultValue) { | ||
// we don't support updating the `defaultValue` the same way `useState()` doesn't support it | ||
const [defaultValueState] = useState(() => { | ||
const [defaultValueState] = react_1.useState(() => { | ||
const isCallable = (value) => typeof value === 'function'; | ||
return isCallable(defaultValue) ? defaultValue() : defaultValue; | ||
}); | ||
const getDefaultState = useCallback(() => { | ||
const getDefaultState = react_1.useCallback(() => { | ||
return { | ||
value: storage.get(key, defaultValueState), | ||
value: storage_1.default.get(key, defaultValueState), | ||
isPersistent: (() => { | ||
@@ -32,4 +37,4 @@ /** | ||
}, [defaultValueState, key]); | ||
const [state, setState] = useState(getDefaultState); | ||
const updateValue = useMemo(() => { | ||
const [state, setState] = react_1.useState(getDefaultState); | ||
const updateValue = react_1.useMemo(() => { | ||
const fn = (newValue) => { | ||
@@ -40,3 +45,3 @@ const isCallable = (value) => typeof value === 'function'; | ||
value: newValue(state.value), | ||
isPersistent: storage.set(key, newValue(state.value)), | ||
isPersistent: storage_1.default.set(key, newValue(state.value)), | ||
})); | ||
@@ -47,3 +52,3 @@ } | ||
value: newValue, | ||
isPersistent: storage.set(key, newValue), | ||
isPersistent: storage_1.default.set(key, newValue), | ||
}); | ||
@@ -53,3 +58,3 @@ } | ||
fn.reset = () => { | ||
storage.remove(key); | ||
storage_1.default.remove(key); | ||
setState((state) => ({ | ||
@@ -65,7 +70,7 @@ value: defaultValueState, | ||
*/ | ||
useEffect(() => { | ||
react_1.useEffect(() => { | ||
const onStorage = (e) => { | ||
if (e.storageArea === localStorage && e.key === key) { | ||
setState({ | ||
value: storage.get(key, defaultValueState), | ||
value: storage_1.default.get(key, defaultValueState), | ||
isPersistent: true, | ||
@@ -81,4 +86,4 @@ }); | ||
*/ | ||
const isFirstRender = useRef(true); | ||
useEffect(() => { | ||
const isFirstRender = react_1.useRef(true); | ||
react_1.useEffect(() => { | ||
if (isFirstRender.current) { | ||
@@ -92,1 +97,2 @@ isFirstRender.current = false; | ||
} | ||
exports.default = useLocalStorageStateBase; |
18945
242