@veams/status-quo 1.9.0 → 1.11.0
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/.turbo/turbo-build.log +14 -12
- package/README.md +33 -4
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -6
- package/dist/index.js.map +1 -1
- package/dist/observable/index.d.ts +5 -0
- package/dist/observable/index.js +6 -0
- package/dist/observable/index.js.map +1 -0
- package/dist/signals/index.d.ts +5 -0
- package/dist/signals/index.js +6 -0
- package/dist/signals/index.js.map +1 -0
- package/dist/store/__tests__/native-state-handler.spec.js +69 -0
- package/dist/store/__tests__/native-state-handler.spec.js.map +1 -1
- package/dist/store/__tests__/observable-state-handler.spec.js +6 -0
- package/dist/store/__tests__/observable-state-handler.spec.js.map +1 -1
- package/dist/store/__tests__/signal-state-handler.spec.js +69 -0
- package/dist/store/__tests__/signal-state-handler.spec.js.map +1 -1
- package/dist/store/base-state-handler.d.ts +7 -3
- package/dist/store/base-state-handler.js +27 -6
- package/dist/store/base-state-handler.js.map +1 -1
- package/dist/store/index.d.ts +0 -2
- package/dist/store/index.js +0 -4
- package/dist/store/index.js.map +1 -1
- package/package.json +15 -1
- package/src/index.ts +0 -6
- package/src/observable/index.ts +5 -0
- package/src/signals/index.ts +5 -0
- package/src/store/__tests__/native-state-handler.spec.ts +92 -0
- package/src/store/__tests__/observable-state-handler.spec.ts +10 -0
- package/src/store/__tests__/signal-state-handler.spec.ts +92 -0
- package/src/store/base-state-handler.ts +59 -9
- package/src/store/index.ts +0 -4
- package/dist/hooks/__tests__/state-provider.spec.d.ts +0 -4
- package/dist/hooks/__tests__/state-provider.spec.js +0 -179
- package/dist/hooks/__tests__/state-provider.spec.js.map +0 -1
- package/dist/hooks/__tests__/state-selector.spec.d.ts +0 -4
- package/dist/hooks/__tests__/state-selector.spec.js +0 -499
- package/dist/hooks/__tests__/state-selector.spec.js.map +0 -1
- package/dist/hooks/__tests__/state-singleton.spec.d.ts +0 -4
- package/dist/hooks/__tests__/state-singleton.spec.js +0 -96
- package/dist/hooks/__tests__/state-singleton.spec.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -6
- package/dist/hooks/index.js +0 -7
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/state-actions.d.ts +0 -2
- package/dist/hooks/state-actions.js +0 -5
- package/dist/hooks/state-actions.js.map +0 -1
- package/dist/hooks/state-factory.d.ts +0 -7
- package/dist/hooks/state-factory.js +0 -13
- package/dist/hooks/state-factory.js.map +0 -1
- package/dist/hooks/state-handler.d.ts +0 -2
- package/dist/hooks/state-handler.js +0 -9
- package/dist/hooks/state-handler.js.map +0 -1
- package/dist/hooks/state-provider.d.ts +0 -14
- package/dist/hooks/state-provider.js +0 -24
- package/dist/hooks/state-provider.js.map +0 -1
- package/dist/hooks/state-singleton.d.ts +0 -6
- package/dist/hooks/state-singleton.js +0 -7
- package/dist/hooks/state-singleton.js.map +0 -1
- package/dist/hooks/state-subscription-selector.d.ts +0 -3
- package/dist/hooks/state-subscription-selector.js +0 -63
- package/dist/hooks/state-subscription-selector.js.map +0 -1
- package/dist/hooks/state-subscription.d.ts +0 -9
- package/dist/hooks/state-subscription.js +0 -53
- package/dist/hooks/state-subscription.js.map +0 -1
package/dist/hooks/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { useStateActions } from './state-actions.js';
|
|
2
|
-
export { useStateFactory } from './state-factory.js';
|
|
3
|
-
export { useStateHandler } from './state-handler.js';
|
|
4
|
-
export { StateProvider, useProvidedStateActions, useProvidedStateHandler, useProvidedStateSubscription, } from './state-provider.js';
|
|
5
|
-
export { useStateSingleton } from './state-singleton.js';
|
|
6
|
-
export { useStateSubscription } from './state-subscription.js';
|
package/dist/hooks/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { useStateActions } from './state-actions.js';
|
|
2
|
-
export { useStateFactory } from './state-factory.js';
|
|
3
|
-
export { useStateHandler } from './state-handler.js';
|
|
4
|
-
export { StateProvider, useProvidedStateActions, useProvidedStateHandler, useProvidedStateSubscription, } from './state-provider.js';
|
|
5
|
-
export { useStateSingleton } from './state-singleton.js';
|
|
6
|
-
export { useStateSubscription } from './state-subscription.js';
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-actions.js","sourceRoot":"","sources":["../../src/hooks/state-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,MAAM,UAAU,eAAe,CAAO,wBAAwD;IAC5F,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,UAAU,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { StateSubscriptionHandler } from '../types/types.js';
|
|
2
|
-
type StateSelector<State, SelectedState> = (state: State) => SelectedState;
|
|
3
|
-
type EqualityFn<SelectedState> = (current: SelectedState, next: SelectedState) => boolean;
|
|
4
|
-
export declare function useStateFactory<V, A, P extends unknown[]>(stateFactoryFunction: (...args: P) => StateSubscriptionHandler<V, A>, params?: P): [V, A];
|
|
5
|
-
export declare function useStateFactory<V, A, P extends unknown[], Sel>(stateFactoryFunction: (...args: P) => StateSubscriptionHandler<V, A>, selector: StateSelector<V, Sel>, params?: P): [Sel, A];
|
|
6
|
-
export declare function useStateFactory<V, A, P extends unknown[], Sel>(stateFactoryFunction: (...args: P) => StateSubscriptionHandler<V, A>, selector: StateSelector<V, Sel>, isEqual?: EqualityFn<Sel>, params?: P): [Sel, A];
|
|
7
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { useStateHandler } from './state-handler.js';
|
|
2
|
-
import { useStateSubscription } from './state-subscription.js';
|
|
3
|
-
const identitySelector = (state) => state;
|
|
4
|
-
export function useStateFactory(stateFactoryFunction, selectorOrParams = [], isEqualOrParams = Object.is, params = []) {
|
|
5
|
-
const hasSelector = typeof selectorOrParams === 'function';
|
|
6
|
-
const selector = (hasSelector ? selectorOrParams : identitySelector);
|
|
7
|
-
const hasCustomEquality = hasSelector && typeof isEqualOrParams === 'function';
|
|
8
|
-
const isEqual = (hasCustomEquality ? isEqualOrParams : Object.is);
|
|
9
|
-
const stateFactoryParams = (hasSelector ? (hasCustomEquality ? params : isEqualOrParams) : selectorOrParams);
|
|
10
|
-
const stateHandler = useStateHandler(stateFactoryFunction, stateFactoryParams);
|
|
11
|
-
return useStateSubscription(stateHandler, selector, isEqual);
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=state-factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-factory.js","sourceRoot":"","sources":["../../src/hooks/state-factory.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAO/D,MAAM,gBAAgB,GAAG,CAAS,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC;AAiBzD,MAAM,UAAU,eAAe,CAC7B,oBAAoE,EACpE,mBAA8C,EAAkB,EAChE,kBAAuC,MAAM,CAAC,EAAqB,EACnE,SAAY,EAAkB;IAE9B,MAAM,WAAW,GAAG,OAAO,gBAAgB,KAAK,UAAU,CAAC;IAC3D,MAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAA0B,CAAC;IAC9F,MAAM,iBAAiB,GAAG,WAAW,IAAI,OAAO,eAAe,KAAK,UAAU,CAAC;IAC/E,MAAM,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,kBAAkB,GAAG,CACzB,WAAW,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAC3E,CAAC;IACP,MAAM,YAAY,GAAG,eAAe,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IAE/E,OAAO,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { useRef } from 'react';
|
|
2
|
-
export function useStateHandler(stateFactoryFunction, params = []) {
|
|
3
|
-
const stateHandlerRef = useRef(null);
|
|
4
|
-
if (!stateHandlerRef.current) {
|
|
5
|
-
stateHandlerRef.current = stateFactoryFunction(...params);
|
|
6
|
-
}
|
|
7
|
-
return stateHandlerRef.current;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=state-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-handler.js","sourceRoot":"","sources":["../../src/hooks/state-handler.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAI/B,MAAM,UAAU,eAAe,CAC7B,oBAAoE,EACpE,SAAY,EAAkB;IAE9B,MAAM,eAAe,GAAG,MAAM,CAAwC,IAAI,CAAC,CAAC;IAE5E,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC7B,eAAe,CAAC,OAAO,GAAG,oBAAoB,CAAC,GAAG,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,eAAe,CAAC,OAAO,CAAC;AACjC,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { PropsWithChildren } from 'react';
|
|
3
|
-
import type { StateSubscriptionHandler } from '../types/types.js';
|
|
4
|
-
type StateSelector<State, SelectedState> = (state: State) => SelectedState;
|
|
5
|
-
type EqualityFn<SelectedState> = (current: SelectedState, next: SelectedState) => boolean;
|
|
6
|
-
export type StateProviderProps<V, A> = PropsWithChildren<{
|
|
7
|
-
instance: StateSubscriptionHandler<V, A>;
|
|
8
|
-
}>;
|
|
9
|
-
export declare function useProvidedStateHandler<V, A>(): StateSubscriptionHandler<V, A>;
|
|
10
|
-
export declare function StateProvider<V, A>({ children, instance }: StateProviderProps<V, A>): React.JSX.Element;
|
|
11
|
-
export declare function useProvidedStateActions<V, A>(): A;
|
|
12
|
-
export declare function useProvidedStateSubscription<V, A>(): [V, A];
|
|
13
|
-
export declare function useProvidedStateSubscription<V, A, Sel>(selector: StateSelector<V, Sel>, isEqual?: EqualityFn<Sel>): [Sel, A];
|
|
14
|
-
export {};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React, { createContext, useContext } from 'react';
|
|
2
|
-
import { useStateActions } from './state-actions.js';
|
|
3
|
-
import { useStateSubscription } from './state-subscription.js';
|
|
4
|
-
const StateProviderContext = createContext(null);
|
|
5
|
-
const identitySelector = (state) => state;
|
|
6
|
-
export function useProvidedStateHandler() {
|
|
7
|
-
const stateHandler = useContext(StateProviderContext);
|
|
8
|
-
if (!stateHandler) {
|
|
9
|
-
throw new Error('No StateProvider instance found in the current React tree.');
|
|
10
|
-
}
|
|
11
|
-
return stateHandler;
|
|
12
|
-
}
|
|
13
|
-
export function StateProvider({ children, instance }) {
|
|
14
|
-
return (React.createElement(StateProviderContext.Provider, { value: instance }, children));
|
|
15
|
-
}
|
|
16
|
-
export function useProvidedStateActions() {
|
|
17
|
-
const stateHandler = useProvidedStateHandler();
|
|
18
|
-
return useStateActions(stateHandler);
|
|
19
|
-
}
|
|
20
|
-
export function useProvidedStateSubscription(selector = identitySelector, isEqual = Object.is) {
|
|
21
|
-
const stateHandler = useProvidedStateHandler();
|
|
22
|
-
return useStateSubscription(stateHandler, selector, isEqual);
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=state-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-provider.js","sourceRoot":"","sources":["../../src/hooks/state-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAS/D,MAAM,oBAAoB,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAC;AAC5E,MAAM,gBAAgB,GAAG,CAAS,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC;AAMzD,MAAM,UAAU,uBAAuB;IACrC,MAAM,YAAY,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAEtD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,YAA8C,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,aAAa,CAAO,EAAE,QAAQ,EAAE,QAAQ,EAA4B;IAClF,OAAO,CACL,oBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAA8B,IACjE,QAAQ,CACqB,CACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,YAAY,GAAG,uBAAuB,EAAQ,CAAC;IAErD,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC;AACvC,CAAC;AAOD,MAAM,UAAU,4BAA4B,CAC1C,WAAkC,gBAAyC,EAC3E,UAA2B,MAAM,CAAC,EAAE;IAEpC,MAAM,YAAY,GAAG,uBAAuB,EAAQ,CAAC;IAErD,OAAO,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { StateSingleton } from '../store/state-singleton.js';
|
|
2
|
-
type StateSelector<State, SelectedState> = (state: State) => SelectedState;
|
|
3
|
-
type EqualityFn<SelectedState> = (current: SelectedState, next: SelectedState) => boolean;
|
|
4
|
-
export declare function useStateSingleton<V, A>(stateSingleton: StateSingleton<V, A>): [V, A];
|
|
5
|
-
export declare function useStateSingleton<V, A, Sel>(stateSingleton: StateSingleton<V, A>, selector: StateSelector<V, Sel>, isEqual?: EqualityFn<Sel>): [Sel, A];
|
|
6
|
-
export {};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { useStateSubscription } from './state-subscription.js';
|
|
2
|
-
const identitySelector = (state) => state;
|
|
3
|
-
export function useStateSingleton(stateSingleton, selector = identitySelector, isEqual = Object.is) {
|
|
4
|
-
const [state, actions] = useStateSubscription(stateSingleton, selector, isEqual);
|
|
5
|
-
return [state, actions];
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=state-singleton.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-singleton.js","sourceRoot":"","sources":["../../src/hooks/state-singleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAO/D,MAAM,gBAAgB,GAAG,CAAS,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC;AAQzD,MAAM,UAAU,iBAAiB,CAC/B,cAAoC,EACpC,WAAkC,gBAAyC,EAC3E,UAA2B,MAAM,CAAC,EAAE;IAEpC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEjF,OAAO,CAAC,KAAK,EAAE,OAAO,CAAa,CAAC;AACtC,CAAC"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { StateSubscriptionHandler } from '../types/types.js';
|
|
2
|
-
import type { EqualityFn, Selector } from '../utils/selector-cache.js';
|
|
3
|
-
export declare function useStateSubscriptionSelector<V, A, Sel>(stateSubscriptionHandler: StateSubscriptionHandler<V, A>, selector: Selector<V, Sel>, isEqual?: EqualityFn<Sel>, destroyOnCleanup?: boolean): Sel;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { useCallback, useRef, useSyncExternalStore } from 'react';
|
|
2
|
-
import { createSelectorCache, selectWithCache } from '../utils/selector-cache.js';
|
|
3
|
-
const deferredDestroyMap = new WeakMap();
|
|
4
|
-
function getDeferredDestroyState(stateSubscriptionHandler) {
|
|
5
|
-
const existingState = deferredDestroyMap.get(stateSubscriptionHandler);
|
|
6
|
-
if (existingState) {
|
|
7
|
-
return existingState;
|
|
8
|
-
}
|
|
9
|
-
const nextState = {
|
|
10
|
-
refCount: 0,
|
|
11
|
-
timeoutId: null,
|
|
12
|
-
};
|
|
13
|
-
deferredDestroyMap.set(stateSubscriptionHandler, nextState);
|
|
14
|
-
return nextState;
|
|
15
|
-
}
|
|
16
|
-
export function useStateSubscriptionSelector(stateSubscriptionHandler, selector, isEqual = Object.is, destroyOnCleanup = true) {
|
|
17
|
-
const selectorCacheRef = useRef(null);
|
|
18
|
-
if (!selectorCacheRef.current) {
|
|
19
|
-
selectorCacheRef.current = createSelectorCache();
|
|
20
|
-
}
|
|
21
|
-
const selectorCache = selectorCacheRef.current;
|
|
22
|
-
const subscribe = useCallback((listener) => {
|
|
23
|
-
const sharedStateSubscriptionHandler = stateSubscriptionHandler;
|
|
24
|
-
const deferredDestroyState = getDeferredDestroyState(sharedStateSubscriptionHandler);
|
|
25
|
-
deferredDestroyState.refCount += 1;
|
|
26
|
-
if (deferredDestroyState.timeoutId) {
|
|
27
|
-
clearTimeout(deferredDestroyState.timeoutId);
|
|
28
|
-
deferredDestroyState.timeoutId = null;
|
|
29
|
-
}
|
|
30
|
-
const unsubscribe = stateSubscriptionHandler.subscribe(listener);
|
|
31
|
-
return () => {
|
|
32
|
-
unsubscribe();
|
|
33
|
-
if (!destroyOnCleanup) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const activeDeferredDestroyState = deferredDestroyMap.get(sharedStateSubscriptionHandler);
|
|
37
|
-
if (!activeDeferredDestroyState) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
activeDeferredDestroyState.refCount -= 1;
|
|
41
|
-
if (activeDeferredDestroyState.refCount > 0) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
activeDeferredDestroyState.refCount = 0;
|
|
45
|
-
activeDeferredDestroyState.timeoutId = setTimeout(() => {
|
|
46
|
-
const pendingDeferredDestroyState = deferredDestroyMap.get(sharedStateSubscriptionHandler);
|
|
47
|
-
if (!pendingDeferredDestroyState || pendingDeferredDestroyState.refCount > 0) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
pendingDeferredDestroyState.timeoutId = null;
|
|
51
|
-
stateSubscriptionHandler.destroy();
|
|
52
|
-
deferredDestroyMap.delete(sharedStateSubscriptionHandler);
|
|
53
|
-
}, 0);
|
|
54
|
-
};
|
|
55
|
-
}, [destroyOnCleanup, stateSubscriptionHandler]);
|
|
56
|
-
const selectSnapshot = useCallback((snapshot) => {
|
|
57
|
-
return selectWithCache(selectorCache, snapshot, selector, isEqual).value;
|
|
58
|
-
}, [isEqual, selector, selectorCache]);
|
|
59
|
-
const getSnapshot = useCallback(() => selectSnapshot(stateSubscriptionHandler.getSnapshot()), [selectSnapshot, stateSubscriptionHandler]);
|
|
60
|
-
const getServerSnapshot = useCallback(() => selectSnapshot(stateSubscriptionHandler.getInitialState()), [selectSnapshot, stateSubscriptionHandler]);
|
|
61
|
-
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=state-subscription-selector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-subscription-selector.js","sourceRoot":"","sources":["../../src/hooks/state-subscription-selector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { StateSingleton } from '../store/state-singleton.js';
|
|
2
|
-
import type { StateSubscriptionHandler } from '../types/types.js';
|
|
3
|
-
type StateSelector<State, SelectedState> = (state: State) => SelectedState;
|
|
4
|
-
type EqualityFn<SelectedState> = (current: SelectedState, next: SelectedState) => boolean;
|
|
5
|
-
export declare function useStateSubscription<V, A>(source: StateSubscriptionHandler<V, A>): [V, A];
|
|
6
|
-
export declare function useStateSubscription<V, A, Sel>(source: StateSubscriptionHandler<V, A>, selector: StateSelector<V, Sel>, isEqual?: EqualityFn<Sel>): [Sel, A];
|
|
7
|
-
export declare function useStateSubscription<V, A>(source: StateSingleton<V, A>): [V, A];
|
|
8
|
-
export declare function useStateSubscription<V, A, Sel>(source: StateSingleton<V, A>, selector: StateSelector<V, Sel>, isEqual?: EqualityFn<Sel>): [Sel, A];
|
|
9
|
-
export {};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { useEffect, useMemo } from 'react';
|
|
2
|
-
import { useStateActions } from './state-actions.js';
|
|
3
|
-
import { useStateSubscriptionSelector } from './state-subscription-selector.js';
|
|
4
|
-
const singletonReferences = new WeakMap();
|
|
5
|
-
const identitySelector = (state) => state;
|
|
6
|
-
function isStateSingleton(source) {
|
|
7
|
-
return 'getInstance' in source;
|
|
8
|
-
}
|
|
9
|
-
export function useStateSubscription(source, selector = identitySelector, isEqual = Object.is) {
|
|
10
|
-
const singletonSource = isStateSingleton(source) ? source : null;
|
|
11
|
-
const stateSubscriptionHandler = useMemo(() => {
|
|
12
|
-
if (singletonSource) {
|
|
13
|
-
return singletonSource.getInstance();
|
|
14
|
-
}
|
|
15
|
-
return source;
|
|
16
|
-
}, [singletonSource, source]);
|
|
17
|
-
useEffect(() => {
|
|
18
|
-
if (!singletonSource) {
|
|
19
|
-
return undefined;
|
|
20
|
-
}
|
|
21
|
-
const singleton = singletonSource;
|
|
22
|
-
const sharedStateHandler = stateSubscriptionHandler;
|
|
23
|
-
const singletonReference = singletonReferences.get(singleton);
|
|
24
|
-
if (!singletonReference || singletonReference.stateHandler !== sharedStateHandler) {
|
|
25
|
-
singletonReferences.set(singleton, { count: 1, stateHandler: sharedStateHandler });
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
singletonReference.count += 1;
|
|
29
|
-
}
|
|
30
|
-
return () => {
|
|
31
|
-
const activeReference = singletonReferences.get(singleton);
|
|
32
|
-
if (!activeReference || activeReference.stateHandler !== sharedStateHandler) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
activeReference.count -= 1;
|
|
36
|
-
if (activeReference.count <= 0) {
|
|
37
|
-
singletonReferences.delete(singleton);
|
|
38
|
-
if (singleton.destroyOnNoConsumers !== true) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (singleton.destroyInstance) {
|
|
42
|
-
singleton.destroyInstance();
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
stateSubscriptionHandler.destroy();
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
}, [singletonSource, stateSubscriptionHandler]);
|
|
49
|
-
const state = useStateSubscriptionSelector(stateSubscriptionHandler, selector, isEqual, !singletonSource);
|
|
50
|
-
const actions = useStateActions(stateSubscriptionHandler);
|
|
51
|
-
return [state, actions];
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=state-subscription.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-subscription.js","sourceRoot":"","sources":["../../src/hooks/state-subscription.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAahF,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAGpC,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CAAS,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC;AAEzD,SAAS,gBAAgB,CACvB,MAA6D;IAE7D,OAAO,aAAa,IAAI,MAAM,CAAC;AACjC,CAAC;AAcD,MAAM,UAAU,oBAAoB,CAClC,MAA6D,EAC7D,WAAkC,gBAAyC,EAC3E,UAA2B,MAAM,CAAC,EAAE;IAEpC,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,MAAM,wBAAwB,GAAG,OAAO,CAAiC,GAAG,EAAE;QAC5E,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC,WAAW,EAAE,CAAC;QACvC,CAAC;QAED,OAAO,MAAwC,CAAC;IAClD,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,eAAmC,CAAC;QACtD,MAAM,kBAAkB,GAAG,wBAA8C,CAAC;QAC1E,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE9D,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;YAClF,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,KAAK,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,GAAG,EAAE;YACV,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE3D,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;gBAC5E,OAAO;YACT,CAAC;YAED,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC;YAE3B,IAAI,eAAe,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC/B,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACtC,IAAI,SAAS,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBAED,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;oBAC9B,SAAS,CAAC,eAAe,EAAE,CAAC;oBAC5B,OAAO;gBACT,CAAC;gBAED,wBAAwB,CAAC,OAAO,EAAE,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,4BAA4B,CACxC,wBAAwB,EACxB,QAAQ,EACR,OAAO,EACP,CAAC,eAAe,CACjB,CAAC;IACF,MAAM,OAAO,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC;IAE1D,OAAO,CAAC,KAAK,EAAE,OAAO,CAAa,CAAC;AACtC,CAAC"}
|