@elementor/store 0.8.2 → 0.8.4
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/CHANGELOG.md +12 -49
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -9
- package/dist/index.mjs.map +1 -1
- package/package.json +40 -40
- package/src/__tests__/store.test.tsx +46 -39
- package/src/index.ts +11 -18
package/CHANGELOG.md
CHANGED
|
@@ -3,103 +3,66 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [0.8.
|
|
6
|
+
## [0.8.4](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.8.3...@elementor/store@0.8.4) (2024-07-16)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @elementor/store
|
|
9
9
|
|
|
10
|
+
## [0.8.3](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.8.2...@elementor/store@0.8.3) (2024-07-03)
|
|
10
11
|
|
|
12
|
+
**Note:** Version bump only for package @elementor/store
|
|
11
13
|
|
|
14
|
+
## [0.8.2](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.8.1...@elementor/store@0.8.2) (2024-04-16)
|
|
12
15
|
|
|
16
|
+
**Note:** Version bump only for package @elementor/store
|
|
13
17
|
|
|
14
18
|
## [0.8.1](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.8.0...@elementor/store@0.8.1) (2024-02-28)
|
|
15
19
|
|
|
16
|
-
|
|
17
20
|
### Bug Fixes
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
- **store:** dispatch & instance type [ED-13867] ([#165](https://github.com/elementor/elementor-packages/issues/165)) ([52ce6d9](https://github.com/elementor/elementor-packages/commit/52ce6d9c9941fdb0591e3d990b69a39b4a81690e))
|
|
24
23
|
|
|
25
24
|
# [0.8.0](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.7.1...@elementor/store@0.8.0) (2024-02-22)
|
|
26
25
|
|
|
27
|
-
|
|
28
26
|
### Features
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
- **store:** support createAsyncThunk [ED-13842] ([#164](https://github.com/elementor/elementor-packages/issues/164)) ([bd0ed1d](https://github.com/elementor/elementor-packages/commit/bd0ed1d11a8c6d284897f2d0e68beef07f5b5849))
|
|
35
29
|
|
|
36
30
|
## [0.7.1](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.7.0...@elementor/store@0.7.1) (2023-10-19)
|
|
37
31
|
|
|
38
32
|
**Note:** Version bump only for package @elementor/store
|
|
39
33
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
34
|
# [0.7.0](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.6.1...@elementor/store@0.7.0) (2023-09-11)
|
|
45
35
|
|
|
46
|
-
|
|
47
36
|
### Features
|
|
48
37
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
- **store:** mark experimental functions [ED-12070] ([#114](https://github.com/elementor/elementor-packages/issues/114)) ([d790829](https://github.com/elementor/elementor-packages/commit/d79082911195c75f6d3a89a5619b234e2f5ce158))
|
|
54
39
|
|
|
55
40
|
## [0.6.1](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.6.0...@elementor/store@0.6.1) (2023-06-29)
|
|
56
41
|
|
|
57
42
|
**Note:** Version bump only for package @elementor/store
|
|
58
43
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
44
|
# [0.6.0](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.5.0...@elementor/store@0.6.0) (2023-06-11)
|
|
64
45
|
|
|
65
|
-
|
|
66
46
|
### Features
|
|
67
47
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
48
|
+
- **editor-panels:** init [ED-10804] ([#44](https://github.com/elementor/elementor-packages/issues/44)) ([1ed4113](https://github.com/elementor/elementor-packages/commit/1ed41131db8fb9151163175bfa614f784159e04b))
|
|
73
49
|
|
|
74
50
|
# [0.5.0](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.4.0...@elementor/store@0.5.0) (2023-06-06)
|
|
75
51
|
|
|
76
|
-
|
|
77
52
|
### Features
|
|
78
53
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
54
|
+
- drop support for React 17 [ED-10982] ([#50](https://github.com/elementor/elementor-packages/issues/50)) ([59c576c](https://github.com/elementor/elementor-packages/commit/59c576ca218947dc0992616311d4d399a20e91a6))
|
|
84
55
|
|
|
85
56
|
# [0.4.0](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.3.0...@elementor/store@0.4.0) (2023-06-05)
|
|
86
57
|
|
|
87
|
-
|
|
88
58
|
### Features
|
|
89
59
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
60
|
+
- **store:** support creating & registering a slice independently [ED-10914] ([#47](https://github.com/elementor/elementor-packages/issues/47)) ([3cac551](https://github.com/elementor/elementor-packages/commit/3cac551d72cc2df6e11c017323559e3e5c4ab12f))
|
|
95
61
|
|
|
96
62
|
# 0.3.0 (2023-06-01)
|
|
97
63
|
|
|
98
|
-
|
|
99
64
|
### Features
|
|
100
65
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
66
|
+
- add support for React 18 [ED-10905] ([#46](https://github.com/elementor/elementor-packages/issues/46)) ([c8915c6](https://github.com/elementor/elementor-packages/commit/c8915c6ea62550bcdeb5c8a576f311bedc35bcad))
|
|
104
67
|
|
|
105
68
|
# 0.2.0 (2023-05-09)
|
package/dist/index.js
CHANGED
|
@@ -86,10 +86,7 @@ var createStore = () => {
|
|
|
86
86
|
instance = (0, import_toolkit.configureStore)({
|
|
87
87
|
reducer: getReducers(),
|
|
88
88
|
middleware: (getDefaultMiddleware) => {
|
|
89
|
-
return [
|
|
90
|
-
...getDefaultMiddleware(),
|
|
91
|
-
...Array.from(middlewares)
|
|
92
|
-
];
|
|
89
|
+
return [...getDefaultMiddleware(), ...Array.from(middlewares)];
|
|
93
90
|
}
|
|
94
91
|
});
|
|
95
92
|
if (pendingActions.length) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n\tReducersMapObject,\n\tconfigureStore,\n\tcombineReducers,\n\tMiddleware,\n\tSlice,\n\tAnyAction,\n\tEnhancedStore,\n\tStoreEnhancer,\n\tThunkMiddleware,\n} from '@reduxjs/toolkit';\n\nexport type {\n\tSlice,\n\tCreateSliceOptions,\n\tPayloadAction,\n\tStore,\n\tDispatch,\n\tAnyAction,\n\tAction,\n\tMiddlewareAPI,\n\tMiddleware,\n} from '@reduxjs/toolkit';\n\nexport {\n\tcreateSelector as __createSelector,\n\tcreateSlice as __createSlice,\n\tcreateAsyncThunk as __createAsyncThunk,\n\tcreateAction as __createAction,\n} from '@reduxjs/toolkit';\n\nexport {
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n\tReducersMapObject,\n\tconfigureStore,\n\tcombineReducers,\n\tMiddleware,\n\tSlice,\n\tAnyAction,\n\tEnhancedStore,\n\tStoreEnhancer,\n\tThunkMiddleware,\n} from '@reduxjs/toolkit';\n\nexport type {\n\tSlice,\n\tCreateSliceOptions,\n\tPayloadAction,\n\tStore,\n\tDispatch,\n\tAnyAction,\n\tAction,\n\tMiddlewareAPI,\n\tMiddleware,\n} from '@reduxjs/toolkit';\n\nexport {\n\tcreateSelector as __createSelector,\n\tcreateSlice as __createSlice,\n\tcreateAsyncThunk as __createAsyncThunk,\n\tcreateAction as __createAction,\n} from '@reduxjs/toolkit';\n\nexport { useSelector as __useSelector, useDispatch as __useDispatch, Provider as __StoreProvider } from 'react-redux';\n\n/**\n * Usage:\n *\n * const mySlice = addSlice( ... );\n *\n * type MySliceState = SliceState<typeof mySlice>;\n *\n * const value = useSelector( ( state: MySliceState ) => state.mySlice.value );\n */\nexport type SliceState< S extends Slice > = {\n\t[ key in S[ 'name' ] ]: ReturnType< S[ 'getInitialState' ] >;\n};\n\n// The `configureStore` function from Redux Toolkit infers its actions from the `reducers`\n// key of the initialization object. This is fine when creating the store statically, but\n// breaks in our case since we create the store dynamically, which means that TypeScript\n// can't infer the types. Therefore, we force the store to accept any actions using a\n// generic store type.\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyStore< State = any > = EnhancedStore<\n\tState,\n\tAnyAction,\n\t[ ThunkMiddleware< State, AnyAction > ],\n\t[ StoreEnhancer ]\n>;\n\ninterface SlicesMap {\n\t[ key: Slice[ 'name' ] ]: Slice;\n}\n\nlet instance: AnyStore | null = null;\nlet slices: SlicesMap = {};\nconst pendingActions: AnyAction[] = [];\nconst middlewares = new Set< Middleware >();\n\nconst getReducers = () => {\n\tconst reducers = Object.entries( slices ).reduce( ( reducersData: ReducersMapObject, [ name, slice ] ) => {\n\t\treducersData[ name ] = slice.reducer;\n\n\t\treturn reducersData;\n\t}, {} );\n\n\treturn combineReducers( reducers );\n};\n\nfunction registerSlice( slice: Slice ) {\n\tif ( slices[ slice.name ] ) {\n\t\tthrow new Error( `Slice with name \"${ slice.name }\" already exists.` );\n\t}\n\n\tslices[ slice.name ] = slice;\n}\n\nconst addMiddleware = ( middleware: Middleware ) => {\n\tmiddlewares.add( middleware );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- See the comment above about `AnyStore`\nconst dispatch = ( action: any ) => {\n\tif ( ! instance ) {\n\t\tpendingActions.push( action );\n\n\t\treturn;\n\t}\n\n\treturn instance.dispatch( action );\n};\n\nconst getState = () => {\n\tif ( ! instance ) {\n\t\tthrow new Error( 'The store instance does not exist.' );\n\t}\n\n\treturn instance.getState();\n};\n\nconst subscribe = ( listener: () => void ) => {\n\tif ( ! instance ) {\n\t\tthrow new Error( 'The store instance does not exist.' );\n\t}\n\n\treturn instance.subscribe( listener );\n};\n\nconst createStore = () => {\n\tif ( instance ) {\n\t\tthrow new Error( 'The store instance already exists.' );\n\t}\n\n\tinstance = configureStore( {\n\t\treducer: getReducers(),\n\t\tmiddleware: ( getDefaultMiddleware ) => {\n\t\t\treturn [ ...getDefaultMiddleware(), ...Array.from( middlewares ) ];\n\t\t},\n\t} );\n\n\tif ( pendingActions.length ) {\n\t\tpendingActions.forEach( ( action ) => dispatch( action ) );\n\t\tpendingActions.length = 0;\n\t}\n\n\treturn instance as AnyStore;\n};\n\nconst getStore = () => {\n\treturn instance;\n};\n\nconst deleteStore = () => {\n\tinstance = null;\n\tslices = {};\n\tpendingActions.length = 0;\n\tmiddlewares.clear();\n};\n\nexport {\n\tregisterSlice as __registerSlice,\n\taddMiddleware as __addMiddleware,\n\tdispatch as __dispatch,\n\tgetState as __getState,\n\tsubscribe as __subscribe,\n\tcreateStore as __createStore,\n\tgetStore as __getStore,\n\tdeleteStore as __deleteStore,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAUO;AAcP,IAAAA,kBAKO;AAEP,yBAAwG;AAiCxG,IAAI,WAA4B;AAChC,IAAI,SAAoB,CAAC;AACzB,IAAM,iBAA8B,CAAC;AACrC,IAAM,cAAc,oBAAI,IAAkB;AAE1C,IAAM,cAAc,MAAM;AACzB,QAAM,WAAW,OAAO,QAAS,MAAO,EAAE,OAAQ,CAAE,cAAiC,CAAE,MAAM,KAAM,MAAO;AACzG,iBAAc,IAAK,IAAI,MAAM;AAE7B,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AAEN,aAAO,gCAAiB,QAAS;AAClC;AAEA,SAAS,cAAe,OAAe;AACtC,MAAK,OAAQ,MAAM,IAAK,GAAI;AAC3B,UAAM,IAAI,MAAO,oBAAqB,MAAM,IAAK,mBAAoB;AAAA,EACtE;AAEA,SAAQ,MAAM,IAAK,IAAI;AACxB;AAEA,IAAM,gBAAgB,CAAE,eAA4B;AACnD,cAAY,IAAK,UAAW;AAC7B;AAGA,IAAM,WAAW,CAAE,WAAiB;AACnC,MAAK,CAAE,UAAW;AACjB,mBAAe,KAAM,MAAO;AAE5B;AAAA,EACD;AAEA,SAAO,SAAS,SAAU,MAAO;AAClC;AAEA,IAAM,WAAW,MAAM;AACtB,MAAK,CAAE,UAAW;AACjB,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,SAAO,SAAS,SAAS;AAC1B;AAEA,IAAM,YAAY,CAAE,aAA0B;AAC7C,MAAK,CAAE,UAAW;AACjB,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,SAAO,SAAS,UAAW,QAAS;AACrC;AAEA,IAAM,cAAc,MAAM;AACzB,MAAK,UAAW;AACf,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,iBAAW,+BAAgB;AAAA,IAC1B,SAAS,YAAY;AAAA,IACrB,YAAY,CAAE,yBAA0B;AACvC,aAAO,CAAE,GAAG,qBAAqB,GAAG,GAAG,MAAM,KAAM,WAAY,CAAE;AAAA,IAClE;AAAA,EACD,CAAE;AAEF,MAAK,eAAe,QAAS;AAC5B,mBAAe,QAAS,CAAE,WAAY,SAAU,MAAO,CAAE;AACzD,mBAAe,SAAS;AAAA,EACzB;AAEA,SAAO;AACR;AAEA,IAAM,WAAW,MAAM;AACtB,SAAO;AACR;AAEA,IAAM,cAAc,MAAM;AACzB,aAAW;AACX,WAAS,CAAC;AACV,iBAAe,SAAS;AACxB,cAAY,MAAM;AACnB;","names":["import_toolkit"]}
|
package/dist/index.mjs
CHANGED
|
@@ -9,11 +9,7 @@ import {
|
|
|
9
9
|
createAsyncThunk,
|
|
10
10
|
createAction
|
|
11
11
|
} from "@reduxjs/toolkit";
|
|
12
|
-
import {
|
|
13
|
-
useSelector,
|
|
14
|
-
useDispatch,
|
|
15
|
-
Provider
|
|
16
|
-
} from "react-redux";
|
|
12
|
+
import { useSelector, useDispatch, Provider } from "react-redux";
|
|
17
13
|
var instance = null;
|
|
18
14
|
var slices = {};
|
|
19
15
|
var pendingActions = [];
|
|
@@ -60,10 +56,7 @@ var createStore = () => {
|
|
|
60
56
|
instance = configureStore({
|
|
61
57
|
reducer: getReducers(),
|
|
62
58
|
middleware: (getDefaultMiddleware) => {
|
|
63
|
-
return [
|
|
64
|
-
...getDefaultMiddleware(),
|
|
65
|
-
...Array.from(middlewares)
|
|
66
|
-
];
|
|
59
|
+
return [...getDefaultMiddleware(), ...Array.from(middlewares)];
|
|
67
60
|
}
|
|
68
61
|
});
|
|
69
62
|
if (pendingActions.length) {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n\tReducersMapObject,\n\tconfigureStore,\n\tcombineReducers,\n\tMiddleware,\n\tSlice,\n\tAnyAction,\n\tEnhancedStore,\n\tStoreEnhancer,\n\tThunkMiddleware,\n} from '@reduxjs/toolkit';\n\nexport type {\n\tSlice,\n\tCreateSliceOptions,\n\tPayloadAction,\n\tStore,\n\tDispatch,\n\tAnyAction,\n\tAction,\n\tMiddlewareAPI,\n\tMiddleware,\n} from '@reduxjs/toolkit';\n\nexport {\n\tcreateSelector as __createSelector,\n\tcreateSlice as __createSlice,\n\tcreateAsyncThunk as __createAsyncThunk,\n\tcreateAction as __createAction,\n} from '@reduxjs/toolkit';\n\nexport {
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n\tReducersMapObject,\n\tconfigureStore,\n\tcombineReducers,\n\tMiddleware,\n\tSlice,\n\tAnyAction,\n\tEnhancedStore,\n\tStoreEnhancer,\n\tThunkMiddleware,\n} from '@reduxjs/toolkit';\n\nexport type {\n\tSlice,\n\tCreateSliceOptions,\n\tPayloadAction,\n\tStore,\n\tDispatch,\n\tAnyAction,\n\tAction,\n\tMiddlewareAPI,\n\tMiddleware,\n} from '@reduxjs/toolkit';\n\nexport {\n\tcreateSelector as __createSelector,\n\tcreateSlice as __createSlice,\n\tcreateAsyncThunk as __createAsyncThunk,\n\tcreateAction as __createAction,\n} from '@reduxjs/toolkit';\n\nexport { useSelector as __useSelector, useDispatch as __useDispatch, Provider as __StoreProvider } from 'react-redux';\n\n/**\n * Usage:\n *\n * const mySlice = addSlice( ... );\n *\n * type MySliceState = SliceState<typeof mySlice>;\n *\n * const value = useSelector( ( state: MySliceState ) => state.mySlice.value );\n */\nexport type SliceState< S extends Slice > = {\n\t[ key in S[ 'name' ] ]: ReturnType< S[ 'getInitialState' ] >;\n};\n\n// The `configureStore` function from Redux Toolkit infers its actions from the `reducers`\n// key of the initialization object. This is fine when creating the store statically, but\n// breaks in our case since we create the store dynamically, which means that TypeScript\n// can't infer the types. Therefore, we force the store to accept any actions using a\n// generic store type.\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyStore< State = any > = EnhancedStore<\n\tState,\n\tAnyAction,\n\t[ ThunkMiddleware< State, AnyAction > ],\n\t[ StoreEnhancer ]\n>;\n\ninterface SlicesMap {\n\t[ key: Slice[ 'name' ] ]: Slice;\n}\n\nlet instance: AnyStore | null = null;\nlet slices: SlicesMap = {};\nconst pendingActions: AnyAction[] = [];\nconst middlewares = new Set< Middleware >();\n\nconst getReducers = () => {\n\tconst reducers = Object.entries( slices ).reduce( ( reducersData: ReducersMapObject, [ name, slice ] ) => {\n\t\treducersData[ name ] = slice.reducer;\n\n\t\treturn reducersData;\n\t}, {} );\n\n\treturn combineReducers( reducers );\n};\n\nfunction registerSlice( slice: Slice ) {\n\tif ( slices[ slice.name ] ) {\n\t\tthrow new Error( `Slice with name \"${ slice.name }\" already exists.` );\n\t}\n\n\tslices[ slice.name ] = slice;\n}\n\nconst addMiddleware = ( middleware: Middleware ) => {\n\tmiddlewares.add( middleware );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- See the comment above about `AnyStore`\nconst dispatch = ( action: any ) => {\n\tif ( ! instance ) {\n\t\tpendingActions.push( action );\n\n\t\treturn;\n\t}\n\n\treturn instance.dispatch( action );\n};\n\nconst getState = () => {\n\tif ( ! instance ) {\n\t\tthrow new Error( 'The store instance does not exist.' );\n\t}\n\n\treturn instance.getState();\n};\n\nconst subscribe = ( listener: () => void ) => {\n\tif ( ! instance ) {\n\t\tthrow new Error( 'The store instance does not exist.' );\n\t}\n\n\treturn instance.subscribe( listener );\n};\n\nconst createStore = () => {\n\tif ( instance ) {\n\t\tthrow new Error( 'The store instance already exists.' );\n\t}\n\n\tinstance = configureStore( {\n\t\treducer: getReducers(),\n\t\tmiddleware: ( getDefaultMiddleware ) => {\n\t\t\treturn [ ...getDefaultMiddleware(), ...Array.from( middlewares ) ];\n\t\t},\n\t} );\n\n\tif ( pendingActions.length ) {\n\t\tpendingActions.forEach( ( action ) => dispatch( action ) );\n\t\tpendingActions.length = 0;\n\t}\n\n\treturn instance as AnyStore;\n};\n\nconst getStore = () => {\n\treturn instance;\n};\n\nconst deleteStore = () => {\n\tinstance = null;\n\tslices = {};\n\tpendingActions.length = 0;\n\tmiddlewares.clear();\n};\n\nexport {\n\tregisterSlice as __registerSlice,\n\taddMiddleware as __addMiddleware,\n\tdispatch as __dispatch,\n\tgetState as __getState,\n\tsubscribe as __subscribe,\n\tcreateStore as __createStore,\n\tgetStore as __getStore,\n\tdeleteStore as __deleteStore,\n};\n"],"mappings":";AAAA;AAAA,EAEC;AAAA,EACA;AAAA,OAOM;AAcP;AAAA,EACmB;AAAA,EACH;AAAA,EACK;AAAA,EACJ;AAAA,OACV;AAEP,SAAwB,aAA8B,aAA2B,gBAAuB;AAiCxG,IAAI,WAA4B;AAChC,IAAI,SAAoB,CAAC;AACzB,IAAM,iBAA8B,CAAC;AACrC,IAAM,cAAc,oBAAI,IAAkB;AAE1C,IAAM,cAAc,MAAM;AACzB,QAAM,WAAW,OAAO,QAAS,MAAO,EAAE,OAAQ,CAAE,cAAiC,CAAE,MAAM,KAAM,MAAO;AACzG,iBAAc,IAAK,IAAI,MAAM;AAE7B,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AAEN,SAAO,gBAAiB,QAAS;AAClC;AAEA,SAAS,cAAe,OAAe;AACtC,MAAK,OAAQ,MAAM,IAAK,GAAI;AAC3B,UAAM,IAAI,MAAO,oBAAqB,MAAM,IAAK,mBAAoB;AAAA,EACtE;AAEA,SAAQ,MAAM,IAAK,IAAI;AACxB;AAEA,IAAM,gBAAgB,CAAE,eAA4B;AACnD,cAAY,IAAK,UAAW;AAC7B;AAGA,IAAM,WAAW,CAAE,WAAiB;AACnC,MAAK,CAAE,UAAW;AACjB,mBAAe,KAAM,MAAO;AAE5B;AAAA,EACD;AAEA,SAAO,SAAS,SAAU,MAAO;AAClC;AAEA,IAAM,WAAW,MAAM;AACtB,MAAK,CAAE,UAAW;AACjB,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,SAAO,SAAS,SAAS;AAC1B;AAEA,IAAM,YAAY,CAAE,aAA0B;AAC7C,MAAK,CAAE,UAAW;AACjB,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,SAAO,SAAS,UAAW,QAAS;AACrC;AAEA,IAAM,cAAc,MAAM;AACzB,MAAK,UAAW;AACf,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,aAAW,eAAgB;AAAA,IAC1B,SAAS,YAAY;AAAA,IACrB,YAAY,CAAE,yBAA0B;AACvC,aAAO,CAAE,GAAG,qBAAqB,GAAG,GAAG,MAAM,KAAM,WAAY,CAAE;AAAA,IAClE;AAAA,EACD,CAAE;AAEF,MAAK,eAAe,QAAS;AAC5B,mBAAe,QAAS,CAAE,WAAY,SAAU,MAAO,CAAE;AACzD,mBAAe,SAAS;AAAA,EACzB;AAEA,SAAO;AACR;AAEA,IAAM,WAAW,MAAM;AACtB,SAAO;AACR;AAEA,IAAM,cAAc,MAAM;AACzB,aAAW;AACX,WAAS,CAAC;AACV,iBAAe,SAAS;AACxB,cAAY,MAAM;AACnB;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
2
|
+
"name": "@elementor/store",
|
|
3
|
+
"version": "0.8.4",
|
|
4
|
+
"private": false,
|
|
5
|
+
"author": "Elementor Team",
|
|
6
|
+
"homepage": "https://elementor.com/",
|
|
7
|
+
"license": "GPL-3.0-or-later",
|
|
8
|
+
"main": "dist/index.js",
|
|
9
|
+
"module": "dist/index.mjs",
|
|
10
|
+
"types": "dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.mjs",
|
|
14
|
+
"require": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"./package.json": "./package.json"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/elementor/elementor-packages.git",
|
|
22
|
+
"directory": "packages/libs/store"
|
|
23
|
+
},
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/elementor/elementor-packages/issues"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsup --config=../../tsup.build.ts",
|
|
32
|
+
"dev": "tsup --config=../../tsup.dev.ts"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"react": "^18.3.1"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@reduxjs/toolkit": "^1.9.7",
|
|
39
|
+
"react-redux": "^8.1.3"
|
|
40
|
+
},
|
|
41
|
+
"gitHead": "10fd8663495a9ced2521f27a74879684ed0cf322"
|
|
42
42
|
}
|
|
@@ -20,11 +20,11 @@ import {
|
|
|
20
20
|
interface SliceStateRoot {
|
|
21
21
|
slice: {
|
|
22
22
|
value?: number;
|
|
23
|
-
}
|
|
23
|
+
};
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
interface Config {
|
|
27
|
-
initialValue?: SliceStateRoot['slice']['value'];
|
|
27
|
+
initialValue?: SliceStateRoot[ 'slice' ][ 'value' ];
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
const createStoreEntities = ( { initialValue = 1 }: Config = {} ) => {
|
|
@@ -44,11 +44,7 @@ const createStoreEntities = ( { initialValue = 1 }: Config = {} ) => {
|
|
|
44
44
|
|
|
45
45
|
const store = __createStore();
|
|
46
46
|
|
|
47
|
-
const wrapper = ( { children }: PropsWithChildren ) =>
|
|
48
|
-
<StoreProvider store={ store }>
|
|
49
|
-
{ children }
|
|
50
|
-
</StoreProvider>
|
|
51
|
-
);
|
|
47
|
+
const wrapper = ( { children }: PropsWithChildren ) => <StoreProvider store={ store }>{ children }</StoreProvider>;
|
|
52
48
|
|
|
53
49
|
return {
|
|
54
50
|
slice,
|
|
@@ -62,7 +58,9 @@ describe( '@elementor/store', () => {
|
|
|
62
58
|
// Arrange.
|
|
63
59
|
const { wrapper } = createStoreEntities();
|
|
64
60
|
|
|
65
|
-
const { result } = renderHook( () => useSelector( ( state: SliceStateRoot ) => state.slice.value ), {
|
|
61
|
+
const { result } = renderHook( () => useSelector( ( state: SliceStateRoot ) => state.slice.value ), {
|
|
62
|
+
wrapper,
|
|
63
|
+
} );
|
|
66
64
|
|
|
67
65
|
// Assert.
|
|
68
66
|
expect( result.current ).toBe( 1 );
|
|
@@ -73,13 +71,16 @@ describe( '@elementor/store', () => {
|
|
|
73
71
|
const { slice, wrapper } = createStoreEntities();
|
|
74
72
|
|
|
75
73
|
// Act.
|
|
76
|
-
const { result } = renderHook(
|
|
77
|
-
|
|
74
|
+
const { result } = renderHook(
|
|
75
|
+
() => {
|
|
76
|
+
const dispatchAction = useDispatch();
|
|
78
77
|
|
|
79
|
-
|
|
78
|
+
dispatchAction( slice.actions.setValue( 3 ) );
|
|
80
79
|
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
return useSelector( ( state: SliceStateRoot ) => state.slice.value );
|
|
81
|
+
},
|
|
82
|
+
{ wrapper }
|
|
83
|
+
);
|
|
83
84
|
|
|
84
85
|
// Assert.
|
|
85
86
|
expect( result.current ).toBe( 3 );
|
|
@@ -130,13 +131,16 @@ describe( '@elementor/store', () => {
|
|
|
130
131
|
const { slice, wrapper } = createStoreEntities();
|
|
131
132
|
|
|
132
133
|
// Act.
|
|
133
|
-
const { result } = renderHook(
|
|
134
|
-
|
|
134
|
+
const { result } = renderHook(
|
|
135
|
+
() => {
|
|
136
|
+
const dispatchAction = useDispatch();
|
|
135
137
|
|
|
136
|
-
|
|
138
|
+
dispatchAction( slice.actions.setValue( 4 ) );
|
|
137
139
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
+
return useSelector( ( state: SliceStateRoot ) => state.slice.value );
|
|
141
|
+
},
|
|
142
|
+
{ wrapper }
|
|
143
|
+
);
|
|
140
144
|
|
|
141
145
|
// Assert.
|
|
142
146
|
expect( result.current ).toBe( 1 );
|
|
@@ -146,7 +150,7 @@ describe( '@elementor/store', () => {
|
|
|
146
150
|
// Arrange.
|
|
147
151
|
const middlewareNextAction = jest.fn();
|
|
148
152
|
|
|
149
|
-
__addMiddleware( () => ( next: Dispatch<AnyAction> ) => ( action: AnyAction ) => {
|
|
153
|
+
__addMiddleware( () => ( next: Dispatch< AnyAction > ) => ( action: AnyAction ) => {
|
|
150
154
|
middlewareNextAction( action );
|
|
151
155
|
|
|
152
156
|
next( action );
|
|
@@ -155,13 +159,16 @@ describe( '@elementor/store', () => {
|
|
|
155
159
|
const { slice, wrapper } = createStoreEntities();
|
|
156
160
|
|
|
157
161
|
// Act.
|
|
158
|
-
const { result } = renderHook(
|
|
159
|
-
|
|
162
|
+
const { result } = renderHook(
|
|
163
|
+
() => {
|
|
164
|
+
const dispatchAction = useDispatch();
|
|
160
165
|
|
|
161
|
-
|
|
166
|
+
dispatchAction( slice.actions.setValue( 4 ) );
|
|
162
167
|
|
|
163
|
-
|
|
164
|
-
|
|
168
|
+
return useSelector( ( state: SliceStateRoot ) => state.slice.value );
|
|
169
|
+
},
|
|
170
|
+
{ wrapper }
|
|
171
|
+
);
|
|
165
172
|
|
|
166
173
|
// Assert.
|
|
167
174
|
expect( result.current ).toBe( 4 );
|
|
@@ -202,7 +209,9 @@ describe( '@elementor/store', () => {
|
|
|
202
209
|
|
|
203
210
|
const { wrapper } = createStoreEntities();
|
|
204
211
|
|
|
205
|
-
const { result } = renderHook( () => useSelector( ( state: SliceStateRoot ) => state.slice.value ), {
|
|
212
|
+
const { result } = renderHook( () => useSelector( ( state: SliceStateRoot ) => state.slice.value ), {
|
|
213
|
+
wrapper,
|
|
214
|
+
} );
|
|
206
215
|
|
|
207
216
|
// Assert.
|
|
208
217
|
expect( result.current ).toBe( 7 );
|
|
@@ -237,9 +246,7 @@ describe( '@elementor/store', () => {
|
|
|
237
246
|
const store = __createStore();
|
|
238
247
|
|
|
239
248
|
const wrapper = ( { children }: PropsWithChildren ) => (
|
|
240
|
-
<StoreProvider store={ store }>
|
|
241
|
-
{ children }
|
|
242
|
-
</StoreProvider>
|
|
249
|
+
<StoreProvider store={ store }>{ children }</StoreProvider>
|
|
243
250
|
);
|
|
244
251
|
|
|
245
252
|
const { result } = renderHook( () => useSelector( ( state: SliceStateRoot ) => state.slice ), { wrapper } );
|
|
@@ -263,13 +270,16 @@ describe( '@elementor/store', () => {
|
|
|
263
270
|
|
|
264
271
|
const { slice, wrapper } = createStoreEntities();
|
|
265
272
|
|
|
266
|
-
const { result } = renderHook(
|
|
267
|
-
|
|
273
|
+
const { result } = renderHook(
|
|
274
|
+
() => {
|
|
275
|
+
const dispatchAction = useDispatch();
|
|
268
276
|
|
|
269
|
-
|
|
277
|
+
dispatchAction( slice.actions.setValue( 8 ) );
|
|
270
278
|
|
|
271
|
-
|
|
272
|
-
|
|
279
|
+
return useSelector( ( state: SliceStateRoot ) => state.slice.value );
|
|
280
|
+
},
|
|
281
|
+
{ wrapper }
|
|
282
|
+
);
|
|
273
283
|
|
|
274
284
|
// Assert.
|
|
275
285
|
expect( result.current ).toBe( 8 );
|
|
@@ -277,12 +287,9 @@ describe( '@elementor/store', () => {
|
|
|
277
287
|
|
|
278
288
|
it( 'should support dispatching async actions', async () => {
|
|
279
289
|
// Arrange.
|
|
280
|
-
const incrementBy = __createAsyncThunk(
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
return value;
|
|
284
|
-
},
|
|
285
|
-
);
|
|
290
|
+
const incrementBy = __createAsyncThunk( 'value/incrementBy', async ( value: number ) => {
|
|
291
|
+
return value;
|
|
292
|
+
} );
|
|
286
293
|
|
|
287
294
|
const slice = __createSlice( {
|
|
288
295
|
name: 'slice',
|
package/src/index.ts
CHANGED
|
@@ -29,11 +29,7 @@ export {
|
|
|
29
29
|
createAction as __createAction,
|
|
30
30
|
} from '@reduxjs/toolkit';
|
|
31
31
|
|
|
32
|
-
export {
|
|
33
|
-
useSelector as __useSelector,
|
|
34
|
-
useDispatch as __useDispatch,
|
|
35
|
-
Provider as __StoreProvider,
|
|
36
|
-
} from 'react-redux';
|
|
32
|
+
export { useSelector as __useSelector, useDispatch as __useDispatch, Provider as __StoreProvider } from 'react-redux';
|
|
37
33
|
|
|
38
34
|
/**
|
|
39
35
|
* Usage:
|
|
@@ -44,9 +40,9 @@ export {
|
|
|
44
40
|
*
|
|
45
41
|
* const value = useSelector( ( state: MySliceState ) => state.mySlice.value );
|
|
46
42
|
*/
|
|
47
|
-
export type SliceState<S extends Slice> = {
|
|
48
|
-
[ key in S['name'] ]: ReturnType<S['getInitialState']>;
|
|
49
|
-
}
|
|
43
|
+
export type SliceState< S extends Slice > = {
|
|
44
|
+
[ key in S[ 'name' ] ]: ReturnType< S[ 'getInitialState' ] >;
|
|
45
|
+
};
|
|
50
46
|
|
|
51
47
|
// The `configureStore` function from Redux Toolkit infers its actions from the `reducers`
|
|
52
48
|
// key of the initialization object. This is fine when creating the store statically, but
|
|
@@ -55,21 +51,21 @@ export type SliceState<S extends Slice> = {
|
|
|
55
51
|
// generic store type.
|
|
56
52
|
|
|
57
53
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
-
type AnyStore<State = any> = EnhancedStore<
|
|
54
|
+
type AnyStore< State = any > = EnhancedStore<
|
|
59
55
|
State,
|
|
60
56
|
AnyAction,
|
|
61
|
-
[ThunkMiddleware<State, AnyAction>],
|
|
62
|
-
[StoreEnhancer]
|
|
63
|
-
|
|
57
|
+
[ ThunkMiddleware< State, AnyAction > ],
|
|
58
|
+
[ StoreEnhancer ]
|
|
59
|
+
>;
|
|
64
60
|
|
|
65
61
|
interface SlicesMap {
|
|
66
|
-
[key: Slice['name']]: Slice;
|
|
62
|
+
[ key: Slice[ 'name' ] ]: Slice;
|
|
67
63
|
}
|
|
68
64
|
|
|
69
65
|
let instance: AnyStore | null = null;
|
|
70
66
|
let slices: SlicesMap = {};
|
|
71
67
|
const pendingActions: AnyAction[] = [];
|
|
72
|
-
const middlewares = new Set<Middleware>();
|
|
68
|
+
const middlewares = new Set< Middleware >();
|
|
73
69
|
|
|
74
70
|
const getReducers = () => {
|
|
75
71
|
const reducers = Object.entries( slices ).reduce( ( reducersData: ReducersMapObject, [ name, slice ] ) => {
|
|
@@ -128,10 +124,7 @@ const createStore = () => {
|
|
|
128
124
|
instance = configureStore( {
|
|
129
125
|
reducer: getReducers(),
|
|
130
126
|
middleware: ( getDefaultMiddleware ) => {
|
|
131
|
-
return [
|
|
132
|
-
...getDefaultMiddleware(),
|
|
133
|
-
...Array.from( middlewares ),
|
|
134
|
-
];
|
|
127
|
+
return [ ...getDefaultMiddleware(), ...Array.from( middlewares ) ];
|
|
135
128
|
},
|
|
136
129
|
} );
|
|
137
130
|
|