@hf-chimera/react 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
let _hf_chimera_adapters_shared = require("@hf-chimera/adapters-shared");
|
|
2
|
-
let _hf_chimera_query_builder = require("@hf-chimera/query-builder");
|
|
3
2
|
let react = require("react");
|
|
4
3
|
|
|
5
4
|
//#region hooks.ts
|
|
@@ -24,7 +23,6 @@ const useSubscribedValue = (value, events) => {
|
|
|
24
23
|
return value;
|
|
25
24
|
};
|
|
26
25
|
function createChimeraStoreHooks(store, createQueryBuilder) {
|
|
27
|
-
createQueryBuilder ||= () => new _hf_chimera_query_builder.DefaultChimeraQueryBuilder();
|
|
28
26
|
return {
|
|
29
27
|
[`useChimera${capitalize(store.name)}Store`]: () => useSubscribedValue(store, _hf_chimera_adapters_shared.CHIMERA_ENTITY_STORE_UPDATE_EVENTS),
|
|
30
28
|
[`useChimera${capitalize(store.name)}Collection`]: (params, deps) => {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["CHIMERA_ENTITY_STORE_UPDATE_EVENTS","CHIMERA_COLLECTION_UPDATE_EVENTS","CHIMERA_ITEM_UPDATE_EVENTS"],"sources":["../hooks.ts"],"sourcesContent":["import {\n\ttype AnyChimeraParams,\n\tCHIMERA_COLLECTION_UPDATE_EVENTS,\n\tCHIMERA_ENTITY_STORE_UPDATE_EVENTS,\n\tCHIMERA_ITEM_UPDATE_EVENTS,\n\ttype ChimeraQueryBuilder,\n\tnormalizeParams,\n} from \"@hf-chimera/adapters-shared\";\nimport type {\n\tAnyChimeraEntityStore,\n\tAnyChimeraEventEmitter,\n\tChimeraCollectionQuery,\n\tChimeraEntityId,\n\tChimeraEntityStoreEntity,\n\tChimeraEntityStoreName,\n\tChimeraEntityStoreOperatorsMap,\n\tChimeraEventEmitterEventNames,\n\tChimeraItemQuery,\n} from \"@hf-chimera/store\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\ntype ChimeraHooks<\n\tTStore extends AnyChimeraEntityStore,\n\tTQueryBuilder extends ChimeraQueryBuilder<TStore>,\n\tTEntityName extends ChimeraEntityStoreName<TStore> = ChimeraEntityStoreName<TStore>,\n> = {\n\t[K in TEntityName as `useChimera${Capitalize<K>}Store`]: () => TStore;\n} & {\n\t[K in TEntityName as `useChimera${Capitalize<K>}Collection`]: <Meta = any>(\n\t\tparams: AnyChimeraParams<TStore, Meta, Extract<TQueryBuilder, ChimeraQueryBuilder<TStore>>>,\n\t\tdeps?: unknown[],\n\t) => ChimeraCollectionQuery<TEntityName, ChimeraEntityStoreEntity<TStore>, ChimeraEntityStoreOperatorsMap<TStore>>;\n} & {\n\t[K in TEntityName as `useChimera${Capitalize<K>}Item`]: <Meta = any>(\n\t\tid: ChimeraEntityId,\n\t\tmeta?: Meta,\n\t) => ChimeraItemQuery<TEntityName, ChimeraEntityStoreEntity<TStore>>;\n};\n\nconst capitalize = <T extends string>(s: T): Capitalize<T> =>\n\ts !== \"\" ? (((s[0] as string).toUpperCase() + s.slice(1)) as Capitalize<T>) : (\"\" as Capitalize<T>);\n\nconst useSubscribedValue = <TEventEmitter extends AnyChimeraEventEmitter>(\n\tvalue: TEventEmitter,\n\tevents: ChimeraEventEmitterEventNames<TEventEmitter>[],\n): TEventEmitter => {\n\tconst trigger = useState(() => ({}))[1];\n\tuseEffect(() => {\n\t\tconst handler = () => trigger({});\n\t\tevents.forEach((event) => {\n\t\t\tvalue.on(event, handler);\n\t\t});\n\t\treturn () => {\n\t\t\tevents.forEach((event) => {\n\t\t\t\tvalue.off(event, handler);\n\t\t\t});\n\t\t};\n\t}, [value, events, trigger]);\n\treturn value;\n};\n\nexport function createChimeraStoreHooks<TStore extends AnyChimeraEntityStore>(\n\tstore: TStore,\n): ChimeraHooks<TStore, never>;\nexport function createChimeraStoreHooks<\n\tTStore extends AnyChimeraEntityStore,\n\tTQueryBuilder extends ChimeraQueryBuilder<TStore>,\n>(store: TStore, createQueryBuilder: () => TQueryBuilder): ChimeraHooks<TStore, TQueryBuilder>;\nexport function createChimeraStoreHooks<\n\tTStore extends AnyChimeraEntityStore,\n\tTQueryBuilder extends ChimeraQueryBuilder<TStore>,\n>(store: TStore, createQueryBuilder?: () => TQueryBuilder): ChimeraHooks<TStore, TQueryBuilder> {\n\treturn {\n\t\t[`useChimera${capitalize(store.name)}Store`]: () => useSubscribedValue(store, CHIMERA_ENTITY_STORE_UPDATE_EVENTS),\n\t\t[`useChimera${capitalize(store.name)}Collection`]: <TMeta = any>(\n\t\t\tparams: AnyChimeraParams<TStore, TMeta, Extract<TQueryBuilder, ChimeraQueryBuilder<TStore>>>,\n\t\t\tdeps?: unknown[],\n\t\t) => {\n\t\t\tconst oldDeps = useRef(deps);\n\t\t\tif ((oldDeps.current && !deps) || (!oldDeps.current && deps)) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`useChimera${capitalize(store.name)}Collection deps is not a reactive param!\\n` +\n\t\t\t\t\t\t\"Use deps if you want to control dependencies manually.\\n\" +\n\t\t\t\t\t\t\"Omit it if you already have a stable reference to params\",\n\t\t\t\t);\n\t\t\t}\n\t\t\toldDeps.current = deps;\n\n\t\t\tconst stableParams = useMemo(\n\t\t\t\t() => normalizeParams(createQueryBuilder, params),\n\t\t\t\t// biome-ignore lint/correctness/useExhaustiveDependencies: Very unlikely it will be changed over time, anyway warning for this already added.\n\t\t\t\tdeps ? deps : [params],\n\t\t\t);\n\n\t\t\treturn useSubscribedValue(\n\t\t\t\tuseMemo(() => store.getCollection(stableParams), [store, stableParams]),\n\t\t\t\tCHIMERA_COLLECTION_UPDATE_EVENTS,\n\t\t\t);\n\t\t},\n\t\t[`useChimera${capitalize(store.name)}Item`]: <Meta = any>(id: ChimeraEntityId, meta?: Meta) =>\n\t\t\tuseSubscribedValue(\n\t\t\t\tuseMemo(() => store.getItem(id, meta), [store, id, meta]),\n\t\t\t\tCHIMERA_ITEM_UPDATE_EVENTS,\n\t\t\t),\n\t} as ChimeraHooks<TStore, TQueryBuilder>;\n}\n"],"mappings":";;;;AAuCA,MAAM,cAAgC,MACrC,MAAM,KAAQ,EAAE,GAAc,aAAa,GAAG,EAAE,MAAM,EAAE,GAAuB;AAEhF,MAAM,sBACL,OACA,WACmB;CACnB,MAAM,qCAA0B,EAAE,EAAE,CAAC;AACrC,4BAAgB;EACf,MAAM,gBAAgB,QAAQ,EAAE,CAAC;AACjC,SAAO,SAAS,UAAU;AACzB,SAAM,GAAG,OAAO,QAAQ;IACvB;AACF,eAAa;AACZ,UAAO,SAAS,UAAU;AACzB,UAAM,IAAI,OAAO,QAAQ;KACxB;;IAED;EAAC;EAAO;EAAQ;EAAQ,CAAC;AAC5B,QAAO;;AAUR,SAAgB,wBAGd,OAAe,oBAA+E;AAC/F,QAAO;GACL,aAAa,WAAW,MAAM,KAAK,CAAC,eAAe,mBAAmB,OAAOA,+DAAmC;GAChH,aAAa,WAAW,MAAM,KAAK,CAAC,eACpC,QACA,SACI;GACJ,MAAM,4BAAiB,KAAK;AAC5B,OAAK,QAAQ,WAAW,CAAC,QAAU,CAAC,QAAQ,WAAW,KACtD,SAAQ,KACP,aAAa,WAAW,MAAM,KAAK,CAAC;0DAGpC;AAEF,WAAQ,UAAU;GAElB,MAAM,yFACiB,oBAAoB,OAAO,EAEjD,OAAO,OAAO,CAAC,OAAO,CACtB;AAED,UAAO,4CACQ,MAAM,cAAc,aAAa,EAAE,CAAC,OAAO,aAAa,CAAC,EACvEC,6DACA;;GAED,aAAa,WAAW,MAAM,KAAK,CAAC,SAAqB,IAAqB,SAC9E,4CACe,MAAM,QAAQ,IAAI,KAAK,EAAE;GAAC;GAAO;GAAI;GAAK,CAAC,EACzDC,uDACA;EACF"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { AnyChimeraParams } from "@hf-chimera/adapters-shared";
|
|
2
|
-
import { ChimeraQueryBuilder, DefaultChimeraQueryBuilder } from "@hf-chimera/query-builder";
|
|
1
|
+
import { AnyChimeraParams, ChimeraQueryBuilder } from "@hf-chimera/adapters-shared";
|
|
3
2
|
import { AnyChimeraEntityStore, ChimeraCollectionQuery, ChimeraEntityId, ChimeraEntityStoreEntity, ChimeraEntityStoreName, ChimeraEntityStoreOperatorsMap, ChimeraItemQuery } from "@hf-chimera/store";
|
|
4
3
|
|
|
5
4
|
//#region hooks.d.ts
|
|
6
5
|
type ChimeraHooks<TStore extends AnyChimeraEntityStore, TQueryBuilder extends ChimeraQueryBuilder<TStore>, TEntityName extends ChimeraEntityStoreName<TStore> = ChimeraEntityStoreName<TStore>> = { [K in TEntityName as `useChimera${Capitalize<K>}Store`]: () => TStore } & { [K in TEntityName as `useChimera${Capitalize<K>}Collection`]: <Meta = any>(params: AnyChimeraParams<TStore, Meta, Extract<TQueryBuilder, ChimeraQueryBuilder<TStore>>>, deps?: unknown[]) => ChimeraCollectionQuery<TEntityName, ChimeraEntityStoreEntity<TStore>, ChimeraEntityStoreOperatorsMap<TStore>> } & { [K in TEntityName as `useChimera${Capitalize<K>}Item`]: <Meta = any>(id: ChimeraEntityId, meta?: Meta) => ChimeraItemQuery<TEntityName, ChimeraEntityStoreEntity<TStore>> };
|
|
7
|
-
declare function createChimeraStoreHooks<TStore extends AnyChimeraEntityStore>(store: TStore): ChimeraHooks<TStore,
|
|
6
|
+
declare function createChimeraStoreHooks<TStore extends AnyChimeraEntityStore>(store: TStore): ChimeraHooks<TStore, never>;
|
|
8
7
|
declare function createChimeraStoreHooks<TStore extends AnyChimeraEntityStore, TQueryBuilder extends ChimeraQueryBuilder<TStore>>(store: TStore, createQueryBuilder: () => TQueryBuilder): ChimeraHooks<TStore, TQueryBuilder>;
|
|
9
8
|
//#endregion
|
|
10
9
|
export { createChimeraStoreHooks };
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../hooks.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../hooks.ts"],"sourcesContent":[],"mappings":";;;;KAqBK,4BACW,6CACO,oBAAoB,6BACtB,uBAAuB,UAAU,uBAAuB,mBAEtE,4BAA4B,WAAW,kBAAkB,QARrC,GAGtB,QAOE,WANS,IAAA,aAMmB,UANnB,CAM8B,CAN9B,CAAA,YAAA,GAAA,CAAA,OAAA,GAAA,CAAA,CAAA,MAAA,EAON,gBAPM,CAOW,MAPX,EAOmB,IAPnB,EAOyB,OAPzB,CAOiC,aAPjC,EAOgD,mBAPhD,CAOoE,MAPpE,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,EAAA,GASV,sBATU,CASa,WATb,EAS0B,wBAT1B,CASmD,MATnD,CAAA,EAS4D,8BAT5D,CAS2F,MAT3F,CAAA,CAAA,EAC2B,GAAA,QAUpC,WAVgB,IAAA,aAUY,UAVZ,CAUuB,CAVvB,CAAA,MAAA,GAAA,CAAA,OAAA,GAAA,CAAA,CAAA,EAAA,EAWjB,eAXiB,EAAA,IAAA,CAAA,EAYd,IAZc,EAAA,GAajB,gBAbiB,CAaA,WAbA,EAaa,wBAbb,CAasC,MAbtC,CAAA,CAAA,EACqB;AAAvB,iBAqCL,uBArCK,CAAA,eAqCkC,qBArClC,CAAA,CAAA,KAAA,EAsCb,MAtCa,CAAA,EAuClB,YAvCkB,CAuCL,MAvCK,EAAA,KAAA,CAAA;AAAwD,iBAwC7D,uBAxC6D,CAAA,eAyC7D,qBAzC6D,EAAA,sBA0CtD,mBA1CsD,CA0ClC,MA1CkC,CAAA,CAAA,CAAA,KAAA,EA2CpE,MA3CoE,EAAA,kBAAA,EAAA,GAAA,GA2ClC,aA3CkC,CAAA,EA2ClB,YA3CkB,CA2CL,MA3CK,EA2CG,aA3CH,CAAA"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { AnyChimeraParams } from "@hf-chimera/adapters-shared";
|
|
2
|
-
import { ChimeraQueryBuilder, DefaultChimeraQueryBuilder } from "@hf-chimera/query-builder";
|
|
1
|
+
import { AnyChimeraParams, ChimeraQueryBuilder } from "@hf-chimera/adapters-shared";
|
|
3
2
|
import { AnyChimeraEntityStore, ChimeraCollectionQuery, ChimeraEntityId, ChimeraEntityStoreEntity, ChimeraEntityStoreName, ChimeraEntityStoreOperatorsMap, ChimeraItemQuery } from "@hf-chimera/store";
|
|
4
3
|
|
|
5
4
|
//#region hooks.d.ts
|
|
6
5
|
type ChimeraHooks<TStore extends AnyChimeraEntityStore, TQueryBuilder extends ChimeraQueryBuilder<TStore>, TEntityName extends ChimeraEntityStoreName<TStore> = ChimeraEntityStoreName<TStore>> = { [K in TEntityName as `useChimera${Capitalize<K>}Store`]: () => TStore } & { [K in TEntityName as `useChimera${Capitalize<K>}Collection`]: <Meta = any>(params: AnyChimeraParams<TStore, Meta, Extract<TQueryBuilder, ChimeraQueryBuilder<TStore>>>, deps?: unknown[]) => ChimeraCollectionQuery<TEntityName, ChimeraEntityStoreEntity<TStore>, ChimeraEntityStoreOperatorsMap<TStore>> } & { [K in TEntityName as `useChimera${Capitalize<K>}Item`]: <Meta = any>(id: ChimeraEntityId, meta?: Meta) => ChimeraItemQuery<TEntityName, ChimeraEntityStoreEntity<TStore>> };
|
|
7
|
-
declare function createChimeraStoreHooks<TStore extends AnyChimeraEntityStore>(store: TStore): ChimeraHooks<TStore,
|
|
6
|
+
declare function createChimeraStoreHooks<TStore extends AnyChimeraEntityStore>(store: TStore): ChimeraHooks<TStore, never>;
|
|
8
7
|
declare function createChimeraStoreHooks<TStore extends AnyChimeraEntityStore, TQueryBuilder extends ChimeraQueryBuilder<TStore>>(store: TStore, createQueryBuilder: () => TQueryBuilder): ChimeraHooks<TStore, TQueryBuilder>;
|
|
9
8
|
//#endregion
|
|
10
9
|
export { createChimeraStoreHooks };
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../hooks.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../hooks.ts"],"sourcesContent":[],"mappings":";;;;KAqBK,4BACW,6CACO,oBAAoB,6BACtB,uBAAuB,UAAU,uBAAuB,mBAEtE,4BAA4B,WAAW,kBAAkB,QARrC,GAGtB,QAOE,WANS,IAAA,aAMmB,UANnB,CAM8B,CAN9B,CAAA,YAAA,GAAA,CAAA,OAAA,GAAA,CAAA,CAAA,MAAA,EAON,gBAPM,CAOW,MAPX,EAOmB,IAPnB,EAOyB,OAPzB,CAOiC,aAPjC,EAOgD,mBAPhD,CAOoE,MAPpE,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,EAAA,GASV,sBATU,CASa,WATb,EAS0B,wBAT1B,CASmD,MATnD,CAAA,EAS4D,8BAT5D,CAS2F,MAT3F,CAAA,CAAA,EAC2B,GAAA,QAUpC,WAVgB,IAAA,aAUY,UAVZ,CAUuB,CAVvB,CAAA,MAAA,GAAA,CAAA,OAAA,GAAA,CAAA,CAAA,EAAA,EAWjB,eAXiB,EAAA,IAAA,CAAA,EAYd,IAZc,EAAA,GAajB,gBAbiB,CAaA,WAbA,EAaa,wBAbb,CAasC,MAbtC,CAAA,CAAA,EACqB;AAAvB,iBAqCL,uBArCK,CAAA,eAqCkC,qBArClC,CAAA,CAAA,KAAA,EAsCb,MAtCa,CAAA,EAuClB,YAvCkB,CAuCL,MAvCK,EAAA,KAAA,CAAA;AAAwD,iBAwC7D,uBAxC6D,CAAA,eAyC7D,qBAzC6D,EAAA,sBA0CtD,mBA1CsD,CA0ClC,MA1CkC,CAAA,CAAA,CAAA,KAAA,EA2CpE,MA3CoE,EAAA,kBAAA,EAAA,GAAA,GA2ClC,aA3CkC,CAAA,EA2ClB,YA3CkB,CA2CL,MA3CK,EA2CG,aA3CH,CAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CHIMERA_COLLECTION_UPDATE_EVENTS, CHIMERA_ENTITY_STORE_UPDATE_EVENTS, CHIMERA_ITEM_UPDATE_EVENTS, normalizeParams } from "@hf-chimera/adapters-shared";
|
|
2
|
-
import { DefaultChimeraQueryBuilder } from "@hf-chimera/query-builder";
|
|
3
2
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
4
3
|
|
|
5
4
|
//#region hooks.ts
|
|
@@ -24,7 +23,6 @@ const useSubscribedValue = (value, events) => {
|
|
|
24
23
|
return value;
|
|
25
24
|
};
|
|
26
25
|
function createChimeraStoreHooks(store, createQueryBuilder) {
|
|
27
|
-
createQueryBuilder ||= () => new DefaultChimeraQueryBuilder();
|
|
28
26
|
return {
|
|
29
27
|
[`useChimera${capitalize(store.name)}Store`]: () => useSubscribedValue(store, CHIMERA_ENTITY_STORE_UPDATE_EVENTS),
|
|
30
28
|
[`useChimera${capitalize(store.name)}Collection`]: (params, deps) => {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../hooks.ts"],"sourcesContent":["import {\n\ttype AnyChimeraParams,\n\tCHIMERA_COLLECTION_UPDATE_EVENTS,\n\tCHIMERA_ENTITY_STORE_UPDATE_EVENTS,\n\tCHIMERA_ITEM_UPDATE_EVENTS,\n\tnormalizeParams,\n} from \"@hf-chimera/adapters-shared\";\nimport type {
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../hooks.ts"],"sourcesContent":["import {\n\ttype AnyChimeraParams,\n\tCHIMERA_COLLECTION_UPDATE_EVENTS,\n\tCHIMERA_ENTITY_STORE_UPDATE_EVENTS,\n\tCHIMERA_ITEM_UPDATE_EVENTS,\n\ttype ChimeraQueryBuilder,\n\tnormalizeParams,\n} from \"@hf-chimera/adapters-shared\";\nimport type {\n\tAnyChimeraEntityStore,\n\tAnyChimeraEventEmitter,\n\tChimeraCollectionQuery,\n\tChimeraEntityId,\n\tChimeraEntityStoreEntity,\n\tChimeraEntityStoreName,\n\tChimeraEntityStoreOperatorsMap,\n\tChimeraEventEmitterEventNames,\n\tChimeraItemQuery,\n} from \"@hf-chimera/store\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\ntype ChimeraHooks<\n\tTStore extends AnyChimeraEntityStore,\n\tTQueryBuilder extends ChimeraQueryBuilder<TStore>,\n\tTEntityName extends ChimeraEntityStoreName<TStore> = ChimeraEntityStoreName<TStore>,\n> = {\n\t[K in TEntityName as `useChimera${Capitalize<K>}Store`]: () => TStore;\n} & {\n\t[K in TEntityName as `useChimera${Capitalize<K>}Collection`]: <Meta = any>(\n\t\tparams: AnyChimeraParams<TStore, Meta, Extract<TQueryBuilder, ChimeraQueryBuilder<TStore>>>,\n\t\tdeps?: unknown[],\n\t) => ChimeraCollectionQuery<TEntityName, ChimeraEntityStoreEntity<TStore>, ChimeraEntityStoreOperatorsMap<TStore>>;\n} & {\n\t[K in TEntityName as `useChimera${Capitalize<K>}Item`]: <Meta = any>(\n\t\tid: ChimeraEntityId,\n\t\tmeta?: Meta,\n\t) => ChimeraItemQuery<TEntityName, ChimeraEntityStoreEntity<TStore>>;\n};\n\nconst capitalize = <T extends string>(s: T): Capitalize<T> =>\n\ts !== \"\" ? (((s[0] as string).toUpperCase() + s.slice(1)) as Capitalize<T>) : (\"\" as Capitalize<T>);\n\nconst useSubscribedValue = <TEventEmitter extends AnyChimeraEventEmitter>(\n\tvalue: TEventEmitter,\n\tevents: ChimeraEventEmitterEventNames<TEventEmitter>[],\n): TEventEmitter => {\n\tconst trigger = useState(() => ({}))[1];\n\tuseEffect(() => {\n\t\tconst handler = () => trigger({});\n\t\tevents.forEach((event) => {\n\t\t\tvalue.on(event, handler);\n\t\t});\n\t\treturn () => {\n\t\t\tevents.forEach((event) => {\n\t\t\t\tvalue.off(event, handler);\n\t\t\t});\n\t\t};\n\t}, [value, events, trigger]);\n\treturn value;\n};\n\nexport function createChimeraStoreHooks<TStore extends AnyChimeraEntityStore>(\n\tstore: TStore,\n): ChimeraHooks<TStore, never>;\nexport function createChimeraStoreHooks<\n\tTStore extends AnyChimeraEntityStore,\n\tTQueryBuilder extends ChimeraQueryBuilder<TStore>,\n>(store: TStore, createQueryBuilder: () => TQueryBuilder): ChimeraHooks<TStore, TQueryBuilder>;\nexport function createChimeraStoreHooks<\n\tTStore extends AnyChimeraEntityStore,\n\tTQueryBuilder extends ChimeraQueryBuilder<TStore>,\n>(store: TStore, createQueryBuilder?: () => TQueryBuilder): ChimeraHooks<TStore, TQueryBuilder> {\n\treturn {\n\t\t[`useChimera${capitalize(store.name)}Store`]: () => useSubscribedValue(store, CHIMERA_ENTITY_STORE_UPDATE_EVENTS),\n\t\t[`useChimera${capitalize(store.name)}Collection`]: <TMeta = any>(\n\t\t\tparams: AnyChimeraParams<TStore, TMeta, Extract<TQueryBuilder, ChimeraQueryBuilder<TStore>>>,\n\t\t\tdeps?: unknown[],\n\t\t) => {\n\t\t\tconst oldDeps = useRef(deps);\n\t\t\tif ((oldDeps.current && !deps) || (!oldDeps.current && deps)) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`useChimera${capitalize(store.name)}Collection deps is not a reactive param!\\n` +\n\t\t\t\t\t\t\"Use deps if you want to control dependencies manually.\\n\" +\n\t\t\t\t\t\t\"Omit it if you already have a stable reference to params\",\n\t\t\t\t);\n\t\t\t}\n\t\t\toldDeps.current = deps;\n\n\t\t\tconst stableParams = useMemo(\n\t\t\t\t() => normalizeParams(createQueryBuilder, params),\n\t\t\t\t// biome-ignore lint/correctness/useExhaustiveDependencies: Very unlikely it will be changed over time, anyway warning for this already added.\n\t\t\t\tdeps ? deps : [params],\n\t\t\t);\n\n\t\t\treturn useSubscribedValue(\n\t\t\t\tuseMemo(() => store.getCollection(stableParams), [store, stableParams]),\n\t\t\t\tCHIMERA_COLLECTION_UPDATE_EVENTS,\n\t\t\t);\n\t\t},\n\t\t[`useChimera${capitalize(store.name)}Item`]: <Meta = any>(id: ChimeraEntityId, meta?: Meta) =>\n\t\t\tuseSubscribedValue(\n\t\t\t\tuseMemo(() => store.getItem(id, meta), [store, id, meta]),\n\t\t\t\tCHIMERA_ITEM_UPDATE_EVENTS,\n\t\t\t),\n\t} as ChimeraHooks<TStore, TQueryBuilder>;\n}\n"],"mappings":";;;;AAuCA,MAAM,cAAgC,MACrC,MAAM,KAAQ,EAAE,GAAc,aAAa,GAAG,EAAE,MAAM,EAAE,GAAuB;AAEhF,MAAM,sBACL,OACA,WACmB;CACnB,MAAM,UAAU,gBAAgB,EAAE,EAAE,CAAC;AACrC,iBAAgB;EACf,MAAM,gBAAgB,QAAQ,EAAE,CAAC;AACjC,SAAO,SAAS,UAAU;AACzB,SAAM,GAAG,OAAO,QAAQ;IACvB;AACF,eAAa;AACZ,UAAO,SAAS,UAAU;AACzB,UAAM,IAAI,OAAO,QAAQ;KACxB;;IAED;EAAC;EAAO;EAAQ;EAAQ,CAAC;AAC5B,QAAO;;AAUR,SAAgB,wBAGd,OAAe,oBAA+E;AAC/F,QAAO;GACL,aAAa,WAAW,MAAM,KAAK,CAAC,eAAe,mBAAmB,OAAO,mCAAmC;GAChH,aAAa,WAAW,MAAM,KAAK,CAAC,eACpC,QACA,SACI;GACJ,MAAM,UAAU,OAAO,KAAK;AAC5B,OAAK,QAAQ,WAAW,CAAC,QAAU,CAAC,QAAQ,WAAW,KACtD,SAAQ,KACP,aAAa,WAAW,MAAM,KAAK,CAAC;0DAGpC;AAEF,WAAQ,UAAU;GAElB,MAAM,eAAe,cACd,gBAAgB,oBAAoB,OAAO,EAEjD,OAAO,OAAO,CAAC,OAAO,CACtB;AAED,UAAO,mBACN,cAAc,MAAM,cAAc,aAAa,EAAE,CAAC,OAAO,aAAa,CAAC,EACvE,iCACA;;GAED,aAAa,WAAW,MAAM,KAAK,CAAC,SAAqB,IAAqB,SAC9E,mBACC,cAAc,MAAM,QAAQ,IAAI,KAAK,EAAE;GAAC;GAAO;GAAI;GAAK,CAAC,EACzD,2BACA;EACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hf-chimera/react",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "Cross-end reactivity API - React adapter",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "hewston",
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
"state-management"
|
|
14
14
|
],
|
|
15
15
|
"type": "module",
|
|
16
|
-
"types": "./dist/index.d.
|
|
16
|
+
"types": "./dist/index.d.mts",
|
|
17
17
|
"main": "./dist/index.cjs",
|
|
18
|
-
"module": "./dist/index.
|
|
18
|
+
"module": "./dist/index.mjs",
|
|
19
19
|
"exports": {
|
|
20
20
|
".": {
|
|
21
|
-
"types": "./dist/index.d.
|
|
21
|
+
"types": "./dist/index.d.mts",
|
|
22
22
|
"require": "./dist/index.cjs",
|
|
23
|
-
"import": "./dist/index.
|
|
23
|
+
"import": "./dist/index.mjs"
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"files": [
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
37
|
-
"@hf-chimera/store": "~0.2.
|
|
37
|
+
"@hf-chimera/store": "~0.2.2"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@hf-chimera/adapters-shared": "~0.2.
|
|
40
|
+
"@hf-chimera/adapters-shared": "~0.2.3"
|
|
41
41
|
},
|
|
42
42
|
"publishConfig": {
|
|
43
43
|
"access": "public",
|