react-native-global-state-hooks 4.0.0 → 4.0.2

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 CHANGED
@@ -15,7 +15,7 @@ You can also see an introduction video [here!](https://www.youtube.com/watch?v=W
15
15
  We are gonna create a global state hook **useCount** with one line of code.
16
16
 
17
17
  ```ts
18
- import { createGlobalState } from 'react-native-global-state-hooks';
18
+ import { createGlobalState } from "react-native-global-state-hooks";
19
19
 
20
20
  export const useCount = createGlobalState(0);
21
21
  ```
@@ -32,68 +32,109 @@ return <Button onClick={() => setCount((count) => count + 1)}>{count}</Button>;
32
32
 
33
33
  Isn't it cool? It works just like a regular **useState**. Notice the only difference is that now you don't need to provide the initial value since this is a global hook, and the initial value has already been provided.
34
34
 
35
- # Decoupled state access
36
-
37
- If you need to access the global state outside of a component or a hook without subscribing to state changes, you can use the **createGlobalStateWithDecoupledFuncs**.
35
+ # Selectors
38
36
 
39
- Decoupled state access is particularly useful when you want to create components that have editing access to a specific store but don't necessarily need to reactively respond to state changes. For example, consider a search component that only needs to retrieve the current state whenever it performs a data search. It doesn't require continuous subscription to changes in the collection it filters.
40
-
41
- Using decoupled state access allows you to retrieve the state when needed without establishing a reactive relationship with the state changes. This approach provides more flexibility and control over when and how components interact with the global state. Let's see and example:
37
+ What if you already have a global state that you want to subscribe to, but you don't want your component to listen to all the changes of the state, only a small portion of it? Let's create a more complex **state**
42
38
 
43
39
  ```ts
44
- import { createGlobalStateWithDecoupledFuncs } from 'react-native-global-state-hooks';
40
+ import { createGlobalState } from "react-native-global-state-hooks";
45
41
 
46
- export const [useCount, getCount, setCount] =
47
- createGlobalStateWithDecoupledFuncs(0);
42
+ export const useContacts = createGlobalState({
43
+ isLoading: true,
44
+ filter: "",
45
+ items: [] as Contact[],
46
+ });
48
47
  ```
49
48
 
50
- That's great! With the addition of the **getCount** and **setCount** methods, you now have the ability to access and modify the state without the need for subscription to the hook.
49
+ Now, let's say I want to have a filter bar for the contacts that will only have access to the filter.
51
50
 
52
- By using the **getCount** method, you can retrieve the current value of the state stored in **useCount**. This allows you to access the state whenever necessary, without being reactive to its changes.
51
+ **FilterBar.tsx**
53
52
 
54
- Similarly, the **setCount** method enables you to modify the state stored in **useCount**. You can use this method to update the state with a new value or perform any necessary state mutations.
53
+ ```ts
54
+ const [{ filter }, setState] = useContacts(({ filter }) => ({ filter }));
55
55
 
56
- These additional methods provide a more flexible and granular way to interact with the state managed by **useCount**. You can retrieve and modify the state as needed, without establishing a subscription relationship or reactivity with the state changes.
56
+ return (
57
+ <TextInput onChangeText={() => setState((state) => ({ ...state, filter }))} />
58
+ );
59
+ ```
57
60
 
58
61
  # State actions
59
62
 
60
- Is common and often necessary to restrict the manipulation of state to a specific set of actions or operations. To achieve this, we can simplify the process by adding a custom API to the configuration of our **global state**.
61
-
62
- By defining a custom API for the **useCount**, we can encapsulate and expose only the necessary actions or operations that are allowed to modify the state. This provides a controlled interface for interacting with the state, ensuring that modifications adhere to the desired restrictions.
63
+ Is common and often necessary to restrict the manipulation of state to a specific set of actions or operations. To achieve this, we can simplify the process by adding a custom API to the configuration of our **useContacts**.
63
64
 
64
- Let's see and example (you can use **createGlobalStateWithDecoupledFuncs** or **createGlobalState**, but methods work the the same)
65
+ By defining a custom API for the **useContacts**, we can encapsulate and expose only the necessary actions or operations that are allowed to modify the state. This provides a controlled interface for interacting with the state, ensuring that modifications adhere to the desired restrictions.
65
66
 
66
67
  ```ts
67
- import { createGlobalState } from 'react-native-global-state-hooks';
68
+ import { createGlobalState } from "react-native-global-state-hooks";
68
69
 
69
- export const useCount = createGlobalState(0, {
70
- actions: {
71
- increase(value: number = 1) {
72
- return ({ getState }: StoreTools<number>) => {
73
- setState((count) => count + value);
74
- };
70
+ export const useContacts = createGlobalState(
71
+ {
72
+ isLoading: true,
73
+ filter: "",
74
+ items: [] as Contact[],
75
+ },
76
+ {
77
+ // this are the actions available for this state
78
+ actions: {
79
+ setFilter(filter: string) {
80
+ return ({ setState }: StoreTools<number>) => {
81
+ setState((state) => ({
82
+ ...state,
83
+ filter,
84
+ }));
85
+ };
86
+ },
87
+ } as const,
88
+ onInit: async ({ setState }: StoreTools) => {
89
+ // fetch contacts
75
90
  },
76
- } as const,
77
- });
91
+ }
92
+ );
78
93
  ```
79
94
 
80
- That's great! In this updated version, the **useCount** hook will no longer return [**state**, **stateSetter**] but instead will return [**state**, **actions**]. This change will provide a more intuitive and convenient way to access and interact with the state and its associated actions.
95
+ That's it! In this updated version, the **useContacts** hook will no longer return [**state**, **stateSetter**] but instead will return [**state**, **actions**]. This change will provide a more intuitive and convenient way to access and interact with the state and its associated actions.
96
+
97
+ Let's see how that will look now into our **FilterBar.tsx**
98
+
99
+ ```tsx
100
+ const [{ filter }, { setFilter }] = useContacts(({ filter }) => ({ filter }));
101
+
102
+ return <TextInput onChangeText={setFilter} />;
103
+ ```
104
+
105
+ It can't get any simpler, right? Plus, these hooks are strongly typed, so if you're working with TypeScript, you'll love it.
106
+
107
+ Let's continue exploring which other features we can discover with global state hooks!!
108
+
109
+ # Decoupled state access
110
+
111
+ If you need to access the global state outside of a component or a hook without subscribing to state changes, or even inside a **ClassComponent**, you can use the **createGlobalStateWithDecoupledFuncs**.
112
+
113
+ Decoupled state access is particularly useful when you want to create components that have editing access to a specific store but don't necessarily need to reactively respond to state changes.
81
114
 
82
- Let's see how that will look into a react component:
115
+ Using decoupled state access allows you to retrieve the state when needed without establishing a reactive relationship with the state changes. This approach provides more flexibility and control over when and how components interact with the global state. Let's see and example:
83
116
 
84
117
  ```ts
85
- const [count, actions] = useCount();
118
+ import { createGlobalStateWithDecoupledFuncs } from "react-native-global-state-hooks";
86
119
 
87
- // Every time we click, the counter will increase by 2
88
- return <Button onClick={() => actions.increase(2)}>{count}</Button>;
120
+ export const [useCount, getCount, setCount] =
121
+ createGlobalStateWithDecoupledFuncs(0);
89
122
  ```
90
123
 
124
+ That's great! With the addition of the **getCount** and **setCount** methods, you now have the ability to access and modify the state without the need for subscription to the hook.
125
+
126
+ By using the **getCount** method, you can retrieve the current value of the state stored in **useCount**. This allows you to access the state whenever necessary, without being reactive to its changes.
127
+
128
+ Similarly, the **setCount** method enables you to modify the state stored in **useCount**. You can use this method to update the state with a new value or perform any necessary state mutations.
129
+
130
+ These additional methods provide a more flexible and granular way to interact with the state managed by **useCount**. You can retrieve and modify the state as needed, without establishing a subscription relationship or reactivity with the state changes.
131
+
91
132
  Let's add more actions to the state and explore how to use one action from inside another.
92
133
 
93
134
  Here's an example of adding multiple actions to the state and utilizing one action within another:
94
135
 
95
136
  ```ts
96
- import { createGlobalState } from 'react-native-global-state-hooks';
137
+ import { createGlobalState } from "react-native-global-state-hooks";
97
138
 
98
139
  export const useCount = createGlobalState(0, {
99
140
  actions: {
@@ -127,7 +168,7 @@ Notice that the **StoreTools** will contain a reference to the generated actions
127
168
  If you don't want to create an extra type please use **createGlobalStateWithDecoupledFuncs** in that way you'll be able to use the decoupled **actions** which will have the correct typing. Let's take a quick look into that:
128
169
 
129
170
  ```ts
130
- import { createGlobalStateWithDecoupledFuncs } from 'react-native-global-state-hooks';
171
+ import { createGlobalStateWithDecoupledFuncs } from "react-native-global-state-hooks";
131
172
 
132
173
  export const [useCount, getCount, $actions] =
133
174
  createGlobalStateWithDecoupledFuncs(0, {
@@ -183,7 +224,7 @@ export const createGlobalState = createCustomGlobalState<
183
224
  isAsyncStorageReady: null,
184
225
  }));
185
226
 
186
- const asyncStorageKey = config.asyncStorageKey;
227
+ const asyncStorageKey = config?.asyncStorageKey;
187
228
  if (!asyncStorageKey) return;
188
229
 
189
230
  const storedItem = (await asyncStorage.getItem(asyncStorageKey)) as string;
@@ -206,7 +247,7 @@ export const createGlobalState = createCustomGlobalState<
206
247
  },
207
248
 
