@contember/bindx-react 0.1.45 → 0.1.47
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/hooks/ContemberBindxProvider.d.ts +2 -2
- package/dist/hooks/ContemberBindxProvider.d.ts.map +1 -1
- package/dist/hooks/ItemAccessorCache.d.ts +36 -0
- package/dist/hooks/ItemAccessorCache.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useEntityCount.d.ts.map +1 -1
- package/dist/hooks/useEntityList.d.ts.map +1 -1
- package/dist/hooks/useFields.d.ts +25 -0
- package/dist/hooks/useFields.d.ts.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/jsx/analyzer.d.ts.map +1 -1
- package/dist/jsx/componentBuilder.d.ts +3 -1
- package/dist/jsx/componentBuilder.d.ts.map +1 -1
- package/dist/jsx/componentBuilder.types.d.ts +44 -8
- package/dist/jsx/componentBuilder.types.d.ts.map +1 -1
- package/dist/jsx/componentBuilderCompat.d.ts.map +1 -1
- package/dist/jsx/componentFactory.d.ts +1 -1
- package/dist/jsx/componentFactory.d.ts.map +1 -1
- package/dist/jsx/components/Field.d.ts.map +1 -1
- package/dist/jsx/components/If.d.ts.map +1 -1
- package/dist/jsx/components/Switch.d.ts.map +1 -1
- package/dist/jsx/standaloneCreateComponent.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/hooks/ContemberBindxProvider.tsx +2 -3
- package/src/hooks/ItemAccessorCache.ts +71 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useEntity.ts +48 -22
- package/src/hooks/useEntityCount.ts +0 -1
- package/src/hooks/useEntityList.ts +44 -16
- package/src/hooks/useFields.ts +118 -0
- package/src/index.ts +1 -1
- package/src/jsx/analyzer.ts +32 -7
- package/src/jsx/componentBuilder.ts +19 -2
- package/src/jsx/componentBuilder.types.ts +62 -8
- package/src/jsx/componentBuilderCompat.ts +0 -2
- package/src/jsx/componentFactory.ts +109 -42
- package/src/jsx/components/Attribute.tsx +2 -2
- package/src/jsx/components/Entity.tsx +12 -12
- package/src/jsx/components/Field.tsx +2 -4
- package/src/jsx/components/If.tsx +6 -0
- package/src/jsx/components/Switch.tsx +20 -9
- package/src/jsx/standaloneCreateComponent.ts +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
-
import { GraphQlClient } from '@contember/graphql-client';
|
|
3
2
|
import { SnapshotStore, UndoManager, type SchemaDefinition, type SchemaNames, type UndoManagerConfig, type UpdateMode } from '@contember/bindx';
|
|
3
|
+
import { type BindxGraphQlClient } from './BackendAdapterContext.js';
|
|
4
4
|
/**
|
|
5
5
|
* Converts SchemaNames (Contember format) to SchemaDefinition (bindx format)
|
|
6
6
|
* so that a SchemaRegistry can be created for standalone hooks.
|
|
@@ -16,7 +16,7 @@ export interface ContemberBindxProviderProps {
|
|
|
16
16
|
store?: SnapshotStore;
|
|
17
17
|
/** Children */
|
|
18
18
|
children: ReactNode;
|
|
19
|
-
client:
|
|
19
|
+
client: BindxGraphQlClient;
|
|
20
20
|
/** Enable undo/redo functionality. Pass true to auto-create an UndoManager, or pass an UndoManager instance. */
|
|
21
21
|
undoManager?: UndoManager | boolean;
|
|
22
22
|
/** Configuration for auto-created undo manager (only used when undoManager={true}) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContemberBindxProvider.d.ts","sourceRoot":"","sources":["../../src/hooks/ContemberBindxProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ContemberBindxProvider.d.ts","sourceRoot":"","sources":["../../src/hooks/ContemberBindxProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,EAAoB,aAAa,EAAuF,WAAW,EAAqC,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAiB,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxS,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAG1G;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwBnG;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,gDAAgD;IAChD,MAAM,EAAE,WAAW,CAAA;IACnB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,eAAe;IACf,QAAQ,EAAE,SAAS,CAAA;IAEnB,MAAM,EAAE,kBAAkB,CAAA;IAE1B,gHAAgH;IAChH,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAA;IACnC,sFAAsF;IACtF,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,UAAU,CAAA;IAC9B,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,mEAkEjC,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { EntityAccessor } from '@contember/bindx';
|
|
2
|
+
import { EntityHandle } from '@contember/bindx';
|
|
3
|
+
/**
|
|
4
|
+
* Per-id cache of the accessors `useEntityList` hands out.
|
|
5
|
+
*
|
|
6
|
+
* An EntityHandle is a stateless live view over the store, so one handle — and one proxy over it —
|
|
7
|
+
* serves an id for the whole life of the list. Identity therefore means identity and nothing else:
|
|
8
|
+
* it is stable across every change to the entity, which is what lets identity-keyed consumers
|
|
9
|
+
* (`React.memo` rows, `useMemo`) skip work. Change delivery is the subscription's job — a memoized
|
|
10
|
+
* consumer must subscribe via `<Field>` / `useField` / `useAccessor` to observe changes.
|
|
11
|
+
*
|
|
12
|
+
* Relation and field notifications propagate through live parent edges, so subscribers on a root
|
|
13
|
+
* item still update when one of its descendants changes.
|
|
14
|
+
*
|
|
15
|
+
* The cache belongs to one hook instance and is thrown away whenever a handle construction input
|
|
16
|
+
* changes; handles validate field access against the selection they were built with.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ItemAccessorCache {
|
|
19
|
+
private readonly createHandle;
|
|
20
|
+
private readonly resolveId;
|
|
21
|
+
private readonly entries;
|
|
22
|
+
/**
|
|
23
|
+
* @param createHandle builds the handle for a canonical id
|
|
24
|
+
* @param resolveId maps an id to its canonical form — a temp id follows its
|
|
25
|
+
* temp→persisted rekey, so the handle (and the `id` it reports) is minted under the
|
|
26
|
+
* server id and the dead temp key is evicted. Mirrors HasManyListHandle.resolveItemKey.
|
|
27
|
+
*/
|
|
28
|
+
constructor(createHandle: (id: string) => EntityHandle<object>, resolveId: (id: string) => string);
|
|
29
|
+
/** Rebuilds the accessor array; ids no longer listed are evicted so the cache stays bounded. */
|
|
30
|
+
build(items: ReadonlyArray<{
|
|
31
|
+
id: string;
|
|
32
|
+
}>): Array<EntityAccessor<object>>;
|
|
33
|
+
private canonicalizeEntries;
|
|
34
|
+
private resolve;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=ItemAccessorCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemAccessorCache.d.ts","sourceRoot":"","sources":["../../src/hooks/ItemAccessorCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAiB;IAU5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAV3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4C;IAEpE;;;;;OAKG;gBAEe,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,EAClD,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM;IAGnD,gGAAgG;IAChG,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAoB1E,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,OAAO;CAQf"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export { useOnEvent, useOnEntityEvent, useOnFieldEvent, useIntercept, useInterce
|
|
|
9
9
|
export { useEntityBeforePersist } from './useEntityBeforePersist.js';
|
|
10
10
|
export { useAccessor } from './useAccessor.js';
|
|
11
11
|
export { useField } from './useField.js';
|
|
12
|
+
export { useFields } from './useFields.js';
|
|
12
13
|
export { useHasMany } from './useHasMany.js';
|
|
13
14
|
export { useHasOne } from './useHasOne.js';
|
|
14
15
|
export { useEntityErrors, type EntityErrorsState, } from './useErrors.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACvB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACnB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACN,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACpB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACN,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACxB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACN,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GACzB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACN,sBAAsB,EACtB,gBAAgB,GAChB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GACjB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EACN,eAAe,EACf,KAAK,iBAAiB,GACtB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACN,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACtB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACN,sBAAsB,EACtB,KAAK,sBAAsB,GAC3B,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACvB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACnB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACN,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACpB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACN,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACxB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACN,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GACzB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACN,sBAAsB,EACtB,gBAAgB,GAChB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GACjB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EACN,eAAe,EACf,KAAK,iBAAiB,GACtB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACN,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACtB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACN,sBAAsB,EACtB,KAAK,sBAAsB,GAC3B,MAAM,6BAA6B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEntityCount.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityCount.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAOjD,MAAM,WAAW,qBAAqB;IACrC,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACpC,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,4EAA4E;IAC5E,OAAO,IAAI,IAAI,CAAA;CACf;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,
|
|
1
|
+
{"version":3,"file":"useEntityCount.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityCount.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAOjD,MAAM,WAAW,qBAAqB;IACrC,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACpC,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,4EAA4E;IAC5E,OAAO,IAAI,IAAI,CAAA;CACf;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,GAAE,qBAA0B,GACjC,oBAAoB,CAoDtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEntityList.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAkB,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"useEntityList.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityList.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type FieldAccessor, type FieldRef } from '@contember/bindx';
|
|
2
|
+
type FieldAccessorFor<TRef> = TRef extends FieldRef<infer TValue> ? FieldAccessor<TValue> : TRef extends null ? null : never;
|
|
3
|
+
type FieldRefFor<TRef> = TRef extends FieldRef<infer TValue> ? FieldRef<TValue> : TRef extends null ? null : never;
|
|
4
|
+
type FieldAccessorTuple<TRefs extends readonly unknown[]> = {
|
|
5
|
+
readonly [TIndex in keyof TRefs]: FieldAccessorFor<TRefs[TIndex]>;
|
|
6
|
+
};
|
|
7
|
+
type FieldRefTuple<TRefs extends readonly unknown[]> = {
|
|
8
|
+
readonly [TIndex in keyof TRefs]: FieldRefFor<TRefs[TIndex]>;
|
|
9
|
+
};
|
|
10
|
+
/** Internal subscription path for metadata-bearing refs of any kind. */
|
|
11
|
+
export declare function useRefSubscription(refs: readonly unknown[]): readonly unknown[];
|
|
12
|
+
/**
|
|
13
|
+
* Subscribes to every entity behind `refs` with a single hook, so the hook count stays
|
|
14
|
+
* constant no matter how many refs are passed. Use it wherever the number of refs is
|
|
15
|
+
* driven by data or by children (`<Switch>` cases, condition DSL fields) — calling
|
|
16
|
+
* {@link useField} in a loop breaks the rules of hooks the moment the count changes.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```tsx
|
|
20
|
+
* const accessors = useFields([article.title, article.publishedAt])
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function useFields<const TRefs extends readonly unknown[]>(refs: TRefs & FieldRefTuple<TRefs>): FieldAccessorTuple<TRefs>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=useFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFields.d.ts","sourceRoot":"","sources":["../../src/hooks/useFields.ts"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEb,MAAM,kBAAkB,CAAA;AA0CzB,KAAK,gBAAgB,CAAC,IAAI,IAAI,IAAI,SAAS,QAAQ,CAAC,MAAM,MAAM,CAAC,GAC9D,aAAa,CAAC,MAAM,CAAC,GACrB,IAAI,SAAS,IAAI,GAChB,IAAI,GACJ,KAAK,CAAA;AAET,KAAK,WAAW,CAAC,IAAI,IAAI,IAAI,SAAS,QAAQ,CAAC,MAAM,MAAM,CAAC,GACzD,QAAQ,CAAC,MAAM,CAAC,GAChB,IAAI,SAAS,IAAI,GAChB,IAAI,GACJ,KAAK,CAAA;AAET,KAAK,kBAAkB,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IAAI;IAC3D,QAAQ,EAAE,MAAM,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CACjE,CAAA;AAED,KAAK,aAAa,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IAAI;IACtD,QAAQ,EAAE,MAAM,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAC5D,CAAA;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,CA8B/E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAC/D,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAChC,kBAAkB,CAAC,KAAK,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
|
-
export type { RelationType, ScalarFieldDef, HasOneRelationDef, HasManyRelationDef, FieldDef, EntitySchemaDef, SchemaDefinition, InferModel, InferEntityNames, EntityDef, InferEntityDef, UnionToIntersection, RoleNames, CommonEntity, EntityForRoles, ResolveEntity, SingleRoleMap, DefaultRole, SelectionBuilder, SelectionMeta, SelectionFieldMeta, FluentFragment, FluentDefiner, HasManyOptions, InferSelection, QuerySpec, QueryFieldSpec, EntityWhere, EntityOrderBy, ScalarCondition, OrderDirection, TypedHasManyOptions, AliasOptions, HasOneRelationState, InputProps, EntityFields, EntityFieldsAccessor, EntityFieldsRef, ScalarKeys, HasManyKeys, HasOneKeys, FieldRefMeta, FieldRef, HasManyRef, HasOneRef, EntityRef, FieldAccessor, HasManyAccessor, HasOneAccessor, EntityAccessor, ExtractHasOneEntityName, ExtractHasManyEntityName, ExtractRoleMap, BackendAdapter, QueryOptions, Query, GetQuery, ListQuery, QueryResult, GetQueryResult, ListQueryResult, MockDataStore, MockAdapterOptions, ContemberAdapterOptions, EntityLoadResult, EntityListLoadResult, LoadEntityOptions, LoadEntityListOptions, SelectionInput, CoreFluentDefiner, EntitySnapshot, FieldSnapshot, HasOneRelationSnapshot, HasManySnapshot, EntityState, LoadStatus, UndoManagerConfig, UndoState,
|
|
6
|
+
export type { RelationType, ScalarFieldDef, HasOneRelationDef, HasManyRelationDef, FieldDef, EntitySchemaDef, SchemaDefinition, InferModel, InferEntityNames, EntityDef, InferEntityDef, UnionToIntersection, RoleNames, CommonEntity, EntityForRoles, ResolveEntity, SingleRoleMap, DefaultRole, SelectionBuilder, SelectionMeta, SelectionFieldMeta, FluentFragment, FluentDefiner, HasManyOptions, InferSelection, QuerySpec, QueryFieldSpec, EntityWhere, EntityOrderBy, ScalarCondition, OrderDirection, TypedHasManyOptions, AliasOptions, HasOneRelationState, InputProps, EntityFields, EntityFieldsAccessor, EntityFieldsRef, ScalarKeys, HasManyKeys, HasOneKeys, FieldRefMeta, FieldRef, HasManyRef, HasOneRef, EntityRef, FieldAccessor, HasManyAccessor, HasOneAccessor, EntityAccessor, ExtractHasOneEntityName, ExtractHasManyEntityName, ExtractRoleMap, BackendAdapter, QueryOptions, Query, GetQuery, ListQuery, QueryResult, GetQueryResult, ListQueryResult, MockDataStore, MockAdapterOptions, ContemberAdapterOptions, EntityLoadResult, EntityListLoadResult, LoadEntityOptions, LoadEntityListOptions, SelectionInput, CoreFluentDefiner, EntitySnapshot, FieldSnapshot, HasOneRelationSnapshot, HasManySnapshot, EntityState, LoadStatus, UndoManagerConfig, UndoState, BindxEvent, FieldScopedEvent, FieldChangingEvent, FieldChangedEvent, RelationConnectingEvent, RelationConnectedEvent, RelationDisconnectingEvent, RelationDisconnectedEvent, RelationDeletingEvent, RelationDeletedEvent, HasManyConnectingEvent, HasManyConnectedEvent, HasManyDisconnectingEvent, HasManyDisconnectedEvent, EntityPersistingEvent, EntityPersistedEvent, EntityPersistFailedEvent, EntityResettingEvent, EntityResetEvent, EntityDeletingEvent, EntityDeletedEvent, ErrorAddedEvent, ErrorsClearedEvent, LoadStateChangedEvent, BeforeEvent, AfterEvent, AnyBindxEvent, EventTypeMap, InterceptorResult, Interceptor, EventListener, Unsubscribe, BeforeEventTypes, AfterEventTypes, } from '@contember/bindx';
|
|
7
7
|
export { scalar, enumScalar, hasOne, hasMany, defineSchema, entityDef, roleEntityDef, DEFAULT_ROLE, SchemaRegistry, createFragment, buildQueryFromSelection, EntityHandle, HasOneHandle, HasManyListHandle, FieldHandle, FIELD_REF_META, MockAdapter, ContemberAdapter, createEntityLoader, resolveSelectionMeta, buildQuery, SnapshotStore, ActionDispatcher, isTempId, isPlaceholderId, isPersistedId, generatePlaceholderId, BatchPersister, ChangeRegistry, UndoManager, EventEmitter, __internal, } from '@contember/bindx';
|
|
8
8
|
export type { BindxProviderProps, BindxContextValue, BindxGraphQlClient, UseEntityOptions, UseEntityListOptions, LoadingEntityResult, ErrorEntityResult, NotFoundEntityResult, ReadyEntityResult, UseEntityResult, LoadingEntityListResult, ErrorEntityListResult, ReadyEntityListResult, UseEntityListResult, UseEntityCountOptions, UseEntityCountResult, PersistApi, EntityPersistApi, AnyRefWithMeta, PersistWithFeedbackApi, } from './hooks/index.js';
|
|
9
9
|
export type { DirtyEntity, PersistScope, AllScope, EntityScope as EntityPersistScope, FieldsScope, RelationScope, CustomScope, EntityPersistResult, PersistenceResult, BatchPersistOptions, } from '@contember/bindx';
|
|
10
10
|
export type { FieldProps, HasManyProps, HasOneProps, IfProps, EntityComponentProps, HasManyComponentOptions, ShowProps, SwitchProps, CaseProps, DefaultProps, SelectionPropMeta, SelectionProvider, EntityPropKeys, EntityFromProp, SelectionFromProp, ImplicitFragmentProperties, BindxComponentBase, BindxComponent, ComponentBuilder, ComponentBuilderState, CreateComponentOptions, InterfaceEntityPropConfig, ImplicitInterfaceEntityConfig, ExplicitInterfaceEntityConfig, AddInterfaces, InterfaceSelectorsMap, AnyEntityPropConfig, EntityPropConfig, ImplicitEntityConfig, ExplicitEntityConfig, AddImplicitEntity, AddExplicitEntity, AddImplicitInterfaceEntity, AddExplicitInterfaceEntity, SetScalarProps, BuildEntityProps, BuildProps, BuildFragmentProps, InitialBuilderState, } from './jsx/index.js';
|
|
11
|
-
export { BindxProvider, useBackendAdapter, useSnapshotStore, useDispatcher, useBatchPersister, useBindxContext, useSchemaRegistry, useEntity, useEntityList, useEntityCount, usePersist, usePersistEntity, useUndo, useOnEvent, useOnEntityEvent, useOnFieldEvent, useIntercept, useInterceptEntity, useInterceptField, useEntityBeforePersist, useAccessor, useField, useHasMany, useHasOne, useNotificationStore, useNotifications, useShowNotification, useDismissNotification, usePersistWithFeedback, ContemberBindxProvider, schemaNamesToDef, } from './hooks/index.js';
|
|
11
|
+
export { BindxProvider, useBackendAdapter, useSnapshotStore, useDispatcher, useBatchPersister, useBindxContext, useSchemaRegistry, useEntity, useEntityList, useEntityCount, usePersist, usePersistEntity, useUndo, useOnEvent, useOnEntityEvent, useOnFieldEvent, useIntercept, useInterceptEntity, useInterceptField, useEntityBeforePersist, useAccessor, useField, useFields, useHasMany, useHasOne, useNotificationStore, useNotifications, useShowNotification, useDismissNotification, usePersistWithFeedback, ContemberBindxProvider, schemaNamesToDef, } from './hooks/index.js';
|
|
12
12
|
export { RoleProvider, useHasRole, type RoleProviderProps } from './roles/index.js';
|
|
13
13
|
export type { UndoHookResult } from './hooks/useUndo.js';
|
|
14
14
|
export { Attribute, type AttributeProps, Field, HasMany, HasOne, If, Show, Switch, Case, Default, Entity, type EntityProps, EntityList, type EntityListProps, HasRole, type HasRoleProps, BINDX_COMPONENT, SCOPE_REF, cond, type Condition, createComponent, withCollector, isBindxComponent, mergeFragments, COMPONENT_MARKER, COMPONENT_BRAND, COMPONENT_SELECTIONS, createComponentBuilder, getComponentBrand, setBrandValidation, validateBrand, } from './jsx/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,YAAY,EAEX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,cAAc,EAEd,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,EAEX,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,SAAS,EACT,cAAc,EAEd,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,YAAY,EAEZ,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EAEZ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,EAET,aAAa,EACb,eAAe,EACf,cAAc,EACd,cAAc,EAEd,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EAEd,cAAc,EACd,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,cAAc,EACd,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EAEvB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EAEjB,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,eAAe,EACf,WAAW,EACX,UAAU,EAEV,iBAAiB,EACjB,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/jsx/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,OAAO,CAAA;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAmB,MAAM,oBAAoB,CAAA;AAE5E;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/jsx/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,OAAO,CAAA;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAmB,MAAM,oBAAoB,CAAA;AAE5E;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAwGnF;AAgBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,sBAAsB,CAIvE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6B5F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,SAAI,GAAG,MAAM,CA0B3E"}
|
|
@@ -27,10 +27,12 @@ export declare class ComponentBuilderImpl<TState extends ComponentBuilderState>
|
|
|
27
27
|
private readonly hasInterfacesMode;
|
|
28
28
|
private readonly conditionFn;
|
|
29
29
|
private readonly slotNames;
|
|
30
|
-
|
|
30
|
+
private readonly useFns;
|
|
31
|
+
constructor(schemaRegistry: SchemaRegistry<Record<string, object>> | null, entityConfigs: Map<string, EntityConfig>, roles: readonly string[], hasInterfacesMode?: boolean, conditionFn?: ((props: Record<string, unknown>) => Condition) | null, slotNames?: readonly string[], useFns?: readonly ((props: Record<string, unknown>) => object)[]);
|
|
31
32
|
entity(propName: string, entity: EntityDef | string, selector?: (builder: SelectionBuilder<object>) => SelectionBuilder<object, object, object>): ComponentBuilderImpl<TState>;
|
|
32
33
|
interfaces(selectors?: Record<string, (builder: SelectionBuilder<object>) => SelectionBuilder<object, object, object>>): ComponentBuilderImpl<TState>;
|
|
33
34
|
props<TNewScalarProps extends object>(): ComponentBuilderImpl<TState>;
|
|
35
|
+
use(useFn: (props: Record<string, unknown>) => object): ComponentBuilderImpl<TState>;
|
|
34
36
|
if(conditionFn: (props: Record<string, unknown>) => Condition): ComponentBuilderImpl<TState>;
|
|
35
37
|
slots(names: readonly string[]): ComponentBuilderImpl<TState>;
|
|
36
38
|
render(renderFn: (props: Record<string, unknown>) => ReactNode): unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentBuilder.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,cAAc,EACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EACX,gBAAgB,EAChB,qBAAqB,EAErB,MAAM,6BAA6B,CAAA;AACpC,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGzE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAO/F;;;;;;;GAOG;AACH,qBAAa,oBAAoB,CAChC,MAAM,SAAS,qBAAqB;IAGnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"componentBuilder.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,10 +56,11 @@ export type AnyEntityPropConfig = EntityPropConfig | InterfaceEntityPropConfig;
|
|
|
56
56
|
* Accumulated builder state (type-level).
|
|
57
57
|
* Grows as you chain builder methods.
|
|
58
58
|
*/
|
|
59
|
-
export interface ComponentBuilderState<TEntityProps extends Record<string, AnyEntityPropConfig> = {}, TScalarProps extends object = object, TRoles extends readonly string[] = readonly string[]> {
|
|
59
|
+
export interface ComponentBuilderState<TEntityProps extends Record<string, AnyEntityPropConfig> = {}, TScalarProps extends object = object, TRoles extends readonly string[] = readonly string[], TUseProps extends object = {}> {
|
|
60
60
|
readonly __entityProps: TEntityProps;
|
|
61
61
|
readonly __scalarProps: TScalarProps;
|
|
62
62
|
readonly __roles: TRoles;
|
|
63
|
+
readonly __useProps: TUseProps;
|
|
63
64
|
}
|
|
64
65
|
/**
|
|
65
66
|
* Add an implicit entity to builder state.
|
|
@@ -67,33 +68,33 @@ export interface ComponentBuilderState<TEntityProps extends Record<string, AnyEn
|
|
|
67
68
|
*/
|
|
68
69
|
export type AddImplicitEntity<TState extends ComponentBuilderState, TPropName extends string, TEntity extends object> = ComponentBuilderState<TState['__entityProps'] & {
|
|
69
70
|
readonly [K in TPropName]: ImplicitEntityConfig<TEntity>;
|
|
70
|
-
}, TState['__scalarProps'], TState['__roles']>;
|
|
71
|
+
}, TState['__scalarProps'], TState['__roles'], TState['__useProps']>;
|
|
71
72
|
/**
|
|
72
73
|
* Add an explicit entity to builder state.
|
|
73
74
|
* Entity type comes directly from the EntityDef.
|
|
74
75
|
*/
|
|
75
76
|
export type AddExplicitEntity<TState extends ComponentBuilderState, TPropName extends string, TEntity extends object, TSelected extends object> = ComponentBuilderState<TState['__entityProps'] & {
|
|
76
77
|
readonly [K in TPropName]: ExplicitEntityConfig<TEntity, TSelected>;
|
|
77
|
-
}, TState['__scalarProps'], TState['__roles']>;
|
|
78
|
+
}, TState['__scalarProps'], TState['__roles'], TState['__useProps']>;
|
|
78
79
|
/**
|
|
79
80
|
* Add an implicit interface entity to builder state.
|
|
80
81
|
*/
|
|
81
82
|
export type AddImplicitInterfaceEntity<TState extends ComponentBuilderState, TPropName extends string, TInterface extends object> = ComponentBuilderState<TState['__entityProps'] & {
|
|
82
83
|
readonly [K in TPropName]: ImplicitInterfaceEntityConfig<TInterface>;
|
|
83
|
-
}, TState['__scalarProps'], TState['__roles']>;
|
|
84
|
+
}, TState['__scalarProps'], TState['__roles'], TState['__useProps']>;
|
|
84
85
|
/**
|
|
85
86
|
* Add an explicit interface entity to builder state.
|
|
86
87
|
*/
|
|
87
88
|
export type AddExplicitInterfaceEntity<TState extends ComponentBuilderState, TPropName extends string, TInterface extends object> = ComponentBuilderState<TState['__entityProps'] & {
|
|
88
89
|
readonly [K in TPropName]: ExplicitInterfaceEntityConfig<TInterface>;
|
|
89
|
-
}, TState['__scalarProps'], TState['__roles']>;
|
|
90
|
+
}, TState['__scalarProps'], TState['__roles'], TState['__useProps']>;
|
|
90
91
|
/**
|
|
91
92
|
* Add multiple interface entities to builder state.
|
|
92
93
|
* Each key in TInterfaces becomes a prop.
|
|
93
94
|
*/
|
|
94
95
|
export type AddInterfaces<TState extends ComponentBuilderState, TInterfaces extends Record<string, object>> = ComponentBuilderState<TState['__entityProps'] & {
|
|
95
96
|
readonly [K in keyof TInterfaces]: InterfaceEntityPropConfig<TInterfaces[K]>;
|
|
96
|
-
}, TState['__scalarProps'], TState['__roles']>;
|
|
97
|
+
}, TState['__scalarProps'], TState['__roles'], TState['__useProps']>;
|
|
97
98
|
/**
|
|
98
99
|
* Type for selectors parameter in interfaces() method.
|
|
99
100
|
* Maps prop names to selector functions.
|
|
@@ -104,7 +105,11 @@ export type InterfaceSelectorsMap<TInterfaces extends Record<string, object>> =
|
|
|
104
105
|
/**
|
|
105
106
|
* Set scalar props in builder state.
|
|
106
107
|
*/
|
|
107
|
-
export type SetScalarProps<TState extends ComponentBuilderState, TNewScalarProps extends object> = ComponentBuilderState<TState['__entityProps'], TNewScalarProps, TState['__roles']>;
|
|
108
|
+
export type SetScalarProps<TState extends ComponentBuilderState, TNewScalarProps extends object> = ComponentBuilderState<TState['__entityProps'], TNewScalarProps, TState['__roles'], TState['__useProps']>;
|
|
109
|
+
/**
|
|
110
|
+
* Merge runtime-only values from .use() into builder state.
|
|
111
|
+
*/
|
|
112
|
+
export type AddUseProps<TState extends ComponentBuilderState, TUse extends object> = ComponentBuilderState<TState['__entityProps'], TState['__scalarProps'], TState['__roles'], TState['__useProps'] & TUse>;
|
|
108
113
|
/**
|
|
109
114
|
* Build public entity props — always EntityRef (stable pointer, no live data).
|
|
110
115
|
* Used for the component's external React props.
|
|
@@ -126,8 +131,10 @@ export type BuildRenderEntityProps<TEntityProps extends Record<string, AnyEntity
|
|
|
126
131
|
export type BuildProps<TState extends ComponentBuilderState> = TState['__scalarProps'] & BuildEntityProps<TState['__entityProps'], TState['__roles']>;
|
|
127
132
|
/**
|
|
128
133
|
* Build complete render props type from builder state.
|
|
134
|
+
* Includes .use() values — they exist only inside the render function,
|
|
135
|
+
* never on the public props (BuildProps).
|
|
129
136
|
*/
|
|
130
|
-
export type BuildRenderProps<TState extends ComponentBuilderState> = TState['__scalarProps'] & BuildRenderEntityProps<TState['__entityProps'], TState['__roles']>;
|
|
137
|
+
export type BuildRenderProps<TState extends ComponentBuilderState> = TState['__scalarProps'] & TState['__useProps'] & BuildRenderEntityProps<TState['__entityProps'], TState['__roles']>;
|
|
131
138
|
/**
|
|
132
139
|
* Build fragment properties ($propName) from entity config.
|
|
133
140
|
*/
|
|
@@ -229,6 +236,35 @@ export interface ComponentBuilder<TState extends ComponentBuilderState = Compone
|
|
|
229
236
|
* ```
|
|
230
237
|
*/
|
|
231
238
|
props<TNewScalarProps extends object>(): ComponentBuilder<SetScalarProps<TState, TNewScalarProps>>;
|
|
239
|
+
/**
|
|
240
|
+
* Provide runtime-only values to the render function — hooks are allowed here.
|
|
241
|
+
*
|
|
242
|
+
* The function runs during every React render (inside the component), so
|
|
243
|
+
* `useT()`, `useContext()`, `useMemo()` etc. all work. It is NEVER executed
|
|
244
|
+
* during static selection analysis — its outputs are replaced by inert
|
|
245
|
+
* stand-ins there, so the render body can use them freely without crashing
|
|
246
|
+
* the collection pass.
|
|
247
|
+
*
|
|
248
|
+
* This removes the need for thin wrapper components that only thread
|
|
249
|
+
* hook-derived values in as props (which also break selection discovery,
|
|
250
|
+
* because the JSX walk cannot see through plain components).
|
|
251
|
+
*
|
|
252
|
+
* Can be chained; later use() functions see the values of earlier ones.
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* ```typescript
|
|
256
|
+
* createComponent()
|
|
257
|
+
* .entity('article', schema.Article)
|
|
258
|
+
* .use(() => ({ t: useTranslator() }))
|
|
259
|
+
* .render(({ article, t }) => (
|
|
260
|
+
* <div>
|
|
261
|
+
* <h2>{t('article.heading')}</h2>
|
|
262
|
+
* <Field field={article.title} />
|
|
263
|
+
* </div>
|
|
264
|
+
* ))
|
|
265
|
+
* ```
|
|
266
|
+
*/
|
|
267
|
+
use<TUse extends object>(useFn: (props: BuildRenderProps<TState>) => TUse): ComponentBuilder<AddUseProps<TState, TUse>>;
|
|
232
268
|
/**
|
|
233
269
|
* Add a condition that must be true for the component to render.
|
|
234
270
|
* If the condition is false, the component renders null.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentBuilder.types.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilder.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,KAAK,EACX,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,SAAS,EACT,aAAa,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAMhD,MAAM,CAAC,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAA;AACpD,MAAM,CAAC,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAA;AACnD,MAAM,CAAC,OAAO,CAAC,MAAM,oBAAoB,EAAE,OAAO,MAAM,CAAA;AAMxD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAChC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,WAAW,SAAS,OAAO,GAAG,OAAO;IAErC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,MAAM,IACtD,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAEzC;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,IAChF,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AAM5C;;;;GAIG;AACH,MAAM,WAAW,yBAAyB,CACzC,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,WAAW,SAAS,OAAO,GAAG,OAAO;IAErC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,6BAA6B,CAAC,UAAU,SAAS,MAAM,IAClE,yBAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AAE5C;;GAEG;AACH,MAAM,MAAM,6BAA6B,CAAC,UAAU,SAAS,MAAM,IAClE,yBAAyB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AAM7C;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,yBAAyB,CAAA;AAE9E;;;GAGG;AACH,MAAM,WAAW,qBAAqB,
|
|
1
|
+
{"version":3,"file":"componentBuilder.types.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilder.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentBuilderCompat.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilderCompat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAIpE;;;GAGG;AACH,wBAAgB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"componentBuilderCompat.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilderCompat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAIpE;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,EAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC3C,IAAI,CAKN;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,EAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC3C,IAAI,CAKN"}
|
|
@@ -35,5 +35,5 @@ export interface EntityConfig {
|
|
|
35
35
|
* Note: Implicit selection collection is deferred (lazy) to avoid TDZ errors
|
|
36
36
|
* when components reference other components defined later in the same file.
|
|
37
37
|
*/
|
|
38
|
-
export declare function buildComponent<TProps extends object>(entityConfigs: Map<string, EntityConfig>, roles: readonly string[], renderFn: (props: TProps) => ReactNode, hasInterfacesMode: boolean, schemaRegistry: SchemaRegistry<Record<string, object>> | null, conditionFn: ((props: TProps) => Condition) | null, slotNames: readonly string[]): unknown;
|
|
38
|
+
export declare function buildComponent<TProps extends object>(entityConfigs: Map<string, EntityConfig>, roles: readonly string[], renderFn: (props: TProps) => ReactNode, hasInterfacesMode: boolean, schemaRegistry: SchemaRegistry<Record<string, object>> | null, conditionFn: ((props: TProps) => Condition) | null, slotNames: readonly string[], useFns: readonly ((props: TProps) => object)[]): unknown;
|
|
39
39
|
//# sourceMappingURL=componentFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentFactory.d.ts","sourceRoot":"","sources":["../../src/jsx/componentFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAGX,gBAAgB,
|
|
1
|
+
{"version":3,"file":"componentFactory.d.ts","sourceRoot":"","sources":["../../src/jsx/componentFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAGX,gBAAgB,EAEhB,gBAAgB,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,cAAc,EAKd,MAAM,kBAAkB,CAAA;AAQzB,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,iBAAiB,CAAA;AAOnE;;GAEG;AACH,eAAO,MAAM,gBAAgB,eAA4B,CAAA;AAEzD;;GAEG;AACH,eAAO,MAAM,eAAe,eAA4B,CAAA;AAExD;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAiC,CAAA;AAMlE,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnG,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC1D;AA0BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,MAAM,EACnD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACxC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,EACtC,iBAAiB,EAAE,OAAO,EAC1B,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,EAC7D,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,GAAG,IAAI,EAClD,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,GAC5C,OAAO,CA4JT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAsB,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpF,OAAO,EAAkB,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7D;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,SAAS,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAsB,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpF,OAAO,EAAkB,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7D;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,SAAS,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CA4BrF;AAED,eAAO,MAAM,KAAK,EAAsB,OAAO,SAAS,CAAA;AAGxD,QAAA,MAAM,kBAAkB,EAAY,OAAO,KAAK,GAAG,iBAAiB,GAAG;IAAE,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AA4BlG,OAAO,EAAE,kBAAkB,IAAI,aAAa,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"If.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/If.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAQ,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAA;AACtE,OAAO,KAAK,EAAE,OAAO,EAAqC,iBAAiB,EAAY,MAAM,aAAa,CAAA;AAC1G,OAAO,EAAkB,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"If.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/If.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAQ,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAA;AACtE,OAAO,KAAK,EAAE,OAAO,EAAqC,iBAAiB,EAAY,MAAM,aAAa,CAAA;AAC1G,OAAO,EAAkB,eAAe,EAAE,MAAM,aAAa,CAAA;AAc7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,iBAAS,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAkB/F;AAED,eAAO,MAAM,EAAE,0CAAe,CAAA;AAG9B,QAAA,MAAM,eAAe,EAAS,OAAO,EAAE,GAAG,iBAAiB,GAAG;IAAE,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAqDzF,OAAO,EAAE,eAAe,IAAI,UAAU,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAKb,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EACX,QAAQ,EAGR,iBAAiB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAkB,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7D,OAAO,EACN,KAAK,SAAS,EAId,MAAM,kBAAkB,CAAA;AAEzB;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,OAAO,IAC9B;IACA,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IACjB,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;CAC3D,GACD;IACA,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,EAAE,EAAE,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAC3C,QAAQ,EAAE,SAAS,CAAA;CAClB,CAAA;AAEJ,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,SAAS,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAElD;
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAKb,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EACX,QAAQ,EAGR,iBAAiB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAkB,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7D,OAAO,EACN,KAAK,SAAS,EAId,MAAM,kBAAkB,CAAA;AAEzB;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,OAAO,IAC9B;IACA,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IACjB,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;CAC3D,GACD;IACA,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,EAAE,EAAE,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAC3C,QAAQ,EAAE,SAAS,CAAA;CAClB,CAAA;AAEJ,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,SAAS,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAElD;AAyFD,iBAAS,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI,CAyClE;AAED,eAAO,MAAM,MAAM,8CAAmB,CAAA;AA0BtC,QAAA,MAAM,iBAAiB,EAAW,OAAO,IAAI,GAAG,iBAAiB,GAAG;IAAE,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAmC/F,QAAA,MAAM,oBAAoB,EAAc,OAAO,OAAO,GAAG,iBAAiB,GAAG;IAAE,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAaxG,QAAA,MAAM,mBAAmB,EAAa,OAAO,MAAM,GAAG,iBAAiB,GAAG;IAAE,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAarG,OAAO,EACN,mBAAmB,IAAI,cAAc,EACrC,iBAAiB,IAAI,YAAY,EACjC,oBAAoB,IAAI,eAAe,GACvC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standaloneCreateComponent.d.ts","sourceRoot":"","sources":["../../src/jsx/standaloneCreateComponent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,6BAA6B,CAAA;AAGpC;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"standaloneCreateComponent.d.ts","sourceRoot":"","sources":["../../src/jsx/standaloneCreateComponent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,6BAA6B,CAAA;AAGpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;AACzG,wBAAgB,eAAe,CAAC,KAAK,CAAC,MAAM,SAAS,SAAS,MAAM,EAAE,EACrE,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,GACrC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/bindx-react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.47",
|
|
4
4
|
"description": "Type-safe React data binding framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"react": ">=18.0.0"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@contember/bindx": "0.1.
|
|
19
|
-
"@contember/bindx-client": "0.1.
|
|
18
|
+
"@contember/bindx": "0.1.47",
|
|
19
|
+
"@contember/bindx-client": "0.1.47",
|
|
20
20
|
"@contember/graphql-client": "^2.1.0-beta.1",
|
|
21
21
|
"@radix-ui/primitive": "^1.1.3",
|
|
22
22
|
"@radix-ui/react-slot": "^1.2.4"
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { memo, useMemo, type ReactNode } from 'react'
|
|
2
|
-
import { GraphQlClient } from '@contember/graphql-client'
|
|
3
2
|
import { ContentClient } from '@contember/bindx-client'
|
|
4
3
|
import { ContemberAdapter, SnapshotStore, ActionDispatcher, BatchPersister, MutationCollector, ContemberSchemaMutationAdapter, UndoManager, SchemaRegistry, NotificationStore, type SchemaDefinition, type SchemaNames, type FieldDef, type UndoManagerConfig, type UpdateMode } from '@contember/bindx'
|
|
5
|
-
import { BindxContext, type BindxContextValue } from './BackendAdapterContext.js'
|
|
4
|
+
import { BindxContext, type BindxContextValue, type BindxGraphQlClient } from './BackendAdapterContext.js'
|
|
6
5
|
import { QueryBatcher } from '../batching/QueryBatcher.js'
|
|
7
6
|
|
|
8
7
|
/**
|
|
@@ -46,7 +45,7 @@ export interface ContemberBindxProviderProps {
|
|
|
46
45
|
/** Children */
|
|
47
46
|
children: ReactNode
|
|
48
47
|
|
|
49
|
-
client:
|
|
48
|
+
client: BindxGraphQlClient
|
|
50
49
|
|
|
51
50
|
/** Enable undo/redo functionality. Pass true to auto-create an UndoManager, or pass an UndoManager instance. */
|
|
52
51
|
undoManager?: UndoManager | boolean
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { EntityAccessor } from '@contember/bindx'
|
|
2
|
+
import { EntityHandle } from '@contember/bindx'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Per-id cache of the accessors `useEntityList` hands out.
|
|
6
|
+
*
|
|
7
|
+
* An EntityHandle is a stateless live view over the store, so one handle — and one proxy over it —
|
|
8
|
+
* serves an id for the whole life of the list. Identity therefore means identity and nothing else:
|
|
9
|
+
* it is stable across every change to the entity, which is what lets identity-keyed consumers
|
|
10
|
+
* (`React.memo` rows, `useMemo`) skip work. Change delivery is the subscription's job — a memoized
|
|
11
|
+
* consumer must subscribe via `<Field>` / `useField` / `useAccessor` to observe changes.
|
|
12
|
+
*
|
|
13
|
+
* Relation and field notifications propagate through live parent edges, so subscribers on a root
|
|
14
|
+
* item still update when one of its descendants changes.
|
|
15
|
+
*
|
|
16
|
+
* The cache belongs to one hook instance and is thrown away whenever a handle construction input
|
|
17
|
+
* changes; handles validate field access against the selection they were built with.
|
|
18
|
+
*/
|
|
19
|
+
export class ItemAccessorCache {
|
|
20
|
+
private readonly entries = new Map<string, EntityAccessor<object>>()
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @param createHandle builds the handle for a canonical id
|
|
24
|
+
* @param resolveId maps an id to its canonical form — a temp id follows its
|
|
25
|
+
* temp→persisted rekey, so the handle (and the `id` it reports) is minted under the
|
|
26
|
+
* server id and the dead temp key is evicted. Mirrors HasManyListHandle.resolveItemKey.
|
|
27
|
+
*/
|
|
28
|
+
constructor(
|
|
29
|
+
private readonly createHandle: (id: string) => EntityHandle<object>,
|
|
30
|
+
private readonly resolveId: (id: string) => string,
|
|
31
|
+
) {}
|
|
32
|
+
|
|
33
|
+
/** Rebuilds the accessor array; ids no longer listed are evicted so the cache stays bounded. */
|
|
34
|
+
build(items: ReadonlyArray<{ id: string }>): Array<EntityAccessor<object>> {
|
|
35
|
+
const accessors: Array<EntityAccessor<object>> = []
|
|
36
|
+
const liveIds = new Set<string>()
|
|
37
|
+
this.canonicalizeEntries()
|
|
38
|
+
|
|
39
|
+
for (const item of items) {
|
|
40
|
+
const id = this.resolveId(item.id)
|
|
41
|
+
accessors.push(this.resolve(id))
|
|
42
|
+
liveIds.add(id)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
for (const id of this.entries.keys()) {
|
|
46
|
+
if (!liveIds.has(id)) {
|
|
47
|
+
this.entries.delete(id)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return accessors
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private canonicalizeEntries(): void {
|
|
55
|
+
for (const [id, accessor] of [...this.entries]) {
|
|
56
|
+
const canonicalId = this.resolveId(id)
|
|
57
|
+
if (canonicalId === id) continue
|
|
58
|
+
if (!this.entries.has(canonicalId)) this.entries.set(canonicalId, accessor)
|
|
59
|
+
this.entries.delete(id)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private resolve(id: string): EntityAccessor<object> {
|
|
64
|
+
let accessor = this.entries.get(id)
|
|
65
|
+
if (!accessor) {
|
|
66
|
+
accessor = EntityHandle.wrapProxy(this.createHandle(id))
|
|
67
|
+
this.entries.set(id, accessor)
|
|
68
|
+
}
|
|
69
|
+
return accessor
|
|
70
|
+
}
|
|
71
|
+
}
|
package/src/hooks/index.ts
CHANGED
|
@@ -65,6 +65,7 @@ export { useEntityBeforePersist } from './useEntityBeforePersist.js'
|
|
|
65
65
|
|
|
66
66
|
export { useAccessor } from './useAccessor.js'
|
|
67
67
|
export { useField } from './useField.js'
|
|
68
|
+
export { useFields } from './useFields.js'
|
|
68
69
|
export { useHasMany } from './useHasMany.js'
|
|
69
70
|
export { useHasOne } from './useHasOne.js'
|
|
70
71
|
|