@bemedev/app-reactjs 1.9.3 → 1.9.5
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/lib/useCan.cjs +6 -11
- package/lib/useCan.cjs.map +1 -1
- package/lib/useCan.d.ts +1 -1
- package/lib/useCan.d.ts.map +1 -1
- package/lib/useCan.js +6 -11
- package/lib/useCan.js.map +1 -1
- package/lib/useIsInside.cjs +6 -7
- package/lib/useIsInside.cjs.map +1 -1
- package/lib/useIsInside.d.ts.map +1 -1
- package/lib/useIsInside.js +6 -7
- package/lib/useIsInside.js.map +1 -1
- package/lib/useService.cjs.map +1 -1
- package/lib/useService.d.ts +1 -1
- package/lib/useService.d.ts.map +1 -1
- package/lib/useService.js.map +1 -1
- package/lib/useState.cjs +9 -11
- package/lib/useState.cjs.map +1 -1
- package/lib/useState.d.ts.map +1 -1
- package/lib/useState.js +9 -11
- package/lib/useState.js.map +1 -1
- package/package.json +12 -9
package/lib/useCan.cjs
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
let _bemedev_app_utils = require("@bemedev/app/utils");
|
|
3
|
-
let
|
|
3
|
+
let _bemedev_react_sync = require("@bemedev/react-sync");
|
|
4
4
|
let _bemedev_app_bemedev = require("@bemedev/app/bemedev");
|
|
5
5
|
//#region src/useCan.ts
|
|
6
6
|
function useCan(service) {
|
|
7
|
-
const dispatch = (matcher) => {
|
|
8
|
-
return (
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const [_state, setState] = (0, react.useState)(selector(service.state));
|
|
13
|
-
const sub = service.subscribe(() => setState(selector(service.state)), { equals: (first, next) => (0, _bemedev_app_utils.deepEqual)(first.value, next.value) });
|
|
14
|
-
(0, react.useEffect)(() => sub.unsubscribe, []);
|
|
15
|
-
return _state;
|
|
16
|
-
};
|
|
7
|
+
const dispatch = (matcher) => (...events) => {
|
|
8
|
+
return (0, _bemedev_react_sync.useSync)((listener) => {
|
|
9
|
+
const { unsubscribe } = service.subscribe(listener, { equals: (first, next) => (0, _bemedev_app_utils.deepEqual)(first.value, next.value) });
|
|
10
|
+
return unsubscribe;
|
|
11
|
+
}, () => service.state, () => service.state, () => events[matcher]((event) => service.canEvents(event)));
|
|
17
12
|
};
|
|
18
13
|
const or = dispatch("some");
|
|
19
14
|
const and = dispatch("every");
|
package/lib/useCan.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCan.cjs","names":["
|
|
1
|
+
{"version":3,"file":"useCan.cjs","names":["useSync","deepEqual","expandFn"],"sources":["../src/useCan.ts"],"sourcesContent":["import {\n type AddSubscriber_F,\n type EventObject,\n type PrimitiveObject,\n type State,\n} from '@bemedev/app';\nimport { expandFn } from '@bemedev/app/bemedev';\nimport { deepEqual } from '@bemedev/app/utils';\nimport { useSync } from '@bemedev/react-sync';\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 canEvents: (...events: Eo['type'][]) => boolean;\n}) {\n const dispatch =\n (matcher: 'some' | 'every') =>\n (...events: Eo['type'][]) => {\n return useSync(\n listener => {\n const { unsubscribe } = service.subscribe(listener, {\n equals: (first, next) => deepEqual(first.value, next.value),\n });\n return unsubscribe;\n },\n () => service.state,\n () => service.state,\n () => events[matcher](event => service.canEvents(event)),\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,OAId,SAIC;CACD,MAAM,YACH,aACA,GAAG,WAAyB;EAC3B,QAAA,GAAOA,oBAAAA,QAAAA,EACL,aAAY;GACV,MAAM,EAAE,gBAAgB,QAAQ,UAAU,UAAU,EAClD,SAAS,OAAO,UAAA,GAASC,mBAAAA,UAAAA,CAAU,MAAM,OAAO,KAAK,KAAK,EAC5D,CAAC;GACD,OAAO;EACT,SACM,QAAQ,aACR,QAAQ,aACR,OAAO,QAAQ,EAAC,UAAS,QAAQ,UAAU,KAAK,CAAC,CACzD;CACF;CAEF,MAAM,KAAK,SAAS,MAAM;CAC1B,MAAM,MAAM,SAAS,OAAO;CAE5B,QAAA,GADYC,qBAAAA,SAAAA,CAAS,KAAK;EAAE;EAAI;CAAI,CAC3B;AACX"}
|
package/lib/useCan.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type AddSubscriber_F, type EventObject, type PrimitiveObject, type Stat
|
|
|
2
2
|
export declare function useCan<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject>(service: {
|
|
3
3
|
subscribe: AddSubscriber_F<Tc, Ta, Eo>;
|
|
4
4
|
state: State<Eo, Tc, Ta>;
|
|
5
|
-
|
|
5
|
+
canEvents: (...events: Eo['type'][]) => boolean;
|
|
6
6
|
}): import("@bemedev/app/bemedev").FnBasic<(...events: Eo["type"][]) => boolean, {
|
|
7
7
|
readonly or: (...events: Eo["type"][]) => boolean;
|
|
8
8
|
readonly and: (...events: Eo["type"][]) => boolean;
|
package/lib/useCan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCan.d.ts","sourceRoot":"","sources":["../src/useCan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,KAAK,EACX,MAAM,cAAc,CAAC;AAKtB,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,
|
|
1
|
+
{"version":3,"file":"useCan.d.ts","sourceRoot":"","sources":["../src/useCan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,KAAK,EACX,MAAM,cAAc,CAAC;AAKtB,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,SAAS,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC;CACjD,sDAGe,EAAE,CAAC,MAAM,CAAC,EAAE;6BAAZ,EAAE,CAAC,MAAM,CAAC,EAAE;8BAAZ,EAAE,CAAC,MAAM,CAAC,EAAE;GAkB3B"}
|
package/lib/useCan.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import { deepEqual } from "@bemedev/app/utils";
|
|
2
|
-
import {
|
|
2
|
+
import { useSync } from "@bemedev/react-sync";
|
|
3
3
|
import { expandFn } from "@bemedev/app/bemedev";
|
|
4
4
|
//#region src/useCan.ts
|
|
5
5
|
function useCan(service) {
|
|
6
|
-
const dispatch = (matcher) => {
|
|
7
|
-
return (
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const [_state, setState] = useState(selector(service.state));
|
|
12
|
-
const sub = service.subscribe(() => setState(selector(service.state)), { equals: (first, next) => deepEqual(first.value, next.value) });
|
|
13
|
-
useEffect(() => sub.unsubscribe, []);
|
|
14
|
-
return _state;
|
|
15
|
-
};
|
|
6
|
+
const dispatch = (matcher) => (...events) => {
|
|
7
|
+
return useSync((listener) => {
|
|
8
|
+
const { unsubscribe } = service.subscribe(listener, { equals: (first, next) => deepEqual(first.value, next.value) });
|
|
9
|
+
return unsubscribe;
|
|
10
|
+
}, () => service.state, () => service.state, () => events[matcher]((event) => service.canEvents(event)));
|
|
16
11
|
};
|
|
17
12
|
const or = dispatch("some");
|
|
18
13
|
const and = dispatch("every");
|
package/lib/useCan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCan.js","names":[],"sources":["../src/useCan.ts"],"sourcesContent":["import {\n type AddSubscriber_F,\n type EventObject,\n type PrimitiveObject,\n type State,\n} from '@bemedev/app';\nimport { expandFn } from '@bemedev/app/bemedev';\nimport { deepEqual } from '@bemedev/app/utils';\nimport {
|
|
1
|
+
{"version":3,"file":"useCan.js","names":[],"sources":["../src/useCan.ts"],"sourcesContent":["import {\n type AddSubscriber_F,\n type EventObject,\n type PrimitiveObject,\n type State,\n} from '@bemedev/app';\nimport { expandFn } from '@bemedev/app/bemedev';\nimport { deepEqual } from '@bemedev/app/utils';\nimport { useSync } from '@bemedev/react-sync';\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 canEvents: (...events: Eo['type'][]) => boolean;\n}) {\n const dispatch =\n (matcher: 'some' | 'every') =>\n (...events: Eo['type'][]) => {\n return useSync(\n listener => {\n const { unsubscribe } = service.subscribe(listener, {\n equals: (first, next) => deepEqual(first.value, next.value),\n });\n return unsubscribe;\n },\n () => service.state,\n () => service.state,\n () => events[matcher](event => service.canEvents(event)),\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,OAId,SAIC;CACD,MAAM,YACH,aACA,GAAG,WAAyB;EAC3B,OAAO,SACL,aAAY;GACV,MAAM,EAAE,gBAAgB,QAAQ,UAAU,UAAU,EAClD,SAAS,OAAO,SAAS,UAAU,MAAM,OAAO,KAAK,KAAK,EAC5D,CAAC;GACD,OAAO;EACT,SACM,QAAQ,aACR,QAAQ,aACR,OAAO,QAAQ,EAAC,UAAS,QAAQ,UAAU,KAAK,CAAC,CACzD;CACF;CAEF,MAAM,KAAK,SAAS,MAAM;CAC1B,MAAM,MAAM,SAAS,OAAO;CAE5B,OADY,SAAS,KAAK;EAAE;EAAI;CAAI,CAC3B;AACX"}
|
package/lib/useIsInside.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
let _bemedev_app_utils = require("@bemedev/app/utils");
|
|
3
|
-
let
|
|
3
|
+
let _bemedev_react_sync = require("@bemedev/react-sync");
|
|
4
4
|
let _bemedev_app_bemedev = require("@bemedev/app/bemedev");
|
|
5
5
|
//#region src/useIsInside.ts
|
|
6
6
|
function useIsInside(service) {
|
|
@@ -9,13 +9,12 @@ function useIsInside(service) {
|
|
|
9
9
|
};
|
|
10
10
|
const dispatch = (matcher) => {
|
|
11
11
|
return (...states) => {
|
|
12
|
-
|
|
12
|
+
return (0, _bemedev_react_sync.useSync)((listener) => {
|
|
13
|
+
const { unsubscribe } = service.subscribe(listener, { equals: (first, next) => (0, _bemedev_app_utils.deepEqual)(first.value, next.value) });
|
|
14
|
+
return unsubscribe;
|
|
15
|
+
}, () => service.state, () => service.state, (_state) => {
|
|
13
16
|
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) => setState(selector(nextState)), { equals: (first, next) => (0, _bemedev_app_utils.deepEqual)(first.value, next.value) });
|
|
17
|
-
(0, react.useEffect)(() => sub.unsubscribe, []);
|
|
18
|
-
return _state;
|
|
17
|
+
});
|
|
19
18
|
};
|
|
20
19
|
};
|
|
21
20
|
const or = dispatch("some");
|
package/lib/useIsInside.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsInside.cjs","names":["decomposeSV","
|
|
1
|
+
{"version":3,"file":"useIsInside.cjs","names":["decomposeSV","useSync","deepEqual","expandFn"],"sources":["../src/useIsInside.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app';\nimport { expandFn } from '@bemedev/app/bemedev';\nimport { decomposeSV, deepEqual } from '@bemedev/app/utils';\nimport { useSync } from '@bemedev/react-sync';\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 return useSync(\n listener => {\n const { unsubscribe } = service.subscribe(listener, {\n equals: (first, next) => deepEqual(first.value, next.value),\n });\n return unsubscribe;\n },\n () => service.state,\n () => service.state,\n _state => {\n return states[matcher](state =>\n selector1(_state).includes(state),\n );\n },\n );\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,mBAAAA,YAAAA,CAAY,OAAO,KAAK;CACjC;CAEA,MAAM,YAAY,YAA8B;EAC9C,QAAQ,GAAG,WAAqB;GAC9B,QAAA,GAAOC,oBAAAA,QAAAA,EACL,aAAY;IACV,MAAM,EAAE,gBAAgB,QAAQ,UAAU,UAAU,EAClD,SAAS,OAAO,UAAA,GAASC,mBAAAA,UAAAA,CAAU,MAAM,OAAO,KAAK,KAAK,EAC5D,CAAC;IACD,OAAO;GACT,SACM,QAAQ,aACR,QAAQ,QACd,WAAU;IACR,OAAO,OAAO,QAAQ,EAAC,UACrB,UAAU,MAAM,CAAC,CAAC,SAAS,KAAK,CAClC;GACF,CACF;EACF;CACF;CAEA,MAAM,KAAK,SAAS,MAAM;CAC1B,MAAM,MAAM,SAAS,OAAO;CAE5B,QAAA,GADYC,qBAAAA,SAAAA,CAAS,KAAK;EAAE;EAAI;CAAI,CAC3B;AACX"}
|
package/lib/useIsInside.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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;GAuB9B"}
|
package/lib/useIsInside.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { decomposeSV, deepEqual } from "@bemedev/app/utils";
|
|
2
|
-
import {
|
|
2
|
+
import { useSync } from "@bemedev/react-sync";
|
|
3
3
|
import { expandFn } from "@bemedev/app/bemedev";
|
|
4
4
|
//#region src/useIsInside.ts
|
|
5
5
|
function useIsInside(service) {
|
|
@@ -8,13 +8,12 @@ function useIsInside(service) {
|
|
|
8
8
|
};
|
|
9
9
|
const dispatch = (matcher) => {
|
|
10
10
|
return (...states) => {
|
|
11
|
-
|
|
11
|
+
return useSync((listener) => {
|
|
12
|
+
const { unsubscribe } = service.subscribe(listener, { equals: (first, next) => deepEqual(first.value, next.value) });
|
|
13
|
+
return unsubscribe;
|
|
14
|
+
}, () => service.state, () => service.state, (_state) => {
|
|
12
15
|
return states[matcher]((state) => selector1(_state).includes(state));
|
|
13
|
-
};
|
|
14
|
-
const [_state, setState] = useState(selector(service.state));
|
|
15
|
-
const sub = service.subscribe((nextState) => setState(selector(nextState)), { equals: (first, next) => deepEqual(first.value, next.value) });
|
|
16
|
-
useEffect(() => sub.unsubscribe, []);
|
|
17
|
-
return _state;
|
|
16
|
+
});
|
|
18
17
|
};
|
|
19
18
|
};
|
|
20
19
|
const or = dispatch("some");
|
package/lib/useIsInside.js.map
CHANGED
|
@@ -1 +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 {
|
|
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 { expandFn } from '@bemedev/app/bemedev';\nimport { decomposeSV, deepEqual } from '@bemedev/app/utils';\nimport { useSync } from '@bemedev/react-sync';\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 return useSync(\n listener => {\n const { unsubscribe } = service.subscribe(listener, {\n equals: (first, next) => deepEqual(first.value, next.value),\n });\n return unsubscribe;\n },\n () => service.state,\n () => service.state,\n _state => {\n return states[matcher](state =>\n selector1(_state).includes(state),\n );\n },\n );\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,OAAO,SACL,aAAY;IACV,MAAM,EAAE,gBAAgB,QAAQ,UAAU,UAAU,EAClD,SAAS,OAAO,SAAS,UAAU,MAAM,OAAO,KAAK,KAAK,EAC5D,CAAC;IACD,OAAO;GACT,SACM,QAAQ,aACR,QAAQ,QACd,WAAU;IACR,OAAO,OAAO,QAAQ,EAAC,UACrB,UAAU,MAAM,CAAC,CAAC,SAAS,KAAK,CAClC;GACF,CACF;EACF;CACF;CAEA,MAAM,KAAK,SAAS,MAAM;CAC1B,MAAM,MAAM,SAAS,OAAO;CAE5B,OADY,SAAS,KAAK;EAAE;EAAI;CAAI,CAC3B;AACX"}
|
package/lib/useService.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
|
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 canEvents: (...events: 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"}
|
package/lib/useService.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { UseServiceOptions } from './types';
|
|
|
3
3
|
export declare function useService<Tc extends PrimitiveObject, Ta extends string, Eo extends EventObject>(service: {
|
|
4
4
|
subscribe: AddSubscriber_F<Tc, Ta, Eo>;
|
|
5
5
|
state: State<Eo, Tc, Ta>;
|
|
6
|
-
|
|
6
|
+
canEvents: (...events: Eo['type'][]) => boolean;
|
|
7
7
|
}): {
|
|
8
8
|
state: <T = State<Eo, Tc, Ta>>(options?: UseServiceOptions<Tc, Ta, Eo, T>) => T;
|
|
9
9
|
can: import("@bemedev/app/bemedev").FnBasic<(...events: Eo["type"][]) => boolean, {
|
package/lib/useService.d.ts.map
CHANGED
|
@@ -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;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,
|
|
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,SAAS,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC;CACjD;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.map
CHANGED
|
@@ -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 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
|
|
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 canEvents: (...events: 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"}
|
package/lib/useState.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
let _bemedev_app_utils = require("@bemedev/app/utils");
|
|
3
|
-
let
|
|
3
|
+
let _bemedev_react_sync = require("@bemedev/react-sync");
|
|
4
4
|
//#region src/useState.ts
|
|
5
5
|
/**
|
|
6
6
|
* A hook that creates a React state from a service with a subscribe function.
|
|
@@ -11,16 +11,14 @@ let react = require("react");
|
|
|
11
11
|
*/
|
|
12
12
|
function useState(service, options) {
|
|
13
13
|
const { selector = (s) => s, equals = _bemedev_app_utils.deepEqual } = options ?? {};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return
|
|
21
|
-
}
|
|
22
|
-
(0, react.useEffect)(() => sub.unsubscribe, []);
|
|
23
|
-
return _state;
|
|
14
|
+
return (0, _bemedev_react_sync.useSync)((listener) => {
|
|
15
|
+
const { unsubscribe } = service.subscribe(listener, { equals: (prev, next) => {
|
|
16
|
+
const _prev = selector(prev);
|
|
17
|
+
const _next = selector(next);
|
|
18
|
+
return equals(_prev, _next);
|
|
19
|
+
} });
|
|
20
|
+
return unsubscribe;
|
|
21
|
+
}, () => service.state, () => service.state, selector, equals);
|
|
24
22
|
}
|
|
25
23
|
//#endregion
|
|
26
24
|
exports.useState = useState;
|
package/lib/useState.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useState.cjs","names":["deepEqual","
|
|
1
|
+
{"version":3,"file":"useState.cjs","names":["deepEqual","useSync"],"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/utils';\nimport { useSync } from '@bemedev/react-sync';\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 return useSync(\n listener => {\n const { unsubscribe } = service.subscribe(listener, {\n equals: (prev, next) => {\n const _prev = selector(prev);\n const _next = selector(next);\n return equals(_prev, _next);\n },\n });\n return unsubscribe;\n },\n () => service.state,\n () => service.state,\n selector,\n equals,\n );\n}\n"],"mappings":";;;;;;;;;;;AAiBA,SAAgB,SAMd,SAIA,SACG;CACH,MAAM,EACJ,YAAY,MAAyB,GACrC,SAASA,mBAAAA,cACP,WAAW,CAAC;CAEhB,QAAA,GAAOC,oBAAAA,QAAAA,EACL,aAAY;EACV,MAAM,EAAE,gBAAgB,QAAQ,UAAU,UAAU,EAClD,SAAS,MAAM,SAAS;GACtB,MAAM,QAAQ,SAAS,IAAI;GAC3B,MAAM,QAAQ,SAAS,IAAI;GAC3B,OAAO,OAAO,OAAO,KAAK;EAC5B,EACF,CAAC;EACD,OAAO;CACT,SACM,QAAQ,aACR,QAAQ,OACd,UACA,MACF;AACF"}
|
package/lib/useState.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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,CAsBH"}
|
package/lib/useState.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { deepEqual } from "@bemedev/app/utils";
|
|
2
|
-
import {
|
|
2
|
+
import { useSync } from "@bemedev/react-sync";
|
|
3
3
|
//#region src/useState.ts
|
|
4
4
|
/**
|
|
5
5
|
* A hook that creates a React state from a service with a subscribe function.
|
|
@@ -10,16 +10,14 @@ import { useCallback, useEffect, useState as useState$1 } from "react";
|
|
|
10
10
|
*/
|
|
11
11
|
function useState(service, options) {
|
|
12
12
|
const { selector = (s) => s, equals = deepEqual } = options ?? {};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return
|
|
20
|
-
}
|
|
21
|
-
useEffect(() => sub.unsubscribe, []);
|
|
22
|
-
return _state;
|
|
13
|
+
return useSync((listener) => {
|
|
14
|
+
const { unsubscribe } = service.subscribe(listener, { equals: (prev, next) => {
|
|
15
|
+
const _prev = selector(prev);
|
|
16
|
+
const _next = selector(next);
|
|
17
|
+
return equals(_prev, _next);
|
|
18
|
+
} });
|
|
19
|
+
return unsubscribe;
|
|
20
|
+
}, () => service.state, () => service.state, selector, equals);
|
|
23
21
|
}
|
|
24
22
|
//#endregion
|
|
25
23
|
export { useState };
|
package/lib/useState.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useState.js","names":[
|
|
1
|
+
{"version":3,"file":"useState.js","names":[],"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/utils';\nimport { useSync } from '@bemedev/react-sync';\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 return useSync(\n listener => {\n const { unsubscribe } = service.subscribe(listener, {\n equals: (prev, next) => {\n const _prev = selector(prev);\n const _next = selector(next);\n return equals(_prev, _next);\n },\n });\n return unsubscribe;\n },\n () => service.state,\n () => service.state,\n selector,\n equals,\n );\n}\n"],"mappings":";;;;;;;;;;AAiBA,SAAgB,SAMd,SAIA,SACG;CACH,MAAM,EACJ,YAAY,MAAyB,GACrC,SAAS,cACP,WAAW,CAAC;CAEhB,OAAO,SACL,aAAY;EACV,MAAM,EAAE,gBAAgB,QAAQ,UAAU,UAAU,EAClD,SAAS,MAAM,SAAS;GACtB,MAAM,QAAQ,SAAS,IAAI;GAC3B,MAAM,QAAQ,SAAS,IAAI;GAC3B,OAAO,OAAO,OAAO,KAAK;EAC5B,EACF,CAAC;EACD,OAAO;CACT,SACM,QAAQ,aACR,QAAQ,OACd,UACA,MACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bemedev/app-reactjs",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.5",
|
|
4
4
|
"description": "Middleware between @bemedev/app and reactjs",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"app",
|
|
@@ -61,25 +61,25 @@
|
|
|
61
61
|
"husky": "^9.1.7",
|
|
62
62
|
"jsdom": "^30.0.1",
|
|
63
63
|
"onchange": "^7.1.0",
|
|
64
|
-
"oxfmt": "^0.
|
|
65
|
-
"oxlint": "^1.
|
|
64
|
+
"oxfmt": "^0.62.0",
|
|
65
|
+
"oxlint": "^1.77.0",
|
|
66
66
|
"prettier": "^3.9.6",
|
|
67
67
|
"pretty-quick": "^4.2.2",
|
|
68
68
|
"react": "^19.2.8",
|
|
69
69
|
"react-dom": "^19.2.8",
|
|
70
|
-
"rolldown": "1.2.
|
|
70
|
+
"rolldown": "1.2.2",
|
|
71
71
|
"rolldown-plugin-dts": "^0.28.0",
|
|
72
72
|
"size-limit": "^13.0.3",
|
|
73
73
|
"tslib": "^2.8.1",
|
|
74
|
-
"tsx": "^4.23.
|
|
75
|
-
"typescript": "
|
|
74
|
+
"tsx": "^4.23.5",
|
|
75
|
+
"typescript": "6.0.3",
|
|
76
76
|
"vitest": "^4.1.10",
|
|
77
|
-
"@bemedev/app": "^1.9.
|
|
78
|
-
"@bemedev/app-vitest": "^1.9.
|
|
77
|
+
"@bemedev/app": "^1.9.4",
|
|
78
|
+
"@bemedev/app-vitest": "^1.9.4"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
81
|
"react": "^19.2.8",
|
|
82
|
-
"@bemedev/app": "^1.9.
|
|
82
|
+
"@bemedev/app": "^1.9.4"
|
|
83
83
|
},
|
|
84
84
|
"size-limit": [
|
|
85
85
|
{
|
|
@@ -94,6 +94,9 @@
|
|
|
94
94
|
"engines": {
|
|
95
95
|
"node": ">=24"
|
|
96
96
|
},
|
|
97
|
+
"dependencies": {
|
|
98
|
+
"@bemedev/react-sync": "^0.1.1"
|
|
99
|
+
},
|
|
97
100
|
"scripts": {
|
|
98
101
|
"build": "pnpm run rm:lib && pnpm run rolldown",
|
|
99
102
|
"_ci": "pnpm run lint && pnpm run test",
|