@contember/bindx-react 0.1.4 → 0.1.10
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 +25 -30
- package/dist/hooks/ContemberBindxProvider.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useEntity.d.ts +43 -75
- package/dist/hooks/useEntity.d.ts.map +1 -1
- package/dist/hooks/useEntityList.d.ts +28 -47
- package/dist/hooks/useEntityList.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/jsx/collectorProxy.d.ts.map +1 -1
- package/dist/jsx/components/Entity.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/hooks/ContemberBindxProvider.tsx +31 -37
- package/src/hooks/index.ts +9 -9
- package/src/hooks/useEntity.ts +106 -217
- package/src/hooks/useEntityList.ts +61 -100
- package/src/index.ts +9 -9
- package/src/jsx/collectorProxy.ts +2 -0
- package/src/jsx/components/Entity.tsx +15 -9
- package/src/jsx/components/EntityList.tsx +5 -5
|
@@ -1,7 +1,31 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import { GraphQlClient } from '@contember/graphql-client';
|
|
3
|
-
import { type SchemaNames } from '@contember/client-content';
|
|
4
3
|
import { SnapshotStore, UndoManager, type SchemaDefinition, type UndoManagerConfig, type UpdateMode } from '@contember/bindx';
|
|
4
|
+
/**
|
|
5
|
+
* Runtime schema names format (from Contember API / generated code).
|
|
6
|
+
* Used by ContemberBindxProvider for backwards compatibility.
|
|
7
|
+
*/
|
|
8
|
+
export interface SchemaNames {
|
|
9
|
+
readonly entities: {
|
|
10
|
+
readonly [entityName: string]: {
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly scalars: readonly string[];
|
|
13
|
+
readonly fields: {
|
|
14
|
+
readonly [fieldName: string]: {
|
|
15
|
+
readonly type: 'column';
|
|
16
|
+
readonly enumName?: string;
|
|
17
|
+
readonly columnType?: string;
|
|
18
|
+
} | {
|
|
19
|
+
readonly type: 'many' | 'one';
|
|
20
|
+
readonly entity: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
readonly enums?: {
|
|
26
|
+
readonly [enumName: string]: readonly string[];
|
|
27
|
+
};
|
|
28
|
+
}
|
|
5
29
|
/**
|
|
6
30
|
* Converts SchemaNames (Contember format) to SchemaDefinition (bindx format)
|
|
7
31
|
* so that a SchemaRegistry can be created for standalone hooks.
|
|
@@ -33,35 +57,6 @@ export interface ContemberBindxProviderProps {
|
|
|
33
57
|
}
|
|
34
58
|
/**
|
|
35
59
|
* Provider component that combines Contember authentication with bindx data binding.
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```tsx
|
|
39
|
-
* import { ContemberBindxProvider, useUndo } from '@contember/bindx-react'
|
|
40
|
-
* import { schema } from './generated/schema'
|
|
41
|
-
*
|
|
42
|
-
* function App() {
|
|
43
|
-
* return (
|
|
44
|
-
* <ContemberBindxProvider
|
|
45
|
-
* client={graphQlClient}
|
|
46
|
-
* schema={schema}
|
|
47
|
-
* undoManager={true}
|
|
48
|
-
* >
|
|
49
|
-
* <ArticleEditor id="123" />
|
|
50
|
-
* </ContemberBindxProvider>
|
|
51
|
-
* )
|
|
52
|
-
* }
|
|
53
|
-
*
|
|
54
|
-
* // Access undo/redo in child components
|
|
55
|
-
* function UndoControls() {
|
|
56
|
-
* const { canUndo, canRedo, undo, redo } = useUndo()
|
|
57
|
-
* return (
|
|
58
|
-
* <div>
|
|
59
|
-
* <button onClick={undo} disabled={!canUndo}>Undo</button>
|
|
60
|
-
* <button onClick={redo} disabled={!canRedo}>Redo</button>
|
|
61
|
-
* </div>
|
|
62
|
-
* )
|
|
63
|
-
* }
|
|
64
|
-
* ```
|
|
65
60
|
*/
|
|
66
61
|
export declare const ContemberBindxProvider: import("react").NamedExoticComponent<ContemberBindxProviderProps>;
|
|
67
62
|
//# sourceMappingURL=ContemberBindxProvider.d.ts.map
|
|
@@ -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;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,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;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEzD,OAAO,EAAoB,aAAa,EAAuF,WAAW,EAAkB,KAAK,gBAAgB,EAAiB,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAInQ;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,QAAQ,EAAE;QAClB,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG;YAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;YACnC,QAAQ,CAAC,MAAM,EAAE;gBAChB,QAAQ,EAAE,SAAS,EAAE,MAAM,GACxB;oBAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;oBAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;oBAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;iBAAE,GACrF;oBAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;oBAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;aAC7D,CAAA;SACD,CAAA;KACD,CAAA;IACD,QAAQ,CAAC,KAAK,CAAC,EAAE;QAChB,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;KAC9C,CAAA;CACD;AAED;;;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,aAAa,CAAA;IAErB,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,mEA+DjC,CAAA"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { BindxProvider, useBackendAdapter, useSnapshotStore, useDispatcher, useBatchPersister, useBindxContext, useSchemaRegistry, type BindxProviderProps, type BindxContextValue, } from './BackendAdapterContext.js';
|
|
2
2
|
export { usePersist, usePersistEntity, type PersistApi, type EntityPersistApi, type AnyRefWithMeta, } from './usePersist.js';
|
|
3
|
-
export { useEntity, type UseEntityOptions, type
|
|
4
|
-
export { useEntityList, type UseEntityListOptions, type
|
|
3
|
+
export { useEntity, type UseEntityOptions, type LoadingEntityResult, type ErrorEntityResult, type NotFoundEntityResult, type ReadyEntityResult, type UseEntityResult, } from './useEntity.js';
|
|
4
|
+
export { useEntityList, type UseEntityListOptions, type LoadingEntityListResult, type ErrorEntityListResult, type ReadyEntityListResult, type UseEntityListResult, } from './useEntityList.js';
|
|
5
5
|
export { ContemberBindxProvider, schemaNamesToDef, } from './ContemberBindxProvider.js';
|
|
6
6
|
export { useUndo, type UndoHookResult } from './useUndo.js';
|
|
7
7
|
export { useOnEvent, useOnEntityEvent, useOnFieldEvent, useIntercept, useInterceptEntity, useInterceptField, } from './useBindxEvents.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,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACtB,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,
|
|
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,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACtB,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,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,EACN,eAAe,EACf,KAAK,iBAAiB,GACtB,MAAM,gBAAgB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EntityDef, EntityUniqueWhere, SelectionInput, SelectionMeta, FieldError,
|
|
1
|
+
import type { EntityDef, EntityUniqueWhere, SelectionInput, SelectionMeta, FieldError, CommonEntity, EntityForRoles, RoleNames, EntityAccessor } from '@contember/bindx';
|
|
2
2
|
/**
|
|
3
3
|
* Options for useEntity hook
|
|
4
4
|
*/
|
|
@@ -17,107 +17,75 @@ export interface UseEntityOptions {
|
|
|
17
17
|
queryKey?: string;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Common properties on every UseEntityResult state.
|
|
21
|
+
* All prefixed with $ to avoid collision with entity field names.
|
|
21
22
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
readonly isError: false;
|
|
26
|
-
readonly isNotFound: false;
|
|
27
|
-
readonly isPersisting: false;
|
|
28
|
-
readonly isDirty: false;
|
|
29
|
-
readonly id: string;
|
|
30
|
-
readonly fields: never;
|
|
31
|
-
readonly data: never;
|
|
32
|
-
persist(): Promise<void>;
|
|
33
|
-
reset(): void;
|
|
23
|
+
interface UseEntityResultBase {
|
|
24
|
+
$persist(): Promise<void>;
|
|
25
|
+
$reset(): void;
|
|
34
26
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
readonly
|
|
40
|
-
readonly
|
|
41
|
-
readonly isError: true;
|
|
42
|
-
readonly isNotFound: false;
|
|
43
|
-
readonly error: FieldError;
|
|
44
|
-
readonly isPersisting: false;
|
|
45
|
-
readonly isDirty: false;
|
|
27
|
+
export type LoadingEntityResult = UseEntityResultBase & {
|
|
28
|
+
readonly $status: 'loading';
|
|
29
|
+
readonly $isLoading: true;
|
|
30
|
+
readonly $isError: false;
|
|
31
|
+
readonly $isNotFound: false;
|
|
32
|
+
readonly $error: null;
|
|
46
33
|
readonly id: string;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
*/
|
|
55
|
-
export interface NotFoundEntityAccessor {
|
|
56
|
-
readonly status: 'not_found';
|
|
57
|
-
readonly isLoading: false;
|
|
58
|
-
readonly isError: false;
|
|
59
|
-
readonly isNotFound: true;
|
|
60
|
-
readonly isPersisting: false;
|
|
61
|
-
readonly isDirty: false;
|
|
34
|
+
};
|
|
35
|
+
export type ErrorEntityResult = UseEntityResultBase & {
|
|
36
|
+
readonly $status: 'error';
|
|
37
|
+
readonly $isLoading: false;
|
|
38
|
+
readonly $isError: true;
|
|
39
|
+
readonly $isNotFound: false;
|
|
40
|
+
readonly $error: FieldError;
|
|
62
41
|
readonly id: string;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
*/
|
|
71
|
-
export interface ReadyEntityAccessorBase<TEntity extends object, TSelected extends object = TEntity> {
|
|
72
|
-
readonly status: 'ready';
|
|
73
|
-
readonly isLoading: false;
|
|
74
|
-
readonly isError: false;
|
|
75
|
-
readonly isNotFound: false;
|
|
76
|
-
readonly isPersisting: boolean;
|
|
77
|
-
readonly isDirty: boolean;
|
|
42
|
+
};
|
|
43
|
+
export type NotFoundEntityResult = UseEntityResultBase & {
|
|
44
|
+
readonly $status: 'not_found';
|
|
45
|
+
readonly $isLoading: false;
|
|
46
|
+
readonly $isError: false;
|
|
47
|
+
readonly $isNotFound: true;
|
|
48
|
+
readonly $error: null;
|
|
78
49
|
readonly id: string;
|
|
79
|
-
|
|
80
|
-
readonly data: TSelected;
|
|
81
|
-
persist(): Promise<void>;
|
|
82
|
-
reset(): void;
|
|
83
|
-
}
|
|
50
|
+
};
|
|
84
51
|
/**
|
|
85
|
-
* Ready state
|
|
52
|
+
* Ready state — full EntityAccessor with status metadata.
|
|
86
53
|
*/
|
|
87
|
-
export type
|
|
54
|
+
export type ReadyEntityResult<TEntity extends object, TSelected extends object = TEntity> = UseEntityResultBase & EntityAccessor<TEntity, TSelected> & {
|
|
55
|
+
readonly $status: 'ready';
|
|
56
|
+
readonly $isLoading: false;
|
|
57
|
+
readonly $isError: false;
|
|
58
|
+
readonly $isNotFound: false;
|
|
59
|
+
readonly $error: null;
|
|
60
|
+
};
|
|
88
61
|
/**
|
|
89
|
-
* Union of all
|
|
62
|
+
* Union of all useEntity return states.
|
|
63
|
+
* Discriminated on $status.
|
|
90
64
|
*/
|
|
91
|
-
export type
|
|
65
|
+
export type UseEntityResult<TEntity extends object, TSelected extends object = TEntity> = LoadingEntityResult | ErrorEntityResult | NotFoundEntityResult | ReadyEntityResult<TEntity, TSelected>;
|
|
92
66
|
/**
|
|
93
67
|
* Hook to fetch and manage a single entity with role-expanded type inference.
|
|
94
|
-
*
|
|
95
|
-
* @example
|
|
96
|
-
* ```tsx
|
|
97
|
-
* const article = useEntity(schema.Article, { by: { id }, roles: ['admin'] }, e => e.title().internalNotes())
|
|
98
|
-
* ```
|
|
99
68
|
*/
|
|
100
69
|
export declare function useEntity<TRoleMap extends Record<string, object>, TRoles extends RoleNames<TRoleMap>, TResult extends object>(entity: EntityDef<TRoleMap>, options: UseEntityOptions & {
|
|
101
70
|
roles: readonly TRoles[];
|
|
102
|
-
}, definer: SelectionInput<EntityForRoles<TRoleMap, TRoles>, TResult>):
|
|
71
|
+
}, definer: SelectionInput<EntityForRoles<TRoleMap, TRoles>, TResult>): UseEntityResult<EntityForRoles<TRoleMap, TRoles>, TResult>;
|
|
103
72
|
/**
|
|
104
73
|
* Hook to fetch and manage a single entity with full type inference.
|
|
105
|
-
* Uses the common (narrowest) entity type when no roles are specified.
|
|
106
74
|
*
|
|
107
75
|
* @example
|
|
108
76
|
* ```tsx
|
|
109
77
|
* const article = useEntity(schema.Article, { by: { id } }, e => e.title().content())
|
|
110
|
-
* if (article
|
|
78
|
+
* if (article.$status !== 'ready') return <Loading />
|
|
111
79
|
* return <input value={article.title.value} onChange={...} />
|
|
112
80
|
* ```
|
|
113
81
|
*/
|
|
114
|
-
export declare function useEntity<TRoleMap extends Record<string, object>, TResult extends object>(entity: EntityDef<TRoleMap>, options: UseEntityOptions, definer: SelectionInput<CommonEntity<TRoleMap>, TResult>):
|
|
82
|
+
export declare function useEntity<TRoleMap extends Record<string, object>, TResult extends object>(entity: EntityDef<TRoleMap>, options: UseEntityOptions, definer: SelectionInput<CommonEntity<TRoleMap>, TResult>): UseEntityResult<CommonEntity<TRoleMap>, TResult>;
|
|
115
83
|
/**
|
|
116
84
|
* Hook to fetch and manage a single entity with pre-resolved selection.
|
|
117
|
-
*
|
|
118
85
|
* Used internally by Entity component that collects selection from JSX.
|
|
119
86
|
*/
|
|
120
87
|
export declare function useEntity(entity: EntityDef, options: UseEntityOptions & {
|
|
121
88
|
selection: SelectionMeta;
|
|
122
|
-
}):
|
|
89
|
+
}): UseEntityResult<object, object>;
|
|
90
|
+
export {};
|
|
123
91
|
//# sourceMappingURL=useEntity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEntity.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,SAAS,EACT,iBAAiB,EAEjB,cAAc,EACd,aAAa,EACb,UAAU,
|
|
1
|
+
{"version":3,"file":"useEntity.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntity.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,53 +20,33 @@ export interface UseEntityListOptions {
|
|
|
20
20
|
/** Optional query key for cache invalidation */
|
|
21
21
|
queryKey?: string;
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
readonly status: 'loading';
|
|
28
|
-
readonly isLoading: true;
|
|
29
|
-
readonly isError: false;
|
|
30
|
-
readonly isDirty: false;
|
|
31
|
-
readonly items: never;
|
|
32
|
-
readonly length: 0;
|
|
33
|
-
add(data?: unknown): string;
|
|
34
|
-
remove(key: string): void;
|
|
35
|
-
move(fromIndex: number, toIndex: number): void;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Error state for entity list accessor
|
|
39
|
-
*/
|
|
40
|
-
export interface ErrorEntityListAccessor {
|
|
41
|
-
readonly status: 'error';
|
|
42
|
-
readonly isLoading: false;
|
|
43
|
-
readonly isError: true;
|
|
44
|
-
readonly error: FieldError;
|
|
45
|
-
readonly isDirty: false;
|
|
46
|
-
readonly items: never;
|
|
47
|
-
readonly length: 0;
|
|
48
|
-
add(data?: unknown): string;
|
|
49
|
-
remove(key: string): void;
|
|
50
|
-
move(fromIndex: number, toIndex: number): void;
|
|
23
|
+
interface EntityListResultBase {
|
|
24
|
+
$add(data?: unknown): string;
|
|
25
|
+
$remove(key: string): void;
|
|
26
|
+
$move(fromIndex: number, toIndex: number): void;
|
|
51
27
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
readonly
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
readonly
|
|
28
|
+
export type LoadingEntityListResult = EntityListResultBase & {
|
|
29
|
+
readonly $status: 'loading';
|
|
30
|
+
readonly $isLoading: true;
|
|
31
|
+
readonly $isError: false;
|
|
32
|
+
readonly $error: null;
|
|
33
|
+
};
|
|
34
|
+
export type ErrorEntityListResult = EntityListResultBase & {
|
|
35
|
+
readonly $status: 'error';
|
|
36
|
+
readonly $isLoading: false;
|
|
37
|
+
readonly $isError: true;
|
|
38
|
+
readonly $error: FieldError;
|
|
39
|
+
};
|
|
40
|
+
export type ReadyEntityListResult<T extends object> = EntityListResultBase & {
|
|
41
|
+
readonly $status: 'ready';
|
|
42
|
+
readonly $isLoading: false;
|
|
43
|
+
readonly $isError: false;
|
|
44
|
+
readonly $error: null;
|
|
45
|
+
readonly $isDirty: boolean;
|
|
60
46
|
readonly items: Array<EntityAccessor<T>>;
|
|
61
47
|
readonly length: number;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
move(fromIndex: number, toIndex: number): void;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Union of all entity list accessor states
|
|
68
|
-
*/
|
|
69
|
-
export type EntityListAccessorResult<T extends object> = LoadingEntityListAccessor | ErrorEntityListAccessor | ReadyEntityListAccessor<T>;
|
|
48
|
+
};
|
|
49
|
+
export type UseEntityListResult<T extends object> = LoadingEntityListResult | ErrorEntityListResult | ReadyEntityListResult<T>;
|
|
70
50
|
/**
|
|
71
51
|
* Hook to fetch and manage a list of entities with role-expanded type inference.
|
|
72
52
|
*
|
|
@@ -77,7 +57,7 @@ export type EntityListAccessorResult<T extends object> = LoadingEntityListAccess
|
|
|
77
57
|
*/
|
|
78
58
|
export declare function useEntityList<TRoleMap extends Record<string, object>, TRoles extends RoleNames<TRoleMap>, TResult extends object>(entity: EntityDef<TRoleMap>, options: UseEntityListOptions & {
|
|
79
59
|
roles: readonly TRoles[];
|
|
80
|
-
}, definer: SelectionInput<EntityForRoles<TRoleMap, TRoles>, TResult>):
|
|
60
|
+
}, definer: SelectionInput<EntityForRoles<TRoleMap, TRoles>, TResult>): UseEntityListResult<TResult>;
|
|
81
61
|
/**
|
|
82
62
|
* Hook to fetch and manage a list of entities with full type inference.
|
|
83
63
|
* Uses the common (narrowest) entity type when no roles are specified.
|
|
@@ -89,7 +69,7 @@ export declare function useEntityList<TRoleMap extends Record<string, object>, T
|
|
|
89
69
|
* return authors.items.map(a => <div key={a.id}>{a.name.value}</div>)
|
|
90
70
|
* ```
|
|
91
71
|
*/
|
|
92
|
-
export declare function useEntityList<TRoleMap extends Record<string, object>, TResult extends object>(entity: EntityDef<TRoleMap>, options: UseEntityListOptions, definer: SelectionInput<CommonEntity<TRoleMap>, TResult>):
|
|
72
|
+
export declare function useEntityList<TRoleMap extends Record<string, object>, TResult extends object>(entity: EntityDef<TRoleMap>, options: UseEntityListOptions, definer: SelectionInput<CommonEntity<TRoleMap>, TResult>): UseEntityListResult<TResult>;
|
|
93
73
|
/**
|
|
94
74
|
* Hook to fetch and manage a list of entities with pre-resolved selection.
|
|
95
75
|
*
|
|
@@ -98,5 +78,6 @@ export declare function useEntityList<TRoleMap extends Record<string, object>, T
|
|
|
98
78
|
*/
|
|
99
79
|
export declare function useEntityList(entity: EntityDef, options: UseEntityListOptions & {
|
|
100
80
|
selection: SelectionMeta;
|
|
101
|
-
}):
|
|
81
|
+
}): UseEntityListResult<object>;
|
|
82
|
+
export {};
|
|
102
83
|
//# sourceMappingURL=useEntityList.d.ts.map
|
|
@@ -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;AASrK;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,wBAAwB;IACxB,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC5C,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD
|
|
1
|
+
{"version":3,"file":"useEntityList.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityList.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
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, SelectedEntityFields, ScalarKeys, HasManyKeys, HasOneKeys, FieldRefMeta, FieldRef, HasManyRef, HasOneRef, EntityRef, 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, UndoEntry, 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, 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
|
-
export type { BindxProviderProps, BindxContextValue, UseEntityOptions, UseEntityListOptions,
|
|
8
|
+
export type { BindxProviderProps, BindxContextValue, UseEntityOptions, UseEntityListOptions, LoadingEntityResult, ErrorEntityResult, NotFoundEntityResult, ReadyEntityResult, UseEntityResult, LoadingEntityListResult, ErrorEntityListResult, ReadyEntityListResult, UseEntityListResult, PersistApi, EntityPersistApi, AnyRefWithMeta, } 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 { EntityAccessor, FieldRefBase, FieldProps, HasManyProps, HasOneProps, IfProps, EntityComponentProps, HasManyComponentOptions, ShowProps, 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
11
|
export { BindxProvider, useBackendAdapter, useSnapshotStore, useDispatcher, useBatchPersister, useBindxContext, useSchemaRegistry, useEntity, useEntityList, usePersist, usePersistEntity, useUndo, useOnEvent, useOnEntityEvent, useOnFieldEvent, useIntercept, useInterceptEntity, useInterceptField, ContemberBindxProvider, schemaNamesToDef, } from './hooks/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,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,EAET,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,EACT,SAAS,EAET,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,eAAe,GACf,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAEN,MAAM,EACN,MAAM,EACN,OAAO,EACP,YAAY,EACZ,SAAS,EACT,aAAa,EACb,YAAY,EACZ,cAAc,EAEd,cAAc,EACd,uBAAuB,EAEvB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,cAAc,EAEd,WAAW,EACX,gBAAgB,EAEhB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EAEV,aAAa,EACb,gBAAgB,EAEhB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,qBAAqB,EAErB,cAAc,EACd,cAAc,EAEd,WAAW,EAEX,YAAY,EAEZ,UAAU,GACV,MAAM,kBAAkB,CAAA;AAOzB,YAAY,EACX,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectorProxy.d.ts","sourceRoot":"","sources":["../../src/jsx/collectorProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAyB,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAEN,KAAK,cAAc,EAOnB,MAAM,YAAY,CAAA;AAQnB;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACrC,KAAK,EAAE,cAAc,EACrB,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,cAAc,GAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAW,GAClE,cAAc,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"collectorProxy.d.ts","sourceRoot":"","sources":["../../src/jsx/collectorProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAyB,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAEN,KAAK,cAAc,EAOnB,MAAM,YAAY,CAAA;AAQnB;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACrC,KAAK,EAAE,cAAc,EACrB,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,cAAc,GAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAW,GAClE,cAAc,CAAC,CAAC,CAAC,CA2CnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/Entity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAuE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAIrH,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAiB,KAAK,UAAU,EAAgF,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAI1M;;;GAGG;AACH,UAAU,eAAe,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAChE,kCAAkC;IAClC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3B,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAA;IAC7E,qBAAqB;IACrB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAA;CAC9C;AAED;;GAEG;AACH,UAAU,aAAa,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAE,SAAQ,eAAe,CAAC,QAAQ,CAAC;IACjG,sFAAsF;IACtF,EAAE,EAAE,iBAAiB,CAAA;IACrB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,uBAAuB;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;GAEG;AACH,UAAU,iBAAiB,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAE,SAAQ,eAAe,CAAC,QAAQ,CAAC;IACrG,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,8DAA8D;IAC9D,MAAM,EAAE,IAAI,CAAA;IACZ,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IACrF,aAAa,CAAC,QAAQ,CAAC,GACvB,iBAAiB,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/Entity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAuE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAIrH,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAiB,KAAK,UAAU,EAAgF,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAI1M;;;GAGG;AACH,UAAU,eAAe,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAChE,kCAAkC;IAClC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3B,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAA;IAC7E,qBAAqB;IACrB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAA;CAC9C;AAED;;GAEG;AACH,UAAU,aAAa,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAE,SAAQ,eAAe,CAAC,QAAQ,CAAC;IACjG,sFAAsF;IACtF,EAAE,EAAE,iBAAiB,CAAA;IACrB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,uBAAuB;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;GAEG;AACH,UAAU,iBAAiB,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAE,SAAQ,eAAe,CAAC,QAAQ,CAAC;IACrG,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,8DAA8D;IAC9D,MAAM,EAAE,IAAI,CAAA;IACZ,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IACrF,aAAa,CAAC,QAAQ,CAAC,GACvB,iBAAiB,CAAC,QAAQ,CAAC,CAAA;AA6O9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,iBAAS,UAAU,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1D,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAC1B,YAAY,GAAG,IAAI,CA0BrB;AAGD,eAAO,MAAM,MAAM,EAAkC,OAAO,UAAU,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.10",
|
|
4
4
|
"description": "Type-safe React data binding framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"react": ">=18.0.0"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@contember/bindx": "0.1.
|
|
19
|
-
"@contember/client
|
|
20
|
-
"@contember/graphql-client": "^2.1.0-
|
|
18
|
+
"@contember/bindx": "0.1.10",
|
|
19
|
+
"@contember/bindx-client": "0.1.10",
|
|
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"
|
|
23
23
|
},
|
|
@@ -1,23 +1,44 @@
|
|
|
1
1
|
import { memo, useMemo, type ReactNode } from 'react'
|
|
2
2
|
import { GraphQlClient } from '@contember/graphql-client'
|
|
3
|
-
import { ContentClient
|
|
3
|
+
import { ContentClient } from '@contember/bindx-client'
|
|
4
4
|
import { ContemberAdapter, SnapshotStore, ActionDispatcher, BatchPersister, MutationCollector, ContemberSchemaMutationAdapter, UndoManager, SchemaRegistry, type SchemaDefinition, type FieldDef, type UndoManagerConfig, type UpdateMode } from '@contember/bindx'
|
|
5
5
|
import { BindxContext, type BindxContextValue } from './BackendAdapterContext.js'
|
|
6
6
|
import { QueryBatcher } from '../batching/QueryBatcher.js'
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Runtime schema names format (from Contember API / generated code).
|
|
10
|
+
* Used by ContemberBindxProvider for backwards compatibility.
|
|
11
|
+
*/
|
|
12
|
+
export interface SchemaNames {
|
|
13
|
+
readonly entities: {
|
|
14
|
+
readonly [entityName: string]: {
|
|
15
|
+
readonly name: string
|
|
16
|
+
readonly scalars: readonly string[]
|
|
17
|
+
readonly fields: {
|
|
18
|
+
readonly [fieldName: string]:
|
|
19
|
+
| { readonly type: 'column'; readonly enumName?: string; readonly columnType?: string }
|
|
20
|
+
| { readonly type: 'many' | 'one'; readonly entity: string }
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
readonly enums?: {
|
|
25
|
+
readonly [enumName: string]: readonly string[]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
8
29
|
/**
|
|
9
30
|
* Converts SchemaNames (Contember format) to SchemaDefinition (bindx format)
|
|
10
31
|
* so that a SchemaRegistry can be created for standalone hooks.
|
|
11
32
|
*/
|
|
12
33
|
export function schemaNamesToDef(schemaNames: SchemaNames): SchemaDefinition<Record<string, object>> {
|
|
13
|
-
const enumsMap =
|
|
34
|
+
const enumsMap = schemaNames.enums ?? {}
|
|
14
35
|
const entities: Record<string, { fields: Record<string, FieldDef> }> = {}
|
|
15
36
|
for (const [entityName, entity] of Object.entries(schemaNames.entities)) {
|
|
16
37
|
const fields: Record<string, FieldDef> = {}
|
|
17
38
|
for (const [fieldName, fieldDef] of Object.entries(entity.fields)) {
|
|
18
39
|
if (fieldDef.type === 'column') {
|
|
19
|
-
const enumName =
|
|
20
|
-
const columnType =
|
|
40
|
+
const enumName = fieldDef.enumName
|
|
41
|
+
const columnType = fieldDef.columnType
|
|
21
42
|
const enumValues = enumName ? enumsMap[enumName] : undefined
|
|
22
43
|
if (enumName && enumValues) {
|
|
23
44
|
fields[fieldName] = { type: 'enum', enumName, values: enumValues }
|
|
@@ -64,35 +85,6 @@ export interface ContemberBindxProviderProps {
|
|
|
64
85
|
|
|
65
86
|
/**
|
|
66
87
|
* Provider component that combines Contember authentication with bindx data binding.
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```tsx
|
|
70
|
-
* import { ContemberBindxProvider, useUndo } from '@contember/bindx-react'
|
|
71
|
-
* import { schema } from './generated/schema'
|
|
72
|
-
*
|
|
73
|
-
* function App() {
|
|
74
|
-
* return (
|
|
75
|
-
* <ContemberBindxProvider
|
|
76
|
-
* client={graphQlClient}
|
|
77
|
-
* schema={schema}
|
|
78
|
-
* undoManager={true}
|
|
79
|
-
* >
|
|
80
|
-
* <ArticleEditor id="123" />
|
|
81
|
-
* </ContemberBindxProvider>
|
|
82
|
-
* )
|
|
83
|
-
* }
|
|
84
|
-
*
|
|
85
|
-
* // Access undo/redo in child components
|
|
86
|
-
* function UndoControls() {
|
|
87
|
-
* const { canUndo, canRedo, undo, redo } = useUndo()
|
|
88
|
-
* return (
|
|
89
|
-
* <div>
|
|
90
|
-
* <button onClick={undo} disabled={!canUndo}>Undo</button>
|
|
91
|
-
* <button onClick={redo} disabled={!canRedo}>Redo</button>
|
|
92
|
-
* </div>
|
|
93
|
-
* )
|
|
94
|
-
* }
|
|
95
|
-
* ```
|
|
96
88
|
*/
|
|
97
89
|
export const ContemberBindxProvider = memo(function ContemberBindxProvider({
|
|
98
90
|
schema,
|
|
@@ -108,7 +100,12 @@ export const ContemberBindxProvider = memo(function ContemberBindxProvider({
|
|
|
108
100
|
// Create GraphQL client and adapter
|
|
109
101
|
const bindxValue = useMemo((): BindxContextValue => {
|
|
110
102
|
|
|
111
|
-
|
|
103
|
+
// Create schema registry from SchemaNames for standalone hooks
|
|
104
|
+
const schemaRegistry = new SchemaRegistry(schemaNamesToDef(schema))
|
|
105
|
+
|
|
106
|
+
// Create adapter using new bindx-client ContentClient
|
|
107
|
+
const contentClient = new ContentClient(graphQlClient)
|
|
108
|
+
const adapter = new ContemberAdapter(contentClient, schemaRegistry)
|
|
112
109
|
const batcher = new QueryBatcher(adapter)
|
|
113
110
|
|
|
114
111
|
const store = customStore ?? new SnapshotStore()
|
|
@@ -124,9 +121,6 @@ export const ContemberBindxProvider = memo(function ContemberBindxProvider({
|
|
|
124
121
|
dispatcher.addMiddleware(undoManager.createMiddleware())
|
|
125
122
|
}
|
|
126
123
|
|
|
127
|
-
// Create schema registry from SchemaNames for standalone hooks
|
|
128
|
-
const schemaRegistry = new SchemaRegistry(schemaNamesToDef(schema))
|
|
129
|
-
|
|
130
124
|
// Create mutation collector for proper nested operations
|
|
131
125
|
// Use ContemberSchemaMutationAdapter to wrap SchemaNames
|
|
132
126
|
const schemaAdapter = new ContemberSchemaMutationAdapter(schema)
|
package/src/hooks/index.ts
CHANGED
|
@@ -21,20 +21,20 @@ export {
|
|
|
21
21
|
export {
|
|
22
22
|
useEntity,
|
|
23
23
|
type UseEntityOptions,
|
|
24
|
-
type
|
|
25
|
-
type
|
|
26
|
-
type
|
|
27
|
-
type
|
|
28
|
-
type
|
|
24
|
+
type LoadingEntityResult,
|
|
25
|
+
type ErrorEntityResult,
|
|
26
|
+
type NotFoundEntityResult,
|
|
27
|
+
type ReadyEntityResult,
|
|
28
|
+
type UseEntityResult,
|
|
29
29
|
} from './useEntity.js'
|
|
30
30
|
|
|
31
31
|
export {
|
|
32
32
|
useEntityList,
|
|
33
33
|
type UseEntityListOptions,
|
|
34
|
-
type
|
|
35
|
-
type
|
|
36
|
-
type
|
|
37
|
-
type
|
|
34
|
+
type LoadingEntityListResult,
|
|
35
|
+
type ErrorEntityListResult,
|
|
36
|
+
type ReadyEntityListResult,
|
|
37
|
+
type UseEntityListResult,
|
|
38
38
|
} from './useEntityList.js'
|
|
39
39
|
|
|
40
40
|
export {
|