208
249
  onChange: ({ getState }, config) => {
209
- if (!config.asyncStorageKey) return;
250
+ if (!config?.asyncStorageKey) return;
210
251
 
211
252
  const state = getState();
212
253
 
@@ -230,7 +271,7 @@ Let's see how to create a global state using our new builder:
230
271
  ```ts
231
272
  const useTodos = createGlobalState(new Map<string, number>(), {
232
273
  config: {
233
- asyncStorageKey: 'todos',
274
+ asyncStorageKey: "todos",
234
275
  },
235
276
  });
236
277
  ```
@@ -313,7 +354,7 @@ const useData = createGlobalState(
313
354
  { value: 1 },
314
355
  {
315
356
  metadata: {
316
- someExtraInformation: 'someExtraInformation',
357
+ someExtraInformation: "someExtraInformation",
317
358
  },
318
359
  // onSubscribed: (StateConfigCallbackParam) => {},
319
360
  // onInit // etc
@@ -411,7 +452,7 @@ Then, from an instance of the global store, you will be able to access the hooks
411
452
  ```ts
412
453
  const storage = new GlobalStore(0, {
413
454
  metadata: {
414
- asyncStorageKey: 'counter',
455
+ asyncStorageKey: "counter",
415
456
  isAsyncStorageReady: false,
416
457
  },
417
458
  });
@@ -1,5 +1,5 @@
1
- import { Dispatch, SetStateAction } from 'react';
2
- import { ActionCollectionConfig, StateSetter, GlobalStoreConfig, ActionCollectionResult, StateConfigCallbackParam, StateChangesParam, MetadataSetter } from './GlobalStore.types';
1
+ import { Dispatch, SetStateAction } from "react";
2
+ import { ActionCollectionConfig, StateSetter, GlobalStoreConfig, ActionCollectionResult, StateConfigCallbackParam, MetadataSetter, UseHookConfig } from "./GlobalStore.types";
3
3
  /**
4
4
  * The GlobalStore class is the main class of the library and it is used to create a GlobalStore instances
5
5
  * @template {TState} TState - The type of the state object
@@ -12,9 +12,13 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
12
12
  * list of all the subscribers setState functions
13
13
  * @template {TState} TState - The type of the state object
14
14
  * */
15
- subscribers: Set<StateSetter<{
16
- state: TState;
17
- }>>;
15
+ subscribers: Map<Dispatch<SetStateAction<{
16
+ state: unknown;
17
+ }>>, {
18
+ selector?: (state: TState) => unknown;
19
+ config?: UseHookConfig<TState, any>;
20
+ currentState?: unknown;
21
+ }>;
18
22
  /**
19
23
  * additional configuration for the store
20
24
  * @template {TState} TState - The type of the state object
@@ -38,7 +42,7 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
38
42
  * @param {Dispatch<SetStateAction<TMetadata>>} parameters.setMetadata - The setMetadata function to update the metadata
39
43
  * @param {() => TMetadata} parameters.getMetadata - The getMetadata function to get the metadata
40
44
  * */
41
- protected onInit?: GlobalStoreConfig<TState, TMetadata, TStateSetter>['onInit'];
45
+ protected onInit?: GlobalStoreConfig<TState, TMetadata, TStateSetter>["onInit"];
42
46
  /**
43
47
  * execute every time the state is changed
44
48
  * @template {TState} TState - The type of the state object
@@ -50,7 +54,7 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
50
54
  * @param {Dispatch<SetStateAction<TMetadata>>} parameters.setMetadata - The setMetadata function to update the metadata
51
55
  * @param {() => TMetadata} parameters.getMetadata - The getMetadata function to get the metadata
52
56
  * */
53
- protected onStateChanged?: GlobalStoreConfig<TState, TMetadata, TStateSetter>['onStateChanged'];
57
+ protected onStateChanged?: GlobalStoreConfig<TState, TMetadata, TStateSetter>["onStateChanged"];
54
58
  /**
55
59
  * Execute each time a new component gets subscribed to the store
56
60
  * @template {TState} TState - The type of the state object
@@ -62,9 +66,9 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
62
66
  * @param {Dispatch<SetStateAction<TMetadata>>} parameters.setMetadata - The setMetadata function to update the metadata
63
67
  * @param {() => TMetadata} parameters.getMetadata - The getMetadata function to get the metadata
64
68
  * */
65
- protected onSubscribed?: GlobalStoreConfig<TState, TMetadata, TStateSetter>['onSubscribed'];
69
+ protected onSubscribed?: GlobalStoreConfig<TState, TMetadata, TStateSetter>["onSubscribed"];
66
70
  /**
67
- * Execute everytime a state change is triggered and before the state is updated, it allows to prevent the state change by returning true
71
+ * Execute every time a state change is triggered and before the state is updated, it allows to prevent the state change by returning true
68
72
  * @template {TState} TState - The type of the state object
69
73
  * @template {TMetadata} TMetadata - The type of the metadata object (optional) (default: null) no reactive information set to share with the subscribers
70
74
  * @template {TStateSetter} TStateSetter - The type of the actionsConfig object (optional) (default: null) if a configuration is passed, the hook will return an object with the actions then all the store manipulation will be done through the actions
@@ -75,7 +79,7 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
75
79
  * @param {() => TMetadata} parameters.getMetadata - The getMetadata function to get the metadata
76
80
  * @returns {boolean} - true to prevent the state change, false to allow the state change
77
81
  * */
78
- protected computePreventStateChange?: GlobalStoreConfig<TState, TMetadata, TStateSetter>['computePreventStateChange'];
82
+ protected computePreventStateChange?: GlobalStoreConfig<TState, TMetadata, TStateSetter>["computePreventStateChange"];
79
83
  /**
80
84
  * We use a wrapper in order to be able to force the state update when necessary even with primitive types
81
85
  */
@@ -111,7 +115,7 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
111
115
  * @param {GlobalStoreConfig<TState, TMetadata>} config.onInit - The callback to execute when the store is initialized (optional) (default: null)
112
116
  * @param {GlobalStoreConfig<TState, TMetadata>} config.onStateChanged - The callback to execute when the state is changed (optional) (default: null)
113
117
  * @param {GlobalStoreConfig<TState, TMetadata>} config.onSubscribed - The callback to execute when a new component gets subscribed to the store (optional) (default: null)
114
- * @param {GlobalStoreConfig<TState, TMetadata>} config.computePreventStateChange - The callback to execute everytime a state change is triggered and before the state is updated, it allows to prevent the state change by returning true (optional) (default: null)
118
+ * @param {GlobalStoreConfig<TState, TMetadata>} config.computePreventStateChange - The callback to execute every time a state change is triggered and before the state is updated, it allows to prevent the state change by returning true (optional) (default: null)
115
119
  * @param {TStateSetter} actionsConfig - The actions configuration object (optional) (default: null) if not null the store manipulation will be done through the actions
116
120
  * */
117
121
  constructor(state: TState, config: GlobalStoreConfig<TState, TMetadata, TStateSetter>, actionsConfig: TStateSetter);
@@ -121,11 +125,12 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
121
125
  * @param {StateSetter<TState>} setter - The setter function or the value to set
122
126
  * @param {React.Dispatch<React.SetStateAction<TState>>} invokerSetState - The setState function of the component that invoked the state change (optional) (default: null) this is used to updated first the component that invoked the state change
123
127
  * */
124
- protected setState: ({ invokerSetState, state, }: {
128
+ protected setState: ({ invokerSetState, state, forceUpdate, }: {
125
129
  state: TState;
126
130
  invokerSetState?: Dispatch<SetStateAction<{
127
- state: TState;
131
+ state: unknown;
128
132
  }>>;
133
+ forceUpdate: boolean;
129
134
  }) => void;
130
135
  /**
131
136
  * Set the value of the metadata property, this is no reactive and will not trigger a re-render
@@ -143,14 +148,14 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
143
148
  * */
144
149
  protected getConfigCallbackParam: ({ invokerSetState, }: {
145
150
  invokerSetState?: React.Dispatch<React.SetStateAction<{
146
- state: TState;
151
+ state: unknown;
147
152
  }>>;
148
153
  }) => StateConfigCallbackParam<TState, TMetadata, TStateSetter>;
149
154
  /**
150
155
  * Returns a custom hook that allows to handle a global state
151
156
  * @returns {[TState, TStateSetter, TMetadata]} - The state, the state setter or the actions map, the metadata
152
157
  * */
153
- getHook: () => () => [TState, TStateSetter extends StateSetter<TState> ? StateSetter<TState> : ActionCollectionResult<TState, TMetadata, TStateSetter>, TMetadata];
158
+ getHook: () => <State = TState>(selector?: (state: TState) => State, config?: UseHookConfig<TState, State>) => [state: State extends null ? TState : State, setter: TStateSetter extends StateSetter<TState> ? StateSetter<TState> : ActionCollectionResult<TState, TMetadata, TStateSetter>, metadata: TMetadata];
154
159
  /**
155
160
  * Returns an array with the a function to get the state, the state setter or the actions map, and a function to get the metadata
156
161
  * @returns {[() => TState, TStateSetter, () => TMetadata]} - The state getter, the state setter or the actions map, the metadata getter
@@ -163,7 +168,7 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
163
168
  * */
164
169
  protected getSetStateWrapper: ({ invokerSetState, }?: {
165
170
  invokerSetState?: React.Dispatch<React.SetStateAction<{
166
- state: TState;
171
+ state: unknown;
167
172
  }>>;
168
173
  }) => StateSetter<TState>;
169
174
  /**
@@ -172,7 +177,7 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
172
177
  * @returns {TStateSetter} - The state setter or the actions map
173
178
  * */
174
179
  protected getStateOrchestrator(invokerSetState?: React.Dispatch<React.SetStateAction<{
175
- state: TState;
180
+ state: unknown;
176
181
  }>>): StateSetter<TState> | ActionCollectionResult<TState, TMetadata, TStateSetter>;
177
182
  /**
178
183
  * Calculate whenever or not we should compute the callback parameters on the state change
@@ -189,7 +194,7 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
189
194
  protected computeSetState: ({ setter, invokerSetState, forceUpdate, }: {
190
195
  setter: StateSetter<TState>;
191
196
  invokerSetState?: React.Dispatch<React.SetStateAction<{
192
- state: TState;
197
+ state: unknown;
193
198
  }>>;
194
199
  forceUpdate: boolean;
195
200
  }) => void;
@@ -200,85 +205,7 @@ export declare class GlobalStore<TState, TMetadata = null, TStateSetter extends
200
205
  * */
201
206
  protected getStoreActionsMap: ({ invokerSetState, }?: {
202
207
  invokerSetState?: React.Dispatch<React.SetStateAction<{
203
- state: TState;
208
+ state: unknown;
204
209
  }>>;
205
210
  }) => ActionCollectionResult<TState, TMetadata, TStateSetter>;
206
211
  }
207
- /**
208
- * Creates a global hook that can be used to access the state and actions across the application
209
- * @param {TState} state - The initial state
210
- * @param {{ config?: GlobalStoreConfig<TState, TMetadata, TStateSetter>; actionsConfig?: TStateSetter | null }} parameters - The configuration object (optional) (default: null)
211
- * @param {GlobalStoreConfig<TState, TMetadata, TStateSetter>} parameters.config - The configuration object
212
- * @param {TStateSetter | null} parameters.actionsConfig - The setter configuration object (optional) (default: null)
213
- * @returns {} [HOOK, DECOUPLED_GETTER, DECOUPLED_SETTER] this is an array with the hook, the decoupled getState function and the decoupled setter of the state
214
- */
215
- export declare const createGlobalStateWithDecoupledFuncs: <TState, TMetadata = null, TActions extends ActionCollectionConfig<TState, TMetadata> = null>(state: TState, { actions, metadata, onInit, onStateChanged, onSubscribed, computePreventStateChange, }?: {
216
- /**
217
- * @description
218
- * The type of the actionsConfig object (optional) (default: null) if a configuration is passed, the hook will return an object with the actions then all the store manipulation will be done through the actions
219
- */
220
- actions?: TActions;
221
- /**
222
- * @param {StateConfigCallbackParam<TState, TMetadata> => void} metadata - the initial value of the metadata
223
- * */
224
- metadata?: TMetadata;
225
- /**
226
- * @param {StateConfigCallbackParam<TState, TMetadata> => void} onInit - callback function called when the store is initialized
227
- * @returns {void} result - void
228
- * */
229
- onInit?: (parameters: StateConfigCallbackParam<TState, TMetadata, TActions>) => void;
230
- /**
231
- * @param {StateChangesParam<TState, TMetadata> => void} onStateChanged - callback function called every time the state is changed
232
- * @returns {void} result - void
233
- */
234
- onStateChanged?: (parameters: StateChangesParam<TState, TMetadata, TActions>) => void;
235
- /**
236
- * @param {StateConfigCallbackParam<TState, TMetadata> => void} onSubscribed - callback function called every time a component is subscribed to the store
237
- * @returns {void} result - void
238
- */
239
- onSubscribed?: (parameters: StateConfigCallbackParam<TState, TMetadata, TActions>) => void;
240
- /**
241
- * @param {StateChangesParam<TState, TMetadata> => boolean} computePreventStateChange - callback function called every time the state is about to change and it allows you to prevent the state change
242
- * @returns {boolean} result - true if you want to prevent the state change, false otherwise
243
- */
244
- computePreventStateChange?: (parameters: StateChangesParam<TState, TMetadata, TActions>) => boolean;
245
- }) => [useHook: () => [TState, TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, TMetadata, TActions>, TMetadata], getState: () => TState, setter: TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, TMetadata, TActions>];
246
- /**
247
- * Creates a global hook that can be used to access the state and actions across the application
248
- * @param {TState} state - The initial state of the store
249
- * @param {{ config?: GlobalStoreConfig<TState, TMetadata, TStateSetter>; actionsConfig?: TStateSetter | null }} parameters - The configuration object of the store and the configuration object of the state setter (optional) (default: null)
250
- * @param {GlobalStoreConfig<TState, TMetadata, TStateSetter>} parameters.config - The configuration object of the store
251
- * @param {TStateSetter | null} parameters.actionsConfig - The configuration object of the state setter (optional) (default: null)
252
- * @returns {} - () => [TState, Setter, TMetadata] the hook that can be used to access the state and the setter of the state
253
- */
254
- export declare const createGlobalState: <TState, TMetadata = null, TActions extends ActionCollectionConfig<TState, TMetadata> = null>(state: TState, config?: {
255
- /**
256
- * @description
257
- * The type of the actionsConfig object (optional) (default: null) if a configuration is passed, the hook will return an object with the actions then all the store manipulation will be done through the actions
258
- */
259
- actions?: TActions;
260
- /**
261
- * @param {StateConfigCallbackParam<TState, TMetadata> => void} metadata - the initial value of the metadata
262
- * */
263
- metadata?: TMetadata;
264
- /**
265
- * @param {StateConfigCallbackParam<TState, TMetadata> => void} onInit - callback function called when the store is initialized
266
- * @returns {void} result - void
267
- * */
268
- onInit?: (parameters: StateConfigCallbackParam<TState, TMetadata, TActions>) => void;
269
- /**
270
- * @param {StateChangesParam<TState, TMetadata> => void} onStateChanged - callback function called every time the state is changed
271
- * @returns {void} result - void
272
- */
273
- onStateChanged?: (parameters: StateChangesParam<TState, TMetadata, TActions>) => void;
274
- /**
275
- * @param {StateConfigCallbackParam<TState, TMetadata> => void} onSubscribed - callback function called every time a component is subscribed to the store
276
- * @returns {void} result - void
277
- */
278
- onSubscribed?: (parameters: StateConfigCallbackParam<TState, TMetadata, TActions>) => void;
279
- /**
280
- * @param {StateChangesParam<TState, TMetadata> => boolean} computePreventStateChange - callback function called every time the state is about to change and it allows you to prevent the state change
281
- * @returns {boolean} result - true if you want to prevent the state change, false otherwise
282
- */
283
- computePreventStateChange?: (parameters: StateChangesParam<TState, TMetadata, TActions>) => boolean;
284
- }) => () => [TState, TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, TMetadata, TActions>, TMetadata];
@@ -0,0 +1,149 @@
1
+ import { ActionCollectionConfig, StateConfigCallbackParam, StateChangesParam, StateSetter, ActionCollectionResult, UseHookConfig, AvoidNever, GlobalStoreConfig } from "GlobalStore.types";
2
+ /**
3
+ * Creates a global hook that can be used to access the state and actions across the application
4
+ * @param {TState} state - The initial state
5
+ * @param {{ config?: GlobalStoreConfig<TState, TMetadata, TStateSetter>; actionsConfig?: TStateSetter | null }} parameters - The configuration object (optional) (default: null)
6
+ * @param {GlobalStoreConfig<TState, TMetadata, TStateSetter>} parameters.config - The configuration object
7
+ * @param {TStateSetter | null} parameters.actionsConfig - The setter configuration object (optional) (default: null)
8
+ * @returns {} [HOOK, DECOUPLED_GETTER, DECOUPLED_SETTER] this is an array with the hook, the decoupled getState function and the decoupled setter of the state
9
+ */
10
+ export declare const createGlobalStateWithDecoupledFuncs: <TState, TMetadata = null, TActions extends ActionCollectionConfig<TState, TMetadata> = null>(state: TState, { actions, ...config }?: {
11
+ /**
12
+ * @description
13
+ * The type of the actionsConfig object (optional) (default: null) if a configuration is passed, the hook will return an object with the actions then all the store manipulation will be done through the actions
14
+ */
15
+ actions?: TActions;
16
+ /**
17
+ * @param {StateConfigCallbackParam<TState, TMetadata> => void} metadata - the initial value of the metadata
18
+ * */
19
+ metadata?: TMetadata;
20
+ /**
21
+ * @param {StateConfigCallbackParam<TState, TMetadata> => void} onInit - callback function called when the store is initialized
22
+ * @returns {void} result - void
23
+ * */
24
+ onInit?: (parameters: StateConfigCallbackParam<TState, TMetadata, TActions>) => void;
25
+ /**
26
+ * @param {StateChangesParam<TState, TMetadata> => void} onStateChanged - callback function called every time the state is changed
27
+ * @returns {void} result - void
28
+ */
29
+ onStateChanged?: (parameters: StateChangesParam<TState, TMetadata, TActions>) => void;
30
+ /**
31
+ * @param {StateConfigCallbackParam<TState, TMetadata> => void} onSubscribed - callback function called every time a component is subscribed to the store
32
+ * @returns {void} result - void
33
+ */
34
+ onSubscribed?: (parameters: StateConfigCallbackParam<TState, TMetadata, TActions>) => void;
35
+ /**
36
+ * @param {StateChangesParam<TState, TMetadata> => boolean} computePreventStateChange - callback function called every time the state is about to change and it allows you to prevent the state change
37
+ * @returns {boolean} result - true if you want to prevent the state change, false otherwise
38
+ */
39
+ computePreventStateChange?: (parameters: StateChangesParam<TState, TMetadata, TActions>) => boolean;
40
+ }) => [useState: <State = TState>(selector?: (state: TState) => State, config?: UseHookConfig<TState, State>) => [State extends null ? TState : State, TActions extends StateSetter<TState> ? StateSetter<TState> : ActionCollectionResult<TState, TMetadata, TActions>, TMetadata], getState: () => TState, setter: TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, TMetadata, TActions>];
41
+ /**
42
+ * Creates a global hook that can be used to access the state and actions across the application
43
+ * @param {TState} state - The initial state of the store
44
+ * @param {{ config?: GlobalStoreConfig<TState, TMetadata, TStateSetter>; actionsConfig?: TStateSetter | null }} parameters - The configuration object of the store and the configuration object of the state setter (optional) (default: null)
45
+ * @param {GlobalStoreConfig<TState, TMetadata, TStateSetter>} parameters.config - The configuration object of the store
46
+ * @param {TStateSetter | null} parameters.actionsConfig - The configuration object of the state setter (optional) (default: null)
47
+ * @returns {} - () => [TState, Setter, TMetadata] the hook that can be used to access the state and the setter of the state
48
+ */
49
+ export declare const createGlobalState: <TState, TMetadata = null, TActions extends ActionCollectionConfig<TState, TMetadata> = null>(state: TState, config?: {
50
+ /**
51
+ * @description
52
+ * The type of the actionsConfig object (optional) (default: null) if a configuration is passed, the hook will return an object with the actions then all the store manipulation will be done through the actions
53
+ */
54
+ actions?: TActions;
55
+ /**
56
+ * @param {StateConfigCallbackParam<TState, TMetadata> => void} metadata - the initial value of the metadata
57
+ * */
58
+ metadata?: TMetadata;
59
+ /**
60
+ * @param {StateConfigCallbackParam<TState, TMetadata> => void} onInit - callback function called when the store is initialized
61
+ * @returns {void} result - void
62
+ * */
63
+ onInit?: (parameters: StateConfigCallbackParam<TState, TMetadata, TActions>) => void;
64
+ /**
65
+ * @param {StateChangesParam<TState, TMetadata> => void} onStateChanged - callback function called every time the state is changed
66
+ * @returns {void} result - void
67
+ */
68
+ onStateChanged?: (parameters: StateChangesParam<TState, TMetadata, TActions>) => void;
69
+ /**
70
+ * @param {StateConfigCallbackParam<TState, TMetadata> => void} onSubscribed - callback function called every time a component is subscribed to the store
71
+ * @returns {void} result - void
72
+ */
73
+ onSubscribed?: (parameters: StateConfigCallbackParam<TState, TMetadata, TActions>) => void;
74
+ /**
75
+ * @param {StateChangesParam<TState, TMetadata> => boolean} computePreventStateChange - callback function called every time the state is about to change and it allows you to prevent the state change
76
+ * @returns {boolean} result - true if you want to prevent the state change, false otherwise
77
+ */
78
+ computePreventStateChange?: (parameters: StateChangesParam<TState, TMetadata, TActions>) => boolean;
79
+ }) => <State = TState>(selector?: (state: TState) => State, config?: UseHookConfig<TState, State>) => [state: State extends null ? TState : State, setter: TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, TMetadata, TActions>, metadata: TMetadata];
80
+ export type CustomGlobalHookParams<TInheritMetadata = null, TCustomConfig = {}> = {
81
+ /**
82
+ * @description
83
+ * This function is called when the state is initialized.
84
+ */
85
+ onInitialize: ({ setState, setMetadata, getMetadata, getState, actions, }: StateConfigCallbackParam<any, TInheritMetadata>, config: TCustomConfig) => void;
86
+ /**
87
+ * @description
88
+ * This function is called when the state is changed.
89
+ */
90
+ onChange: ({ setState, setMetadata, getMetadata, getState, actions, }: StateChangesParam<any, TInheritMetadata>, config: TCustomConfig) => void;
91
+ };
92
+ /**
93
+ * @description
94
+ * Use this function to create a custom global store.
95
+ * You can use this function to create a store with async storage.
96
+ */
97
+ export declare const createCustomGlobalStateWithDecoupledFuncs: <TInheritMetadata = null, TCustomConfig = null>({ onInitialize, onChange, }: CustomGlobalHookParams<TInheritMetadata, TCustomConfig>) => <TState, TMetadata = null, TActions extends ActionCollectionConfig<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>> = null>(state: TState, { config: customConfig, actions, metadata, onInit, onStateChanged, onSubscribed, computePreventStateChange, }?: {
98
+ config?: TCustomConfig;
99
+ actions?: TActions;
100
+ metadata?: TMetadata;
101
+ onInit?: (parameters: StateConfigCallbackParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
102
+ onStateChanged?: (parameters: StateChangesParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
103
+ onSubscribed?: (parameters: StateConfigCallbackParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
104
+ computePreventStateChange?: (parameters: StateChangesParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => boolean;
105
+ }) => [useState: <State = TState>(selector?: (state: TState) => State, config?: UseHookConfig<TState, State>) => [State extends null ? TState : State, TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>], getState: () => TState, setter: TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>];
106
+ /**
107
+ * @description
108
+ * Use this function to create a custom global store.
109
+ * You can use this function to create a store with async storage.
110
+ * This function will return a hook that you can use to access the store.
111
+ * @param state The initial state of the store.
112
+ * @param config The configuration of the store.
113
+ * @returns {[TState, TStateSetter, TMetadata]} The state, the state setter and the metadata of the store.
114
+ */
115
+ export declare const createCustomGlobalState: <TInheritMetadata = null, TCustomConfig = {}>({ onInitialize, onChange, }: CustomGlobalHookParams<TInheritMetadata, TCustomConfig>) => <TState, TMetadata = null, TActions extends ActionCollectionConfig<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>> = null>(state: TState, { config: customConfig, actions, metadata, onInit, onStateChanged, onSubscribed, computePreventStateChange, }?: {
116
+ /**
117
+ * Configuration of the custom global store
118
+ */
119
+ config?: TCustomConfig;
120
+ /**
121
+ * @description
122
+ * (optional) (default: null) if a configuration is passed, the hook will return an object with the actions then all the store manipulation will be done through the actions
123
+ */
124
+ actions?: TActions;
125
+ /**
126
+ * @param {StateConfigCallbackParam<TState, TMetadata> => void} metadata - the initial value of the metadata
127
+ * */
128
+ metadata?: TMetadata;
129
+ /**
130
+ * @param {StateConfigCallbackParam<TState, TMetadata> => void} onInit - callback function called when the store is initialized
131
+ * @returns {void} result - void
132
+ * */
133
+ onInit?: (parameters: StateConfigCallbackParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
134
+ /**
135
+ * @param {StateChangesParam<TState, TMetadata> => void} onStateChanged - callback function called every time the state is changed
136
+ * @returns {void} result - void
137
+ */
138
+ onStateChanged?: (parameters: StateChangesParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
139
+ /**
140
+ * @param {StateConfigCallbackParam<TState, TMetadata> => void} onSubscribed - callback function called every time a component is subscribed to the store
141
+ * @returns {void} result - void
142
+ */
143
+ onSubscribed?: (parameters: StateConfigCallbackParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
144
+ /**
145
+ * @param {StateChangesParam<TState, TMetadata> => boolean} computePreventStateChange - callback function called every time the state is about to change and it allows you to prevent the state change
146
+ * @returns {boolean} result - true if you want to prevent the state change, false otherwise
147
+ */
148
+ computePreventStateChange?: (parameters: StateChangesParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => boolean;
149
+ }) => <State = TState>(selector?: (state: TState) => State, config?: UseHookConfig<TState, State>) => [state: State extends null ? TState : State, setter: TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>, metadata: (TInheritMetadata extends null ? {} : TInheritMetadata) & (TMetadata extends null ? {} : TMetadata)];
@@ -188,3 +188,10 @@ export type GlobalStoreConfig<TState, TMetadata, TStateSetter extends ActionColl
188
188
  */
189
189
  computePreventStateChange?: (parameters: StateChangesParam<TState, TMetadata, TStateSetter>) => boolean;
190
190
  } | null;
191
+ export type UseHookConfig<TState, TDerivate = never> = {
192
+ /**
193
+ * The callback to execute when the state is changed to check if the same really changed
194
+ * If the function is not provided the derived state will perform a shallow comparison
195
+ */
196
+ isEqual?: (current: TDerivate extends never | undefined | null ? TState : TDerivate, next: TDerivate extends never | undefined | null ? TState : TDerivate) => boolean;
197
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shallow compare two values and return true if they are equal.
3
+ * This function just compare the first level of the values.
4
+ * @param value1
5
+ * @param value2
6
+ * @returns {boolean} true if the values are equal, false otherwise
7
+ */
8
+ export declare const shallowCompare: <T>(value1: T, value2: T) => boolean;
@@ -1,5 +1,5 @@
1
- import { StateSetter, StateConfigCallbackParam, StateChangesParam, ActionCollectionConfig, GlobalStoreConfig, AvoidNever, ActionCollectionResult } from 'GlobalStore.types';
2
- import { GlobalStore } from './GlobalStore';
1
+ import { StateSetter, StateConfigCallbackParam, StateChangesParam, ActionCollectionConfig, GlobalStoreConfig } from "GlobalStore.types";
2
+ import { GlobalStore } from "./GlobalStore";
3
3
  /**
4
4
  * @description
5
5
  * Use this class to extends the capabilities of the GlobalStore.
@@ -13,73 +13,3 @@ export declare abstract class GlobalStoreAbstract<TState, TMetadata = null, TSta
13
13
  protected abstract onInitialize: ({ setState, setMetadata, getMetadata, getState, actions, }: StateConfigCallbackParam<TState, TMetadata, TStateSetter>) => void;
14
14
  protected abstract onChange: ({ setState, setMetadata, getMetadata, getState, actions, }: StateChangesParam<TState, TMetadata, TStateSetter>) => void;
15
15
  }
16
- export type CustomGlobalHookParams<TInheritMetadata = null, TCustomConfig = {}> = {
17
- /**
18
- * @description
19
- * This function is called when the state is initialized.
20
- */
21
- onInitialize: ({ setState, setMetadata, getMetadata, getState, actions, }: StateConfigCallbackParam<any, TInheritMetadata>, config: TCustomConfig) => void;
22
- /**
23
- * @description
24
- * This function is called when the state is changed.
25
- */
26
- onChange: ({ setState, setMetadata, getMetadata, getState, actions, }: StateChangesParam<any, TInheritMetadata>, config: TCustomConfig) => void;
27
- };
28
- /**
29
- * @description
30
- * Use this function to create a custom global store.
31
- * You can use this function to create a store with async storage.
32
- */
33
- export declare const createCustomGlobalStateWithDecoupledFuncs: <TInheritMetadata = null, TCustomConfig = null>({ onInitialize, onChange, }: CustomGlobalHookParams<TInheritMetadata, TCustomConfig>) => <TState, TMetadata = null, TActions extends ActionCollectionConfig<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>> = null>(state: TState, { config: customConfig, actions, metadata, onInit, onStateChanged, onSubscribed, computePreventStateChange, }?: {
34
- config?: TCustomConfig;
35
- actions?: TActions;
36
- metadata?: TMetadata;
37
- onInit?: (parameters: StateConfigCallbackParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
38
- onStateChanged?: (parameters: StateChangesParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
39
- onSubscribed?: (parameters: StateConfigCallbackParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
40
- computePreventStateChange?: (parameters: StateChangesParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => boolean;
41
- }) => [useHook: () => [TState, TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>], getState: () => TState, setter: TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>];
42
- /**
43
- * @description
44
- * Use this function to create a custom global store.
45
- * You can use this function to create a store with async storage.
46
- * This function will return a hook that you can use to access the store.
47
- * @param state The initial state of the store.
48
- * @param config The configuration of the store.
49
- * @returns {[TState, TStateSetter, TMetadata]} The state, the state setter and the metadata of the store.
50
- */
51
- export declare const createCustomGlobalState: <TInheritMetadata = null, TCustomConfig = {}>({ onInitialize, onChange, }: CustomGlobalHookParams<TInheritMetadata, TCustomConfig>) => <TState, TMetadata = null, TActions extends ActionCollectionConfig<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>> = null>(state: TState, { config: customConfig, actions, metadata, onInit, onStateChanged, onSubscribed, computePreventStateChange, }?: {
52
- /**
53
- * Configuration of the custom global store
54
- */
55
- config?: TCustomConfig;
56
- /**
57
- * @description
58
- * (optional) (default: null) if a configuration is passed, the hook will return an object with the actions then all the store manipulation will be done through the actions
59
- */
60
- actions?: TActions;
61
- /**
62
- * @param {StateConfigCallbackParam<TState, TMetadata> => void} metadata - the initial value of the metadata
63
- * */
64
- metadata?: TMetadata;
65
- /**
66
- * @param {StateConfigCallbackParam<TState, TMetadata> => void} onInit - callback function called when the store is initialized
67
- * @returns {void} result - void
68
- * */
69
- onInit?: (parameters: StateConfigCallbackParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
70
- /**
71
- * @param {StateChangesParam<TState, TMetadata> => void} onStateChanged - callback function called every time the state is changed
72
- * @returns {void} result - void
73
- */
74
- onStateChanged?: (parameters: StateChangesParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
75
- /**
76
- * @param {StateConfigCallbackParam<TState, TMetadata> => void} onSubscribed - callback function called every time a component is subscribed to the store
77
- * @returns {void} result - void
78
- */
79
- onSubscribed?: (parameters: StateConfigCallbackParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => void;
80
- /**
81
- * @param {StateChangesParam<TState, TMetadata> => boolean} computePreventStateChange - callback function called every time the state is about to change and it allows you to prevent the state change
82
- * @returns {boolean} result - true if you want to prevent the state change, false otherwise
83
- */
84
- computePreventStateChange?: (parameters: StateChangesParam<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>) => boolean;
85
- }) => () => [TState, TActions extends null ? StateSetter<TState> : ActionCollectionResult<TState, AvoidNever<TInheritMetadata> & AvoidNever<TMetadata>, TActions>, (TInheritMetadata extends null ? {} : TInheritMetadata) & (TMetadata extends null ? {} : TMetadata)];
package/lib/bundle.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see bundle.js.LICENSE.txt */
2
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react")):"function"==typeof define&&define.amd?define(["react"],e):"object"==typeof exports?exports["react-native-global-state-hooks"]=e(require("react")):t["react-native-global-state-hooks"]=e(t.react)}(this,(t=>{return e={774:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function a(){a=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},u=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function f(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{f({},"")}catch(t){f=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),u=new k(n||[]);return o(a,"_invoke",{value:j(t,r,u)}),a}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var v={};function h(){}function y(){}function d(){}var g={};f(g,u,(function(){return this}));var b=Object.getPrototypeOf,m=b&&b(b(E([])));m&&m!==e&&r.call(m,u)&&(g=m);var S=d.prototype=h.prototype=Object.create(g);function w(t){["next","throw","return"].forEach((function(e){f(t,e,(function(t){return this._invoke(e,t)}))}))}function O(t,e){function i(o,a,u,c){var l=p(t[o],t,a);if("throw"!==l.type){var f=l.arg,s=f.value;return s&&"object"==n(s)&&r.call(s,"__await")?e.resolve(s.__await).then((function(t){i("next",t,u,c)}),(function(t){i("throw",t,u,c)})):e.resolve(s).then((function(t){f.value=t,u(f)}),(function(t){return i("throw",t,u,c)}))}c(l.arg)}var a;o(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function j(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=x(a,r);if(u){if(u===v)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=p(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===v)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function x(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,x(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=p(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,v;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,v):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,v)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function C(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function E(t){if(t){var e=t[u];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:A}}function A(){return{value:void 0,done:!0}}return y.prototype=d,o(S,"constructor",{value:d,configurable:!0}),o(d,"constructor",{value:y,configurable:!0}),y.displayName=f(d,l,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,f(t,l,"GeneratorFunction")),t.prototype=Object.create(S),t},t.awrap=function(t){return{__await:t}},w(O.prototype),f(O.prototype,c,(function(){return this})),t.AsyncIterator=O,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new O(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},w(S),f(S,l,"Generator"),f(S,u,(function(){return this})),f(S,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=E,k.prototype={constructor:k,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),C(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;C(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:E(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),v}},t}function u(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,c(n.key),n)}}function c(t){var e=function(t,e){if("object"!==n(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,"string");if("object"!==n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"===n(e)?e:String(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.createGlobalState=e.createGlobalStateWithDecoupledFuncs=e.GlobalStore=void 0;var l=r(156),f=function(){function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.actionsConfig=i,this.subscribers=new Set,this.config={metadata:null},this.onInit=null,this.onStateChanged=null,this.onSubscribed=null,this.computePreventStateChange=null,this.initialize=function(){return t=r,e=void 0,n=void 0,o=a().mark((function t(){var e,r,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=this.onInit,r=this.config.onInit,e||r){t.next=4;break}return t.abrupt("return");case 4:n=this.getConfigCallbackParam({}),null==e||e(n),null==r||r(n);case 7:case"end":return t.stop()}}),t,this)})),new(n||(n=Promise))((function(r,i){function a(t){try{c(o.next(t))}catch(t){i(t)}}function u(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((o=o.apply(t,e||[])).next())}));var t,e,n,o},this.setState=function(t){var e=t.invokerSetState,n=t.state;r.stateWrapper={state:n},null==e||e({state:n}),r.subscribers.forEach((function(t){t!==e&&t({state:n})}))},this.setMetadata=function(t){var e,n,o="function"==typeof t?t(null!==(e=r.config.metadata)&&void 0!==e?e:null):t;r.config=Object.assign(Object.assign({},null!==(n=r.config)&&void 0!==n?n:{}),{metadata:o})},this.getMetadata=function(){var t;return null!==(t=r.config.metadata)&&void 0!==t?t:null},this.getState=function(){return r.stateWrapper.state},this.getConfigCallbackParam=function(t){var e=t.invokerSetState;return{setMetadata:r.setMetadata,getMetadata:r.getMetadata,getState:r.getState,setState:r.getSetStateWrapper({invokerSetState:e}),actions:r.getStoreActionsMap()}},this.getHook=function(){return function(){var t,e=o((0,l.useState)((function(){return r.stateWrapper})),2),n=e[0],i=e[1];(0,l.useEffect)((function(){r.subscribers.add(i);var t=r.onSubscribed,e=r.config.onSubscribed;if(t||e){var n=r.getConfigCallbackParam({invokerSetState:i});null==t||t(n),null==e||e(n)}return function(){r.subscribers.delete(i)}}),[]);var a=(0,l.useMemo)((function(){return r.getStateOrchestrator(i)}),[]);return[n.state,a,null!==(t=r.config.metadata)&&void 0!==t?t:null]}},this.getHookDecoupled=function(){return[function(){return r.stateWrapper.state},r.getStateOrchestrator(),r.getMetadata]},this.getSetStateWrapper=function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).invokerSetState;return function(e){var n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).forceUpdate;r.computeSetState({invokerSetState:t,setter:e,forceUpdate:n})}},this.hasStateCallbacks=function(){var t=r.computePreventStateChange,e=r.onStateChanged,n=r.config,o=n.computePreventStateChange,i=n.onStateChanged;return!!(t||o||e||i)},this.computeSetState=function(t){var e=t.setter,n=t.invokerSetState,o=t.forceUpdate,i="function"==typeof e,a=r.stateWrapper.state,u=i?e(a):e;if(o||!Object.is(r.stateWrapper.state,u)){var c=r.hasStateCallbacks(),l=c&&r.getStoreActionsMap({}),f=c&&r.getSetStateWrapper({invokerSetState:n}),s={setMetadata:r.setMetadata,getMetadata:r.getMetadata,setState:f,getState:r.getState,actions:l,previousState:a,state:u},p=r.computePreventStateChange,v=r.config.computePreventStateChange;if((p||v)&&((null==p?void 0:p(s))||(null==v?void 0:v(s))))return;r.setState({invokerSetState:n,state:u});var h=r.onStateChanged,y=r.config.onStateChanged;(h||y)&&(null==h||h(s),null==y||y(s))}},this.getStoreActionsMap=function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).invokerSetState;if(!r.actionsConfig)return null;var e=r.actionsConfig,n=r.setMetadata,o=e,i=Object.keys(o),a=r.getSetStateWrapper({invokerSetState:t}),u=function(){return r.stateWrapper.state},l=function(){return r.config.metadata},f=i.reduce((function(t,e){return Object.assign(Object.assign({},t),(r={},s=function(){for(var t=o[e],r=arguments.length,i=new Array(r),c=0;c<r;c++)i[c]=arguments[c];var s=t.apply(f,i);return"function"!=typeof s&&function(t){throw new Error("[WRONG CONFIGURATION!]: Every key inside the storeActionsConfig must be a higher order function that returns a function \n[".concat(t,"]: key is not a valid function, try something like this: \n{\n\n ").concat(t,": (param) => ({ setState, getState, setMetadata, getMetadata }) => {\n\n setState((state) => ({ ...state, ...param }))\n\n }\n\n}\n"))}(e),s.call(f,{setState:a,getState:u,setMetadata:n,getMetadata:l,actions:f})},(i=c(i=e))in r?Object.defineProperty(r,i,{value:s,enumerable:!0,configurable:!0,writable:!0}):r[i]=s,r));var r,i,s}),{});return f},this.stateWrapper={state:e},this.config=Object.assign({metadata:null},null!=n?n:{}),this.constructor!==t||this.initialize()}var e,r;return e=t,(r=[{key:"state",get:function(){return this.stateWrapper.state}},{key:"getStateOrchestrator",value:function(t){return this.actionsConfig?this.getStoreActionsMap({invokerSetState:t}):this.getSetStateWrapper({invokerSetState:t})}}])&&u(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.GlobalStore=f,e.createGlobalStateWithDecoupledFuncs=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.actions,n=e.metadata,i=e.onInit,a=e.onStateChanged,u=e.onSubscribed,c=e.computePreventStateChange,l=new f(t,{metadata:n,onInit:i,onStateChanged:a,onSubscribed:u,computePreventStateChange:c},r),s=o(l.getHookDecoupled(),2),p=s[0],v=s[1];return[l.getHook(),p,v]},e.createGlobalState=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o((0,e.createGlobalStateWithDecoupledFuncs)(t,r),1)[0]}},530:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0})},195:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},i(t,e)}function a(t){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},a(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.createCustomGlobalState=e.createCustomGlobalStateWithDecoupledFuncs=e.GlobalStoreAbstract=void 0;var u=r(774),c=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&i(t,e)}(c,t);var e,r,o,u=(r=c,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,e=a(r);if(o){var i=a(this).constructor;t=Reflect.construct(e,arguments,i)}else t=e.apply(this,arguments);return function(t,e){if(e&&("object"===n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(this,t)});function c(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),(e=u.call(this,t,r,n)).onInit=function(t){e.onInitialize(t)},e.onStateChanged=function(t){e.onChange(t)},e}return e=c,Object.defineProperty(e,"prototype",{writable:!1}),e}(u.GlobalStore);e.GlobalStoreAbstract=c,e.createCustomGlobalStateWithDecoupledFuncs=function(t){var e=t.onInitialize,r=t.onChange;return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{config:null},o=n.config,i=n.actions,a=n.metadata,c=n.onInit,l=n.onStateChanged,f=n.onSubscribed,s=n.computePreventStateChange;return(0,u.createGlobalStateWithDecoupledFuncs)(t,{actions:i,metadata:a,onInit:function(t){e(t,o),null==c||c(t)},onStateChanged:function(t){r(t,o),null==l||l(t)},onSubscribed:f,computePreventStateChange:s})}},e.createCustomGlobalState=function(t){var r=t.onInitialize,n=t.onChange,i=(0,e.createCustomGlobalStateWithDecoupledFuncs)({onInitialize:r,onChange:n});return function(t){var e,r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{config:{}},a=n.config,u=n.actions,c=n.metadata,l=n.onInit,f=n.onStateChanged,s=n.onSubscribed,p=n.computePreventStateChange;return(e=i(t,{config:a,actions:u,metadata:c,onInit:l,onStateChanged:f,onSubscribed:s,computePreventStateChange:p}),r=1,function(t){if(Array.isArray(t))return t}(e)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(e,r)||function(t,e){if(t){if("string"==typeof t)return o(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0]}}},991:(t,e,r)=>{"use strict";var n=Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]},o=function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||n(e,t,r)};Object.defineProperty(e,"__esModule",{value:!0}),o(r(684),e),o(r(530),e),o(r(774),e),o(r(195),e)},684:function(t){t.exports=(()=>{"use strict";var t={991:(t,e,r)=>{var n=Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]};Object.defineProperty(e,"__esModule",{value:!0}),function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||n(e,t,r)}(r(729),e)},729:(t,e)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,e,n){return(e=function(t){var e=function(t,e){if("object"!==r(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,"string");if("object"!==r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"===r(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}Object.defineProperty(e,"__esModule",{value:!0}),e.formatToStore=e.formatFromStore=e.isPrimitive=e.isFunction=e.isRegex=e.isDate=e.isString=e.isBoolean=e.isNumber=e.isNil=e.clone=void 0,e.clone=function(t){var r,a=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).shallow;if((0,e.isPrimitive)(t)||(0,e.isDate)(t))return t;if(Array.isArray(t))return a?function(t){if(Array.isArray(t))return i(t)}(r=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||o(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}():t.map((function(t){return(0,e.clone)(t)}));if(t instanceof Map){var u=Array.from(t.entries());return a?new Map(u):new Map(u.map((function(t){return(0,e.clone)(t)})))}if(t instanceof Set){var c=Array.from(t.values());return a?new Set(c):new Set(c.map((function(t){return(0,e.clone)(t)})))}return t instanceof RegExp?new RegExp(t.toString()):(0,e.isFunction)(t)?a?t:Object.create(t):a?Object.assign({},t):t instanceof Error?new Error(t.message):Object.keys(t).reduce((function(r,o){var i=t[o];return Object.assign(Object.assign({},r),n({},o,(0,e.clone)(i)))}),{})},e.isNil=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isBoolean=function(t){return"boolean"==typeof t},e.isString=function(t){return"string"==typeof t},e.isDate=function(t){return t instanceof Date},e.isRegex=function(t){return t instanceof RegExp},e.isFunction=function(t){return"function"==typeof t||t instanceof Function},e.isPrimitive=function(t){return(0,e.isNil)(t)||(0,e.isNumber)(t)||(0,e.isBoolean)(t)||(0,e.isString)(t)||"symbol"===r(t)},e.formatFromStore=function(t){return function(t){var r,i;if((0,e.isPrimitive)(t))return t;if("date"===(null==t?void 0:t.$t))return new Date(t.$v);if("map"===(null==t?void 0:t.$t)){var a=(null!==(r=t.$v)&&void 0!==r?r:[]).map((function(t){var r,n=(2,function(t){if(Array.isArray(t))return t}(r=t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{for(i=(r=r.call(t)).next,0;!(c=(n=i.call(r)).done)&&(u.push(n.value),2!==u.length);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(r)||o(r,2)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=n[0],a=n[1];return[i,(0,e.formatFromStore)(a)]}));return new Map(a)}if("set"===(null==t?void 0:t.$t)){var u=null!==(i=t.$v)&&void 0!==i?i:[].map((function(t){return(0,e.formatFromStore)(t)}));return new Set(u)}return"regex"===(null==t?void 0:t.$t)?new RegExp(t.$v):"error"===(null==t?void 0:t.$t)?new Error(t.$v):Array.isArray(t)?t.map((function(t){return(0,e.formatFromStore)(t)})):"function"===(null==t?void 0:t.$t)?Function("(".concat(t.$v,")(...arguments)")):Object.keys(t).reduce((function(r,o){var i=t[o];return Object.assign(Object.assign({},r),n({},o,(0,e.formatFromStore)(i)))}),{})}((arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).jsonParse?JSON.parse(t):(0,e.clone)(t))},e.formatToStore=function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{stringify:!1},i=o.stringify,a=o.validator,u=o.excludeTypes,c=o.excludeKeys,l=new Set(null!=u?u:[]),f=new Set(null!=c?c:[]),s=l.size||f.size,p=null!=a?a:function(t){var e=t.key,n=t.value;if(!s)return!0;var o=f.has(e),i=l.has(r(n));return!o&&!i},v=function t(r){if((0,e.isPrimitive)(r))return r;if(Array.isArray(r))return r.map((function(e){return t(e)}));if(r instanceof Map)return{$t:"map",$v:Array.from(r.entries()).map((function(e){return t(e)}))};if(r instanceof Set)return{$t:"set",$v:Array.from(r.values()).map((function(e){return t(e)}))};if((0,e.isDate)(r))return{$t:"date",$v:r.toISOString()};if((0,e.isRegex)(r))return{$t:"regex",$v:r.toString()};if((0,e.isFunction)(r)){var o;try{o={$t:"function",$v:r.toString()}}catch(t){o={$t:"error",$v:"Error: Could not serialize function"}}return o}return r instanceof Error?{$t:"error",$v:r.message}:Object.keys(r).reduce((function(e,o){var i=r[o],a=t(i);return p({obj:r,key:o,value:a})?Object.assign(Object.assign({},e),n({},o,t(i))):e}),{})}((0,e.clone)(t));return i?JSON.stringify(v):v}}},e={};return function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.exports}(991)})()},156:e=>{"use strict";e.exports=t}},r={},function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return e[n].call(i.exports,i,i.exports,t),i.exports}(991);var e,r}));
2
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react")):"function"==typeof define&&define.amd?define(["react"],e):"object"==typeof exports?exports["react-native-global-state-hooks"]=e(require("react")):t["react-native-global-state-hooks"]=e(t.react)}(this,(t=>{return e={729:(t,e,r)=>{"use strict";function n(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return o(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}Object.defineProperty(e,"__esModule",{value:!0}),e.createCustomGlobalState=e.createCustomGlobalStateWithDecoupledFuncs=e.createGlobalState=e.createGlobalStateWithDecoupledFuncs=void 0;var i=r(774);e.createGlobalStateWithDecoupledFuncs=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.actions,o=function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(t);o<n.length;o++)e.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(t,n[o])&&(r[n[o]]=t[n[o]])}return r}(e,["actions"]),a=new i.GlobalStore(t,o,r),u=n(a.getHookDecoupled(),2),c=u[0],l=u[1];return[a.getHook(),c,l]},e.createGlobalState=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n((0,e.createGlobalStateWithDecoupledFuncs)(t,r),1)[0]},e.createCustomGlobalStateWithDecoupledFuncs=function(t){var r=t.onInitialize,n=t.onChange;return function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{config:null},i=o.config,a=o.actions,u=o.metadata,c=o.onInit,l=o.onStateChanged,f=o.onSubscribed,s=o.computePreventStateChange;return(0,e.createGlobalStateWithDecoupledFuncs)(t,{actions:a,metadata:u,onInit:function(t){r(t,i),null==c||c(t)},onStateChanged:function(t){n(t,i),null==l||l(t)},onSubscribed:f,computePreventStateChange:s})}},e.createCustomGlobalState=function(t){var r=t.onInitialize,o=t.onChange,i=(0,e.createCustomGlobalStateWithDecoupledFuncs)({onInitialize:r,onChange:o});return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{config:{}},r=e.config,o=e.actions,a=e.metadata,u=e.onInit,c=e.onStateChanged,l=e.onSubscribed,f=e.computePreventStateChange;return n(i(t,{config:r,actions:o,metadata:a,onInit:u,onStateChanged:c,onSubscribed:l,computePreventStateChange:f}),1)[0]}}},774:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function a(){a=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},u=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function f(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{f({},"")}catch(t){f=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var i=e&&e.prototype instanceof y?e:y,a=Object.create(i.prototype),u=new C(n||[]);return o(a,"_invoke",{value:j(t,r,u)}),a}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var v={};function y(){}function h(){}function d(){}var b={};f(b,u,(function(){return this}));var g=Object.getPrototypeOf,m=g&&g(g(E([])));m&&m!==e&&r.call(m,u)&&(b=m);var S=d.prototype=y.prototype=Object.create(b);function w(t){["next","throw","return"].forEach((function(e){f(t,e,(function(t){return this._invoke(e,t)}))}))}function O(t,e){function i(o,a,u,c){var l=p(t[o],t,a);if("throw"!==l.type){var f=l.arg,s=f.value;return s&&"object"==n(s)&&r.call(s,"__await")?e.resolve(s.__await).then((function(t){i("next",t,u,c)}),(function(t){i("throw",t,u,c)})):e.resolve(s).then((function(t){f.value=t,u(f)}),(function(t){return i("throw",t,u,c)}))}c(l.arg)}var a;o(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function j(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=x(a,r);if(u){if(u===v)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=p(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===v)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function x(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,x(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=p(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,v;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,v):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,v)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function A(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function C(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function E(t){if(t){var e=t[u];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:k}}function k(){return{value:void 0,done:!0}}return h.prototype=d,o(S,"constructor",{value:d,configurable:!0}),o(d,"constructor",{value:h,configurable:!0}),h.displayName=f(d,l,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===h||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,f(t,l,"GeneratorFunction")),t.prototype=Object.create(S),t},t.awrap=function(t){return{__await:t}},w(O.prototype),f(O.prototype,c,(function(){return this})),t.AsyncIterator=O,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new O(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},w(S),f(S,l,"Generator"),f(S,u,(function(){return this})),f(S,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=E,C.prototype={constructor:C,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(A),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),A(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:E(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),v}},t}function u(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,c(n.key),n)}}function c(t){var e=function(t,e){if("object"!==n(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,"string");if("object"!==n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"===n(e)?e:String(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.GlobalStore=void 0;var l=r(608),f=r(156),s=function(){function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.actionsConfig=i,this.subscribers=new Map,this.config={metadata:null},this.onInit=null,this.onStateChanged=null,this.onSubscribed=null,this.computePreventStateChange=null,this.initialize=function(){return t=r,e=void 0,n=void 0,o=a().mark((function t(){var e,r,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=this.onInit,r=this.config.onInit,e||r){t.next=4;break}return t.abrupt("return");case 4:n=this.getConfigCallbackParam({}),null==e||e(n),null==r||r(n);case 7:case"end":return t.stop()}}),t,this)})),new(n||(n=Promise))((function(r,i){function a(t){try{c(o.next(t))}catch(t){i(t)}}function u(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,u)}c((o=o.apply(t,e||[])).next())}));var t,e,n,o},this.setState=function(t){var e,n=t.invokerSetState,i=t.state,a=t.forceUpdate;if(r.stateWrapper={state:i},n){var u=r.subscribers.get(n),c=u.selector,f=u.config,s=u.currentState,p=c?c(i):i,v=null!==(e=null==f?void 0:f.isEqual)&&void 0!==e?e:l.shallowCompare;if(!a&&v(s,p))return;null==n||n({state:p})}Array.from(r.subscribers.entries()).forEach((function(t){var e=o(t,2),r=e[0],a=e[1];if(r!==n){var u=a.selector;r({state:u?u(i):i})}}))},this.setMetadata=function(t){var e,n,o="function"==typeof t?t(null!==(e=r.config.metadata)&&void 0!==e?e:null):t;r.config=Object.assign(Object.assign({},null!==(n=r.config)&&void 0!==n?n:{}),{metadata:o})},this.getMetadata=function(){var t;return null!==(t=r.config.metadata)&&void 0!==t?t:null},this.getState=function(){return r.stateWrapper.state},this.getConfigCallbackParam=function(t){var e=t.invokerSetState;return{setMetadata:r.setMetadata,getMetadata:r.getMetadata,getState:r.getState,setState:r.getSetStateWrapper({invokerSetState:e}),actions:r.getStoreActionsMap()}},this.getHook=function(){return function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=o((0,f.useState)((function(){return t?{state:t(r.stateWrapper.state)}:r.stateWrapper})),2),a=i[0],u=i[1];(0,f.useEffect)((function(){r.subscribers.set(u,{selector:t,config:n});var e=r.onSubscribed,o=r.config.onSubscribed;if(e||o){var i=r.getConfigCallbackParam({invokerSetState:u});null==e||e(i),null==o||o(i)}return function(){r.subscribers.delete(u)}}),[]),r.subscribers.get(u).currentState=a.state;var c=(0,f.useMemo)((function(){return r.getStateOrchestrator(u)}),[]);return[a.state,c,null!==(e=r.config.metadata)&&void 0!==e?e:null]}},this.getHookDecoupled=function(){return[function(){return r.stateWrapper.state},r.getStateOrchestrator(),r.getMetadata]},this.getSetStateWrapper=function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).invokerSetState;return function(e){var n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).forceUpdate;r.computeSetState({invokerSetState:t,setter:e,forceUpdate:n})}},this.hasStateCallbacks=function(){var t=r.computePreventStateChange,e=r.onStateChanged,n=r.config,o=n.computePreventStateChange,i=n.onStateChanged;return!!(t||o||e||i)},this.computeSetState=function(t){var e=t.setter,n=t.invokerSetState,o=t.forceUpdate,i="function"==typeof e,a=r.stateWrapper.state,u=i?e(a):e;if(o||!Object.is(r.stateWrapper.state,u)){var c=r.hasStateCallbacks(),l=c&&r.getStoreActionsMap({}),f=c&&r.getSetStateWrapper({invokerSetState:n}),s={setMetadata:r.setMetadata,getMetadata:r.getMetadata,setState:f,getState:r.getState,actions:l,previousState:a,state:u},p=r.computePreventStateChange,v=r.config.computePreventStateChange;if((p||v)&&((null==p?void 0:p(s))||(null==v?void 0:v(s))))return;r.setState({forceUpdate:o,invokerSetState:n,state:u});var y=r.onStateChanged,h=r.config.onStateChanged;(y||h)&&(null==y||y(s),null==h||h(s))}},this.getStoreActionsMap=function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).invokerSetState;if(!r.actionsConfig)return null;var e=r.actionsConfig,n=r.setMetadata,o=e,i=Object.keys(o),a=r.getSetStateWrapper({invokerSetState:t}),u=function(){return r.stateWrapper.state},l=function(){return r.config.metadata},f=i.reduce((function(t,e){return Object.assign(Object.assign({},t),(r={},s=function(){for(var t=o[e],r=arguments.length,i=new Array(r),c=0;c<r;c++)i[c]=arguments[c];var s=t.apply(f,i);return"function"!=typeof s&&function(t){throw new Error("[WRONG CONFIGURATION!]: Every key inside the storeActionsConfig must be a higher order function that returns a function \n[".concat(t,"]: key is not a valid function, try something like this: \n{\n\n ").concat(t,": (param) => ({ setState, getState, setMetadata, getMetadata }) => {\n\n setState((state) => ({ ...state, ...param }))\n\n }\n\n}\n"))}(e),s.call(f,{setState:a,getState:u,setMetadata:n,getMetadata:l,actions:f})},(i=c(i=e))in r?Object.defineProperty(r,i,{value:s,enumerable:!0,configurable:!0,writable:!0}):r[i]=s,r));var r,i,s}),{});return f},this.stateWrapper={state:e},this.config=Object.assign({metadata:null},null!=n?n:{}),this.constructor!==t||this.initialize()}var e,r;return e=t,(r=[{key:"state",get:function(){return this.stateWrapper.state}},{key:"getStateOrchestrator",value:function(t){return this.actionsConfig?this.getStoreActionsMap({invokerSetState:t}):this.getSetStateWrapper({invokerSetState:t})}}])&&u(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.GlobalStore=s},530:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0})},608:(t,e,r)=>{"use strict";function n(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(t,e)||i(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=i(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){c=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(c)throw a}}}}function i(t,e){if(t){if("string"==typeof t)return a(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(t,e):void 0}}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function u(t){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.shallowCompare=void 0;var c=r(684);e.shallowCompare=function(t,e){if(t===e)return!0;var r=u(t),i=u(e);if(r!==i)return!1;if((0,c.isPrimitive)(t)&&(0,c.isPrimitive)(e)||(0,c.isDate)(t)&&(0,c.isDate)(e)||"function"===r&&"function"===i)return t===e;if(Array.isArray(t)){var a=t,l=e;if(a.length!==l.length)return!1;for(var f=0;f<a.length;f++)if(a[f]!==l[f])return!1}if(t instanceof Map){var s=t,p=e;if(s.size!==p.size)return!1;var v,y=o(s);try{for(y.s();!(v=y.n()).done;){var h=n(v.value,2),d=h[0];if(h[1]!==p.get(d))return!1}}catch(t){y.e(t)}finally{y.f()}}if(t instanceof Set){var b=t,g=e;if(b.size!==g.size)return!1;var m,S=o(b);try{for(S.s();!(m=S.n()).done;){var w=m.value;if(!g.has(w))return!1}}catch(t){S.e(t)}finally{S.f()}}var O=Object.keys(t),j=Object.keys(e);if(O.length!==j.length)return!1;for(var x=0,P=O;x<P.length;x++){var A=P[x];if(t[A]!==e[A])return!1}return!0}},195:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.GlobalStoreAbstract=void 0;var a=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&o(t,e)}(c,t);var e,r,a,u=(r=c,a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,e=i(r);if(a){var o=i(this).constructor;t=Reflect.construct(e,arguments,o)}else t=e.apply(this,arguments);return function(t,e){if(e&&("object"===n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(this,t)});function c(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),(e=u.call(this,t,r,n)).onInit=function(t){e.onInitialize(t)},e.onStateChanged=function(t){e.onChange(t)},e}return e=c,Object.defineProperty(e,"prototype",{writable:!1}),e}(r(774).GlobalStore);e.GlobalStoreAbstract=a},991:(t,e,r)=>{"use strict";var n=Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]},o=function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||n(e,t,r)};Object.defineProperty(e,"__esModule",{value:!0}),o(r(684),e),o(r(530),e),o(r(774),e),o(r(195),e),o(r(729),e)},684:function(t){t.exports=(()=>{"use strict";var t={991:(t,e,r)=>{var n=Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]};Object.defineProperty(e,"__esModule",{value:!0}),function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||n(e,t,r)}(r(729),e)},729:(t,e)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,e,n){return(e=function(t){var e=function(t,e){if("object"!==r(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,"string");if("object"!==r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"===r(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}Object.defineProperty(e,"__esModule",{value:!0}),e.formatToStore=e.formatFromStore=e.isPrimitive=e.isFunction=e.isRegex=e.isDate=e.isString=e.isBoolean=e.isNumber=e.isNil=e.clone=void 0,e.clone=function(t){var r,a=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).shallow;if((0,e.isPrimitive)(t)||(0,e.isDate)(t))return t;if(Array.isArray(t))return a?function(t){if(Array.isArray(t))return i(t)}(r=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||o(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}():t.map((function(t){return(0,e.clone)(t)}));if(t instanceof Map){var u=Array.from(t.entries());return a?new Map(u):new Map(u.map((function(t){return(0,e.clone)(t)})))}if(t instanceof Set){var c=Array.from(t.values());return a?new Set(c):new Set(c.map((function(t){return(0,e.clone)(t)})))}return t instanceof RegExp?new RegExp(t.toString()):(0,e.isFunction)(t)?a?t:Object.create(t):a?Object.assign({},t):t instanceof Error?new Error(t.message):Object.keys(t).reduce((function(r,o){var i=t[o];return Object.assign(Object.assign({},r),n({},o,(0,e.clone)(i)))}),{})},e.isNil=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isBoolean=function(t){return"boolean"==typeof t},e.isString=function(t){return"string"==typeof t},e.isDate=function(t){return t instanceof Date},e.isRegex=function(t){return t instanceof RegExp},e.isFunction=function(t){return"function"==typeof t||t instanceof Function},e.isPrimitive=function(t){return(0,e.isNil)(t)||(0,e.isNumber)(t)||(0,e.isBoolean)(t)||(0,e.isString)(t)||"symbol"===r(t)},e.formatFromStore=function(t){return function(t){var r,i;if((0,e.isPrimitive)(t))return t;if("date"===(null==t?void 0:t.$t))return new Date(t.$v);if("map"===(null==t?void 0:t.$t)){var a=(null!==(r=t.$v)&&void 0!==r?r:[]).map((function(t){var r,n=(2,function(t){if(Array.isArray(t))return t}(r=t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{for(i=(r=r.call(t)).next,0;!(c=(n=i.call(r)).done)&&(u.push(n.value),2!==u.length);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(r)||o(r,2)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=n[0],a=n[1];return[i,(0,e.formatFromStore)(a)]}));return new Map(a)}if("set"===(null==t?void 0:t.$t)){var u=null!==(i=t.$v)&&void 0!==i?i:[].map((function(t){return(0,e.formatFromStore)(t)}));return new Set(u)}return"regex"===(null==t?void 0:t.$t)?new RegExp(t.$v):"error"===(null==t?void 0:t.$t)?new Error(t.$v):Array.isArray(t)?t.map((function(t){return(0,e.formatFromStore)(t)})):"function"===(null==t?void 0:t.$t)?Function("(".concat(t.$v,")(...arguments)")):Object.keys(t).reduce((function(r,o){var i=t[o];return Object.assign(Object.assign({},r),n({},o,(0,e.formatFromStore)(i)))}),{})}((arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).jsonParse?JSON.parse(t):(0,e.clone)(t))},e.formatToStore=function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{stringify:!1},i=o.stringify,a=o.validator,u=o.excludeTypes,c=o.excludeKeys,l=new Set(null!=u?u:[]),f=new Set(null!=c?c:[]),s=l.size||f.size,p=null!=a?a:function(t){var e=t.key,n=t.value;if(!s)return!0;var o=f.has(e),i=l.has(r(n));return!o&&!i},v=function t(r){if((0,e.isPrimitive)(r))return r;if(Array.isArray(r))return r.map((function(e){return t(e)}));if(r instanceof Map)return{$t:"map",$v:Array.from(r.entries()).map((function(e){return t(e)}))};if(r instanceof Set)return{$t:"set",$v:Array.from(r.values()).map((function(e){return t(e)}))};if((0,e.isDate)(r))return{$t:"date",$v:r.toISOString()};if((0,e.isRegex)(r))return{$t:"regex",$v:r.toString()};if((0,e.isFunction)(r)){var o;try{o={$t:"function",$v:r.toString()}}catch(t){o={$t:"error",$v:"Error: Could not serialize function"}}return o}return r instanceof Error?{$t:"error",$v:r.message}:Object.keys(r).reduce((function(e,o){var i=r[o],a=t(i);return p({obj:r,key:o,value:a})?Object.assign(Object.assign({},e),n({},o,t(i))):e}),{})}((0,e.clone)(t));return i?JSON.stringify(v):v}}},e={};return function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.exports}(991)})()},156:e=>{"use strict";e.exports=t}},r={},function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return e[n].call(i.exports,i,i.exports,t),i.exports}(991);var e,r}));
package/lib/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export * from 'json-storage-formatter';
2
- export * from './GlobalStore.types';
3
- export * from './GlobalStore';
4
- export * from './GlobalStoreAbstract';
1
+ export * from "json-storage-formatter";
2
+ export * from "./GlobalStore.types";
3
+ export * from "./GlobalStore";
4
+ export * from "./GlobalStoreAbstract";
5
+ export * from "./GlobalStore.functions";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-global-state-hooks",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "description": "This is a package to easily handling global-state across your react-native-components No-redux",
5
5
  "main": "lib/bundle.js",
6
6
  "types": "lib/index.d.ts",
@@ -34,7 +34,7 @@
34
34
  "react-native",
35
35
  "async-storage"
36
36
  ],
37
- "author": "johnny quesada",
37
+ "author": "Johnny Quesada",
38
38
  "license": "MIT",
39
39
  "bugs": {
40
40
  "url": "https://github.com/johnny-quesada-developer/react-native-global-state-hooks/issues"