@sohanemon/utils 5.1.3 → 5.1.5
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/dist/hooks/index.js +11 -13
- package/dist/types/gates.d.ts +14 -0
- package/dist/types/gates.js +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/utilities.d.ts +3 -0
- package/package.json +1 -1
package/dist/hooks/index.js
CHANGED
|
@@ -154,17 +154,15 @@ export const useSessionStorage = (key, defaultValue) => {
|
|
|
154
154
|
setStoredValue(JSON.parse(value));
|
|
155
155
|
}
|
|
156
156
|
}, [key]);
|
|
157
|
-
const updateStoredValue = (valueOrFn) => {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
newValue
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
setStoredValue(newValue);
|
|
167
|
-
};
|
|
157
|
+
const updateStoredValue = React.useCallback((valueOrFn) => {
|
|
158
|
+
setStoredValue((prev) => {
|
|
159
|
+
const newValue = typeof valueOrFn === 'function'
|
|
160
|
+
? valueOrFn(prev)
|
|
161
|
+
: valueOrFn;
|
|
162
|
+
sessionStorage.setItem(key, JSON.stringify(newValue));
|
|
163
|
+
return newValue;
|
|
164
|
+
});
|
|
165
|
+
}, [key]);
|
|
168
166
|
return [storedValue, updateStoredValue];
|
|
169
167
|
};
|
|
170
168
|
/**
|
|
@@ -181,7 +179,7 @@ export const useLocalStorage = (key, defaultValue) => {
|
|
|
181
179
|
setStoredValue(JSON.parse(value));
|
|
182
180
|
}
|
|
183
181
|
}, [key]);
|
|
184
|
-
const updateStoredValue = (valueOrFn) => {
|
|
182
|
+
const updateStoredValue = React.useCallback((valueOrFn) => {
|
|
185
183
|
let newValue;
|
|
186
184
|
if (typeof valueOrFn === 'function') {
|
|
187
185
|
newValue = valueOrFn(storedValue);
|
|
@@ -191,7 +189,7 @@ export const useLocalStorage = (key, defaultValue) => {
|
|
|
191
189
|
}
|
|
192
190
|
localStorage.setItem(key, JSON.stringify(newValue));
|
|
193
191
|
setStoredValue(newValue);
|
|
194
|
-
};
|
|
192
|
+
}, [key]);
|
|
195
193
|
return [storedValue, updateStoredValue];
|
|
196
194
|
};
|
|
197
195
|
/**
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Without } from './utilities';
|
|
2
|
+
export type BUFFER<T> = T;
|
|
3
|
+
export type IMPLIES<T, U> = T extends U ? true : false;
|
|
4
|
+
export type XOR_Binary<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;
|
|
5
|
+
export type XNOR_Binary<T, U> = (T & U) | (Without<T, U> & Without<U, T>);
|
|
6
|
+
export type AND<T extends any[]> = T extends [infer F, ...infer R] ? R extends any[] ? F & AND<R> : F : unknown;
|
|
7
|
+
export type OR<T extends any[]> = T extends [infer F, ...infer R] ? R extends any[] ? F | OR<R> : F : never;
|
|
8
|
+
export type XOR<T extends any[]> = T extends [infer F, ...infer R] ? R extends [infer S, ...infer Rest] ? XOR<[XOR_Binary<F, S>, ...Rest]> : F : never;
|
|
9
|
+
export type XNOR<T extends any[]> = T extends [infer F, ...infer R] ? R extends [infer S, ...infer Rest] ? XNOR<[XNOR_Binary<F, S>, ...Rest]> : F : never;
|
|
10
|
+
export type NOT<T> = {
|
|
11
|
+
[P in keyof T]?: never;
|
|
12
|
+
};
|
|
13
|
+
export type NAND<T extends any[]> = NOT<AND<T>>;
|
|
14
|
+
export type NOR<T extends any[]> = NOT<OR<T>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/types/index.d.ts
CHANGED
package/dist/types/index.js
CHANGED
|
@@ -56,3 +56,6 @@ export type Prettify<T> = {
|
|
|
56
56
|
export type NestedKeyOf<ObjectType extends object, IgnoreKeys extends string = never> = {
|
|
57
57
|
[Key in keyof ObjectType & string]: Key extends IgnoreKeys ? never : ObjectType[Key] extends object ? ObjectType[Key] extends Array<any> ? Key : `${Key}` | `${Key}.${NestedKeyOf<ObjectType[Key], IgnoreKeys>}` : `${Key}`;
|
|
58
58
|
}[keyof ObjectType & string];
|
|
59
|
+
export type Without<T, U> = {
|
|
60
|
+
[P in Exclude<keyof T, keyof U>]?: never;
|
|
61
|
+
};
|