snap-store 0.1.1 → 0.1.3
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/README.md +18 -20
- package/dist/esm/helper.d.ts +1 -0
- package/dist/esm/helper.d.ts.map +1 -1
- package/dist/esm/helper.js +6 -0
- package/dist/esm/helper.js.map +1 -1
- package/dist/esm/store.d.ts.map +1 -1
- package/dist/esm/store.js +76 -18
- package/dist/esm/store.js.map +1 -1
- package/dist/esm/types.d.ts +4 -2
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,8 +37,7 @@ const store = createStore({ count: 0});
|
|
|
37
37
|
|
|
38
38
|
const Counter = () => {
|
|
39
39
|
const { count } = store.useSnapshot();
|
|
40
|
-
|
|
41
|
-
return <button onClick={() => setCount(prev => prev + 1)}>
|
|
40
|
+
return <button onClick={() => store.setCount(prev => prev + 1)}>
|
|
42
41
|
{count}
|
|
43
42
|
</button>
|
|
44
43
|
}
|
|
@@ -61,8 +60,8 @@ const store = createStore({ count: 0});
|
|
|
61
60
|
|
|
62
61
|
function handleButton(){
|
|
63
62
|
const { count } = store.state; //read store state
|
|
64
|
-
store.
|
|
65
|
-
store.
|
|
63
|
+
store.setCount(count + 1); //mutate by value
|
|
64
|
+
store.setCount(prev => prev + 1); //mutate by function
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
const Component = () => {
|
|
@@ -75,16 +74,17 @@ In the component, `store.useSnapshot()` is used to refer to the store state as a
|
|
|
75
74
|
Since this is a global state library, you can also read and write store states outside components.
|
|
76
75
|
`store.state` is used to read the value in non-component functions.
|
|
77
76
|
|
|
78
|
-
|
|
77
|
+
Mutation methods have no difference in component or non-component context.
|
|
79
78
|
|
|
80
79
|
```ts
|
|
81
80
|
const store = createStore({ user: {name: "John", age: 20 }});
|
|
82
|
-
store.
|
|
83
|
-
store.
|
|
84
|
-
store.
|
|
85
|
-
store.
|
|
81
|
+
store.setUser({ name: "Mike", age: 20}); //value
|
|
82
|
+
store.setUser(prev => ({...prev, age: 21})); //by function
|
|
83
|
+
store.patchUser({ age: 22}); //partial update (merged)
|
|
84
|
+
store.produceUser(draft => { draft.age = 23 }) //update with immer
|
|
86
85
|
```
|
|
87
|
-
|
|
86
|
+
|
|
87
|
+
`store` object has a set of update methods for each field.
|
|
88
88
|
|
|
89
89
|
`set*` methods are similar to the setter function of `useState`. It takes a value or a function.
|
|
90
90
|
|
|
@@ -98,12 +98,12 @@ const store = createStore({
|
|
|
98
98
|
penColor: 'black',
|
|
99
99
|
penStyle: 'normal'
|
|
100
100
|
});
|
|
101
|
-
store.
|
|
101
|
+
store.assigns({ penWidth: 1, penStyle: 'dashed' });
|
|
102
102
|
//is equivalent to
|
|
103
|
-
store.
|
|
104
|
-
store.
|
|
103
|
+
store.setPenWidth(1);
|
|
104
|
+
store.setPenStyle('dashed');
|
|
105
105
|
```
|
|
106
|
-
In
|
|
106
|
+
In store, there is `assigns` method to set multiple fields at a time.
|
|
107
107
|
It is useful if you want to update multiple values.
|
|
108
108
|
|
|
109
109
|
There is no performance difference since reactive effects (i.e. rendering) are batched by React and executed in the next frame.
|
|
@@ -113,17 +113,16 @@ const store = createStore<{theme: "light" | "dark"}>({theme: "light" })
|
|
|
113
113
|
|
|
114
114
|
const ThemeSelector = () => {
|
|
115
115
|
const { theme } = store.useSnapshot();
|
|
116
|
-
const { setTheme } = store.mutations;
|
|
117
116
|
return <div>
|
|
118
117
|
<IconButton
|
|
119
118
|
icon="☀️"
|
|
120
119
|
active={theme === 'light'}
|
|
121
|
-
onClick={() => setTheme("light")}
|
|
120
|
+
onClick={() => store.setTheme("light")}
|
|
122
121
|
/>
|
|
123
122
|
<IconButton
|
|
124
123
|
icon="🌙"
|
|
125
124
|
active={theme === 'dark'}
|
|
126
|
-
onClick={() => setTheme("dark")}
|
|
125
|
+
onClick={() => store.setTheme("dark")}
|
|
127
126
|
/>
|
|
128
127
|
</div>
|
|
129
128
|
}
|
|
@@ -138,17 +137,16 @@ const store = createStore<{textSize: number, bgColor: string}>({
|
|
|
138
137
|
|
|
139
138
|
const BookReaderSettings = () => {
|
|
140
139
|
const snap = store.useSnapshot();;
|
|
141
|
-
const mut = store.mutations;
|
|
142
140
|
return <div>
|
|
143
141
|
<Slider
|
|
144
142
|
value={snap.textSize}
|
|
145
|
-
onChange={
|
|
143
|
+
onChange={store.setTextSize}
|
|
146
144
|
min={10}
|
|
147
145
|
max={20}
|
|
148
146
|
/>
|
|
149
147
|
<ColorInput
|
|
150
148
|
value={snap.bgColor}
|
|
151
|
-
onChange={
|
|
149
|
+
onChange={store.setBgColor}
|
|
152
150
|
/>
|
|
153
151
|
</div>
|
|
154
152
|
}
|
package/dist/esm/helper.d.ts
CHANGED
package/dist/esm/helper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,UAEjD"}
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,UAEjD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,QAKrD"}
|
package/dist/esm/helper.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
export function capitalizeFirstLetter(text) {
|
|
2
2
|
return text.charAt(0).toUpperCase() + text.slice(1);
|
|
3
3
|
}
|
|
4
|
+
export function removeArrayItem(array, item) {
|
|
5
|
+
const index = array.indexOf(item);
|
|
6
|
+
if (index !== -1) {
|
|
7
|
+
array.splice(index, 1);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
4
10
|
//# sourceMappingURL=helper.js.map
|
package/dist/esm/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,eAAe,CAAI,KAAU,EAAE,IAAO;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
|
package/dist/esm/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8B,KAAK,EAAE,MAAM,SAAS,CAAC;AAE5D,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CA2JvE"}
|
package/dist/esm/store.js
CHANGED
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
import { produce } from "immer";
|
|
2
|
-
import { useEffect,
|
|
3
|
-
import { capitalizeFirstLetter } from "./helper";
|
|
2
|
+
import { useEffect, useRef, useState } from "react";
|
|
3
|
+
import { capitalizeFirstLetter, removeArrayItem } from "./helper";
|
|
4
4
|
export function createStore(initialState) {
|
|
5
5
|
const hub = {};
|
|
6
6
|
const state = initialState;
|
|
7
7
|
const mutations = {};
|
|
8
8
|
const _mutations = mutations;
|
|
9
|
+
const listeners = [];
|
|
10
|
+
let changeset;
|
|
11
|
+
let flushScheduled = false;
|
|
12
|
+
function flushChanges() {
|
|
13
|
+
if (changeset) {
|
|
14
|
+
for (const listener of listeners) {
|
|
15
|
+
listener(changeset);
|
|
16
|
+
}
|
|
17
|
+
changeset = undefined;
|
|
18
|
+
}
|
|
19
|
+
flushScheduled = false;
|
|
20
|
+
}
|
|
21
|
+
function scheduleFlush() {
|
|
22
|
+
if (!flushScheduled) {
|
|
23
|
+
queueMicrotask(flushChanges);
|
|
24
|
+
flushScheduled = true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
9
27
|
for (const _key in initialState) {
|
|
10
28
|
const key = _key;
|
|
11
29
|
const setValue = (arg) => {
|
|
@@ -16,11 +34,17 @@ export function createStore(initialState) {
|
|
|
16
34
|
else {
|
|
17
35
|
value = arg;
|
|
18
36
|
}
|
|
37
|
+
if (value === state[key]) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
19
40
|
state[key] = value;
|
|
41
|
+
changeset ??= {};
|
|
42
|
+
changeset[key] = value;
|
|
43
|
+
scheduleFlush();
|
|
20
44
|
for (const hubKey in hub) {
|
|
21
45
|
const entry = hub[hubKey];
|
|
22
46
|
if (entry.dependentFieldKeys.has(key)) {
|
|
23
|
-
entry.refreshView();
|
|
47
|
+
entry.refreshView?.();
|
|
24
48
|
}
|
|
25
49
|
}
|
|
26
50
|
};
|
|
@@ -29,8 +53,13 @@ export function createStore(initialState) {
|
|
|
29
53
|
_mutations[`produce${suffix}`] = (fn) => {
|
|
30
54
|
setValue((draft) => produce(draft, fn));
|
|
31
55
|
};
|
|
32
|
-
_mutations[`patch${suffix}`] = (
|
|
33
|
-
setValue((prev) =>
|
|
56
|
+
_mutations[`patch${suffix}`] = (input) => {
|
|
57
|
+
setValue((prev) => {
|
|
58
|
+
const attrs = typeof input === "function"
|
|
59
|
+
? input(prev)
|
|
60
|
+
: input;
|
|
61
|
+
return { ...prev, ...attrs };
|
|
62
|
+
});
|
|
34
63
|
};
|
|
35
64
|
}
|
|
36
65
|
mutations.assigns = (attrs) => {
|
|
@@ -41,38 +70,67 @@ export function createStore(initialState) {
|
|
|
41
70
|
setValue?.(value);
|
|
42
71
|
}
|
|
43
72
|
};
|
|
44
|
-
const createHookEntry = (hookId
|
|
45
|
-
hub[hookId] = { dependentFieldKeys: new Set(), refreshView };
|
|
73
|
+
const createHookEntry = (hookId) => {
|
|
46
74
|
const getterObject = {};
|
|
75
|
+
const dependentFieldKeys = new Set();
|
|
47
76
|
for (const key in initialState) {
|
|
48
77
|
Object.defineProperty(getterObject, key, {
|
|
49
78
|
get() {
|
|
50
|
-
|
|
79
|
+
if (!dependentFieldKeys.has(key)) {
|
|
80
|
+
dependentFieldKeys.add(key);
|
|
81
|
+
}
|
|
51
82
|
return state[key];
|
|
52
83
|
},
|
|
53
84
|
});
|
|
54
85
|
}
|
|
55
|
-
const
|
|
56
|
-
|
|
86
|
+
const hookEntry = {
|
|
87
|
+
dependentFieldKeys,
|
|
88
|
+
refreshView: undefined,
|
|
89
|
+
getterObject,
|
|
90
|
+
activate() {
|
|
91
|
+
hub[hookId] = hookEntry;
|
|
92
|
+
},
|
|
93
|
+
deactivate() {
|
|
94
|
+
if (hub[hookId] === hookEntry) {
|
|
95
|
+
delete hub[hookId];
|
|
96
|
+
}
|
|
97
|
+
},
|
|
57
98
|
};
|
|
58
|
-
return
|
|
99
|
+
return hookEntry;
|
|
59
100
|
};
|
|
60
101
|
const useSnapshot = () => {
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
102
|
+
const [, forceRender] = useState(0);
|
|
103
|
+
const entryRef = useRef(null);
|
|
104
|
+
if (!entryRef.current) {
|
|
105
|
+
const id = Math.random().toString(36).substring(2, 15);
|
|
106
|
+
entryRef.current = createHookEntry(id);
|
|
107
|
+
}
|
|
64
108
|
useEffect(() => {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
109
|
+
if (entryRef.current) {
|
|
110
|
+
entryRef.current.refreshView = () => forceRender((x) => x + 1);
|
|
111
|
+
entryRef.current.activate();
|
|
112
|
+
}
|
|
113
|
+
return () => {
|
|
114
|
+
entryRef.current?.deactivate();
|
|
115
|
+
};
|
|
116
|
+
}, []);
|
|
117
|
+
return entryRef.current.getterObject;
|
|
118
|
+
};
|
|
119
|
+
const subscribe = (fn) => {
|
|
120
|
+
listeners.push(fn);
|
|
121
|
+
return () => {
|
|
122
|
+
removeArrayItem(listeners, fn);
|
|
123
|
+
};
|
|
68
124
|
};
|
|
69
125
|
return {
|
|
70
126
|
state,
|
|
71
|
-
mutations,
|
|
72
127
|
useSnapshot,
|
|
73
128
|
get snapshot() {
|
|
74
129
|
return useSnapshot();
|
|
75
130
|
},
|
|
131
|
+
subscribe,
|
|
132
|
+
mutations,
|
|
133
|
+
...mutations,
|
|
76
134
|
};
|
|
77
135
|
}
|
|
78
136
|
//# sourceMappingURL=store.js.map
|
package/dist/esm/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -3,14 +3,16 @@ export type Mutations<T> = {
|
|
|
3
3
|
} & {
|
|
4
4
|
[K in keyof T as `produce${Capitalize<K & string>}`]: (fn: (draft: T[K]) => void) => void;
|
|
5
5
|
} & {
|
|
6
|
-
[K in keyof T as `patch${Capitalize<K & string>}`]: (
|
|
6
|
+
[K in keyof T as `patch${Capitalize<K & string>}`]: (input: Partial<Extract<T[K], object>> | ((prev: T[K]) => Partial<Extract<T[K], object>>)) => void;
|
|
7
7
|
} & {
|
|
8
8
|
assigns: (attrs: Partial<T>) => void;
|
|
9
9
|
};
|
|
10
|
+
export type ChangesListener<T extends object> = (attrs: Partial<T>) => void;
|
|
10
11
|
export type Store<T extends object> = {
|
|
11
12
|
state: T;
|
|
12
13
|
useSnapshot(): T;
|
|
13
14
|
snapshot: T;
|
|
15
|
+
subscribe: (listener: ChangesListener<T>) => () => void;
|
|
14
16
|
mutations: Mutations<T>;
|
|
15
|
-
}
|
|
17
|
+
} & Mutations<T>;
|
|
16
18
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAChD,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KACjC,IAAI;CACV,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,IAAI,UAAU,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CACpD,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KACtB,IAAI;CACV,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,IAAI,QAAQ,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAClD,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAChD,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KACjC,IAAI;CACV,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,IAAI,UAAU,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CACpD,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KACtB,IAAI;CACV,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,IAAI,QAAQ,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAClD,KAAK,EACD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAC9B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KACjD,IAAI;CACV,GAAG;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAE5E,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,MAAM,IAAI;IACpC,KAAK,EAAE,CAAC,CAAC;IACT,WAAW,IAAI,CAAC,CAAC;IACjB,QAAQ,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC;IACxD,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;CACzB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC"}
|