react-ui-basics 0.0.215 → 0.0.217
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/bundle.css +734 -733
- package/package.json +1 -1
- package/src/store/Store.ts +29 -43
- package/store/Store.d.ts +10 -8
- package/store/Store.js +18 -30
- package/store/Store.js.map +1 -1
package/package.json
CHANGED
package/src/store/Store.ts
CHANGED
|
@@ -2,73 +2,70 @@ import {useEffect, useState} from "react";
|
|
|
2
2
|
import {createProxy} from "./ProxyTools";
|
|
3
3
|
import {isFunction, isObject} from "../Tools";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
[index: number]: any
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
let STORES: Stores = {}
|
|
10
|
-
let COUNTER = 0
|
|
5
|
+
const STORES = new Map<Symbol, Store<any>>()
|
|
11
6
|
|
|
12
7
|
type Setter<T> = (oldState: T) => T | void;
|
|
8
|
+
type ListenerFn = () => void;
|
|
9
|
+
type UnsubscribeFn = () => void;
|
|
13
10
|
|
|
14
11
|
abstract class AbstractStore<T> {
|
|
15
12
|
get: () => T;
|
|
16
13
|
set: (setter: T | Partial<T> | (Setter<T>)) => void;
|
|
17
14
|
reset: () => void;
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Return unsubscribe function
|
|
17
|
+
*
|
|
18
|
+
* @returns unsubscribe function.
|
|
19
|
+
*/
|
|
20
|
+
subscribe: (fn: ListenerFn) => UnsubscribeFn;
|
|
20
21
|
toString: () => string;
|
|
21
22
|
}
|
|
22
23
|
|
|
24
|
+
|
|
23
25
|
export class Store<T> extends AbstractStore<T> {
|
|
24
26
|
|
|
25
27
|
constructor(initialState: T, name?: string) {
|
|
26
28
|
super()
|
|
27
29
|
let that = this;
|
|
28
|
-
let listeners:
|
|
29
|
-
let
|
|
30
|
+
let listeners: Map<Symbol, ListenerFn> = new Map<Symbol, () => void>()
|
|
31
|
+
let value = initialState;
|
|
30
32
|
let runListeners = () => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
STORES[index] = initialState
|
|
35
|
-
|
|
36
|
-
that.unsubscribe = (fn: () => void) => {
|
|
37
|
-
let i = listeners.indexOf(fn)
|
|
38
|
-
let length = listeners.length;
|
|
39
|
-
if (i > -1) {
|
|
40
|
-
listeners[i] = listeners[length - 1]
|
|
41
|
-
listeners.splice(length - 1, 1)
|
|
33
|
+
for (let listener of listeners.values()) {
|
|
34
|
+
listener()
|
|
42
35
|
}
|
|
43
|
-
}
|
|
44
|
-
that.get = (): T =>
|
|
36
|
+
};
|
|
37
|
+
that.get = (): T => value;
|
|
45
38
|
that.set = (setter) => {
|
|
46
39
|
let result;
|
|
47
40
|
if (isFunction(setter)) {
|
|
48
|
-
const proxy = createProxy(
|
|
41
|
+
const proxy = createProxy(value as object);
|
|
49
42
|
result = (setter as Setter<T>)(proxy);
|
|
50
43
|
if (!result || result === proxy)
|
|
51
44
|
result = proxy.bake()
|
|
52
45
|
} else if (isObject(setter)) {
|
|
53
|
-
result = {...
|
|
46
|
+
result = {...value, ...setter}
|
|
54
47
|
} else {
|
|
55
48
|
result = setter
|
|
56
49
|
}
|
|
57
50
|
|
|
58
|
-
|
|
51
|
+
value = result
|
|
59
52
|
runListeners();
|
|
60
53
|
}
|
|
61
|
-
|
|
62
54
|
that.reset = () => {
|
|
63
|
-
|
|
55
|
+
value = initialState
|
|
64
56
|
runListeners();
|
|
65
57
|
}
|
|
66
58
|
|
|
67
|
-
that.subscribe = (fn:
|
|
68
|
-
|
|
59
|
+
that.subscribe = (fn: ListenerFn) => {
|
|
60
|
+
const key = Symbol();
|
|
61
|
+
listeners.set(key, fn)
|
|
62
|
+
return () => {
|
|
63
|
+
listeners.delete(key)
|
|
64
|
+
}
|
|
69
65
|
}
|
|
70
66
|
|
|
71
67
|
that.toString = (): string => name;
|
|
68
|
+
STORES.set(Symbol(), that)
|
|
72
69
|
}
|
|
73
70
|
}
|
|
74
71
|
|
|
@@ -78,20 +75,12 @@ export function getGlobalState() {
|
|
|
78
75
|
return STORES
|
|
79
76
|
}
|
|
80
77
|
|
|
81
|
-
export function resetGlobalState() {
|
|
82
|
-
STORES = {}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export function replaceGlobalState(state) {
|
|
86
|
-
STORES = state
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
78
|
export type Selector<T, R> = (t: T) => R;
|
|
91
79
|
|
|
92
80
|
export const defaultSelector = <T>(store: T): T => store;
|
|
93
81
|
|
|
94
82
|
export function useStore<T, R>(store: Store<T>, selector: Selector<T, R>, selectorDependencies: ReadonlyArray<any>): R
|
|
83
|
+
export function useStore<T, R>(store: Store<T>, selector: Selector<T, R>, selectorDependencies?: undefined): R
|
|
95
84
|
export function useStore<T>(store: Store<T>, selector?: undefined, selectorDependencies?: undefined): T
|
|
96
85
|
export function useStore<T, R>(store: Store<T>, selector?: Selector<T, R>, selectorDependencies: ReadonlyArray<any> = []): R {
|
|
97
86
|
if (!selector)
|
|
@@ -104,10 +93,7 @@ export function useStore<T, R>(store: Store<T>, selector?: Selector<T, R>, selec
|
|
|
104
93
|
setState(selector(store.get()))
|
|
105
94
|
};
|
|
106
95
|
updateState()
|
|
107
|
-
store.subscribe(updateState)
|
|
108
|
-
return () => {
|
|
109
|
-
store.unsubscribe(updateState);
|
|
110
|
-
}
|
|
96
|
+
return store.subscribe(updateState)
|
|
111
97
|
}, selectorDependencies)
|
|
112
98
|
|
|
113
99
|
return state
|
package/store/Store.d.ts
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
interface Stores {
|
|
2
|
-
[index: number]: any;
|
|
3
|
-
}
|
|
4
1
|
declare type Setter<T> = (oldState: T) => T | void;
|
|
2
|
+
declare type ListenerFn = () => void;
|
|
3
|
+
declare type UnsubscribeFn = () => void;
|
|
5
4
|
declare abstract class AbstractStore<T> {
|
|
6
5
|
get: () => T;
|
|
7
6
|
set: (setter: T | Partial<T> | (Setter<T>)) => void;
|
|
8
7
|
reset: () => void;
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Return unsubscribe function
|
|
10
|
+
*
|
|
11
|
+
* @returns unsubscribe function.
|
|
12
|
+
*/
|
|
13
|
+
subscribe: (fn: ListenerFn) => UnsubscribeFn;
|
|
11
14
|
toString: () => string;
|
|
12
15
|
}
|
|
13
16
|
export declare class Store<T> extends AbstractStore<T> {
|
|
14
17
|
constructor(initialState: T, name?: string);
|
|
15
18
|
}
|
|
16
19
|
export default Store;
|
|
17
|
-
export declare function getGlobalState():
|
|
18
|
-
export declare function resetGlobalState(): void;
|
|
19
|
-
export declare function replaceGlobalState(state: any): void;
|
|
20
|
+
export declare function getGlobalState(): Map<Symbol, Store<any>>;
|
|
20
21
|
export declare type Selector<T, R> = (t: T) => R;
|
|
21
22
|
export declare const defaultSelector: <T>(store: T) => T;
|
|
22
23
|
export declare function useStore<T, R>(store: Store<T>, selector: Selector<T, R>, selectorDependencies: ReadonlyArray<any>): R;
|
|
24
|
+
export declare function useStore<T, R>(store: Store<T>, selector: Selector<T, R>, selectorDependencies?: undefined): R;
|
|
23
25
|
export declare function useStore<T>(store: Store<T>, selector?: undefined, selectorDependencies?: undefined): T;
|
package/store/Store.js
CHANGED
|
@@ -2,65 +2,56 @@ import ReactConstants from "./../ReactConstants"; import {clientHeight as __clie
|
|
|
2
2
|
import { createProxy } from './ProxyTools.js';
|
|
3
3
|
import { isFunction, isObject } from '../Tools.js';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
let COUNTER = 0;
|
|
5
|
+
const STORES = new Map();
|
|
7
6
|
class AbstractStore {
|
|
8
7
|
}
|
|
9
8
|
class Store extends AbstractStore {
|
|
10
9
|
constructor(initialState, name) {
|
|
11
10
|
super();
|
|
12
11
|
let that = this;
|
|
13
|
-
let listeners =
|
|
14
|
-
let
|
|
12
|
+
let listeners = new Map();
|
|
13
|
+
let value = initialState;
|
|
15
14
|
let runListeners = () => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
STORES[index] = initialState;
|
|
19
|
-
that.unsubscribe = (fn) => {
|
|
20
|
-
let i = listeners.indexOf(fn);
|
|
21
|
-
let length = __length(listeners);
|
|
22
|
-
if (i > -1) {
|
|
23
|
-
listeners[i] = listeners[length - 1];
|
|
24
|
-
listeners.splice(length - 1, 1);
|
|
15
|
+
for (let listener of listeners.values()) {
|
|
16
|
+
listener();
|
|
25
17
|
}
|
|
26
18
|
};
|
|
27
|
-
that.get = () =>
|
|
19
|
+
that.get = () => value;
|
|
28
20
|
that.set = (setter) => {
|
|
29
21
|
let result;
|
|
30
22
|
if (isFunction(setter)) {
|
|
31
|
-
const proxy = createProxy(
|
|
23
|
+
const proxy = createProxy(value);
|
|
32
24
|
result = setter(proxy);
|
|
33
25
|
if (!result || result === proxy)
|
|
34
26
|
result = proxy.bake();
|
|
35
27
|
}
|
|
36
28
|
else if (isObject(setter)) {
|
|
37
|
-
result = __extends(__extends({},
|
|
29
|
+
result = __extends(__extends({}, value), setter);
|
|
38
30
|
}
|
|
39
31
|
else {
|
|
40
32
|
result = setter;
|
|
41
33
|
}
|
|
42
|
-
|
|
34
|
+
value = result;
|
|
43
35
|
runListeners();
|
|
44
36
|
};
|
|
45
37
|
that.reset = () => {
|
|
46
|
-
|
|
38
|
+
value = initialState;
|
|
47
39
|
runListeners();
|
|
48
40
|
};
|
|
49
41
|
that.subscribe = (fn) => {
|
|
50
|
-
|
|
42
|
+
const key = Symbol();
|
|
43
|
+
listeners.set(key, fn);
|
|
44
|
+
return () => {
|
|
45
|
+
listeners.delete(key);
|
|
46
|
+
};
|
|
51
47
|
};
|
|
52
48
|
that.toString = () => name;
|
|
49
|
+
STORES.set(Symbol(), that);
|
|
53
50
|
}
|
|
54
51
|
}
|
|
55
52
|
function getGlobalState() {
|
|
56
53
|
return STORES;
|
|
57
54
|
}
|
|
58
|
-
function resetGlobalState() {
|
|
59
|
-
STORES = {};
|
|
60
|
-
}
|
|
61
|
-
function replaceGlobalState(state) {
|
|
62
|
-
STORES = state;
|
|
63
|
-
}
|
|
64
55
|
const defaultSelector = (store) => store;
|
|
65
56
|
function useStore(store, selector, selectorDependencies = []) {
|
|
66
57
|
if (!selector)
|
|
@@ -71,13 +62,10 @@ function useStore(store, selector, selectorDependencies = []) {
|
|
|
71
62
|
setState(selector(store.get()));
|
|
72
63
|
};
|
|
73
64
|
updateState();
|
|
74
|
-
store.subscribe(updateState);
|
|
75
|
-
return () => {
|
|
76
|
-
store.unsubscribe(updateState);
|
|
77
|
-
};
|
|
65
|
+
return store.subscribe(updateState);
|
|
78
66
|
}, selectorDependencies);
|
|
79
67
|
return state;
|
|
80
68
|
}
|
|
81
69
|
|
|
82
|
-
export { Store, Store as default, defaultSelector, getGlobalState,
|
|
70
|
+
export { Store, Store as default, defaultSelector, getGlobalState, useStore };
|
|
83
71
|
//# sourceMappingURL=Store.js.map
|
package/store/Store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.js","sources":["../src/store/Store.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"Store.js","sources":["../src/store/Store.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|