@kuindji/reactive 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -937,9 +937,20 @@ const store = useStore<PropTypes>(
937
937
  Use store value as state
938
938
 
939
939
  ```typescript
940
- const [ value, setValue ] = useStoreStore(
940
+ const [ value: TypeOfValue, setValue: (value: TypeOfValue) => void ] = useStoreState(
941
941
  store: Store,
942
- key: string
942
+ key: KeyInStore
943
+ )
944
+ ```
945
+
946
+ Listen to value changes
947
+
948
+ ```typescript
949
+ useListenToStoreChanges(
950
+ store: Store,
951
+ key: KeyInStore,
952
+ listener: (value: TypeOfValue, previousValue?: TypeOfValue) => void
953
+ listenerOptions?: ListenerOptions
943
954
  )
944
955
  ```
945
956
 
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from "./action";
2
+ export * from "./actionBus";
3
+ export * from "./actionMap";
2
4
  export * from "./event";
3
5
  export * from "./eventBus";
4
6
  export * from "./lib/types";
package/dist/index.js CHANGED
@@ -15,6 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./action"), exports);
18
+ __exportStar(require("./actionBus"), exports);
19
+ __exportStar(require("./actionMap"), exports);
18
20
  __exportStar(require("./event"), exports);
19
21
  __exportStar(require("./eventBus"), exports);
20
22
  __exportStar(require("./lib/types"), exports);
@@ -0,0 +1,5 @@
1
+ import type { ListenerOptions } from "../event";
2
+ import { KeyOf } from "../lib/types";
3
+ import type { BaseStore } from "../store";
4
+ export type { BaseStore, ListenerOptions };
5
+ export declare function useListenToStoreChanges<TStore extends BaseStore, TKey extends KeyOf<TStore["__type"]["propTypes"]>, TListener extends TStore["__type"]["changeEvents"][TKey]>(store: TStore, key: TKey, listener: TListener, options?: ListenerOptions): void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useListenToStoreChanges = useListenToStoreChanges;
4
+ const react_1 = require("react");
5
+ function useListenToStoreChanges(store, key, listener, options) {
6
+ const listenerRef = (0, react_1.useRef)(listener);
7
+ const storeRef = (0, react_1.useRef)(store);
8
+ listenerRef.current = listener;
9
+ const genericHandler = (0, react_1.useCallback)((value, previousValue) => {
10
+ return listenerRef.current(value, previousValue);
11
+ }, []);
12
+ (0, react_1.useEffect)(() => {
13
+ return () => {
14
+ storeRef.current.removeOnChange(key, genericHandler);
15
+ };
16
+ }, []);
17
+ (0, react_1.useEffect)(() => {
18
+ storeRef.current.removeOnChange(key, genericHandler);
19
+ storeRef.current = store;
20
+ storeRef.current.onChange(key, genericHandler, options);
21
+ }, [store]);
22
+ }
package/dist/react.d.ts CHANGED
@@ -6,5 +6,6 @@ export * from "./react/useEventBus";
6
6
  export * from "./react/useListenToAction";
7
7
  export * from "./react/useListenToEvent";
8
8
  export * from "./react/useListenToEventBus";
9
+ export * from "./react/useListenToStoreChanges";
9
10
  export * from "./react/useStore";
10
11
  export * from "./react/useStoreState";
package/dist/react.js CHANGED
@@ -22,5 +22,6 @@ __exportStar(require("./react/useEventBus"), exports);
22
22
  __exportStar(require("./react/useListenToAction"), exports);
23
23
  __exportStar(require("./react/useListenToEvent"), exports);
24
24
  __exportStar(require("./react/useListenToEventBus"), exports);
25
+ __exportStar(require("./react/useListenToStoreChanges"), exports);
25
26
  __exportStar(require("./react/useStore"), exports);
26
27
  __exportStar(require("./react/useStoreState"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kuindji/reactive",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "A JavaScript/TypeScript utility library for building reactive applications with events, actions, stores, and React hooks",
5
5
  "keywords": [
6
6
  "events",