react-state-bucket 1.2.12 → 1.2.13
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/index.d.ts +8 -3
- package/index.js +60 -34
- package/index.js.map +1 -1
- package/index.mjs +60 -34
- package/index.mjs.map +1 -1
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -13,13 +13,18 @@ type InitialBucketData = {
|
|
|
13
13
|
declare const createBucket: <T extends InitialBucketData>(initial: T, option?: BucketOptions) => () => {
|
|
14
14
|
state: Record<keyof T, any>;
|
|
15
15
|
get: (key: keyof T, defaultValue?: any) => Record<keyof T, any>[keyof T];
|
|
16
|
-
set: (key: keyof T, value: any) => void;
|
|
16
|
+
set: (key: keyof T, value: any, dispatch?: boolean) => void;
|
|
17
|
+
delete: (key: keyof T) => void;
|
|
18
|
+
clear: () => void;
|
|
17
19
|
validate: () => boolean;
|
|
18
20
|
isValid: (key: keyof T) => boolean;
|
|
19
21
|
getChanges: () => Partial<Record<keyof T, any>>;
|
|
20
22
|
isChanged: (k: keyof T) => boolean;
|
|
21
|
-
|
|
22
|
-
getError: (key: keyof T) =>
|
|
23
|
+
getErrors: () => Record<keyof T, string>;
|
|
24
|
+
getError: (key: keyof T) => Record<keyof T, string>[keyof T] | "";
|
|
25
|
+
setError: (key: keyof T, message: string) => void;
|
|
26
|
+
clearErrors: () => void;
|
|
27
|
+
clearError: (key: keyof T) => void;
|
|
23
28
|
};
|
|
24
29
|
declare const xv: {
|
|
25
30
|
any: () => xanv.XVAny<any>;
|
package/index.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
const hooks = new Map();
|
|
12
12
|
const state = Initial.default(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
|
|
13
13
|
const changes = {};
|
|
14
|
+
const errors = {};
|
|
14
15
|
const useBucket = () => {
|
|
15
16
|
const id = "rsb_" + react.useId();
|
|
16
17
|
const [, setState] = react.useState(0);
|
|
@@ -30,12 +31,14 @@
|
|
|
30
31
|
}
|
|
31
32
|
return value;
|
|
32
33
|
};
|
|
33
|
-
const set = (key, value) => {
|
|
34
|
+
const set = (key, value, dispatch = true) => {
|
|
34
35
|
if (!(key in initial)) {
|
|
35
36
|
throw new Error(`Property ${String(key)} is not defined in the bucket.`);
|
|
36
37
|
}
|
|
37
38
|
state[key] = value;
|
|
38
|
-
|
|
39
|
+
if (dispatch) {
|
|
40
|
+
hooks.forEach((hook) => hook());
|
|
41
|
+
}
|
|
39
42
|
changes[key] = true;
|
|
40
43
|
if ((option === null || option === void 0 ? void 0 : option.onChange) && changes[key]) {
|
|
41
44
|
option.onChange(key, value);
|
|
@@ -56,25 +59,16 @@
|
|
|
56
59
|
}
|
|
57
60
|
}
|
|
58
61
|
};
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
for (let k in initial) {
|
|
62
|
-
initial[k].parse(state[k]);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
return true;
|
|
62
|
+
const _delete = (key) => {
|
|
63
|
+
set(key, undefined);
|
|
69
64
|
};
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return false;
|
|
65
|
+
const clear = () => {
|
|
66
|
+
const initVal = Initial.default(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
|
|
67
|
+
for (let key in initial) {
|
|
68
|
+
state[key] = initVal[key];
|
|
69
|
+
delete changes[key];
|
|
76
70
|
}
|
|
77
|
-
|
|
71
|
+
hooks.forEach((hook) => hook());
|
|
78
72
|
};
|
|
79
73
|
const getChanges = () => {
|
|
80
74
|
const changedData = {};
|
|
@@ -86,28 +80,60 @@
|
|
|
86
80
|
return changedData;
|
|
87
81
|
};
|
|
88
82
|
const isChanged = (k) => !!changes[k];
|
|
89
|
-
const
|
|
90
|
-
|
|
83
|
+
const isValid = (key) => {
|
|
84
|
+
try {
|
|
85
|
+
initial[key].parse(state[key]);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
errors[key] = error.message;
|
|
89
|
+
}
|
|
90
|
+
return !(key in errors);
|
|
91
|
+
};
|
|
92
|
+
const validate = () => {
|
|
91
93
|
for (let k in initial) {
|
|
92
|
-
|
|
93
|
-
initial[k].parse(state[k]);
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
errors[k] = error.message;
|
|
97
|
-
}
|
|
94
|
+
isValid(k);
|
|
98
95
|
}
|
|
99
|
-
return errors;
|
|
96
|
+
return Object.keys(errors).length === 0;
|
|
100
97
|
};
|
|
101
98
|
const getError = (key) => {
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
if (key in errors) {
|
|
100
|
+
return errors[key];
|
|
104
101
|
}
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
return '';
|
|
103
|
+
};
|
|
104
|
+
const getErrors = () => {
|
|
105
|
+
return errors;
|
|
106
|
+
};
|
|
107
|
+
const setError = (key, message) => {
|
|
108
|
+
errors[key] = message;
|
|
109
|
+
hooks.forEach((hook) => hook());
|
|
110
|
+
};
|
|
111
|
+
const clearErrors = () => {
|
|
112
|
+
for (let k in errors) {
|
|
113
|
+
delete errors[k];
|
|
107
114
|
}
|
|
108
|
-
|
|
115
|
+
hooks.forEach((hook) => hook());
|
|
116
|
+
};
|
|
117
|
+
const clearError = (key) => {
|
|
118
|
+
delete errors[key];
|
|
119
|
+
hooks.forEach((hook) => hook());
|
|
120
|
+
};
|
|
121
|
+
return {
|
|
122
|
+
state,
|
|
123
|
+
get,
|
|
124
|
+
set,
|
|
125
|
+
delete: _delete,
|
|
126
|
+
clear,
|
|
127
|
+
validate,
|
|
128
|
+
isValid,
|
|
129
|
+
getChanges,
|
|
130
|
+
isChanged,
|
|
131
|
+
getErrors,
|
|
132
|
+
getError,
|
|
133
|
+
setError,
|
|
134
|
+
clearErrors,
|
|
135
|
+
clearError
|
|
109
136
|
};
|
|
110
|
-
return { state, get, set, validate, isValid, getChanges, isChanged, errors, getError };
|
|
111
137
|
};
|
|
112
138
|
return useBucket;
|
|
113
139
|
};
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { Infer, xv as XV, XVInstanceType } from \"xanv\"\nimport youid from \"youid\";\nimport { getCookie, setCookie } from \"./Cookie\";\nimport Initial from \"./Initial\";\n\nexport type StoreType = \"memory\" | \"session\" | \"local\" | \"url\" | \"cookie\"\nexport type BucketOptions = {\n store?: StoreType;\n data_key?: string;\n onChange?: (key: string, value: any) => void\n}\n\nexport type InitialBucketData = {\n [key: string]: XVInstanceType\n}\n\n\nexport const createBucket = <T extends InitialBucketData>(initial: T, option?: BucketOptions) => {\n option = {\n store: \"memory\",\n ...option,\n }\n\n if (!option?.data_key) {\n let data_key = ''\n for (let key in initial) {\n const field = initial[key]\n data_key += key + ':' + JSON.stringify(field.meta) + ';'\n }\n option.data_key = youid(data_key)\n }\n\n const hooks = new Map<string, Function>()\n const state: Record<keyof T, any> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n const changes: Record<keyof T, boolean> = {} as any\n\n const useBucket = () => {\n const id = \"rsb_\" + useId()\n const [, setState] = useState(0)\n\n useEffect(() => {\n hooks.set(id, () => setState(Math.random()))\n return () => {\n hooks.delete(id)\n }\n }, [])\n\n const get = (key: keyof T, defaultValue?: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n let value = state[key];\n if (value === undefined && defaultValue !== undefined) {\n value = defaultValue\n }\n return value;\n }\n\n const set = (key: keyof T, value: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n state[key] = value;\n hooks.forEach((hook) => hook());\n changes[key] = true\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { Infer, xv as XV, XVInstanceType } from \"xanv\"\nimport youid from \"youid\";\nimport { getCookie, setCookie } from \"./Cookie\";\nimport Initial from \"./Initial\";\n\nexport type StoreType = \"memory\" | \"session\" | \"local\" | \"url\" | \"cookie\"\nexport type BucketOptions = {\n store?: StoreType;\n data_key?: string;\n onChange?: (key: string, value: any) => void\n}\n\nexport type InitialBucketData = {\n [key: string]: XVInstanceType\n}\n\n\nexport const createBucket = <T extends InitialBucketData>(initial: T, option?: BucketOptions) => {\n option = {\n store: \"memory\",\n ...option,\n }\n\n if (!option?.data_key) {\n let data_key = ''\n for (let key in initial) {\n const field = initial[key]\n data_key += key + ':' + JSON.stringify(field.meta) + ';'\n }\n option.data_key = youid(data_key)\n }\n\n const hooks = new Map<string, Function>()\n const state: Record<keyof T, any> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n const changes: Record<keyof T, boolean> = {} as any\n const errors: Record<keyof T, string> = {} as any\n\n const useBucket = () => {\n const id = \"rsb_\" + useId()\n const [, setState] = useState(0)\n\n useEffect(() => {\n hooks.set(id, () => setState(Math.random()))\n return () => {\n hooks.delete(id)\n }\n }, [])\n\n const get = (key: keyof T, defaultValue?: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n let value = state[key];\n if (value === undefined && defaultValue !== undefined) {\n value = defaultValue\n }\n return value;\n }\n\n const set = (key: keyof T, value: any, dispatch = true) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n state[key] = value;\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n changes[key] = true\n if (option?.onChange && changes[key]) {\n option.onChange(key as string, value)\n }\n\n if (typeof window !== 'undefined') {\n value = JSON.stringify(value) as any\n if (option.store === 'session' || option.store === 'local') {\n let storage = option.store === \"session\" ? sessionStorage : localStorage\n storage.setItem(option.data_key!, JSON.stringify(state))\n } else if (option.store === 'url') {\n let url = new URL(window.location.href)\n url.searchParams.set(option.data_key!, encodeURIComponent(JSON.stringify(state)))\n window.history.replaceState({}, '', url.toString())\n } else if (option.store === 'cookie') {\n setCookie(option.data_key!, JSON.stringify(state))\n }\n }\n }\n\n const _delete = (key: keyof T) => {\n set(key, undefined)\n }\n\n const clear = () => {\n const initVal = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n for (let key in initial) {\n state[key] = initVal[key];\n delete changes[key]\n }\n hooks.forEach((hook) => hook());\n }\n\n const getChanges = () => {\n const changedData: Partial<Record<keyof T, any>> = {}\n for (let k in changes) {\n if (changes[k]) {\n changedData[k] = state[k]\n }\n }\n return changedData\n }\n\n const isChanged = (k: keyof T) => !!changes[k]\n\n const isValid = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error: any) {\n errors[key] = (error as any).message\n }\n return !(key in errors)\n }\n\n const validate = () => {\n for (let k in initial) {\n isValid(k)\n }\n return Object.keys(errors).length === 0\n }\n\n const getError = (key: keyof T) => {\n if (key in errors) {\n return errors[key]\n }\n return ''\n }\n\n const getErrors = () => {\n return errors\n }\n\n const setError = (key: keyof T, message: string) => {\n errors[key] = message\n hooks.forEach((hook) => hook());\n }\n\n const clearErrors = () => {\n for (let k in errors) {\n delete errors[k]\n }\n hooks.forEach((hook) => hook());\n }\n\n const clearError = (key: keyof T) => {\n delete errors[key]\n hooks.forEach((hook) => hook());\n }\n\n\n return {\n state,\n get,\n set,\n delete: _delete,\n clear,\n validate,\n isValid,\n getChanges,\n isChanged,\n getErrors,\n getError,\n setError,\n clearErrors,\n clearError\n }\n }\n\n return useBucket\n}\n\nexport const xv = XV"],"names":["Initial","useId","useState","useEffect","setCookie","XV"],"mappings":"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"}
|
package/index.mjs
CHANGED
|
@@ -11,6 +11,7 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
|
|
|
11
11
|
const hooks = new Map();
|
|
12
12
|
const state = Initial(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
|
|
13
13
|
const changes = {};
|
|
14
|
+
const errors = {};
|
|
14
15
|
const useBucket = () => {
|
|
15
16
|
const id = "rsb_" + useId();
|
|
16
17
|
const [, setState] = useState(0);
|
|
@@ -30,12 +31,14 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
|
|
|
30
31
|
}
|
|
31
32
|
return value;
|
|
32
33
|
};
|
|
33
|
-
const set = (key, value) => {
|
|
34
|
+
const set = (key, value, dispatch = true) => {
|
|
34
35
|
if (!(key in initial)) {
|
|
35
36
|
throw new Error(`Property ${String(key)} is not defined in the bucket.`);
|
|
36
37
|
}
|
|
37
38
|
state[key] = value;
|
|
38
|
-
|
|
39
|
+
if (dispatch) {
|
|
40
|
+
hooks.forEach((hook) => hook());
|
|
41
|
+
}
|
|
39
42
|
changes[key] = true;
|
|
40
43
|
if ((option === null || option === void 0 ? void 0 : option.onChange) && changes[key]) {
|
|
41
44
|
option.onChange(key, value);
|
|
@@ -56,25 +59,16 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
|
|
|
56
59
|
}
|
|
57
60
|
}
|
|
58
61
|
};
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
for (let k in initial) {
|
|
62
|
-
initial[k].parse(state[k]);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
return true;
|
|
62
|
+
const _delete = (key) => {
|
|
63
|
+
set(key, undefined);
|
|
69
64
|
};
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return false;
|
|
65
|
+
const clear = () => {
|
|
66
|
+
const initVal = Initial(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
|
|
67
|
+
for (let key in initial) {
|
|
68
|
+
state[key] = initVal[key];
|
|
69
|
+
delete changes[key];
|
|
76
70
|
}
|
|
77
|
-
|
|
71
|
+
hooks.forEach((hook) => hook());
|
|
78
72
|
};
|
|
79
73
|
const getChanges = () => {
|
|
80
74
|
const changedData = {};
|
|
@@ -86,28 +80,60 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
|
|
|
86
80
|
return changedData;
|
|
87
81
|
};
|
|
88
82
|
const isChanged = (k) => !!changes[k];
|
|
89
|
-
const
|
|
90
|
-
|
|
83
|
+
const isValid = (key) => {
|
|
84
|
+
try {
|
|
85
|
+
initial[key].parse(state[key]);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
errors[key] = error.message;
|
|
89
|
+
}
|
|
90
|
+
return !(key in errors);
|
|
91
|
+
};
|
|
92
|
+
const validate = () => {
|
|
91
93
|
for (let k in initial) {
|
|
92
|
-
|
|
93
|
-
initial[k].parse(state[k]);
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
errors[k] = error.message;
|
|
97
|
-
}
|
|
94
|
+
isValid(k);
|
|
98
95
|
}
|
|
99
|
-
return errors;
|
|
96
|
+
return Object.keys(errors).length === 0;
|
|
100
97
|
};
|
|
101
98
|
const getError = (key) => {
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
if (key in errors) {
|
|
100
|
+
return errors[key];
|
|
104
101
|
}
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
return '';
|
|
103
|
+
};
|
|
104
|
+
const getErrors = () => {
|
|
105
|
+
return errors;
|
|
106
|
+
};
|
|
107
|
+
const setError = (key, message) => {
|
|
108
|
+
errors[key] = message;
|
|
109
|
+
hooks.forEach((hook) => hook());
|
|
110
|
+
};
|
|
111
|
+
const clearErrors = () => {
|
|
112
|
+
for (let k in errors) {
|
|
113
|
+
delete errors[k];
|
|
107
114
|
}
|
|
108
|
-
|
|
115
|
+
hooks.forEach((hook) => hook());
|
|
116
|
+
};
|
|
117
|
+
const clearError = (key) => {
|
|
118
|
+
delete errors[key];
|
|
119
|
+
hooks.forEach((hook) => hook());
|
|
120
|
+
};
|
|
121
|
+
return {
|
|
122
|
+
state,
|
|
123
|
+
get,
|
|
124
|
+
set,
|
|
125
|
+
delete: _delete,
|
|
126
|
+
clear,
|
|
127
|
+
validate,
|
|
128
|
+
isValid,
|
|
129
|
+
getChanges,
|
|
130
|
+
isChanged,
|
|
131
|
+
getErrors,
|
|
132
|
+
getError,
|
|
133
|
+
setError,
|
|
134
|
+
clearErrors,
|
|
135
|
+
clearError
|
|
109
136
|
};
|
|
110
|
-
return { state, get, set, validate, isValid, getChanges, isChanged, errors, getError };
|
|
111
137
|
};
|
|
112
138
|
return useBucket;
|
|
113
139
|
};
|
package/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { Infer, xv as XV, XVInstanceType } from \"xanv\"\nimport youid from \"youid\";\nimport { getCookie, setCookie } from \"./Cookie\";\nimport Initial from \"./Initial\";\n\nexport type StoreType = \"memory\" | \"session\" | \"local\" | \"url\" | \"cookie\"\nexport type BucketOptions = {\n store?: StoreType;\n data_key?: string;\n onChange?: (key: string, value: any) => void\n}\n\nexport type InitialBucketData = {\n [key: string]: XVInstanceType\n}\n\n\nexport const createBucket = <T extends InitialBucketData>(initial: T, option?: BucketOptions) => {\n option = {\n store: \"memory\",\n ...option,\n }\n\n if (!option?.data_key) {\n let data_key = ''\n for (let key in initial) {\n const field = initial[key]\n data_key += key + ':' + JSON.stringify(field.meta) + ';'\n }\n option.data_key = youid(data_key)\n }\n\n const hooks = new Map<string, Function>()\n const state: Record<keyof T, any> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n const changes: Record<keyof T, boolean> = {} as any\n\n const useBucket = () => {\n const id = \"rsb_\" + useId()\n const [, setState] = useState(0)\n\n useEffect(() => {\n hooks.set(id, () => setState(Math.random()))\n return () => {\n hooks.delete(id)\n }\n }, [])\n\n const get = (key: keyof T, defaultValue?: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n let value = state[key];\n if (value === undefined && defaultValue !== undefined) {\n value = defaultValue\n }\n return value;\n }\n\n const set = (key: keyof T, value: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n state[key] = value;\n hooks.forEach((hook) => hook());\n changes[key] = true\n
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { Infer, xv as XV, XVInstanceType } from \"xanv\"\nimport youid from \"youid\";\nimport { getCookie, setCookie } from \"./Cookie\";\nimport Initial from \"./Initial\";\n\nexport type StoreType = \"memory\" | \"session\" | \"local\" | \"url\" | \"cookie\"\nexport type BucketOptions = {\n store?: StoreType;\n data_key?: string;\n onChange?: (key: string, value: any) => void\n}\n\nexport type InitialBucketData = {\n [key: string]: XVInstanceType\n}\n\n\nexport const createBucket = <T extends InitialBucketData>(initial: T, option?: BucketOptions) => {\n option = {\n store: \"memory\",\n ...option,\n }\n\n if (!option?.data_key) {\n let data_key = ''\n for (let key in initial) {\n const field = initial[key]\n data_key += key + ':' + JSON.stringify(field.meta) + ';'\n }\n option.data_key = youid(data_key)\n }\n\n const hooks = new Map<string, Function>()\n const state: Record<keyof T, any> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n const changes: Record<keyof T, boolean> = {} as any\n const errors: Record<keyof T, string> = {} as any\n\n const useBucket = () => {\n const id = \"rsb_\" + useId()\n const [, setState] = useState(0)\n\n useEffect(() => {\n hooks.set(id, () => setState(Math.random()))\n return () => {\n hooks.delete(id)\n }\n }, [])\n\n const get = (key: keyof T, defaultValue?: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n let value = state[key];\n if (value === undefined && defaultValue !== undefined) {\n value = defaultValue\n }\n return value;\n }\n\n const set = (key: keyof T, value: any, dispatch = true) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n state[key] = value;\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n changes[key] = true\n if (option?.onChange && changes[key]) {\n option.onChange(key as string, value)\n }\n\n if (typeof window !== 'undefined') {\n value = JSON.stringify(value) as any\n if (option.store === 'session' || option.store === 'local') {\n let storage = option.store === \"session\" ? sessionStorage : localStorage\n storage.setItem(option.data_key!, JSON.stringify(state))\n } else if (option.store === 'url') {\n let url = new URL(window.location.href)\n url.searchParams.set(option.data_key!, encodeURIComponent(JSON.stringify(state)))\n window.history.replaceState({}, '', url.toString())\n } else if (option.store === 'cookie') {\n setCookie(option.data_key!, JSON.stringify(state))\n }\n }\n }\n\n const _delete = (key: keyof T) => {\n set(key, undefined)\n }\n\n const clear = () => {\n const initVal = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n for (let key in initial) {\n state[key] = initVal[key];\n delete changes[key]\n }\n hooks.forEach((hook) => hook());\n }\n\n const getChanges = () => {\n const changedData: Partial<Record<keyof T, any>> = {}\n for (let k in changes) {\n if (changes[k]) {\n changedData[k] = state[k]\n }\n }\n return changedData\n }\n\n const isChanged = (k: keyof T) => !!changes[k]\n\n const isValid = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error: any) {\n errors[key] = (error as any).message\n }\n return !(key in errors)\n }\n\n const validate = () => {\n for (let k in initial) {\n isValid(k)\n }\n return Object.keys(errors).length === 0\n }\n\n const getError = (key: keyof T) => {\n if (key in errors) {\n return errors[key]\n }\n return ''\n }\n\n const getErrors = () => {\n return errors\n }\n\n const setError = (key: keyof T, message: string) => {\n errors[key] = message\n hooks.forEach((hook) => hook());\n }\n\n const clearErrors = () => {\n for (let k in errors) {\n delete errors[k]\n }\n hooks.forEach((hook) => hook());\n }\n\n const clearError = (key: keyof T) => {\n delete errors[key]\n hooks.forEach((hook) => hook());\n }\n\n\n return {\n state,\n get,\n set,\n delete: _delete,\n clear,\n validate,\n isValid,\n getChanges,\n isChanged,\n getErrors,\n getError,\n setError,\n clearErrors,\n clearError\n }\n }\n\n return useBucket\n}\n\nexport const xv = XV"],"names":["XV"],"mappings":"kLAkBa,YAAY,GAAG,CAA8B,OAAU,EAAE,MAAsB,KAAI;AAC9F,IAAA,MAAM,mBACJ,KAAK,EAAE,QAAQ,EAAA,EACZ,MAAM,CACV;IAED,IAAI,EAAC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,QAAQ,CAAA,EAAE;QACrB,IAAI,QAAQ,GAAG,EAAE;AACjB,QAAA,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;AACvB,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AAC1B,YAAA,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG;QAC1D;AACA,QAAA,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACnC;AAEA,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB;IACzC,MAAM,KAAK,GAAyB,OAAO,CAAC,OAAO,EAAE,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,KAAI,EAAE,EAAE,MAAM,IAAI,EAAE,CAAyB;IAClH,MAAM,OAAO,GAA6B,EAAS;IACnD,MAAM,MAAM,GAA4B,EAAS;IAEjD,MAAM,SAAS,GAAG,MAAK;AACrB,QAAA,MAAM,EAAE,GAAG,MAAM,GAAG,KAAK,EAAE;QAC3B,MAAM,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QAEhC,SAAS,CAAC,MAAK;AACb,YAAA,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5C,YAAA,OAAO,MAAK;AACV,gBAAA,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AAClB,YAAA,CAAC;QACH,CAAC,EAAE,EAAE,CAAC;AAEN,QAAA,MAAM,GAAG,GAAG,CAAC,GAAY,EAAE,YAAkB,KAAI;AAC/C,YAAA,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,CAAA,SAAA,EAAY,MAAM,CAAC,GAAG,CAAC,CAAA,8BAAA,CAAgC,CAAC;YAC1E;AACA,YAAA,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;YACtB,IAAI,KAAK,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;gBACrD,KAAK,GAAG,YAAY;YACtB;AACA,YAAA,OAAO,KAAK;AACd,QAAA,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,GAAY,EAAE,KAAU,EAAE,QAAQ,GAAG,IAAI,KAAI;AACxD,YAAA,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,CAAA,SAAA,EAAY,MAAM,CAAC,GAAG,CAAC,CAAA,8BAAA,CAAgC,CAAC;YAC1E;AACA,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK;YAClB,IAAI,QAAQ,EAAE;gBACZ,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjC;AACA,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;AACnB,YAAA,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,KAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AACpC,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAa,EAAE,KAAK,CAAC;YACvC;AAEA,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,gBAAA,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAQ;AACpC,gBAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;AAC1D,oBAAA,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,GAAG,cAAc,GAAG,YAAY;AACxE,oBAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC1D;AAAO,qBAAA,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE;oBACjC,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvC,oBAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,QAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACjF,oBAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACrD;AAAO,qBAAA,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;AACpC,oBAAA,SAAS,CAAC,MAAM,CAAC,QAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACpD;YACF;AACF,QAAA,CAAC;AAED,QAAA,MAAM,OAAO,GAAG,CAAC,GAAY,KAAI;AAC/B,YAAA,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC;AACrB,QAAA,CAAC;QAED,MAAM,KAAK,GAAG,MAAK;YACjB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,KAAI,EAAE,EAAE,MAAM,IAAI,EAAE,CAAyB;AAC9F,YAAA,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;gBACvB,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;AACzB,gBAAA,OAAO,OAAO,CAAC,GAAG,CAAC;YACrB;YACA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;AACjC,QAAA,CAAC;QAED,MAAM,UAAU,GAAG,MAAK;YACtB,MAAM,WAAW,GAAkC,EAAE;AACrD,YAAA,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;AACrB,gBAAA,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;oBACd,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC3B;YACF;AACA,YAAA,OAAO,WAAW;AACpB,QAAA,CAAC;AAED,QAAA,MAAM,SAAS,GAAG,CAAC,CAAU,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9C,QAAA,MAAM,OAAO,GAAG,CAAC,GAAY,KAAI;AAC/B,YAAA,IAAI;gBACF,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC;YAAE,OAAO,KAAU,EAAE;AACnB,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAI,KAAa,CAAC,OAAO;YACtC;AACA,YAAA,OAAO,EAAE,GAAG,IAAI,MAAM,CAAC;AACzB,QAAA,CAAC;QAED,MAAM,QAAQ,GAAG,MAAK;AACpB,YAAA,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;gBACrB,OAAO,CAAC,CAAC,CAAC;YACZ;YACA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;AACzC,QAAA,CAAC;AAED,QAAA,MAAM,QAAQ,GAAG,CAAC,GAAY,KAAI;AAChC,YAAA,IAAI,GAAG,IAAI,MAAM,EAAE;AACjB,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC;YACpB;AACA,YAAA,OAAO,EAAE;AACX,QAAA,CAAC;QAED,MAAM,SAAS,GAAG,MAAK;AACrB,YAAA,OAAO,MAAM;AACf,QAAA,CAAC;AAED,QAAA,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAE,OAAe,KAAI;AACjD,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO;YACrB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;AACjC,QAAA,CAAC;QAED,MAAM,WAAW,GAAG,MAAK;AACvB,YAAA,KAAK,IAAI,CAAC,IAAI,MAAM,EAAE;AACpB,gBAAA,OAAO,MAAM,CAAC,CAAC,CAAC;YAClB;YACA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;AACjC,QAAA,CAAC;AAED,QAAA,MAAM,UAAU,GAAG,CAAC,GAAY,KAAI;AAClC,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC;YAClB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;AACjC,QAAA,CAAC;QAGD,OAAO;YACL,KAAK;YACL,GAAG;YACH,GAAG;AACH,YAAA,MAAM,EAAE,OAAO;YACf,KAAK;YACL,QAAQ;YACR,OAAO;YACP,UAAU;YACV,SAAS;YACT,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,WAAW;YACX;SACD;AACH,IAAA,CAAC;AAED,IAAA,OAAO,SAAS;AAClB;AAEO,MAAM,EAAE,GAAGA"}
|
package/package.json
CHANGED