@mantine/hooks 5.2.7 → 5.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.js +4 -0
- package/cjs/index.js.map +1 -1
- package/cjs/use-local-storage/create-storage.js +79 -0
- package/cjs/use-local-storage/create-storage.js.map +1 -0
- package/cjs/use-local-storage/use-local-storage.js +3 -67
- package/cjs/use-local-storage/use-local-storage.js.map +1 -1
- package/cjs/use-network/use-network.js +4 -3
- package/cjs/use-network/use-network.js.map +1 -1
- package/cjs/use-previous/use-previous.js +16 -0
- package/cjs/use-previous/use-previous.js.map +1 -0
- package/cjs/use-resize-observer/use-resize-observer.js +1 -2
- package/cjs/use-resize-observer/use-resize-observer.js.map +1 -1
- package/cjs/use-session-storage/use-session-storage.js +12 -0
- package/cjs/use-session-storage/use-session-storage.js.map +1 -0
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -1
- package/esm/use-local-storage/create-storage.js +75 -0
- package/esm/use-local-storage/create-storage.js.map +1 -0
- package/esm/use-local-storage/use-local-storage.js +3 -67
- package/esm/use-local-storage/use-local-storage.js.map +1 -1
- package/esm/use-network/use-network.js +4 -3
- package/esm/use-network/use-network.js.map +1 -1
- package/esm/use-previous/use-previous.js +12 -0
- package/esm/use-previous/use-previous.js.map +1 -0
- package/esm/use-resize-observer/use-resize-observer.js +1 -2
- package/esm/use-resize-observer/use-resize-observer.js.map +1 -1
- package/esm/use-session-storage/use-session-storage.js +8 -0
- package/esm/use-session-storage/use-session-storage.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/use-local-storage/create-storage.d.ts +15 -0
- package/lib/use-local-storage/create-storage.d.ts.map +1 -0
- package/lib/use-local-storage/use-local-storage.d.ts +2 -14
- package/lib/use-local-storage/use-local-storage.d.ts.map +1 -1
- package/lib/use-network/use-network.d.ts.map +1 -1
- package/lib/use-previous/use-previous.d.ts +2 -0
- package/lib/use-previous/use-previous.d.ts.map +1 -0
- package/lib/use-resize-observer/use-resize-observer.d.ts.map +1 -1
- package/lib/use-session-storage/use-session-storage.d.ts +3 -0
- package/lib/use-session-storage/use-session-storage.d.ts.map +1 -0
- package/package.json +1 -1
package/cjs/index.js
CHANGED
|
@@ -20,6 +20,7 @@ var useInterval = require('./use-interval/use-interval.js');
|
|
|
20
20
|
var useIsomorphicEffect = require('./use-isomorphic-effect/use-isomorphic-effect.js');
|
|
21
21
|
var useListState = require('./use-list-state/use-list-state.js');
|
|
22
22
|
var useLocalStorage = require('./use-local-storage/use-local-storage.js');
|
|
23
|
+
var useSessionStorage = require('./use-session-storage/use-session-storage.js');
|
|
23
24
|
var useMediaQuery = require('./use-media-query/use-media-query.js');
|
|
24
25
|
var useMergedRef = require('./use-merged-ref/use-merged-ref.js');
|
|
25
26
|
var useMouse = require('./use-mouse/use-mouse.js');
|
|
@@ -53,6 +54,7 @@ var useFocusWithin = require('./use-focus-within/use-focus-within.js');
|
|
|
53
54
|
var useNetwork = require('./use-network/use-network.js');
|
|
54
55
|
var useTimeout = require('./use-timeout/use-timeout.js');
|
|
55
56
|
var useTextSelection = require('./use-text-selection/use-text-selection.js');
|
|
57
|
+
var usePrevious = require('./use-previous/use-previous.js');
|
|
56
58
|
var parseHotkey = require('./use-hotkeys/parse-hotkey.js');
|
|
57
59
|
var assignRef = require('./utils/assign-ref/assign-ref.js');
|
|
58
60
|
var clamp = require('./utils/clamp/clamp.js');
|
|
@@ -82,6 +84,7 @@ exports.useInterval = useInterval.useInterval;
|
|
|
82
84
|
exports.useIsomorphicEffect = useIsomorphicEffect.useIsomorphicEffect;
|
|
83
85
|
exports.useListState = useListState.useListState;
|
|
84
86
|
exports.useLocalStorage = useLocalStorage.useLocalStorage;
|
|
87
|
+
exports.useSessionStorage = useSessionStorage.useSessionStorage;
|
|
85
88
|
exports.useMediaQuery = useMediaQuery.useMediaQuery;
|
|
86
89
|
exports.mergeRefs = useMergedRef.mergeRefs;
|
|
87
90
|
exports.useMergedRef = useMergedRef.useMergedRef;
|
|
@@ -118,6 +121,7 @@ exports.useFocusWithin = useFocusWithin.useFocusWithin;
|
|
|
118
121
|
exports.useNetwork = useNetwork.useNetwork;
|
|
119
122
|
exports.useTimeout = useTimeout.useTimeout;
|
|
120
123
|
exports.useTextSelection = useTextSelection.useTextSelection;
|
|
124
|
+
exports.usePrevious = usePrevious.usePrevious;
|
|
121
125
|
exports.getHotkeyHandler = parseHotkey.getHotkeyHandler;
|
|
122
126
|
exports.assignRef = assignRef.assignRef;
|
|
123
127
|
exports.clamp = clamp.clamp;
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var useWindowEvent = require('../use-window-event/use-window-event.js');
|
|
7
|
+
|
|
8
|
+
function serializeJSON(value, hookName) {
|
|
9
|
+
try {
|
|
10
|
+
return JSON.stringify(value);
|
|
11
|
+
} catch (error) {
|
|
12
|
+
throw new Error(`@mantine/hooks ${hookName}: Failed to serialize the value`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function deserializeJSON(value) {
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(value);
|
|
18
|
+
} catch (e) {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function createStorage(type, hookName) {
|
|
23
|
+
const eventName = type === "localStorage" ? "mantine-local-storage" : "mantine-session-storage";
|
|
24
|
+
return function useStorage({
|
|
25
|
+
key,
|
|
26
|
+
defaultValue = void 0,
|
|
27
|
+
getInitialValueInEffect = true,
|
|
28
|
+
deserialize = deserializeJSON,
|
|
29
|
+
serialize = (value) => serializeJSON(value, hookName)
|
|
30
|
+
}) {
|
|
31
|
+
const readStorageValue = React.useCallback((skipStorage) => {
|
|
32
|
+
if (typeof window === "undefined" || !(type in window) || skipStorage) {
|
|
33
|
+
return defaultValue != null ? defaultValue : "";
|
|
34
|
+
}
|
|
35
|
+
const storageValue = window[type].getItem(key);
|
|
36
|
+
return storageValue !== null ? deserialize(storageValue) : defaultValue != null ? defaultValue : "";
|
|
37
|
+
}, [key, defaultValue]);
|
|
38
|
+
const [value, setValue] = React.useState(readStorageValue(getInitialValueInEffect));
|
|
39
|
+
const setStorageValue = React.useCallback((val) => {
|
|
40
|
+
if (val instanceof Function) {
|
|
41
|
+
setValue((current) => {
|
|
42
|
+
const result = val(current);
|
|
43
|
+
window[type].setItem(key, serialize(result));
|
|
44
|
+
window.dispatchEvent(new CustomEvent(eventName, { detail: { key, value: val(current) } }));
|
|
45
|
+
return result;
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
window[type].setItem(key, serialize(val));
|
|
49
|
+
window.dispatchEvent(new CustomEvent(eventName, { detail: { key, value: val } }));
|
|
50
|
+
setValue(val);
|
|
51
|
+
}
|
|
52
|
+
}, [key]);
|
|
53
|
+
useWindowEvent.useWindowEvent("storage", (event) => {
|
|
54
|
+
var _a;
|
|
55
|
+
if (event.storageArea === window[type] && event.key === key) {
|
|
56
|
+
setValue(deserialize((_a = event.newValue) != null ? _a : void 0));
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
useWindowEvent.useWindowEvent(eventName, (event) => {
|
|
60
|
+
if (event.detail.key === key) {
|
|
61
|
+
setValue(event.detail.value);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
React.useEffect(() => {
|
|
65
|
+
if (defaultValue !== void 0 && value === void 0) {
|
|
66
|
+
setStorageValue(defaultValue);
|
|
67
|
+
}
|
|
68
|
+
}, [defaultValue, value, setStorageValue]);
|
|
69
|
+
React.useEffect(() => {
|
|
70
|
+
if (getInitialValueInEffect) {
|
|
71
|
+
setValue(readStorageValue());
|
|
72
|
+
}
|
|
73
|
+
}, []);
|
|
74
|
+
return [value === void 0 ? defaultValue : value, setStorageValue];
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
exports.createStorage = createStorage;
|
|
79
|
+
//# sourceMappingURL=create-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-storage.js","sources":["../../src/use-local-storage/create-storage.ts"],"sourcesContent":["import { useState, useCallback, useEffect } from 'react';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\n\nexport type StorageType = 'localStorage' | 'sessionStorage';\n\nexport interface IStorageProperties<T> {\n /** Storage key */\n key: string;\n\n /** Default value that will be set if value is not found in storage */\n defaultValue?: T;\n\n /** If set to true, value will be update is useEffect after mount */\n getInitialValueInEffect?: boolean;\n\n /** Function to serialize value into string to be save in storage */\n serialize?(value: T): string;\n\n /** Function to deserialize string value from storage to value */\n deserialize?(value: string): T;\n}\n\nfunction serializeJSON<T>(value: T, hookName: string) {\n try {\n return JSON.stringify(value);\n } catch (error) {\n throw new Error(`@mantine/hooks ${hookName}: Failed to serialize the value`);\n }\n}\n\nfunction deserializeJSON(value: string) {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nexport function createStorage<T>(type: StorageType, hookName: string) {\n const eventName = type === 'localStorage' ? 'mantine-local-storage' : 'mantine-session-storage';\n\n return function useStorage({\n key,\n defaultValue = undefined,\n getInitialValueInEffect = true,\n deserialize = deserializeJSON,\n serialize = (value: T) => serializeJSON(value, hookName),\n }: IStorageProperties<T>) {\n const readStorageValue = useCallback(\n (skipStorage?: boolean): T => {\n if (typeof window === 'undefined' || !(type in window) || skipStorage) {\n return (defaultValue ?? '') as T;\n }\n\n const storageValue = window[type].getItem(key);\n\n return storageValue !== null ? deserialize(storageValue) : ((defaultValue ?? '') as T);\n },\n [key, defaultValue]\n );\n\n const [value, setValue] = useState<T>(readStorageValue(getInitialValueInEffect));\n\n const setStorageValue = useCallback(\n (val: T | ((prevState: T) => T)) => {\n if (val instanceof Function) {\n setValue((current) => {\n const result = val(current);\n window[type].setItem(key, serialize(result));\n window.dispatchEvent(\n new CustomEvent(eventName, { detail: { key, value: val(current) } })\n );\n return result;\n });\n } else {\n window[type].setItem(key, serialize(val));\n window.dispatchEvent(new CustomEvent(eventName, { detail: { key, value: val } }));\n setValue(val);\n }\n },\n [key]\n );\n\n useWindowEvent('storage', (event) => {\n if (event.storageArea === window[type] && event.key === key) {\n setValue(deserialize(event.newValue ?? undefined));\n }\n });\n\n useWindowEvent(eventName, (event) => {\n if (event.detail.key === key) {\n setValue(event.detail.value);\n }\n });\n\n useEffect(() => {\n if (defaultValue !== undefined && value === undefined) {\n setStorageValue(defaultValue);\n }\n }, [defaultValue, value, setStorageValue]);\n\n useEffect(() => {\n if (getInitialValueInEffect) {\n setValue(readStorageValue());\n }\n }, []);\n\n return [value === undefined ? defaultValue : value, setStorageValue] as const;\n };\n}\n"],"names":["useCallback","useState","useWindowEvent","useEffect"],"mappings":"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"}
|
|
@@ -2,74 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
var useWindowEvent = require('../use-window-event/use-window-event.js');
|
|
5
|
+
var createStorage = require('./create-storage.js');
|
|
7
6
|
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
return JSON.stringify(value);
|
|
11
|
-
} catch (error) {
|
|
12
|
-
throw new Error("@mantine/hooks use-local-storage: Failed to serialize the value");
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function deserializeJSON(value) {
|
|
16
|
-
try {
|
|
17
|
-
return JSON.parse(value);
|
|
18
|
-
} catch (e) {
|
|
19
|
-
return value;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
function useLocalStorage({
|
|
23
|
-
key,
|
|
24
|
-
defaultValue = void 0,
|
|
25
|
-
getInitialValueInEffect = true,
|
|
26
|
-
deserialize = deserializeJSON,
|
|
27
|
-
serialize = serializeJSON
|
|
28
|
-
}) {
|
|
29
|
-
const readLocalStorageValue = React.useCallback((skipStorage) => {
|
|
30
|
-
if (typeof window === "undefined" || !("localStorage" in window) || skipStorage) {
|
|
31
|
-
return defaultValue != null ? defaultValue : "";
|
|
32
|
-
}
|
|
33
|
-
const storageValue = window.localStorage.getItem(key);
|
|
34
|
-
return storageValue !== null ? deserialize(storageValue) : defaultValue != null ? defaultValue : "";
|
|
35
|
-
}, [key, defaultValue]);
|
|
36
|
-
const [value, setValue] = React.useState(readLocalStorageValue(getInitialValueInEffect));
|
|
37
|
-
const setLocalStorageValue = React.useCallback((val) => {
|
|
38
|
-
if (val instanceof Function) {
|
|
39
|
-
setValue((current) => {
|
|
40
|
-
const result = val(current);
|
|
41
|
-
window.localStorage.setItem(key, serialize(result));
|
|
42
|
-
window.dispatchEvent(new CustomEvent("mantine-local-storage", { detail: { key, value: val(current) } }));
|
|
43
|
-
return result;
|
|
44
|
-
});
|
|
45
|
-
} else {
|
|
46
|
-
window.localStorage.setItem(key, serialize(val));
|
|
47
|
-
window.dispatchEvent(new CustomEvent("mantine-local-storage", { detail: { key, value: val } }));
|
|
48
|
-
setValue(val);
|
|
49
|
-
}
|
|
50
|
-
}, [key]);
|
|
51
|
-
useWindowEvent.useWindowEvent("storage", (event) => {
|
|
52
|
-
var _a;
|
|
53
|
-
if (event.storageArea === window.localStorage && event.key === key) {
|
|
54
|
-
setValue(deserialize((_a = event.newValue) != null ? _a : void 0));
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
useWindowEvent.useWindowEvent("mantine-local-storage", (event) => {
|
|
58
|
-
if (event.detail.key === key) {
|
|
59
|
-
setValue(event.detail.value);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
React.useEffect(() => {
|
|
63
|
-
if (defaultValue !== void 0 && value === void 0) {
|
|
64
|
-
setLocalStorageValue(defaultValue);
|
|
65
|
-
}
|
|
66
|
-
}, [defaultValue, value, setLocalStorageValue]);
|
|
67
|
-
React.useEffect(() => {
|
|
68
|
-
if (getInitialValueInEffect) {
|
|
69
|
-
setValue(readLocalStorageValue());
|
|
70
|
-
}
|
|
71
|
-
}, []);
|
|
72
|
-
return [value === void 0 ? defaultValue : value, setLocalStorageValue];
|
|
7
|
+
function useLocalStorage(props) {
|
|
8
|
+
return createStorage.createStorage("localStorage", "use-local-storage")(props);
|
|
73
9
|
}
|
|
74
10
|
|
|
75
11
|
exports.useLocalStorage = useLocalStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-local-storage.js","sources":["../../src/use-local-storage/use-local-storage.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"use-local-storage.js","sources":["../../src/use-local-storage/use-local-storage.ts"],"sourcesContent":["import { createStorage, IStorageProperties } from './create-storage';\n\nexport function useLocalStorage<T = string>(props: IStorageProperties<T>) {\n return createStorage<T>('localStorage', 'use-local-storage')(props);\n}\n"],"names":["createStorage"],"mappings":";;;;;;AACO,SAAS,eAAe,CAAC,KAAK,EAAE;AACvC,EAAE,OAAOA,2BAAa,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC;AACnE;;;;"}
|
|
@@ -47,10 +47,11 @@ function useNetwork() {
|
|
|
47
47
|
useWindowEvent.useWindowEvent("online", () => setStatus(__spreadValues({ online: true }, getConnection())));
|
|
48
48
|
useWindowEvent.useWindowEvent("offline", () => setStatus(__spreadValues({ online: false }, getConnection())));
|
|
49
49
|
React.useEffect(() => {
|
|
50
|
-
|
|
50
|
+
const _navigator = navigator;
|
|
51
|
+
if (_navigator.connection) {
|
|
51
52
|
setStatus(__spreadValues({ online: true }, getConnection()));
|
|
52
|
-
|
|
53
|
-
return () =>
|
|
53
|
+
_navigator.connection.addEventListener("change", handleConnectionChange);
|
|
54
|
+
return () => _navigator.connection.removeEventListener("change", handleConnectionChange);
|
|
54
55
|
}
|
|
55
56
|
return void 0;
|
|
56
57
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-network.js","sources":["../../src/use-network/use-network.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\n\ninterface NetworkStatus {\n downlink?: number;\n downlinkMax?: number;\n effectiveType?: 'slow-2g' | '2g' | '3g' | '4g';\n rtt?: number;\n saveData?: boolean;\n type?: 'bluetooth' | 'cellular' | 'ethernet' | 'wifi' | 'wimax' | 'none' | 'other' | 'unknown';\n}\n\nfunction getConnection(): NetworkStatus {\n if (typeof navigator === 'undefined') {\n return {};\n }\n\n const _navigator = navigator as any;\n const connection: any =\n _navigator.connection || _navigator.mozConnection || _navigator.webkitConnection;\n\n if (!connection) {\n return {};\n }\n\n return {\n downlink: connection?.downlink,\n downlinkMax: connection?.downlinkMax,\n effectiveType: connection?.effectiveType,\n rtt: connection?.rtt,\n saveData: connection?.saveData,\n type: connection?.type,\n };\n}\n\nexport function useNetwork() {\n const [status, setStatus] = useState<{ online: boolean } & NetworkStatus>({\n online: true,\n });\n const handleConnectionChange = useCallback(\n () => setStatus((current) => ({ ...current, ...getConnection() })),\n []\n );\n\n useWindowEvent('online', () => setStatus({ online: true, ...getConnection() }));\n useWindowEvent('offline', () => setStatus({ online: false, ...getConnection() }));\n\n useEffect(() => {\n if (
|
|
1
|
+
{"version":3,"file":"use-network.js","sources":["../../src/use-network/use-network.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\n\ninterface NetworkStatus {\n downlink?: number;\n downlinkMax?: number;\n effectiveType?: 'slow-2g' | '2g' | '3g' | '4g';\n rtt?: number;\n saveData?: boolean;\n type?: 'bluetooth' | 'cellular' | 'ethernet' | 'wifi' | 'wimax' | 'none' | 'other' | 'unknown';\n}\n\nfunction getConnection(): NetworkStatus {\n if (typeof navigator === 'undefined') {\n return {};\n }\n\n const _navigator = navigator as any;\n const connection: any =\n _navigator.connection || _navigator.mozConnection || _navigator.webkitConnection;\n\n if (!connection) {\n return {};\n }\n\n return {\n downlink: connection?.downlink,\n downlinkMax: connection?.downlinkMax,\n effectiveType: connection?.effectiveType,\n rtt: connection?.rtt,\n saveData: connection?.saveData,\n type: connection?.type,\n };\n}\n\nexport function useNetwork() {\n const [status, setStatus] = useState<{ online: boolean } & NetworkStatus>({\n online: true,\n });\n const handleConnectionChange = useCallback(\n () => setStatus((current) => ({ ...current, ...getConnection() })),\n []\n );\n\n useWindowEvent('online', () => setStatus({ online: true, ...getConnection() }));\n useWindowEvent('offline', () => setStatus({ online: false, ...getConnection() }));\n\n useEffect(() => {\n const _navigator = navigator as any;\n\n if (_navigator.connection) {\n setStatus({ online: true, ...getConnection() });\n _navigator.connection.addEventListener('change', handleConnectionChange);\n return () => _navigator.connection.removeEventListener('change', handleConnectionChange);\n }\n\n return undefined;\n }, []);\n\n return status;\n}\n"],"names":["useState","useCallback","useWindowEvent","useEffect"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
function usePrevious(value) {
|
|
8
|
+
const ref = React.useRef();
|
|
9
|
+
React.useEffect(() => {
|
|
10
|
+
ref.current = value;
|
|
11
|
+
}, [value]);
|
|
12
|
+
return ref.current;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
exports.usePrevious = usePrevious;
|
|
16
|
+
//# sourceMappingURL=use-previous.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-previous.js","sources":["../../src/use-previous/use-previous.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;;;AACO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,EAAE,MAAM,GAAG,GAAGA,YAAM,EAAE,CAAC;AACvB,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB;;;;"}
|
|
@@ -14,12 +14,11 @@ const defaultState = {
|
|
|
14
14
|
bottom: 0,
|
|
15
15
|
right: 0
|
|
16
16
|
};
|
|
17
|
-
const browser = typeof window !== "undefined";
|
|
18
17
|
function useResizeObserver() {
|
|
19
18
|
const frameID = React.useRef(0);
|
|
20
19
|
const ref = React.useRef(null);
|
|
21
20
|
const [rect, setRect] = React.useState(defaultState);
|
|
22
|
-
const observer = React.useMemo(() =>
|
|
21
|
+
const observer = React.useMemo(() => typeof window !== "undefined" ? new ResizeObserver((entries) => {
|
|
23
22
|
const entry = entries[0];
|
|
24
23
|
if (entry) {
|
|
25
24
|
cancelAnimationFrame(frameID.current);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-resize-observer.js","sources":["../../src/use-resize-observer/use-resize-observer.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\ntype ObserverRect = Omit<DOMRectReadOnly, 'toJSON'>;\n\nconst defaultState: ObserverRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\
|
|
1
|
+
{"version":3,"file":"use-resize-observer.js","sources":["../../src/use-resize-observer/use-resize-observer.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\ntype ObserverRect = Omit<DOMRectReadOnly, 'toJSON'>;\n\nconst defaultState: ObserverRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\nexport function useResizeObserver<T extends HTMLElement = any>() {\n const frameID = useRef(0);\n const ref = useRef<T>(null);\n\n const [rect, setRect] = useState<ObserverRect>(defaultState);\n\n const observer = useMemo(\n () =>\n typeof window !== 'undefined'\n ? new ResizeObserver((entries: any) => {\n const entry = entries[0];\n\n if (entry) {\n cancelAnimationFrame(frameID.current);\n\n frameID.current = requestAnimationFrame(() => {\n if (ref.current) {\n setRect(entry.contentRect);\n }\n });\n }\n })\n : null,\n []\n );\n\n useEffect(() => {\n if (ref.current) {\n observer.observe(ref.current);\n }\n\n return () => {\n observer.disconnect();\n\n if (frameID.current) {\n cancelAnimationFrame(frameID.current);\n }\n };\n }, [ref.current]);\n\n return [ref, rect] as const;\n}\n\nexport function useElementSize<T extends HTMLElement = any>() {\n const [ref, { width, height }] = useResizeObserver<T>();\n return { ref, width, height };\n}\n"],"names":["useRef","useState","useMemo","useEffect"],"mappings":";;;;;;AACA,MAAM,YAAY,GAAG;AACrB,EAAE,CAAC,EAAE,CAAC;AACN,EAAE,CAAC,EAAE,CAAC;AACN,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,GAAG,EAAE,CAAC;AACR,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,KAAK,EAAE,CAAC;AACV,CAAC,CAAC;AACK,SAAS,iBAAiB,GAAG;AACpC,EAAE,MAAM,OAAO,GAAGA,YAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,MAAM,GAAG,GAAGA,YAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGC,cAAQ,CAAC,YAAY,CAAC,CAAC;AACjD,EAAE,MAAM,QAAQ,GAAGC,aAAO,CAAC,MAAM,OAAO,MAAM,KAAK,WAAW,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAK;AACjG,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,OAAO,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAM;AACpD,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE;AACzB,UAAU,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACrC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;AACjB,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE;AACrB,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,MAAM;AACjB,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC5B,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9C,OAAO;AACP,KAAK,CAAC;AACN,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACpB,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrB,CAAC;AACM,SAAS,cAAc,GAAG;AACjC,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC;AACvD,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAChC;;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var createStorage = require('../use-local-storage/create-storage.js');
|
|
6
|
+
|
|
7
|
+
function useSessionStorage(props) {
|
|
8
|
+
return createStorage.createStorage("sessionStorage", "use-session-storage")(props);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
exports.useSessionStorage = useSessionStorage;
|
|
12
|
+
//# sourceMappingURL=use-session-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-storage.js","sources":["../../src/use-session-storage/use-session-storage.ts"],"sourcesContent":["import { createStorage, IStorageProperties } from '../use-local-storage/create-storage';\n\nexport function useSessionStorage<T = string>(props: IStorageProperties<T>) {\n return createStorage<T>('sessionStorage', 'use-session-storage')(props);\n}\n"],"names":["createStorage"],"mappings":";;;;;;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,EAAE,OAAOA,2BAAa,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC;AACvE;;;;"}
|
package/esm/index.js
CHANGED
|
@@ -16,6 +16,7 @@ export { useInterval } from './use-interval/use-interval.js';
|
|
|
16
16
|
export { useIsomorphicEffect } from './use-isomorphic-effect/use-isomorphic-effect.js';
|
|
17
17
|
export { useListState } from './use-list-state/use-list-state.js';
|
|
18
18
|
export { useLocalStorage } from './use-local-storage/use-local-storage.js';
|
|
19
|
+
export { useSessionStorage } from './use-session-storage/use-session-storage.js';
|
|
19
20
|
export { useMediaQuery } from './use-media-query/use-media-query.js';
|
|
20
21
|
export { mergeRefs, useMergedRef } from './use-merged-ref/use-merged-ref.js';
|
|
21
22
|
export { useMouse } from './use-mouse/use-mouse.js';
|
|
@@ -49,6 +50,7 @@ export { useFocusWithin } from './use-focus-within/use-focus-within.js';
|
|
|
49
50
|
export { useNetwork } from './use-network/use-network.js';
|
|
50
51
|
export { useTimeout } from './use-timeout/use-timeout.js';
|
|
51
52
|
export { useTextSelection } from './use-text-selection/use-text-selection.js';
|
|
53
|
+
export { usePrevious } from './use-previous/use-previous.js';
|
|
52
54
|
export { getHotkeyHandler } from './use-hotkeys/parse-hotkey.js';
|
|
53
55
|
export { assignRef } from './utils/assign-ref/assign-ref.js';
|
|
54
56
|
export { clamp } from './utils/clamp/clamp.js';
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { useCallback, useState, useEffect } from 'react';
|
|
2
|
+
import { useWindowEvent } from '../use-window-event/use-window-event.js';
|
|
3
|
+
|
|
4
|
+
function serializeJSON(value, hookName) {
|
|
5
|
+
try {
|
|
6
|
+
return JSON.stringify(value);
|
|
7
|
+
} catch (error) {
|
|
8
|
+
throw new Error(`@mantine/hooks ${hookName}: Failed to serialize the value`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function deserializeJSON(value) {
|
|
12
|
+
try {
|
|
13
|
+
return JSON.parse(value);
|
|
14
|
+
} catch (e) {
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function createStorage(type, hookName) {
|
|
19
|
+
const eventName = type === "localStorage" ? "mantine-local-storage" : "mantine-session-storage";
|
|
20
|
+
return function useStorage({
|
|
21
|
+
key,
|
|
22
|
+
defaultValue = void 0,
|
|
23
|
+
getInitialValueInEffect = true,
|
|
24
|
+
deserialize = deserializeJSON,
|
|
25
|
+
serialize = (value) => serializeJSON(value, hookName)
|
|
26
|
+
}) {
|
|
27
|
+
const readStorageValue = useCallback((skipStorage) => {
|
|
28
|
+
if (typeof window === "undefined" || !(type in window) || skipStorage) {
|
|
29
|
+
return defaultValue != null ? defaultValue : "";
|
|
30
|
+
}
|
|
31
|
+
const storageValue = window[type].getItem(key);
|
|
32
|
+
return storageValue !== null ? deserialize(storageValue) : defaultValue != null ? defaultValue : "";
|
|
33
|
+
}, [key, defaultValue]);
|
|
34
|
+
const [value, setValue] = useState(readStorageValue(getInitialValueInEffect));
|
|
35
|
+
const setStorageValue = useCallback((val) => {
|
|
36
|
+
if (val instanceof Function) {
|
|
37
|
+
setValue((current) => {
|
|
38
|
+
const result = val(current);
|
|
39
|
+
window[type].setItem(key, serialize(result));
|
|
40
|
+
window.dispatchEvent(new CustomEvent(eventName, { detail: { key, value: val(current) } }));
|
|
41
|
+
return result;
|
|
42
|
+
});
|
|
43
|
+
} else {
|
|
44
|
+
window[type].setItem(key, serialize(val));
|
|
45
|
+
window.dispatchEvent(new CustomEvent(eventName, { detail: { key, value: val } }));
|
|
46
|
+
setValue(val);
|
|
47
|
+
}
|
|
48
|
+
}, [key]);
|
|
49
|
+
useWindowEvent("storage", (event) => {
|
|
50
|
+
var _a;
|
|
51
|
+
if (event.storageArea === window[type] && event.key === key) {
|
|
52
|
+
setValue(deserialize((_a = event.newValue) != null ? _a : void 0));
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
useWindowEvent(eventName, (event) => {
|
|
56
|
+
if (event.detail.key === key) {
|
|
57
|
+
setValue(event.detail.value);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
if (defaultValue !== void 0 && value === void 0) {
|
|
62
|
+
setStorageValue(defaultValue);
|
|
63
|
+
}
|
|
64
|
+
}, [defaultValue, value, setStorageValue]);
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
if (getInitialValueInEffect) {
|
|
67
|
+
setValue(readStorageValue());
|
|
68
|
+
}
|
|
69
|
+
}, []);
|
|
70
|
+
return [value === void 0 ? defaultValue : value, setStorageValue];
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { createStorage };
|
|
75
|
+
//# sourceMappingURL=create-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-storage.js","sources":["../../src/use-local-storage/create-storage.ts"],"sourcesContent":["import { useState, useCallback, useEffect } from 'react';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\n\nexport type StorageType = 'localStorage' | 'sessionStorage';\n\nexport interface IStorageProperties<T> {\n /** Storage key */\n key: string;\n\n /** Default value that will be set if value is not found in storage */\n defaultValue?: T;\n\n /** If set to true, value will be update is useEffect after mount */\n getInitialValueInEffect?: boolean;\n\n /** Function to serialize value into string to be save in storage */\n serialize?(value: T): string;\n\n /** Function to deserialize string value from storage to value */\n deserialize?(value: string): T;\n}\n\nfunction serializeJSON<T>(value: T, hookName: string) {\n try {\n return JSON.stringify(value);\n } catch (error) {\n throw new Error(`@mantine/hooks ${hookName}: Failed to serialize the value`);\n }\n}\n\nfunction deserializeJSON(value: string) {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nexport function createStorage<T>(type: StorageType, hookName: string) {\n const eventName = type === 'localStorage' ? 'mantine-local-storage' : 'mantine-session-storage';\n\n return function useStorage({\n key,\n defaultValue = undefined,\n getInitialValueInEffect = true,\n deserialize = deserializeJSON,\n serialize = (value: T) => serializeJSON(value, hookName),\n }: IStorageProperties<T>) {\n const readStorageValue = useCallback(\n (skipStorage?: boolean): T => {\n if (typeof window === 'undefined' || !(type in window) || skipStorage) {\n return (defaultValue ?? '') as T;\n }\n\n const storageValue = window[type].getItem(key);\n\n return storageValue !== null ? deserialize(storageValue) : ((defaultValue ?? '') as T);\n },\n [key, defaultValue]\n );\n\n const [value, setValue] = useState<T>(readStorageValue(getInitialValueInEffect));\n\n const setStorageValue = useCallback(\n (val: T | ((prevState: T) => T)) => {\n if (val instanceof Function) {\n setValue((current) => {\n const result = val(current);\n window[type].setItem(key, serialize(result));\n window.dispatchEvent(\n new CustomEvent(eventName, { detail: { key, value: val(current) } })\n );\n return result;\n });\n } else {\n window[type].setItem(key, serialize(val));\n window.dispatchEvent(new CustomEvent(eventName, { detail: { key, value: val } }));\n setValue(val);\n }\n },\n [key]\n );\n\n useWindowEvent('storage', (event) => {\n if (event.storageArea === window[type] && event.key === key) {\n setValue(deserialize(event.newValue ?? undefined));\n }\n });\n\n useWindowEvent(eventName, (event) => {\n if (event.detail.key === key) {\n setValue(event.detail.value);\n }\n });\n\n useEffect(() => {\n if (defaultValue !== undefined && value === undefined) {\n setStorageValue(defaultValue);\n }\n }, [defaultValue, value, setStorageValue]);\n\n useEffect(() => {\n if (getInitialValueInEffect) {\n setValue(readStorageValue());\n }\n }, []);\n\n return [value === undefined ? defaultValue : value, setStorageValue] as const;\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,71 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useWindowEvent } from '../use-window-event/use-window-event.js';
|
|
1
|
+
import { createStorage } from './create-storage.js';
|
|
3
2
|
|
|
4
|
-
function
|
|
5
|
-
|
|
6
|
-
return JSON.stringify(value);
|
|
7
|
-
} catch (error) {
|
|
8
|
-
throw new Error("@mantine/hooks use-local-storage: Failed to serialize the value");
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
function deserializeJSON(value) {
|
|
12
|
-
try {
|
|
13
|
-
return JSON.parse(value);
|
|
14
|
-
} catch (e) {
|
|
15
|
-
return value;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function useLocalStorage({
|
|
19
|
-
key,
|
|
20
|
-
defaultValue = void 0,
|
|
21
|
-
getInitialValueInEffect = true,
|
|
22
|
-
deserialize = deserializeJSON,
|
|
23
|
-
serialize = serializeJSON
|
|
24
|
-
}) {
|
|
25
|
-
const readLocalStorageValue = useCallback((skipStorage) => {
|
|
26
|
-
if (typeof window === "undefined" || !("localStorage" in window) || skipStorage) {
|
|
27
|
-
return defaultValue != null ? defaultValue : "";
|
|
28
|
-
}
|
|
29
|
-
const storageValue = window.localStorage.getItem(key);
|
|
30
|
-
return storageValue !== null ? deserialize(storageValue) : defaultValue != null ? defaultValue : "";
|
|
31
|
-
}, [key, defaultValue]);
|
|
32
|
-
const [value, setValue] = useState(readLocalStorageValue(getInitialValueInEffect));
|
|
33
|
-
const setLocalStorageValue = useCallback((val) => {
|
|
34
|
-
if (val instanceof Function) {
|
|
35
|
-
setValue((current) => {
|
|
36
|
-
const result = val(current);
|
|
37
|
-
window.localStorage.setItem(key, serialize(result));
|
|
38
|
-
window.dispatchEvent(new CustomEvent("mantine-local-storage", { detail: { key, value: val(current) } }));
|
|
39
|
-
return result;
|
|
40
|
-
});
|
|
41
|
-
} else {
|
|
42
|
-
window.localStorage.setItem(key, serialize(val));
|
|
43
|
-
window.dispatchEvent(new CustomEvent("mantine-local-storage", { detail: { key, value: val } }));
|
|
44
|
-
setValue(val);
|
|
45
|
-
}
|
|
46
|
-
}, [key]);
|
|
47
|
-
useWindowEvent("storage", (event) => {
|
|
48
|
-
var _a;
|
|
49
|
-
if (event.storageArea === window.localStorage && event.key === key) {
|
|
50
|
-
setValue(deserialize((_a = event.newValue) != null ? _a : void 0));
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
useWindowEvent("mantine-local-storage", (event) => {
|
|
54
|
-
if (event.detail.key === key) {
|
|
55
|
-
setValue(event.detail.value);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
useEffect(() => {
|
|
59
|
-
if (defaultValue !== void 0 && value === void 0) {
|
|
60
|
-
setLocalStorageValue(defaultValue);
|
|
61
|
-
}
|
|
62
|
-
}, [defaultValue, value, setLocalStorageValue]);
|
|
63
|
-
useEffect(() => {
|
|
64
|
-
if (getInitialValueInEffect) {
|
|
65
|
-
setValue(readLocalStorageValue());
|
|
66
|
-
}
|
|
67
|
-
}, []);
|
|
68
|
-
return [value === void 0 ? defaultValue : value, setLocalStorageValue];
|
|
3
|
+
function useLocalStorage(props) {
|
|
4
|
+
return createStorage("localStorage", "use-local-storage")(props);
|
|
69
5
|
}
|
|
70
6
|
|
|
71
7
|
export { useLocalStorage };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-local-storage.js","sources":["../../src/use-local-storage/use-local-storage.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"use-local-storage.js","sources":["../../src/use-local-storage/use-local-storage.ts"],"sourcesContent":["import { createStorage, IStorageProperties } from './create-storage';\n\nexport function useLocalStorage<T = string>(props: IStorageProperties<T>) {\n return createStorage<T>('localStorage', 'use-local-storage')(props);\n}\n"],"names":[],"mappings":";;AACO,SAAS,eAAe,CAAC,KAAK,EAAE;AACvC,EAAE,OAAO,aAAa,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC;AACnE;;;;"}
|
|
@@ -43,10 +43,11 @@ function useNetwork() {
|
|
|
43
43
|
useWindowEvent("online", () => setStatus(__spreadValues({ online: true }, getConnection())));
|
|
44
44
|
useWindowEvent("offline", () => setStatus(__spreadValues({ online: false }, getConnection())));
|
|
45
45
|
useEffect(() => {
|
|
46
|
-
|
|
46
|
+
const _navigator = navigator;
|
|
47
|
+
if (_navigator.connection) {
|
|
47
48
|
setStatus(__spreadValues({ online: true }, getConnection()));
|
|
48
|
-
|
|
49
|
-
return () =>
|
|
49
|
+
_navigator.connection.addEventListener("change", handleConnectionChange);
|
|
50
|
+
return () => _navigator.connection.removeEventListener("change", handleConnectionChange);
|
|
50
51
|
}
|
|
51
52
|
return void 0;
|
|
52
53
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-network.js","sources":["../../src/use-network/use-network.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\n\ninterface NetworkStatus {\n downlink?: number;\n downlinkMax?: number;\n effectiveType?: 'slow-2g' | '2g' | '3g' | '4g';\n rtt?: number;\n saveData?: boolean;\n type?: 'bluetooth' | 'cellular' | 'ethernet' | 'wifi' | 'wimax' | 'none' | 'other' | 'unknown';\n}\n\nfunction getConnection(): NetworkStatus {\n if (typeof navigator === 'undefined') {\n return {};\n }\n\n const _navigator = navigator as any;\n const connection: any =\n _navigator.connection || _navigator.mozConnection || _navigator.webkitConnection;\n\n if (!connection) {\n return {};\n }\n\n return {\n downlink: connection?.downlink,\n downlinkMax: connection?.downlinkMax,\n effectiveType: connection?.effectiveType,\n rtt: connection?.rtt,\n saveData: connection?.saveData,\n type: connection?.type,\n };\n}\n\nexport function useNetwork() {\n const [status, setStatus] = useState<{ online: boolean } & NetworkStatus>({\n online: true,\n });\n const handleConnectionChange = useCallback(\n () => setStatus((current) => ({ ...current, ...getConnection() })),\n []\n );\n\n useWindowEvent('online', () => setStatus({ online: true, ...getConnection() }));\n useWindowEvent('offline', () => setStatus({ online: false, ...getConnection() }));\n\n useEffect(() => {\n if (
|
|
1
|
+
{"version":3,"file":"use-network.js","sources":["../../src/use-network/use-network.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\n\ninterface NetworkStatus {\n downlink?: number;\n downlinkMax?: number;\n effectiveType?: 'slow-2g' | '2g' | '3g' | '4g';\n rtt?: number;\n saveData?: boolean;\n type?: 'bluetooth' | 'cellular' | 'ethernet' | 'wifi' | 'wimax' | 'none' | 'other' | 'unknown';\n}\n\nfunction getConnection(): NetworkStatus {\n if (typeof navigator === 'undefined') {\n return {};\n }\n\n const _navigator = navigator as any;\n const connection: any =\n _navigator.connection || _navigator.mozConnection || _navigator.webkitConnection;\n\n if (!connection) {\n return {};\n }\n\n return {\n downlink: connection?.downlink,\n downlinkMax: connection?.downlinkMax,\n effectiveType: connection?.effectiveType,\n rtt: connection?.rtt,\n saveData: connection?.saveData,\n type: connection?.type,\n };\n}\n\nexport function useNetwork() {\n const [status, setStatus] = useState<{ online: boolean } & NetworkStatus>({\n online: true,\n });\n const handleConnectionChange = useCallback(\n () => setStatus((current) => ({ ...current, ...getConnection() })),\n []\n );\n\n useWindowEvent('online', () => setStatus({ online: true, ...getConnection() }));\n useWindowEvent('offline', () => setStatus({ online: false, ...getConnection() }));\n\n useEffect(() => {\n const _navigator = navigator as any;\n\n if (_navigator.connection) {\n setStatus({ online: true, ...getConnection() });\n _navigator.connection.addEventListener('change', handleConnectionChange);\n return () => _navigator.connection.removeEventListener('change', handleConnectionChange);\n }\n\n return undefined;\n }, []);\n\n return status;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
function usePrevious(value) {
|
|
4
|
+
const ref = useRef();
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
ref.current = value;
|
|
7
|
+
}, [value]);
|
|
8
|
+
return ref.current;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { usePrevious };
|
|
12
|
+
//# sourceMappingURL=use-previous.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-previous.js","sources":["../../src/use-previous/use-previous.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n"],"names":[],"mappings":";;AACO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,EAAE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;AACvB,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB;;;;"}
|
|
@@ -10,12 +10,11 @@ const defaultState = {
|
|
|
10
10
|
bottom: 0,
|
|
11
11
|
right: 0
|
|
12
12
|
};
|
|
13
|
-
const browser = typeof window !== "undefined";
|
|
14
13
|
function useResizeObserver() {
|
|
15
14
|
const frameID = useRef(0);
|
|
16
15
|
const ref = useRef(null);
|
|
17
16
|
const [rect, setRect] = useState(defaultState);
|
|
18
|
-
const observer = useMemo(() =>
|
|
17
|
+
const observer = useMemo(() => typeof window !== "undefined" ? new ResizeObserver((entries) => {
|
|
19
18
|
const entry = entries[0];
|
|
20
19
|
if (entry) {
|
|
21
20
|
cancelAnimationFrame(frameID.current);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-resize-observer.js","sources":["../../src/use-resize-observer/use-resize-observer.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\ntype ObserverRect = Omit<DOMRectReadOnly, 'toJSON'>;\n\nconst defaultState: ObserverRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\
|
|
1
|
+
{"version":3,"file":"use-resize-observer.js","sources":["../../src/use-resize-observer/use-resize-observer.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\ntype ObserverRect = Omit<DOMRectReadOnly, 'toJSON'>;\n\nconst defaultState: ObserverRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\nexport function useResizeObserver<T extends HTMLElement = any>() {\n const frameID = useRef(0);\n const ref = useRef<T>(null);\n\n const [rect, setRect] = useState<ObserverRect>(defaultState);\n\n const observer = useMemo(\n () =>\n typeof window !== 'undefined'\n ? new ResizeObserver((entries: any) => {\n const entry = entries[0];\n\n if (entry) {\n cancelAnimationFrame(frameID.current);\n\n frameID.current = requestAnimationFrame(() => {\n if (ref.current) {\n setRect(entry.contentRect);\n }\n });\n }\n })\n : null,\n []\n );\n\n useEffect(() => {\n if (ref.current) {\n observer.observe(ref.current);\n }\n\n return () => {\n observer.disconnect();\n\n if (frameID.current) {\n cancelAnimationFrame(frameID.current);\n }\n };\n }, [ref.current]);\n\n return [ref, rect] as const;\n}\n\nexport function useElementSize<T extends HTMLElement = any>() {\n const [ref, { width, height }] = useResizeObserver<T>();\n return { ref, width, height };\n}\n"],"names":[],"mappings":";;AACA,MAAM,YAAY,GAAG;AACrB,EAAE,CAAC,EAAE,CAAC;AACN,EAAE,CAAC,EAAE,CAAC;AACN,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,GAAG,EAAE,CAAC;AACR,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,KAAK,EAAE,CAAC;AACV,CAAC,CAAC;AACK,SAAS,iBAAiB,GAAG;AACpC,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AACjD,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,OAAO,MAAM,KAAK,WAAW,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAK;AACjG,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,OAAO,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAM;AACpD,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE;AACzB,UAAU,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACrC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;AACjB,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE;AACrB,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,MAAM;AACjB,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC5B,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9C,OAAO;AACP,KAAK,CAAC;AACN,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACpB,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrB,CAAC;AACM,SAAS,cAAc,GAAG;AACjC,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC;AACvD,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAChC;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createStorage } from '../use-local-storage/create-storage.js';
|
|
2
|
+
|
|
3
|
+
function useSessionStorage(props) {
|
|
4
|
+
return createStorage("sessionStorage", "use-session-storage")(props);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export { useSessionStorage };
|
|
8
|
+
//# sourceMappingURL=use-session-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-storage.js","sources":["../../src/use-session-storage/use-session-storage.ts"],"sourcesContent":["import { createStorage, IStorageProperties } from '../use-local-storage/create-storage';\n\nexport function useSessionStorage<T = string>(props: IStorageProperties<T>) {\n return createStorage<T>('sessionStorage', 'use-session-storage')(props);\n}\n"],"names":[],"mappings":";;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,EAAE,OAAO,aAAa,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC;AACvE;;;;"}
|
package/lib/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export { useInterval } from './use-interval/use-interval';
|
|
|
17
17
|
export { useIsomorphicEffect } from './use-isomorphic-effect/use-isomorphic-effect';
|
|
18
18
|
export { useListState } from './use-list-state/use-list-state';
|
|
19
19
|
export { useLocalStorage } from './use-local-storage/use-local-storage';
|
|
20
|
+
export { useSessionStorage } from './use-session-storage/use-session-storage';
|
|
20
21
|
export { useMediaQuery } from './use-media-query/use-media-query';
|
|
21
22
|
export { useMergedRef, mergeRefs } from './use-merged-ref/use-merged-ref';
|
|
22
23
|
export { useMouse } from './use-mouse/use-mouse';
|
|
@@ -50,6 +51,7 @@ export { useFocusWithin } from './use-focus-within/use-focus-within';
|
|
|
50
51
|
export { useNetwork } from './use-network/use-network';
|
|
51
52
|
export { useTimeout } from './use-timeout/use-timeout';
|
|
52
53
|
export { useTextSelection } from './use-text-selection/use-text-selection';
|
|
54
|
+
export { usePrevious } from './use-previous/use-previous';
|
|
53
55
|
export type { UseMovePosition } from './use-move/use-move';
|
|
54
56
|
export type { OS } from './use-os/use-os';
|
|
55
57
|
export type { HotkeyItem } from './use-hotkeys/use-hotkeys';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare type StorageType = 'localStorage' | 'sessionStorage';
|
|
2
|
+
export interface IStorageProperties<T> {
|
|
3
|
+
/** Storage key */
|
|
4
|
+
key: string;
|
|
5
|
+
/** Default value that will be set if value is not found in storage */
|
|
6
|
+
defaultValue?: T;
|
|
7
|
+
/** If set to true, value will be update is useEffect after mount */
|
|
8
|
+
getInitialValueInEffect?: boolean;
|
|
9
|
+
/** Function to serialize value into string to be save in storage */
|
|
10
|
+
serialize?(value: T): string;
|
|
11
|
+
/** Function to deserialize string value from storage to value */
|
|
12
|
+
deserialize?(value: string): T;
|
|
13
|
+
}
|
|
14
|
+
export declare function createStorage<T>(type: StorageType, hookName: string): ({ key, defaultValue, getInitialValueInEffect, deserialize, serialize, }: IStorageProperties<T>) => readonly [T, (val: T | ((prevState: T) => T)) => void];
|
|
15
|
+
//# sourceMappingURL=create-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-storage.d.ts","sourceRoot":"","sources":["../../src/use-local-storage/create-storage.ts"],"names":[],"mappings":"AAGA,oBAAY,WAAW,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAE5D,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,kBAAkB;IAClB,GAAG,EAAE,MAAM,CAAC;IAEZ,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB,oEAAoE;IACpE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,oEAAoE;IACpE,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAE7B,iEAAiE;IACjE,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;CAChC;AAkBD,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,6EAS/D,mBAAmB,CAAC,CAAC,yCAiBG,CAAC,KAAK,CAAC,YA6CnC"}
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
key: string;
|
|
4
|
-
/** Default value that will be set if value is not found in local storage */
|
|
5
|
-
defaultValue?: T;
|
|
6
|
-
/** If set to true, value will be update is useEffect after mount */
|
|
7
|
-
getInitialValueInEffect?: boolean;
|
|
8
|
-
/** Function to serialize value into string to be save in local storage */
|
|
9
|
-
serialize?(value: T): string;
|
|
10
|
-
/** Function to deserialize string value from local storage to value */
|
|
11
|
-
deserialize?(value: string): T;
|
|
12
|
-
}
|
|
13
|
-
export declare function useLocalStorage<T = string>({ key, defaultValue, getInitialValueInEffect, deserialize, serialize, }: UseLocalStorage<T>): readonly [T, (val: T | ((prevState: T) => T)) => void];
|
|
14
|
-
export {};
|
|
1
|
+
import { IStorageProperties } from './create-storage';
|
|
2
|
+
export declare function useLocalStorage<T = string>(props: IStorageProperties<T>): readonly [T, (val: T | ((prevState: T) => T)) => void];
|
|
15
3
|
//# sourceMappingURL=use-local-storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-local-storage.d.ts","sourceRoot":"","sources":["../../src/use-local-storage/use-local-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-local-storage.d.ts","sourceRoot":"","sources":["../../src/use-local-storage/use-local-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAErE,wBAAgB,eAAe,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,0DAEvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-network.d.ts","sourceRoot":"","sources":["../../src/use-network/use-network.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAChG;AAyBD,wBAAgB,UAAU;YACuB,OAAO;
|
|
1
|
+
{"version":3,"file":"use-network.d.ts","sourceRoot":"","sources":["../../src/use-network/use-network.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAChG;AAyBD,wBAAgB,UAAU;YACuB,OAAO;kBAwBvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-previous.d.ts","sourceRoot":"","sources":["../../src/use-previous/use-previous.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAQtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-resize-observer.d.ts","sourceRoot":"","sources":["../../src/use-resize-observer/use-resize-observer.ts"],"names":[],"mappings":";AAEA,aAAK,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"use-resize-observer.d.ts","sourceRoot":"","sources":["../../src/use-resize-observer/use-resize-observer.ts"],"names":[],"mappings":";AAEA,aAAK,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAapD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,kEAyC5D;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG;;;;EAGzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-storage.d.ts","sourceRoot":"","sources":["../../src/use-session-storage/use-session-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAExF,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,0DAEzE"}
|