@bemedev/app-reactjs 1.8.0 → 1.9.1

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
@@ -8,6 +8,13 @@ trees.
8
8
 
9
9
  <br/>
10
10
 
11
+ ## Demo
12
+
13
+ Check out the live interactive demo on Vercel:
14
+ [https://bemedev-app-reactjs.vercel.app](https://bemedev-app-reactjs.vercel.app)
15
+
16
+ <br/>
17
+
11
18
  ## Installation
12
19
 
13
20
  ```bash
@@ -32,10 +39,10 @@ service.start();
32
39
 
33
40
  function MyComponent() {
34
41
  // 1. Select a specific slice of context
35
- const count = useService(service, s => s.context.count);
42
+ const count = useService(service, { selector: s => s.context.count });
36
43
 
37
44
  // 2. Or track the active state value
38
- const stateValue = useService(service, s => s.value);
45
+ const stateValue = useService(service, { selector: s => s.value });
39
46
 
40
47
  // 3. Or track the whole state object
41
48
  const state = useService(service);
@@ -53,15 +60,15 @@ function MyComponent() {
53
60
 
54
61
  ## API Reference
55
62
 
56
- ### `useService(service, selector?)`
63
+ ### `useService(service, options?)`
57
64
 
58
65
  Creates a React state hook that updates whenever the interpreter
59
66
  transitions, using deep comparison to prevent unnecessary renders.
60
67
 
61
- | Parameter | Type | Description |
62
- | ---------- | ----------------------- | ---------------------------------------------------------------------- |
63
- | `service` | `Interpreter` | The `@bemedev/app` interpreter service instance. |
64
- | `selector` | `(state: State) => any` | Optional selector function to slice and track specific parts of state. |
68
+ | Parameter | Type | Description |
69
+ | --------- | ------------------- | ----------------------------------------------------------------------------------- |
70
+ | `service` | `Interpreter` | The `@bemedev/app` interpreter service instance. |
71
+ | `options` | `UseServiceOptions` | Optional object containing `selector` and/or custom `equality` comparison function. |
65
72
 
66
73
  Returns the selected state or slice.
67
74
 
package/lib/index.cjs CHANGED
@@ -1,3 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_useState = require("./useState.cjs");
3
+ const require_useCan = require("./useCan.cjs");
4
+ const require_useIsInside = require("./useIsInside.cjs");
2
5
  const require_useService = require("./useService.cjs");
6
+ exports.createHooks = require_useService.createHooks;
7
+ exports.useCan = require_useCan.useCan;
8
+ exports.useIsInside = require_useIsInside.useIsInside;
3
9
  exports.useService = require_useService.useService;
10
+ exports.useState = require_useState.useState;
package/lib/index.d.ts CHANGED
@@ -1,2 +1,6 @@
1
1
  export * from './useService';
2
+ export * from './useState';
3
+ export * from './useCan';
4
+ export * from './useIsInside';
5
+ export * from './types';
2
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
package/lib/index.js CHANGED
@@ -1,2 +1,5 @@
1
- import { useService } from "./useService.js";
2
- export { useService };
1
+ import { useState } from "./useState.js";
2
+ import { useCan } from "./useCan.js";
3
+ import { useIsInside } from "./useIsInside.js";
4
+ import { createHooks, useService } from "./useService.js";
5
+ export { createHooks, useCan, useIsInside, useService, useState };
package/lib/types.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import type { EventObject, State, PrimitiveObject } from '@bemedev/app';
2
+ export type UseServiceOptions<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject, T = State<Eo, Tc, Ta>> = {
3
+ selector?: (state: State<Eo, Tc, Ta>) => T;
4
+ equals?: (first: T, next: T) => boolean;
5
+ };
6
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,MAAM,iBAAiB,CAC3B,EAAE,SAAS,eAAe,EAC1B,EAAE,SAAS,MAAM,EACjB,EAAE,SAAS,WAAW,EACtB,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IACnB;IACF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;CACzC,CAAC"}
package/lib/useCan.cjs ADDED
@@ -0,0 +1,29 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let react = require("react");
3
+ let _bemedev_app_bemedev = require("@bemedev/app/bemedev");
4
+ //#region src/useCan.ts
5
+ function useCan(service) {
6
+ const dispatch = (matcher) => {
7
+ return (...events) => {
8
+ const selector = (_state) => {
9
+ return events[matcher]((event) => service.canEvent(event));
10
+ };
11
+ const [_state, setState] = (0, react.useState)(() => selector(service.state));
12
+ const sub = service.subscribe(() => {
13
+ setState(selector(service.state));
14
+ });
15
+ (0, react.useEffect)(() => sub.unsubscribe, []);
16
+ return _state;
17
+ };
18
+ };
19
+ const or = dispatch("some");
20
+ const and = dispatch("every");
21
+ return (0, _bemedev_app_bemedev.expandFn)(and, {
22
+ or,
23
+ and
24
+ });
25
+ }
26
+ //#endregion
27
+ exports.useCan = useCan;
28
+
29
+ //# sourceMappingURL=useCan.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCan.cjs","names":["useState","expandFn"],"sources":["../src/useCan.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app';\nimport { expandFn } from '@bemedev/app/bemedev';\nimport { useEffect, useState } from 'react';\n\nexport function useCan<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n>(service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n canEvent: (event: Eo['type']) => boolean;\n}) {\n const dispatch = (matcher: 'some' | 'every') => {\n return (...events: Eo['type'][]) => {\n const selector = (_state: State<Eo, Tc, Ta>) => {\n return events[matcher](event => service.canEvent(event));\n };\n\n const [_state, setState] = useState(() => selector(service.state));\n\n const sub = service.subscribe(() => {\n setState(selector(service.state));\n });\n\n useEffect(() => sub.unsubscribe, []);\n return _state;\n };\n };\n\n const or = dispatch('some');\n const and = dispatch('every');\n const out = expandFn(and, { or, and });\n return out;\n}\n"],"mappings":";;;;AASA,SAAgB,OAId,SAIC;CACD,MAAM,YAAY,YAA8B;EAC9C,QAAQ,GAAG,WAAyB;GAClC,MAAM,YAAY,WAA8B;IAC9C,OAAO,OAAO,QAAQ,EAAC,UAAS,QAAQ,SAAS,KAAK,CAAC;GACzD;GAEA,MAAM,CAAC,QAAQ,aAAA,GAAYA,MAAAA,SAAAA,OAAe,SAAS,QAAQ,KAAK,CAAC;GAEjE,MAAM,MAAM,QAAQ,gBAAgB;IAClC,SAAS,SAAS,QAAQ,KAAK,CAAC;GAClC,CAAC;GAED,CAAA,GAAA,MAAA,UAAA,OAAgB,IAAI,aAAa,CAAC,CAAC;GACnC,OAAO;EACT;CACF;CAEA,MAAM,KAAK,SAAS,MAAM;CAC1B,MAAM,MAAM,SAAS,OAAO;CAE5B,QAAA,GADYC,qBAAAA,SAAAA,CAAS,KAAK;EAAE;EAAI;CAAI,CAC3B;AACX"}
@@ -0,0 +1,10 @@
1
+ import type { AddSubscriber_F, EventObject, PrimitiveObject, State } from '@bemedev/app';
2
+ export declare function useCan<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject>(service: {
3
+ subscribe: AddSubscriber_F<Tc, Ta, Eo>;
4
+ state: State<Eo, Tc, Ta>;
5
+ canEvent: (event: Eo['type']) => boolean;
6
+ }): import("@bemedev/app/bemedev").FnBasic<(...events: Eo["type"][]) => boolean, {
7
+ readonly or: (...events: Eo["type"][]) => boolean;
8
+ readonly and: (...events: Eo["type"][]) => boolean;
9
+ }>;
10
+ //# sourceMappingURL=useCan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCan.d.ts","sourceRoot":"","sources":["../src/useCan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,EACN,MAAM,cAAc,CAAC;AAItB,wBAAgB,MAAM,CACpB,EAAE,SAAS,eAAe,EAC1B,EAAE,SAAS,MAAM,EACjB,EAAE,SAAS,WAAW,EACtB,OAAO,EAAE;IACT,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;CAC1C,sDAEsB,EAAE,CAAC,MAAM,CAAC,EAAE;6BAAZ,EAAE,CAAC,MAAM,CAAC,EAAE;8BAAZ,EAAE,CAAC,MAAM,CAAC,EAAE;GAoBlC"}
package/lib/useCan.js ADDED
@@ -0,0 +1,28 @@
1
+ import { useEffect, useState } from "react";
2
+ import { expandFn } from "@bemedev/app/bemedev";
3
+ //#region src/useCan.ts
4
+ function useCan(service) {
5
+ const dispatch = (matcher) => {
6
+ return (...events) => {
7
+ const selector = (_state) => {
8
+ return events[matcher]((event) => service.canEvent(event));
9
+ };
10
+ const [_state, setState] = useState(() => selector(service.state));
11
+ const sub = service.subscribe(() => {
12
+ setState(selector(service.state));
13
+ });
14
+ useEffect(() => sub.unsubscribe, []);
15
+ return _state;
16
+ };
17
+ };
18
+ const or = dispatch("some");
19
+ const and = dispatch("every");
20
+ return expandFn(and, {
21
+ or,
22
+ and
23
+ });
24
+ }
25
+ //#endregion
26
+ export { useCan };
27
+
28
+ //# sourceMappingURL=useCan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCan.js","names":[],"sources":["../src/useCan.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app';\nimport { expandFn } from '@bemedev/app/bemedev';\nimport { useEffect, useState } from 'react';\n\nexport function useCan<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n>(service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n canEvent: (event: Eo['type']) => boolean;\n}) {\n const dispatch = (matcher: 'some' | 'every') => {\n return (...events: Eo['type'][]) => {\n const selector = (_state: State<Eo, Tc, Ta>) => {\n return events[matcher](event => service.canEvent(event));\n };\n\n const [_state, setState] = useState(() => selector(service.state));\n\n const sub = service.subscribe(() => {\n setState(selector(service.state));\n });\n\n useEffect(() => sub.unsubscribe, []);\n return _state;\n };\n };\n\n const or = dispatch('some');\n const and = dispatch('every');\n const out = expandFn(and, { or, and });\n return out;\n}\n"],"mappings":";;;AASA,SAAgB,OAId,SAIC;CACD,MAAM,YAAY,YAA8B;EAC9C,QAAQ,GAAG,WAAyB;GAClC,MAAM,YAAY,WAA8B;IAC9C,OAAO,OAAO,QAAQ,EAAC,UAAS,QAAQ,SAAS,KAAK,CAAC;GACzD;GAEA,MAAM,CAAC,QAAQ,YAAY,eAAe,SAAS,QAAQ,KAAK,CAAC;GAEjE,MAAM,MAAM,QAAQ,gBAAgB;IAClC,SAAS,SAAS,QAAQ,KAAK,CAAC;GAClC,CAAC;GAED,gBAAgB,IAAI,aAAa,CAAC,CAAC;GACnC,OAAO;EACT;CACF;CAEA,MAAM,KAAK,SAAS,MAAM;CAC1B,MAAM,MAAM,SAAS,OAAO;CAE5B,OADY,SAAS,KAAK;EAAE;EAAI;CAAI,CAC3B;AACX"}
@@ -0,0 +1,35 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let _bemedev_app = require("@bemedev/app");
3
+ let react = require("react");
4
+ let _bemedev_app_bemedev = require("@bemedev/app/bemedev");
5
+ //#region src/useIsInside.ts
6
+ function useIsInside(service) {
7
+ const selector1 = (_state) => {
8
+ return (0, _bemedev_app.decomposeSV)(_state.value);
9
+ };
10
+ const dispatch = (matcher) => {
11
+ return (...states) => {
12
+ const selector = (_state) => {
13
+ return states[matcher]((state) => selector1(_state).includes(state));
14
+ };
15
+ const [_state, setState] = (0, react.useState)(() => selector(service.state));
16
+ const sub = service.subscribe((nextState) => {
17
+ setState(selector(nextState));
18
+ }, { equals: (first, next) => {
19
+ return selector(first) === selector(next);
20
+ } });
21
+ (0, react.useEffect)(() => sub.unsubscribe, []);
22
+ return _state;
23
+ };
24
+ };
25
+ const or = dispatch("some");
26
+ const and = dispatch("every");
27
+ return (0, _bemedev_app_bemedev.expandFn)(and, {
28
+ or,
29
+ and
30
+ });
31
+ }
32
+ //#endregion
33
+ exports.useIsInside = useIsInside;
34
+
35
+ //# sourceMappingURL=useIsInside.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsInside.cjs","names":["decomposeSV","useState","expandFn"],"sources":["../src/useIsInside.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app';\nimport { decomposeSV } from '@bemedev/app';\nimport { expandFn } from '@bemedev/app/bemedev';\nimport { useEffect, useState } from 'react';\n\nexport function useIsInside<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n>(service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n}) {\n const selector1 = (_state: State<Eo, Tc, Ta>) => {\n return decomposeSV(_state.value);\n };\n\n const dispatch = (matcher: 'some' | 'every') => {\n return (...states: string[]) => {\n const selector = (_state: State<Eo, Tc, Ta>) => {\n return states[matcher](state => selector1(_state).includes(state));\n };\n\n const [_state, setState] = useState(() => selector(service.state));\n\n const sub = service.subscribe(\n nextState => {\n setState(selector(nextState));\n },\n {\n equals: (first, next) => {\n const _first = selector(first);\n const _next = selector(next);\n return _first === _next;\n },\n },\n );\n\n useEffect(() => sub.unsubscribe, []);\n return _state;\n };\n };\n\n const or = dispatch('some');\n const and = dispatch('every');\n const out = expandFn(and, { or, and });\n return out;\n}\n"],"mappings":";;;;;AAUA,SAAgB,YAId,SAGC;CACD,MAAM,aAAa,WAA8B;EAC/C,QAAA,GAAOA,aAAAA,YAAAA,CAAY,OAAO,KAAK;CACjC;CAEA,MAAM,YAAY,YAA8B;EAC9C,QAAQ,GAAG,WAAqB;GAC9B,MAAM,YAAY,WAA8B;IAC9C,OAAO,OAAO,QAAQ,EAAC,UAAS,UAAU,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC;GACnE;GAEA,MAAM,CAAC,QAAQ,aAAA,GAAYC,MAAAA,SAAAA,OAAe,SAAS,QAAQ,KAAK,CAAC;GAEjE,MAAM,MAAM,QAAQ,WAClB,cAAa;IACX,SAAS,SAAS,SAAS,CAAC;GAC9B,GACA,EACE,SAAS,OAAO,SAAS;IAGvB,OAFe,SAAS,KAEZ,MADE,SAAS,IACD;GACxB,EACF,CACF;GAEA,CAAA,GAAA,MAAA,UAAA,OAAgB,IAAI,aAAa,CAAC,CAAC;GACnC,OAAO;EACT;CACF;CAEA,MAAM,KAAK,SAAS,MAAM;CAC1B,MAAM,MAAM,SAAS,OAAO;CAE5B,QAAA,GADYC,qBAAAA,SAAAA,CAAS,KAAK;EAAE;EAAI;CAAI,CAC3B;AACX"}
@@ -0,0 +1,9 @@
1
+ import type { AddSubscriber_F, EventObject, PrimitiveObject, State } from '@bemedev/app';
2
+ export declare function useIsInside<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject>(service: {
3
+ subscribe: AddSubscriber_F<Tc, Ta, Eo>;
4
+ state: State<Eo, Tc, Ta>;
5
+ }): import("@bemedev/app/bemedev").FnBasic<(...states: string[]) => boolean, {
6
+ readonly or: (...states: string[]) => boolean;
7
+ readonly and: (...states: string[]) => boolean;
8
+ }>;
9
+ //# sourceMappingURL=useIsInside.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsInside.d.ts","sourceRoot":"","sources":["../src/useIsInside.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,EACN,MAAM,cAAc,CAAC;AAKtB,wBAAgB,WAAW,CACzB,EAAE,SAAS,eAAe,EAC1B,EAAE,SAAS,MAAM,EACjB,EAAE,SAAS,WAAW,EACtB,OAAO,EAAE;IACT,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC1B,sDAMsB,MAAM,EAAE;6BAAR,MAAM,EAAE;8BAAR,MAAM,EAAE;GA6B9B"}
@@ -0,0 +1,34 @@
1
+ import { decomposeSV } from "@bemedev/app";
2
+ import { useEffect, useState } from "react";
3
+ import { expandFn } from "@bemedev/app/bemedev";
4
+ //#region src/useIsInside.ts
5
+ function useIsInside(service) {
6
+ const selector1 = (_state) => {
7
+ return decomposeSV(_state.value);
8
+ };
9
+ const dispatch = (matcher) => {
10
+ return (...states) => {
11
+ const selector = (_state) => {
12
+ return states[matcher]((state) => selector1(_state).includes(state));
13
+ };
14
+ const [_state, setState] = useState(() => selector(service.state));
15
+ const sub = service.subscribe((nextState) => {
16
+ setState(selector(nextState));
17
+ }, { equals: (first, next) => {
18
+ return selector(first) === selector(next);
19
+ } });
20
+ useEffect(() => sub.unsubscribe, []);
21
+ return _state;
22
+ };
23
+ };
24
+ const or = dispatch("some");
25
+ const and = dispatch("every");
26
+ return expandFn(and, {
27
+ or,
28
+ and
29
+ });
30
+ }
31
+ //#endregion
32
+ export { useIsInside };
33
+
34
+ //# sourceMappingURL=useIsInside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsInside.js","names":[],"sources":["../src/useIsInside.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app';\nimport { decomposeSV } from '@bemedev/app';\nimport { expandFn } from '@bemedev/app/bemedev';\nimport { useEffect, useState } from 'react';\n\nexport function useIsInside<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n>(service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n}) {\n const selector1 = (_state: State<Eo, Tc, Ta>) => {\n return decomposeSV(_state.value);\n };\n\n const dispatch = (matcher: 'some' | 'every') => {\n return (...states: string[]) => {\n const selector = (_state: State<Eo, Tc, Ta>) => {\n return states[matcher](state => selector1(_state).includes(state));\n };\n\n const [_state, setState] = useState(() => selector(service.state));\n\n const sub = service.subscribe(\n nextState => {\n setState(selector(nextState));\n },\n {\n equals: (first, next) => {\n const _first = selector(first);\n const _next = selector(next);\n return _first === _next;\n },\n },\n );\n\n useEffect(() => sub.unsubscribe, []);\n return _state;\n };\n };\n\n const or = dispatch('some');\n const and = dispatch('every');\n const out = expandFn(and, { or, and });\n return out;\n}\n"],"mappings":";;;;AAUA,SAAgB,YAId,SAGC;CACD,MAAM,aAAa,WAA8B;EAC/C,OAAO,YAAY,OAAO,KAAK;CACjC;CAEA,MAAM,YAAY,YAA8B;EAC9C,QAAQ,GAAG,WAAqB;GAC9B,MAAM,YAAY,WAA8B;IAC9C,OAAO,OAAO,QAAQ,EAAC,UAAS,UAAU,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC;GACnE;GAEA,MAAM,CAAC,QAAQ,YAAY,eAAe,SAAS,QAAQ,KAAK,CAAC;GAEjE,MAAM,MAAM,QAAQ,WAClB,cAAa;IACX,SAAS,SAAS,SAAS,CAAC;GAC9B,GACA,EACE,SAAS,OAAO,SAAS;IAGvB,OAFe,SAAS,KAEZ,MADE,SAAS,IACD;GACxB,EACF,CACF;GAEA,gBAAgB,IAAI,aAAa,CAAC,CAAC;GACnC,OAAO;EACT;CACF;CAEA,MAAM,KAAK,SAAS,MAAM;CAC1B,MAAM,MAAM,SAAS,OAAO;CAE5B,OADY,SAAS,KAAK;EAAE;EAAI;CAAI,CAC3B;AACX"}
@@ -1,25 +1,18 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- let _bemedev_app_utils = require("@bemedev/app/utils");
3
- let react = require("react");
2
+ const require_useState = require("./useState.cjs");
3
+ const require_useCan = require("./useCan.cjs");
4
+ const require_useIsInside = require("./useIsInside.cjs");
4
5
  //#region src/useService.ts
5
- /**
6
- * A hook that creates a React state from a service with a subscribe function.
7
- *
8
- * @param service - The service containing the state and subscribe method.
9
- * @param selector - A function to select the desired slice of state.
10
- * @returns The selected state.
11
- */
12
- function useService(service, selector = (s) => s) {
13
- const [state, setState] = (0, react.useState)(() => selector(service.state));
14
- const sub = service.subscribe((nextState) => setState(selector(nextState)), { equals: (first, next) => {
15
- const _first = selector(first);
16
- const _next = selector(next);
17
- return (0, _bemedev_app_utils.deepEqual)(_first, _next);
18
- } });
19
- (0, react.useEffect)(() => sub.unsubscribe, [service, selector]);
20
- return state;
6
+ function useService(service) {
7
+ return {
8
+ state: (options) => require_useState.useState(service, options),
9
+ can: require_useCan.useCan(service),
10
+ isInside: require_useIsInside.useIsInside(service)
11
+ };
21
12
  }
13
+ const createHooks = useService;
22
14
  //#endregion
15
+ exports.createHooks = createHooks;
23
16
  exports.useService = useService;
24
17
 
25
18
  //# sourceMappingURL=useService.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useService.cjs","names":["useState","deepEqual"],"sources":["../src/useService.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app/types';\nimport { deepEqual } from '@bemedev/app/utils';\nimport { useEffect, useState } from 'react';\n\n/**\n * A hook that creates a React state from a service with a subscribe function.\n *\n * @param service - The service containing the state and subscribe method.\n * @param selector - A function to select the desired slice of state.\n * @returns The selected state.\n */\nexport function useService<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n>(\n service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n },\n selector: (state: State<Eo, Tc, Ta>) => T = (s: State<Eo, Tc, Ta>) =>\n s as unknown as T,\n): T {\n const [state, setState] = useState<T>(() => selector(service.state));\n\n const sub = service.subscribe(\n nextState => setState(selector(nextState)),\n {\n equals: (first, next) => {\n const _first = selector(first);\n const _next = selector(next);\n return deepEqual(_first, _next);\n },\n },\n );\n\n useEffect(() => sub.unsubscribe, [service, selector]);\n return state;\n}\n"],"mappings":";;;;;;;;;;;AAgBA,SAAgB,WAMd,SAIA,YAA6C,MAC3C,GACC;CACH,MAAM,CAAC,OAAO,aAAA,GAAYA,MAAAA,SAAAA,OAAkB,SAAS,QAAQ,KAAK,CAAC;CAEnE,MAAM,MAAM,QAAQ,WAClB,cAAa,SAAS,SAAS,SAAS,CAAC,GACzC,EACE,SAAS,OAAO,SAAS;EACvB,MAAM,SAAS,SAAS,KAAK;EAC7B,MAAM,QAAQ,SAAS,IAAI;EAC3B,QAAA,GAAOC,mBAAAA,UAAAA,CAAU,QAAQ,KAAK;CAChC,EACF,CACF;CAEA,CAAA,GAAA,MAAA,UAAA,OAAgB,IAAI,aAAa,CAAC,SAAS,QAAQ,CAAC;CACpD,OAAO;AACT"}
1
+ {"version":3,"file":"useService.cjs","names":["useState","useCan","useIsInside"],"sources":["../src/useService.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app';\nimport type { UseServiceOptions } from './types';\nimport { useCan } from './useCan';\nimport { useIsInside } from './useIsInside';\nimport { useState } from './useState';\n\nexport function useService<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n>(service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n canEvent: (event: Eo['type']) => boolean;\n}) {\n return {\n state: <T = State<Eo, Tc, Ta>>(\n options?: UseServiceOptions<Tc, Ta, Eo, T>,\n ) => useState<Tc, Ta, Eo, T>(service, options),\n\n can: useCan(service),\n isInside: useIsInside(service),\n };\n}\n\nexport const createHooks = useService;\n"],"mappings":";;;;;AAWA,SAAgB,WAId,SAIC;CACD,OAAO;EACL,QACE,YACGA,iBAAAA,SAAwB,SAAS,OAAO;EAE7C,KAAKC,eAAAA,OAAO,OAAO;EACnB,UAAUC,oBAAAA,YAAY,OAAO;CAC/B;AACF;AAEA,MAAa,cAAc"}
@@ -1,13 +1,19 @@
1
- import type { AddSubscriber_F, EventObject, PrimitiveObject, State } from '@bemedev/app/types';
2
- /**
3
- * A hook that creates a React state from a service with a subscribe function.
4
- *
5
- * @param service - The service containing the state and subscribe method.
6
- * @param selector - A function to select the desired slice of state.
7
- * @returns The selected state.
8
- */
9
- export declare function useService<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject, T = State<Eo, Tc, Ta>>(service: {
1
+ import type { AddSubscriber_F, EventObject, PrimitiveObject, State } from '@bemedev/app';
2
+ import type { UseServiceOptions } from './types';
3
+ export declare function useService<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject>(service: {
10
4
  subscribe: AddSubscriber_F<Tc, Ta, Eo>;
11
5
  state: State<Eo, Tc, Ta>;
12
- }, selector?: (state: State<Eo, Tc, Ta>) => T): T;
6
+ canEvent: (event: Eo['type']) => boolean;
7
+ }): {
8
+ state: <T = State<Eo, Tc, Ta>>(options?: UseServiceOptions<Tc, Ta, Eo, T>) => T;
9
+ can: import("@bemedev/app/bemedev").FnBasic<(...events: Eo["type"][]) => boolean, {
10
+ readonly or: (...events: Eo["type"][]) => boolean;
11
+ readonly and: (...events: Eo["type"][]) => boolean;
12
+ }>;
13
+ isInside: import("@bemedev/app/bemedev").FnBasic<(...states: string[]) => boolean, {
14
+ readonly or: (...states: string[]) => boolean;
15
+ readonly and: (...states: string[]) => boolean;
16
+ }>;
17
+ };
18
+ export declare const createHooks: typeof useService;
13
19
  //# sourceMappingURL=useService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useService.d.ts","sourceRoot":"","sources":["../src/useService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,EACN,MAAM,oBAAoB,CAAC;AAI5B;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,EAAE,SAAS,eAAe,EAC1B,EAAE,SAAS,MAAM,EACjB,EAAE,SAAS,WAAW,EACtB,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAErB,OAAO,EAAE;IACP,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC1B,EACD,QAAQ,GAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CACrB,GAClB,CAAC,CAgBH"}
1
+ {"version":3,"file":"useService.d.ts","sourceRoot":"","sources":["../src/useService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,EACN,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKjD,wBAAgB,UAAU,CACxB,EAAE,SAAS,eAAe,EAC1B,EAAE,SAAS,MAAM,EACjB,EAAE,SAAS,WAAW,EACtB,OAAO,EAAE;IACT,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;CAC1C;YAEW,CAAC,gCACG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;;;;;;;;;EAM/C;AAED,eAAO,MAAM,WAAW,mBAAa,CAAC"}
package/lib/useService.js CHANGED
@@ -1,24 +1,16 @@
1
- import { deepEqual } from "@bemedev/app/utils";
2
- import { useEffect, useState } from "react";
1
+ import { useState } from "./useState.js";
2
+ import { useCan } from "./useCan.js";
3
+ import { useIsInside } from "./useIsInside.js";
3
4
  //#region src/useService.ts
4
- /**
5
- * A hook that creates a React state from a service with a subscribe function.
6
- *
7
- * @param service - The service containing the state and subscribe method.
8
- * @param selector - A function to select the desired slice of state.
9
- * @returns The selected state.
10
- */
11
- function useService(service, selector = (s) => s) {
12
- const [state, setState] = useState(() => selector(service.state));
13
- const sub = service.subscribe((nextState) => setState(selector(nextState)), { equals: (first, next) => {
14
- const _first = selector(first);
15
- const _next = selector(next);
16
- return deepEqual(_first, _next);
17
- } });
18
- useEffect(() => sub.unsubscribe, [service, selector]);
19
- return state;
5
+ function useService(service) {
6
+ return {
7
+ state: (options) => useState(service, options),
8
+ can: useCan(service),
9
+ isInside: useIsInside(service)
10
+ };
20
11
  }
12
+ const createHooks = useService;
21
13
  //#endregion
22
- export { useService };
14
+ export { createHooks, useService };
23
15
 
24
16
  //# sourceMappingURL=useService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useService.js","names":[],"sources":["../src/useService.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app/types';\nimport { deepEqual } from '@bemedev/app/utils';\nimport { useEffect, useState } from 'react';\n\n/**\n * A hook that creates a React state from a service with a subscribe function.\n *\n * @param service - The service containing the state and subscribe method.\n * @param selector - A function to select the desired slice of state.\n * @returns The selected state.\n */\nexport function useService<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n>(\n service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n },\n selector: (state: State<Eo, Tc, Ta>) => T = (s: State<Eo, Tc, Ta>) =>\n s as unknown as T,\n): T {\n const [state, setState] = useState<T>(() => selector(service.state));\n\n const sub = service.subscribe(\n nextState => setState(selector(nextState)),\n {\n equals: (first, next) => {\n const _first = selector(first);\n const _next = selector(next);\n return deepEqual(_first, _next);\n },\n },\n );\n\n useEffect(() => sub.unsubscribe, [service, selector]);\n return state;\n}\n"],"mappings":";;;;;;;;;;AAgBA,SAAgB,WAMd,SAIA,YAA6C,MAC3C,GACC;CACH,MAAM,CAAC,OAAO,YAAY,eAAkB,SAAS,QAAQ,KAAK,CAAC;CAEnE,MAAM,MAAM,QAAQ,WAClB,cAAa,SAAS,SAAS,SAAS,CAAC,GACzC,EACE,SAAS,OAAO,SAAS;EACvB,MAAM,SAAS,SAAS,KAAK;EAC7B,MAAM,QAAQ,SAAS,IAAI;EAC3B,OAAO,UAAU,QAAQ,KAAK;CAChC,EACF,CACF;CAEA,gBAAgB,IAAI,aAAa,CAAC,SAAS,QAAQ,CAAC;CACpD,OAAO;AACT"}
1
+ {"version":3,"file":"useService.js","names":[],"sources":["../src/useService.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app';\nimport type { UseServiceOptions } from './types';\nimport { useCan } from './useCan';\nimport { useIsInside } from './useIsInside';\nimport { useState } from './useState';\n\nexport function useService<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n>(service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n canEvent: (event: Eo['type']) => boolean;\n}) {\n return {\n state: <T = State<Eo, Tc, Ta>>(\n options?: UseServiceOptions<Tc, Ta, Eo, T>,\n ) => useState<Tc, Ta, Eo, T>(service, options),\n\n can: useCan(service),\n isInside: useIsInside(service),\n };\n}\n\nexport const createHooks = useService;\n"],"mappings":";;;;AAWA,SAAgB,WAId,SAIC;CACD,OAAO;EACL,QACE,YACG,SAAwB,SAAS,OAAO;EAE7C,KAAK,OAAO,OAAO;EACnB,UAAU,YAAY,OAAO;CAC/B;AACF;AAEA,MAAa,cAAc"}
@@ -0,0 +1,35 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let _bemedev_app = require("@bemedev/app");
3
+ let react = require("react");
4
+ //#region src/useState.ts
5
+ /**
6
+ * A hook that creates a React state from a service with a subscribe function.
7
+ *
8
+ * @param service - The service containing the state and subscribe method.
9
+ * @param options - Optional configuration options for selection and equality comparison.
10
+ * @returns The selected state.
11
+ */
12
+ function useState(service, options) {
13
+ const { selector = (s) => s, equals = _bemedev_app.deepEqual } = options ?? {};
14
+ const [_state, setState] = (0, react.useState)(() => selector(service.state));
15
+ (0, react.useEffect)(() => {
16
+ return service.subscribe((nextState) => {
17
+ setState(selector(nextState));
18
+ }, { equals: (first, next) => {
19
+ const _first = selector(first);
20
+ const _next = selector(next);
21
+ return equals(_first, _next);
22
+ } }).unsubscribe;
23
+ }, [
24
+ _state,
25
+ setState,
26
+ selector,
27
+ equals,
28
+ service
29
+ ]);
30
+ return _state;
31
+ }
32
+ //#endregion
33
+ exports.useState = useState;
34
+
35
+ //# sourceMappingURL=useState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useState.cjs","names":["deepEqual","useReactState"],"sources":["../src/useState.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app';\nimport { deepEqual } from '@bemedev/app';\nimport { useEffect, useState as useReactState } from 'react';\nimport type { UseServiceOptions } from './types';\n\n/**\n * A hook that creates a React state from a service with a subscribe function.\n *\n * @param service - The service containing the state and subscribe method.\n * @param options - Optional configuration options for selection and equality comparison.\n * @returns The selected state.\n */\nexport function useState<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n>(\n service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n },\n options?: UseServiceOptions<Tc, Ta, Eo, T>,\n): T {\n const {\n selector = (s: State<Eo, Tc, Ta>) => s as T,\n equals = deepEqual<T>,\n } = options ?? {};\n\n const [_state, setState] = useReactState<T>(() =>\n selector(service.state),\n );\n\n useEffect(() => {\n const sub = service.subscribe(\n nextState => {\n setState(selector(nextState));\n },\n {\n equals: (first, next) => {\n const _first = selector(first);\n const _next = selector(next);\n return equals(_first, _next);\n },\n },\n );\n\n return sub.unsubscribe;\n }, [_state, setState, selector, equals, service]);\n return _state;\n}\n"],"mappings":";;;;;;;;;;;AAiBA,SAAgB,SAMd,SAIA,SACG;CACH,MAAM,EACJ,YAAY,MAAyB,GACrC,SAASA,aAAAA,cACP,WAAW,CAAC;CAEhB,MAAM,CAAC,QAAQ,aAAA,GAAYC,MAAAA,SAAAA,OACzB,SAAS,QAAQ,KAAK,CACxB;CAEA,CAAA,GAAA,MAAA,UAAA,OAAgB;EAcd,OAbY,QAAQ,WAClB,cAAa;GACX,SAAS,SAAS,SAAS,CAAC;EAC9B,GACA,EACE,SAAS,OAAO,SAAS;GACvB,MAAM,SAAS,SAAS,KAAK;GAC7B,MAAM,QAAQ,SAAS,IAAI;GAC3B,OAAO,OAAO,QAAQ,KAAK;EAC7B,EACF,CAGO,CAAC,CAAC;CACb,GAAG;EAAC;EAAQ;EAAU;EAAU;EAAQ;CAAO,CAAC;CAChD,OAAO;AACT"}
@@ -0,0 +1,14 @@
1
+ import type { AddSubscriber_F, EventObject, PrimitiveObject, State } from '@bemedev/app';
2
+ import type { UseServiceOptions } from './types';
3
+ /**
4
+ * A hook that creates a React state from a service with a subscribe function.
5
+ *
6
+ * @param service - The service containing the state and subscribe method.
7
+ * @param options - Optional configuration options for selection and equality comparison.
8
+ * @returns The selected state.
9
+ */
10
+ export declare function useState<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject, T = State<Eo, Tc, Ta>>(service: {
11
+ subscribe: AddSubscriber_F<Tc, Ta, Eo>;
12
+ state: State<Eo, Tc, Ta>;
13
+ }, options?: UseServiceOptions<Tc, Ta, Eo, T>): T;
14
+ //# sourceMappingURL=useState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useState.d.ts","sourceRoot":"","sources":["../src/useState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,EACN,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,EAAE,SAAS,eAAe,EAC1B,EAAE,SAAS,MAAM,EACjB,EAAE,SAAS,WAAW,EACtB,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAErB,OAAO,EAAE;IACP,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC1B,EACD,OAAO,CAAC,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzC,CAAC,CA2BH"}
@@ -0,0 +1,34 @@
1
+ import { deepEqual } from "@bemedev/app";
2
+ import { useEffect, useState as useState$1 } from "react";
3
+ //#region src/useState.ts
4
+ /**
5
+ * A hook that creates a React state from a service with a subscribe function.
6
+ *
7
+ * @param service - The service containing the state and subscribe method.
8
+ * @param options - Optional configuration options for selection and equality comparison.
9
+ * @returns The selected state.
10
+ */
11
+ function useState(service, options) {
12
+ const { selector = (s) => s, equals = deepEqual } = options ?? {};
13
+ const [_state, setState] = useState$1(() => selector(service.state));
14
+ useEffect(() => {
15
+ return service.subscribe((nextState) => {
16
+ setState(selector(nextState));
17
+ }, { equals: (first, next) => {
18
+ const _first = selector(first);
19
+ const _next = selector(next);
20
+ return equals(_first, _next);
21
+ } }).unsubscribe;
22
+ }, [
23
+ _state,
24
+ setState,
25
+ selector,
26
+ equals,
27
+ service
28
+ ]);
29
+ return _state;
30
+ }
31
+ //#endregion
32
+ export { useState };
33
+
34
+ //# sourceMappingURL=useState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useState.js","names":["useReactState"],"sources":["../src/useState.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app';\nimport { deepEqual } from '@bemedev/app';\nimport { useEffect, useState as useReactState } from 'react';\nimport type { UseServiceOptions } from './types';\n\n/**\n * A hook that creates a React state from a service with a subscribe function.\n *\n * @param service - The service containing the state and subscribe method.\n * @param options - Optional configuration options for selection and equality comparison.\n * @returns The selected state.\n */\nexport function useState<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n>(\n service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n },\n options?: UseServiceOptions<Tc, Ta, Eo, T>,\n): T {\n const {\n selector = (s: State<Eo, Tc, Ta>) => s as T,\n equals = deepEqual<T>,\n } = options ?? {};\n\n const [_state, setState] = useReactState<T>(() =>\n selector(service.state),\n );\n\n useEffect(() => {\n const sub = service.subscribe(\n nextState => {\n setState(selector(nextState));\n },\n {\n equals: (first, next) => {\n const _first = selector(first);\n const _next = selector(next);\n return equals(_first, _next);\n },\n },\n );\n\n return sub.unsubscribe;\n }, [_state, setState, selector, equals, service]);\n return _state;\n}\n"],"mappings":";;;;;;;;;;AAiBA,SAAgB,SAMd,SAIA,SACG;CACH,MAAM,EACJ,YAAY,MAAyB,GACrC,SAAS,cACP,WAAW,CAAC;CAEhB,MAAM,CAAC,QAAQ,YAAYA,iBACzB,SAAS,QAAQ,KAAK,CACxB;CAEA,gBAAgB;EAcd,OAbY,QAAQ,WAClB,cAAa;GACX,SAAS,SAAS,SAAS,CAAC;EAC9B,GACA,EACE,SAAS,OAAO,SAAS;GACvB,MAAM,SAAS,SAAS,KAAK;GAC7B,MAAM,QAAQ,SAAS,IAAI;GAC3B,OAAO,OAAO,QAAQ,KAAK;EAC7B,EACF,CAGO,CAAC,CAAC;CACb,GAAG;EAAC;EAAQ;EAAU;EAAU;EAAQ;CAAO,CAAC;CAChD,OAAO;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bemedev/app-reactjs",
3
- "version": "1.8.0",
3
+ "version": "1.9.1",
4
4
  "description": "Middleware between @bemedev/app and reactjs",
5
5
  "keywords": [
6
6
  "app",
@@ -47,13 +47,13 @@
47
47
  "@bemedev/decompose": "2.3.0",
48
48
  "@bemedev/dev-utils": "^1.1.1",
49
49
  "@bemedev/sleep": "^0.2.2",
50
- "@size-limit/file": "^13.0.2",
50
+ "@size-limit/file": "^13.0.3",
51
51
  "@testing-library/jest-dom": "^7.0.0",
52
52
  "@testing-library/react": "^16.3.2",
53
53
  "@testing-library/user-event": "^14.6.1",
54
54
  "@types/node": "^26.1.2",
55
- "@types/react": "^19.2.17",
56
- "@types/react-dom": "^19.2.3",
55
+ "@types/react": "^19.2.18",
56
+ "@types/react-dom": "^19.2.4",
57
57
  "@vitest/coverage-v8": "^4.1.10",
58
58
  "@vitest/ui": "4.1.10",
59
59
  "glob": "^13.0.6",
@@ -68,18 +68,18 @@
68
68
  "react": "^19.2.8",
69
69
  "react-dom": "^19.2.8",
70
70
  "rolldown": "1.2.1",
71
- "rolldown-plugin-dts": "^0.27.14",
72
- "size-limit": "^13.0.2",
71
+ "rolldown-plugin-dts": "^0.28.0",
72
+ "size-limit": "^13.0.3",
73
73
  "tslib": "^2.8.1",
74
74
  "tsx": "^4.23.1",
75
75
  "typescript": "^6.0.3",
76
76
  "vitest": "^4.1.10",
77
- "@bemedev/app": "^1.8.0",
78
- "@bemedev/app-vitest": "^1.8.0"
77
+ "@bemedev/app": "^1.9.1",
78
+ "@bemedev/app-vitest": "^1.9.1"
79
79
  },
80
80
  "peerDependencies": {
81
81
  "react": "^19.2.8",
82
- "@bemedev/app": "^1.8.0"
82
+ "@bemedev/app": "^1.9.1"
83
83
  },
84
84
  "size-limit": [
85
85
  {