@bemedev/app-reactjs 1.9.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
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,26 +1,18 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- let _bemedev_app = require("@bemedev/app");
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 options - Optional configuration options for selection and equality comparison.
10
- * @returns The selected state.
11
- */
12
- function useService(service, options) {
13
- const { selector = (s) => s, equality = (first, next) => (0, _bemedev_app.deepEqual)(first, next) } = options ?? {};
14
- const [state, setState] = (0, react.useState)(() => selector(service.state));
15
- const sub = service.subscribe((nextState) => setState(selector(nextState)), { equals: (first, next) => {
16
- const _first = selector(first);
17
- const _next = selector(next);
18
- return equality(_first, _next);
19
- } });
20
- (0, react.useEffect)(() => sub.unsubscribe, []);
21
- 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
+ };
22
12
  }
13
+ const createHooks = useService;
23
14
  //#endregion
15
+ exports.createHooks = createHooks;
24
16
  exports.useService = useService;
25
17
 
26
18
  //# sourceMappingURL=useService.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useService.cjs","names":["deepEqual","useState"],"sources":["../src/useService.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 } from 'react';\n\nexport type UseServiceOptions<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n> = {\n selector?: (state: State<Eo, Tc, Ta>) => T;\n equality?: (first: T, next: T) => boolean;\n};\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 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 options?: UseServiceOptions<Tc, Ta, Eo, T>,\n): T {\n const {\n selector = (s: State<Eo, Tc, Ta>) => s as T,\n equality = (first: T, next: T) => deepEqual(first, next),\n } = options ?? {};\n\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 equality(_first, _next);\n },\n },\n );\n\n useEffect(() => sub.unsubscribe, []);\n return state;\n}\n"],"mappings":";;;;;;;;;;;AA0BA,SAAgB,WAMd,SAIA,SACG;CACH,MAAM,EACJ,YAAY,MAAyB,GACrC,YAAY,OAAU,UAAA,GAAYA,aAAAA,UAAAA,CAAU,OAAO,IAAI,MACrD,WAAW,CAAC;CAEhB,MAAM,CAAC,OAAO,aAAA,GAAYC,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,OAAO,SAAS,QAAQ,KAAK;CAC/B,EACF,CACF;CAEA,CAAA,GAAA,MAAA,UAAA,OAAgB,IAAI,aAAa,CAAC,CAAC;CACnC,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,17 +1,19 @@
1
1
  import type { AddSubscriber_F, EventObject, PrimitiveObject, State } 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
- equality?: (first: T, next: T) => boolean;
5
- };
6
- /**
7
- * A hook that creates a React state from a service with a subscribe function.
8
- *
9
- * @param service - The service containing the state and subscribe method.
10
- * @param options - Optional configuration options for selection and equality comparison.
11
- * @returns The selected state.
12
- */
13
- export declare function useService<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject, T = State<Eo, Tc, Ta>>(service: {
2
+ import type { UseServiceOptions } from './types';
3
+ export declare function useService<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject>(service: {
14
4
  subscribe: AddSubscriber_F<Tc, Ta, Eo>;
15
5
  state: State<Eo, Tc, Ta>;
16
- }, options?: UseServiceOptions<Tc, Ta, Eo, 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;
17
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,cAAc,CAAC;AAItB,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,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;CAC3C,CAAC;AAEF;;;;;;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,OAAO,CAAC,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzC,CAAC,CAqBH"}
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,25 +1,16 @@
1
- import { deepEqual } from "@bemedev/app";
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 options - Optional configuration options for selection and equality comparison.
9
- * @returns The selected state.
10
- */
11
- function useService(service, options) {
12
- const { selector = (s) => s, equality = (first, next) => deepEqual(first, next) } = options ?? {};
13
- const [state, setState] = 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 equality(_first, _next);
18
- } });
19
- useEffect(() => sub.unsubscribe, []);
20
- return state;
5
+ function useService(service) {
6
+ return {
7
+ state: (options) => useState(service, options),
8
+ can: useCan(service),
9
+ isInside: useIsInside(service)
10
+ };
21
11
  }
12
+ const createHooks = useService;
22
13
  //#endregion
23
- export { useService };
14
+ export { createHooks, useService };
24
15
 
25
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';\nimport { deepEqual } from '@bemedev/app';\nimport { useEffect, useState } from 'react';\n\nexport type UseServiceOptions<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n> = {\n selector?: (state: State<Eo, Tc, Ta>) => T;\n equality?: (first: T, next: T) => boolean;\n};\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 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 options?: UseServiceOptions<Tc, Ta, Eo, T>,\n): T {\n const {\n selector = (s: State<Eo, Tc, Ta>) => s as T,\n equality = (first: T, next: T) => deepEqual(first, next),\n } = options ?? {};\n\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 equality(_first, _next);\n },\n },\n );\n\n useEffect(() => sub.unsubscribe, []);\n return state;\n}\n"],"mappings":";;;;;;;;;;AA0BA,SAAgB,WAMd,SAIA,SACG;CACH,MAAM,EACJ,YAAY,MAAyB,GACrC,YAAY,OAAU,SAAY,UAAU,OAAO,IAAI,MACrD,WAAW,CAAC;CAEhB,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,SAAS,QAAQ,KAAK;CAC/B,EACF,CACF;CAEA,gBAAgB,IAAI,aAAa,CAAC,CAAC;CACnC,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.9.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.9.0",
78
- "@bemedev/app-vitest": "^1.9.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.9.0"
82
+ "@bemedev/app": "^1.9.1"
83
83
  },
84
84
  "size-limit": [
85
85
  {