cogsbox-state 0.5.476 → 0.5.479
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -0
- package/dist/CogsState.d.ts +84 -74
- package/dist/CogsState.d.ts.map +1 -1
- package/dist/CogsState.js +920 -844
- package/dist/CogsState.js.map +1 -1
- package/dist/Components.d.ts.map +1 -1
- package/dist/Components.js +110 -108
- package/dist/Components.js.map +1 -1
- package/dist/PluginRunner.d.ts.map +1 -1
- package/dist/PluginRunner.js +0 -1
- package/dist/PluginRunner.js.map +1 -1
- package/dist/index.js +35 -34
- package/dist/plugins.d.ts +93 -294
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +191 -60
- package/dist/plugins.js.map +1 -1
- package/dist/store.d.ts +3 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +470 -417
- package/dist/store.js.map +1 -1
- package/dist/utility.d.ts +1 -3
- package/dist/utility.d.ts.map +1 -1
- package/dist/utility.js +63 -73
- package/dist/utility.js.map +1 -1
- package/package.json +3 -3
- package/src/CogsState.tsx +405 -115
- package/src/Components.tsx +3 -1
- package/src/PluginRunner.tsx +3 -3
- package/src/plugins.ts +822 -108
- package/src/store.ts +131 -3
- package/src/utility.ts +1 -33
package/src/plugins.ts
CHANGED
|
@@ -1,14 +1,71 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
import { StateObject, UpdateTypeDetail } from './CogsState';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
getGlobalStore,
|
|
6
|
+
getAllFieldElements,
|
|
7
|
+
setAllFieldsDisabled,
|
|
8
|
+
} from './store';
|
|
5
9
|
import { ClientActivityEvent } from './pluginStore';
|
|
10
|
+
import { RefObject } from 'react';
|
|
6
11
|
|
|
7
12
|
type Prettify<T> = { [K in keyof T]: T[K] } & {};
|
|
8
13
|
|
|
14
|
+
export type ChainMethodTarget =
|
|
15
|
+
| 'any'
|
|
16
|
+
| 'array'
|
|
17
|
+
| 'object'
|
|
18
|
+
| 'primitive'
|
|
19
|
+
| 'boolean';
|
|
20
|
+
|
|
21
|
+
export type ChainMethodContext<TOptions = any, THookReturn = any> = {
|
|
22
|
+
stateKey: string;
|
|
23
|
+
path: string[];
|
|
24
|
+
pluginName: string;
|
|
25
|
+
options: TOptions | undefined;
|
|
26
|
+
hookData?: THookReturn;
|
|
27
|
+
$get: () => any;
|
|
28
|
+
$update: (payload: any) => { synced: () => void };
|
|
29
|
+
$applyOperation: (operation: any, metaData?: Record<string, any>) => void;
|
|
30
|
+
getFieldMetaData: () => any;
|
|
31
|
+
setFieldMetaData: (data: Record<string, any>) => void;
|
|
32
|
+
removeFieldMetaData: () => void;
|
|
33
|
+
getFieldRefs: () => RefObject<any>[];
|
|
34
|
+
getFieldElements: () => HTMLElement[];
|
|
35
|
+
setFieldDisabled: (disabled: boolean) => void;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export type ChainMethodHandler = (
|
|
39
|
+
ctx: ChainMethodContext<any, any>,
|
|
40
|
+
...args: any[]
|
|
41
|
+
) => any;
|
|
42
|
+
|
|
43
|
+
export type ChainMethodDefinition<
|
|
44
|
+
THandler extends ChainMethodHandler = ChainMethodHandler,
|
|
45
|
+
> = {
|
|
46
|
+
target: ChainMethodTarget;
|
|
47
|
+
pathPattern?: string[];
|
|
48
|
+
handler: THandler;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export type ChainMethodDefinitions = Record<string, ChainMethodDefinition<any>>;
|
|
52
|
+
|
|
53
|
+
type ChainMethodCallable<THandler> = THandler extends (
|
|
54
|
+
ctx: any,
|
|
55
|
+
...args: infer TArgs
|
|
56
|
+
) => infer TReturn
|
|
57
|
+
? (...args: TArgs) => TReturn
|
|
58
|
+
: never;
|
|
59
|
+
|
|
60
|
+
export type ChainMethodCallables<TMethods> = {
|
|
61
|
+
[K in keyof TMethods]: TMethods[K] extends ChainMethodDefinition<infer TFn>
|
|
62
|
+
? ChainMethodCallable<TFn>
|
|
63
|
+
: never;
|
|
64
|
+
};
|
|
65
|
+
|
|
9
66
|
export type KeyedTypes<TMap extends Record<string, any>> = {
|
|
10
67
|
__key: 'keyed';
|
|
11
|
-
map:
|
|
68
|
+
map: TMap;
|
|
12
69
|
};
|
|
13
70
|
|
|
14
71
|
export const keyedSchema = <TMap extends Record<string, any>>() =>
|
|
@@ -58,6 +115,9 @@ type ScopedMetadataMethods<TFieldMetaData> = {
|
|
|
58
115
|
getFieldMetaData: () => TFieldMetaData | undefined;
|
|
59
116
|
setFieldMetaData: (data: Partial<TFieldMetaData>) => void;
|
|
60
117
|
removeFieldMetaData: () => void;
|
|
118
|
+
getFieldRefs: () => RefObject<any>[];
|
|
119
|
+
getFieldElements: () => HTMLElement[];
|
|
120
|
+
setFieldDisabled: (disabled: boolean) => void;
|
|
61
121
|
};
|
|
62
122
|
|
|
63
123
|
// These are the existing global methods that still require a path.
|
|
@@ -65,6 +125,11 @@ type GlobalMetadataMethods<TFieldMetaData> = {
|
|
|
65
125
|
getFieldMetaData: (path: string[]) => TFieldMetaData | undefined;
|
|
66
126
|
setFieldMetaData: (path: string[], data: Partial<TFieldMetaData>) => void;
|
|
67
127
|
removeFieldMetaData: (path: string[]) => void;
|
|
128
|
+
getFieldRefs: (path: string[]) => RefObject<any>[];
|
|
129
|
+
getFieldElements: (path: string[]) => HTMLElement[];
|
|
130
|
+
setFieldDisabled: (path: string[], disabled: boolean) => void;
|
|
131
|
+
getAllFieldElements: () => HTMLElement[];
|
|
132
|
+
setAllFieldsDisabled: (disabled: boolean) => void;
|
|
68
133
|
};
|
|
69
134
|
// Simplified: All params use the same TFieldMetaData type
|
|
70
135
|
export type UseHookParams<
|
|
@@ -193,9 +258,13 @@ export type CogsPlugin<
|
|
|
193
258
|
THookReturn,
|
|
194
259
|
TPluginMetaData,
|
|
195
260
|
TFieldMetaData,
|
|
261
|
+
TChainMethods extends ChainMethodDefinitions = {},
|
|
262
|
+
TInitialState extends Record<string, unknown> = {},
|
|
196
263
|
> = {
|
|
197
264
|
name: TName;
|
|
198
265
|
|
|
266
|
+
initialState?: () => TInitialState;
|
|
267
|
+
|
|
199
268
|
useHook?: (
|
|
200
269
|
params: UseHookParams<TOptions, TPluginMetaData, TFieldMetaData, any>
|
|
201
270
|
) => THookReturn;
|
|
@@ -239,6 +308,8 @@ export type CogsPlugin<
|
|
|
239
308
|
any
|
|
240
309
|
>
|
|
241
310
|
) => React.ReactNode;
|
|
311
|
+
|
|
312
|
+
chainMethods?: TChainMethods;
|
|
242
313
|
};
|
|
243
314
|
|
|
244
315
|
// Metadata helpers
|
|
@@ -276,6 +347,45 @@ export function createMetadataContext<TPluginMetaData, TFieldMetaData>(
|
|
|
276
347
|
getGlobalStore
|
|
277
348
|
.getState()
|
|
278
349
|
.removePluginMetaData(stateKey, path, pluginName),
|
|
350
|
+
getFieldRefs: (path: string[]): RefObject<any>[] => {
|
|
351
|
+
const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);
|
|
352
|
+
if (!meta?.clientActivityState?.elements) return [];
|
|
353
|
+
const refs: RefObject<any>[] = [];
|
|
354
|
+
meta.clientActivityState.elements.forEach((entry: any) => {
|
|
355
|
+
if (entry.domRef?.current) refs.push(entry.domRef);
|
|
356
|
+
});
|
|
357
|
+
return refs;
|
|
358
|
+
},
|
|
359
|
+
|
|
360
|
+
getFieldElements: (path: string[]): HTMLElement[] => {
|
|
361
|
+
const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);
|
|
362
|
+
if (!meta?.clientActivityState?.elements) return [];
|
|
363
|
+
const elements: HTMLElement[] = [];
|
|
364
|
+
meta.clientActivityState.elements.forEach((entry: any) => {
|
|
365
|
+
if (entry.domRef?.current) elements.push(entry.domRef.current);
|
|
366
|
+
});
|
|
367
|
+
return elements;
|
|
368
|
+
},
|
|
369
|
+
|
|
370
|
+
setFieldDisabled: (path: string[], disabled: boolean) => {
|
|
371
|
+
const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);
|
|
372
|
+
if (!meta?.clientActivityState?.elements) return;
|
|
373
|
+
meta.clientActivityState.elements.forEach((entry: any) => {
|
|
374
|
+
const el = entry.domRef?.current;
|
|
375
|
+
if (!el) return;
|
|
376
|
+
if ('disabled' in el) el.disabled = disabled;
|
|
377
|
+
else {
|
|
378
|
+
el.style.pointerEvents = disabled ? 'none' : '';
|
|
379
|
+
el.setAttribute('aria-disabled', String(disabled));
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
},
|
|
383
|
+
getAllFieldElements: (): HTMLElement[] => {
|
|
384
|
+
return getAllFieldElements(stateKey);
|
|
385
|
+
},
|
|
386
|
+
|
|
387
|
+
setAllFieldsDisabled: (disabled: boolean): void =>
|
|
388
|
+
setAllFieldsDisabled(stateKey, disabled),
|
|
279
389
|
};
|
|
280
390
|
}
|
|
281
391
|
|
|
@@ -290,19 +400,54 @@ export function createScopedMetadataContext<TPluginMetaData, TFieldMetaData>(
|
|
|
290
400
|
);
|
|
291
401
|
|
|
292
402
|
return {
|
|
293
|
-
// Return the global methods for plugin metadata
|
|
294
403
|
...globalContext,
|
|
295
|
-
// Override the field methods with new, path-scoped versions
|
|
296
404
|
getFieldMetaData: (): TFieldMetaData | undefined =>
|
|
297
405
|
globalContext.getFieldMetaData(path),
|
|
298
|
-
|
|
299
406
|
setFieldMetaData: (data: Partial<TFieldMetaData>) =>
|
|
300
407
|
globalContext.setFieldMetaData(path, data),
|
|
301
|
-
|
|
302
408
|
removeFieldMetaData: () => globalContext.removeFieldMetaData(path),
|
|
409
|
+
|
|
410
|
+
// NEW: Direct access to the DOM refs for this field
|
|
411
|
+
getFieldRefs: (): RefObject<any>[] => {
|
|
412
|
+
const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);
|
|
413
|
+
if (!meta?.clientActivityState?.elements) return [];
|
|
414
|
+
const refs: RefObject<any>[] = [];
|
|
415
|
+
meta.clientActivityState.elements.forEach((entry: any) => {
|
|
416
|
+
if (entry.domRef?.current) {
|
|
417
|
+
refs.push(entry.domRef);
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
return refs;
|
|
421
|
+
},
|
|
422
|
+
|
|
423
|
+
getFieldElements: (): HTMLElement[] => {
|
|
424
|
+
const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);
|
|
425
|
+
if (!meta?.clientActivityState?.elements) return [];
|
|
426
|
+
const elements: HTMLElement[] = [];
|
|
427
|
+
meta.clientActivityState.elements.forEach((entry: any) => {
|
|
428
|
+
if (entry.domRef?.current) {
|
|
429
|
+
elements.push(entry.domRef.current);
|
|
430
|
+
}
|
|
431
|
+
});
|
|
432
|
+
return elements;
|
|
433
|
+
},
|
|
434
|
+
|
|
435
|
+
setFieldDisabled: (disabled: boolean) => {
|
|
436
|
+
const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);
|
|
437
|
+
if (!meta?.clientActivityState?.elements) return;
|
|
438
|
+
meta.clientActivityState.elements.forEach((entry: any) => {
|
|
439
|
+
const el = entry.domRef?.current;
|
|
440
|
+
if (!el) return;
|
|
441
|
+
if ('disabled' in el) {
|
|
442
|
+
el.disabled = disabled;
|
|
443
|
+
} else {
|
|
444
|
+
el.style.pointerEvents = disabled ? 'none' : '';
|
|
445
|
+
el.setAttribute('aria-disabled', String(disabled));
|
|
446
|
+
}
|
|
447
|
+
});
|
|
448
|
+
},
|
|
303
449
|
};
|
|
304
450
|
}
|
|
305
|
-
|
|
306
451
|
// Add this type export - derives from what createScopedMetadataContext returns
|
|
307
452
|
export type ScopedMetadataContext<TFieldMetaData = any> = {
|
|
308
453
|
getFieldMetaData: () => TFieldMetaData | undefined;
|
|
@@ -323,200 +468,769 @@ type ZodObjOutput<T extends z.ZodObject<any>> = {
|
|
|
323
468
|
type OutputOf<T extends z.ZodTypeAny> =
|
|
324
469
|
T extends z.ZodObject<any> ? Prettify<ZodObjOutput<T>> : z.output<T>;
|
|
325
470
|
|
|
471
|
+
type MethodFactory = <THandler extends ChainMethodHandler>(
|
|
472
|
+
handler: THandler
|
|
473
|
+
) => ChainMethodDefinition<THandler>;
|
|
474
|
+
|
|
475
|
+
type PathMethodFactory = MethodFactory & {
|
|
476
|
+
array: MethodFactory;
|
|
477
|
+
object: MethodFactory;
|
|
478
|
+
primitive: MethodFactory;
|
|
479
|
+
boolean: MethodFactory;
|
|
480
|
+
field: MethodFactory;
|
|
481
|
+
};
|
|
482
|
+
|
|
483
|
+
type MethodsBuilderParams = {
|
|
484
|
+
path: (selector: (state: any) => any) => PathMethodFactory;
|
|
485
|
+
array: MethodFactory;
|
|
486
|
+
object: MethodFactory;
|
|
487
|
+
primitive: MethodFactory;
|
|
488
|
+
boolean: MethodFactory;
|
|
489
|
+
field: MethodFactory;
|
|
490
|
+
};
|
|
491
|
+
|
|
492
|
+
const createMethodDefinition =
|
|
493
|
+
(target: ChainMethodTarget, pathPattern?: string[]): MethodFactory =>
|
|
494
|
+
(handler) => ({
|
|
495
|
+
target,
|
|
496
|
+
pathPattern,
|
|
497
|
+
handler,
|
|
498
|
+
});
|
|
499
|
+
|
|
500
|
+
const createPathRecorder = () => {
|
|
501
|
+
const path: string[] = [];
|
|
502
|
+
|
|
503
|
+
const recorder = new Proxy(
|
|
504
|
+
{},
|
|
505
|
+
{
|
|
506
|
+
get(_target, prop) {
|
|
507
|
+
if (typeof prop !== 'string') return recorder;
|
|
508
|
+
if (prop === 'then') return undefined;
|
|
509
|
+
path.push(prop === '$' ? '*' : prop);
|
|
510
|
+
return recorder;
|
|
511
|
+
},
|
|
512
|
+
}
|
|
513
|
+
);
|
|
514
|
+
|
|
515
|
+
return { recorder, path };
|
|
516
|
+
};
|
|
517
|
+
|
|
518
|
+
const createMethodsBuilderParams = (): MethodsBuilderParams => {
|
|
519
|
+
const path = (selector: (state: any) => any): PathMethodFactory => {
|
|
520
|
+
const { recorder, path: pathPattern } = createPathRecorder();
|
|
521
|
+
selector(recorder);
|
|
522
|
+
|
|
523
|
+
const base = createMethodDefinition(
|
|
524
|
+
'any',
|
|
525
|
+
pathPattern
|
|
526
|
+
) as PathMethodFactory;
|
|
527
|
+
base.array = createMethodDefinition('array', pathPattern);
|
|
528
|
+
base.object = createMethodDefinition('object', pathPattern);
|
|
529
|
+
base.primitive = createMethodDefinition('primitive', pathPattern);
|
|
530
|
+
base.boolean = createMethodDefinition('boolean', pathPattern);
|
|
531
|
+
base.field = createMethodDefinition('any', pathPattern);
|
|
532
|
+
|
|
533
|
+
return base;
|
|
534
|
+
};
|
|
535
|
+
|
|
536
|
+
return {
|
|
537
|
+
path,
|
|
538
|
+
array: createMethodDefinition('array'),
|
|
539
|
+
object: createMethodDefinition('object'),
|
|
540
|
+
primitive: createMethodDefinition('primitive'),
|
|
541
|
+
boolean: createMethodDefinition('boolean'),
|
|
542
|
+
field: createMethodDefinition('any'),
|
|
543
|
+
};
|
|
544
|
+
};
|
|
545
|
+
// --- EXTRACTED BUILDER TYPES (Solves TS7056 Serialization Error) ---
|
|
546
|
+
|
|
547
|
+
export type PluginTransformFn<
|
|
548
|
+
TOptions,
|
|
549
|
+
THookReturn,
|
|
550
|
+
TPluginMetaData,
|
|
551
|
+
TFieldMetaData,
|
|
552
|
+
> = (
|
|
553
|
+
params: TransformStateParams<
|
|
554
|
+
TOptions,
|
|
555
|
+
THookReturn,
|
|
556
|
+
TPluginMetaData,
|
|
557
|
+
TFieldMetaData,
|
|
558
|
+
any
|
|
559
|
+
>
|
|
560
|
+
) => void;
|
|
561
|
+
|
|
562
|
+
export type PluginUpdateFn<
|
|
563
|
+
TOptions,
|
|
564
|
+
THookReturn,
|
|
565
|
+
TPluginMetaData,
|
|
566
|
+
TFieldMetaData,
|
|
567
|
+
> = (
|
|
568
|
+
params: OnUpdateParams<
|
|
569
|
+
TOptions,
|
|
570
|
+
THookReturn,
|
|
571
|
+
TPluginMetaData,
|
|
572
|
+
TFieldMetaData,
|
|
573
|
+
any
|
|
574
|
+
>
|
|
575
|
+
) => void;
|
|
576
|
+
|
|
577
|
+
export type PluginFormUpdateFn<
|
|
578
|
+
TOptions,
|
|
579
|
+
THookReturn,
|
|
580
|
+
TPluginMetaData,
|
|
581
|
+
TFieldMetaData,
|
|
582
|
+
> = (
|
|
583
|
+
params: OnFormUpdateParams<
|
|
584
|
+
TOptions,
|
|
585
|
+
THookReturn,
|
|
586
|
+
TPluginMetaData,
|
|
587
|
+
TFieldMetaData,
|
|
588
|
+
any
|
|
589
|
+
>
|
|
590
|
+
) => void;
|
|
591
|
+
|
|
592
|
+
export type PluginFormWrapperFn<
|
|
593
|
+
TOptions,
|
|
594
|
+
THookReturn,
|
|
595
|
+
TPluginMetaData,
|
|
596
|
+
TFieldMetaData,
|
|
597
|
+
> = (
|
|
598
|
+
params: FormWrapperParams<
|
|
599
|
+
TOptions,
|
|
600
|
+
THookReturn,
|
|
601
|
+
TPluginMetaData,
|
|
602
|
+
TFieldMetaData,
|
|
603
|
+
any
|
|
604
|
+
>
|
|
605
|
+
) => React.ReactNode;
|
|
606
|
+
|
|
607
|
+
export type CogsPluginBuilder<
|
|
608
|
+
TName extends string,
|
|
609
|
+
TOptions,
|
|
610
|
+
TPluginMetaData,
|
|
611
|
+
TFieldMetaData,
|
|
612
|
+
THookReturn,
|
|
613
|
+
TChainMethods extends ChainMethodDefinitions,
|
|
614
|
+
HasTransform extends boolean,
|
|
615
|
+
HasUpdate extends boolean,
|
|
616
|
+
HasFormUpdate extends boolean,
|
|
617
|
+
HasMethods extends boolean,
|
|
618
|
+
HasWrapper extends boolean,
|
|
619
|
+
HasInitialState extends boolean,
|
|
620
|
+
TInitialState extends Record<string, unknown> = {},
|
|
621
|
+
> = Prettify<
|
|
622
|
+
CogsPlugin<
|
|
623
|
+
TName,
|
|
624
|
+
TOptions,
|
|
625
|
+
THookReturn,
|
|
626
|
+
TPluginMetaData,
|
|
627
|
+
TFieldMetaData,
|
|
628
|
+
TChainMethods,
|
|
629
|
+
TInitialState
|
|
630
|
+
>
|
|
631
|
+
> &
|
|
632
|
+
(HasTransform extends true
|
|
633
|
+
? {}
|
|
634
|
+
: {
|
|
635
|
+
transformState(
|
|
636
|
+
fn: PluginTransformFn<
|
|
637
|
+
TOptions,
|
|
638
|
+
THookReturn,
|
|
639
|
+
TPluginMetaData,
|
|
640
|
+
TFieldMetaData
|
|
641
|
+
>
|
|
642
|
+
): CogsPluginBuilder<
|
|
643
|
+
TName,
|
|
644
|
+
TOptions,
|
|
645
|
+
TPluginMetaData,
|
|
646
|
+
TFieldMetaData,
|
|
647
|
+
THookReturn,
|
|
648
|
+
TChainMethods,
|
|
649
|
+
true,
|
|
650
|
+
HasUpdate,
|
|
651
|
+
HasFormUpdate,
|
|
652
|
+
HasMethods,
|
|
653
|
+
HasWrapper,
|
|
654
|
+
HasInitialState,
|
|
655
|
+
TInitialState
|
|
656
|
+
>;
|
|
657
|
+
}) &
|
|
658
|
+
(HasUpdate extends true
|
|
659
|
+
? {}
|
|
660
|
+
: {
|
|
661
|
+
onUpdate(
|
|
662
|
+
fn: PluginUpdateFn<
|
|
663
|
+
TOptions,
|
|
664
|
+
THookReturn,
|
|
665
|
+
TPluginMetaData,
|
|
666
|
+
TFieldMetaData
|
|
667
|
+
>
|
|
668
|
+
): CogsPluginBuilder<
|
|
669
|
+
TName,
|
|
670
|
+
TOptions,
|
|
671
|
+
TPluginMetaData,
|
|
672
|
+
TFieldMetaData,
|
|
673
|
+
THookReturn,
|
|
674
|
+
TChainMethods,
|
|
675
|
+
HasTransform,
|
|
676
|
+
true,
|
|
677
|
+
HasFormUpdate,
|
|
678
|
+
HasMethods,
|
|
679
|
+
HasWrapper,
|
|
680
|
+
HasInitialState,
|
|
681
|
+
TInitialState
|
|
682
|
+
>;
|
|
683
|
+
}) &
|
|
684
|
+
(HasFormUpdate extends true
|
|
685
|
+
? {}
|
|
686
|
+
: {
|
|
687
|
+
onFormUpdate(
|
|
688
|
+
fn: PluginFormUpdateFn<
|
|
689
|
+
TOptions,
|
|
690
|
+
THookReturn,
|
|
691
|
+
TPluginMetaData,
|
|
692
|
+
TFieldMetaData
|
|
693
|
+
>
|
|
694
|
+
): CogsPluginBuilder<
|
|
695
|
+
TName,
|
|
696
|
+
TOptions,
|
|
697
|
+
TPluginMetaData,
|
|
698
|
+
TFieldMetaData,
|
|
699
|
+
THookReturn,
|
|
700
|
+
TChainMethods,
|
|
701
|
+
HasTransform,
|
|
702
|
+
HasUpdate,
|
|
703
|
+
true,
|
|
704
|
+
HasMethods,
|
|
705
|
+
HasWrapper,
|
|
706
|
+
HasInitialState,
|
|
707
|
+
TInitialState
|
|
708
|
+
>;
|
|
709
|
+
}) &
|
|
710
|
+
(HasMethods extends true
|
|
711
|
+
? {}
|
|
712
|
+
: {
|
|
713
|
+
methods<TNextMethods extends ChainMethodDefinitions>(
|
|
714
|
+
fn: (helpers: MethodsBuilderParams) => TNextMethods
|
|
715
|
+
): CogsPluginBuilder<
|
|
716
|
+
TName,
|
|
717
|
+
TOptions,
|
|
718
|
+
TPluginMetaData,
|
|
719
|
+
TFieldMetaData,
|
|
720
|
+
THookReturn,
|
|
721
|
+
TNextMethods,
|
|
722
|
+
HasTransform,
|
|
723
|
+
HasUpdate,
|
|
724
|
+
HasFormUpdate,
|
|
725
|
+
true,
|
|
726
|
+
HasWrapper,
|
|
727
|
+
HasInitialState,
|
|
728
|
+
TInitialState
|
|
729
|
+
>;
|
|
730
|
+
}) &
|
|
731
|
+
(HasWrapper extends true
|
|
732
|
+
? {}
|
|
733
|
+
: {
|
|
734
|
+
formWrapper(
|
|
735
|
+
fn: PluginFormWrapperFn<
|
|
736
|
+
TOptions,
|
|
737
|
+
THookReturn,
|
|
738
|
+
TPluginMetaData,
|
|
739
|
+
TFieldMetaData
|
|
740
|
+
>
|
|
741
|
+
): CogsPluginBuilder<
|
|
742
|
+
TName,
|
|
743
|
+
TOptions,
|
|
744
|
+
TPluginMetaData,
|
|
745
|
+
TFieldMetaData,
|
|
746
|
+
THookReturn,
|
|
747
|
+
TChainMethods,
|
|
748
|
+
HasTransform,
|
|
749
|
+
HasUpdate,
|
|
750
|
+
HasFormUpdate,
|
|
751
|
+
HasMethods,
|
|
752
|
+
true,
|
|
753
|
+
HasInitialState,
|
|
754
|
+
TInitialState
|
|
755
|
+
>;
|
|
756
|
+
}) &
|
|
757
|
+
(HasInitialState extends true
|
|
758
|
+
? {}
|
|
759
|
+
: {
|
|
760
|
+
initialState<TNewState extends Record<string, unknown>>(
|
|
761
|
+
fn: () => TNewState
|
|
762
|
+
): CogsPluginBuilder<
|
|
763
|
+
TName,
|
|
764
|
+
TOptions,
|
|
765
|
+
TPluginMetaData,
|
|
766
|
+
TFieldMetaData,
|
|
767
|
+
THookReturn,
|
|
768
|
+
TChainMethods,
|
|
769
|
+
HasTransform,
|
|
770
|
+
HasUpdate,
|
|
771
|
+
HasFormUpdate,
|
|
772
|
+
HasMethods,
|
|
773
|
+
HasWrapper,
|
|
774
|
+
true,
|
|
775
|
+
TNewState
|
|
776
|
+
>;
|
|
777
|
+
});
|
|
778
|
+
|
|
779
|
+
export type CreatePluginStart<
|
|
780
|
+
TName extends string,
|
|
781
|
+
TOptions,
|
|
782
|
+
TPluginMetaData,
|
|
783
|
+
TFieldMetaData,
|
|
784
|
+
> = CogsPluginBuilder<
|
|
785
|
+
TName,
|
|
786
|
+
TOptions,
|
|
787
|
+
TPluginMetaData,
|
|
788
|
+
TFieldMetaData,
|
|
789
|
+
never,
|
|
790
|
+
{},
|
|
791
|
+
false,
|
|
792
|
+
false,
|
|
793
|
+
false,
|
|
794
|
+
false,
|
|
795
|
+
false,
|
|
796
|
+
false,
|
|
797
|
+
{}
|
|
798
|
+
> & {
|
|
799
|
+
useHook<THookReturn>(
|
|
800
|
+
hookFn: (
|
|
801
|
+
params: UseHookParams<TOptions, TPluginMetaData, TFieldMetaData, any>
|
|
802
|
+
) => THookReturn
|
|
803
|
+
): CogsPluginBuilder<
|
|
804
|
+
TName,
|
|
805
|
+
TOptions,
|
|
806
|
+
TPluginMetaData,
|
|
807
|
+
TFieldMetaData,
|
|
808
|
+
THookReturn,
|
|
809
|
+
{},
|
|
810
|
+
false,
|
|
811
|
+
false,
|
|
812
|
+
false,
|
|
813
|
+
false,
|
|
814
|
+
false,
|
|
815
|
+
false,
|
|
816
|
+
{}
|
|
817
|
+
>;
|
|
818
|
+
initialState<TNewState extends Record<string, unknown>>(
|
|
819
|
+
fn: () => TNewState
|
|
820
|
+
): CogsPluginBuilder<
|
|
821
|
+
TName,
|
|
822
|
+
TOptions,
|
|
823
|
+
TPluginMetaData,
|
|
824
|
+
TFieldMetaData,
|
|
825
|
+
never,
|
|
826
|
+
{},
|
|
827
|
+
false,
|
|
828
|
+
false,
|
|
829
|
+
false,
|
|
830
|
+
false,
|
|
831
|
+
false,
|
|
832
|
+
true,
|
|
833
|
+
TNewState
|
|
834
|
+
>;
|
|
835
|
+
};
|
|
836
|
+
|
|
837
|
+
// --- UPDATED EXPLICIT CONTEXT ---
|
|
838
|
+
|
|
326
839
|
export function createPluginContext<
|
|
327
|
-
O extends z.ZodTypeAny,
|
|
840
|
+
O extends z.ZodTypeAny | undefined = undefined,
|
|
328
841
|
PM extends z.ZodTypeAny | undefined = undefined,
|
|
329
842
|
FM extends z.ZodTypeAny | undefined = undefined,
|
|
330
|
-
>(schemas
|
|
331
|
-
|
|
332
|
-
|
|
843
|
+
>(schemas?: {
|
|
844
|
+
options?: O;
|
|
845
|
+
pluginMetaData?: PM;
|
|
846
|
+
fieldMetaData?: FM;
|
|
847
|
+
}): {
|
|
848
|
+
// EXPLICIT RETURN ANNOTATION STOPS TS FROM SERIALIZING
|
|
849
|
+
createPlugin: <TName extends string>(
|
|
850
|
+
name: TName
|
|
851
|
+
) => CreatePluginStart<
|
|
852
|
+
TName,
|
|
853
|
+
O extends z.ZodTypeAny ? OutputOf<O> : undefined,
|
|
854
|
+
PM extends z.ZodTypeAny ? OutputOf<PM> : unknown,
|
|
855
|
+
FM extends z.ZodTypeAny ? OutputOf<FM> : unknown
|
|
856
|
+
>;
|
|
857
|
+
} {
|
|
858
|
+
type Options = O extends z.ZodTypeAny ? OutputOf<O> : undefined;
|
|
333
859
|
type PluginMetaData = PM extends z.ZodTypeAny ? OutputOf<PM> : unknown;
|
|
334
860
|
type FieldMetaData = FM extends z.ZodTypeAny ? OutputOf<FM> : unknown;
|
|
335
861
|
|
|
336
862
|
function createPlugin<TName extends string>(name: TName) {
|
|
337
|
-
type
|
|
338
|
-
|
|
863
|
+
type Builder<
|
|
864
|
+
THookReturn,
|
|
865
|
+
TChainMethods extends ChainMethodDefinitions,
|
|
866
|
+
HT extends boolean,
|
|
867
|
+
HU extends boolean,
|
|
868
|
+
HFU extends boolean,
|
|
869
|
+
HM extends boolean,
|
|
870
|
+
HW extends boolean,
|
|
871
|
+
HI extends boolean,
|
|
872
|
+
TInitialState extends Record<string, unknown> = {},
|
|
873
|
+
> = CogsPluginBuilder<
|
|
874
|
+
TName,
|
|
875
|
+
Options,
|
|
876
|
+
PluginMetaData,
|
|
877
|
+
FieldMetaData,
|
|
878
|
+
THookReturn,
|
|
879
|
+
TChainMethods,
|
|
880
|
+
HT,
|
|
881
|
+
HU,
|
|
882
|
+
HFU,
|
|
883
|
+
HM,
|
|
884
|
+
HW,
|
|
885
|
+
HI,
|
|
886
|
+
TInitialState
|
|
887
|
+
>;
|
|
888
|
+
|
|
889
|
+
const createPluginObject = <
|
|
890
|
+
THookReturn = never,
|
|
891
|
+
TChainMethods extends ChainMethodDefinitions = {},
|
|
892
|
+
TInitialState extends Record<string, unknown> = {},
|
|
893
|
+
>(
|
|
894
|
+
hookFn?: (
|
|
895
|
+
params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>
|
|
896
|
+
) => THookReturn,
|
|
897
|
+
transformFn?: PluginTransformFn<
|
|
339
898
|
Options,
|
|
340
899
|
THookReturn,
|
|
341
900
|
PluginMetaData,
|
|
342
901
|
FieldMetaData
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
type UpdateFn<THookReturn> = (
|
|
347
|
-
params: OnUpdateParams<
|
|
902
|
+
>,
|
|
903
|
+
updateHandler?: PluginUpdateFn<
|
|
348
904
|
Options,
|
|
349
905
|
THookReturn,
|
|
350
906
|
PluginMetaData,
|
|
351
907
|
FieldMetaData
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
908
|
+
>,
|
|
909
|
+
formUpdateHandler?: PluginFormUpdateFn<
|
|
910
|
+
Options,
|
|
911
|
+
THookReturn,
|
|
912
|
+
PluginMetaData,
|
|
913
|
+
FieldMetaData
|
|
914
|
+
>,
|
|
915
|
+
chainMethods?: TChainMethods,
|
|
916
|
+
initialStateFn?: () => TInitialState,
|
|
917
|
+
wrapperFn?: PluginFormWrapperFn<
|
|
357
918
|
Options,
|
|
358
919
|
THookReturn,
|
|
359
920
|
PluginMetaData,
|
|
360
921
|
FieldMetaData
|
|
361
922
|
>
|
|
362
|
-
)
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
updateHandler?: UpdateFn<THookReturn>,
|
|
374
|
-
formUpdateHandler?: FormUpdateFn<THookReturn>
|
|
375
|
-
): Plugin<THookReturn> => {
|
|
923
|
+
): Prettify<
|
|
924
|
+
CogsPlugin<
|
|
925
|
+
TName,
|
|
926
|
+
Options,
|
|
927
|
+
THookReturn,
|
|
928
|
+
PluginMetaData,
|
|
929
|
+
FieldMetaData,
|
|
930
|
+
TChainMethods,
|
|
931
|
+
TInitialState
|
|
932
|
+
>
|
|
933
|
+
> => {
|
|
376
934
|
return {
|
|
377
935
|
name,
|
|
936
|
+
initialState: initialStateFn,
|
|
378
937
|
useHook: hookFn as any,
|
|
379
938
|
transformState: transformFn as any,
|
|
380
939
|
onUpdate: updateHandler as any,
|
|
381
940
|
onFormUpdate: formUpdateHandler as any,
|
|
941
|
+
formWrapper: wrapperFn as any,
|
|
942
|
+
chainMethods,
|
|
382
943
|
};
|
|
383
944
|
};
|
|
384
945
|
|
|
385
|
-
type BuildRet<
|
|
386
|
-
THookReturn,
|
|
387
|
-
HasTransform extends boolean,
|
|
388
|
-
HasUpdate extends boolean,
|
|
389
|
-
HasFormUpdate extends boolean,
|
|
390
|
-
HasWrapper extends boolean,
|
|
391
|
-
> = Plugin<THookReturn> &
|
|
392
|
-
(HasTransform extends true
|
|
393
|
-
? {}
|
|
394
|
-
: {
|
|
395
|
-
transformState(
|
|
396
|
-
fn: TransformFn<THookReturn>
|
|
397
|
-
): BuildRet<
|
|
398
|
-
THookReturn,
|
|
399
|
-
true,
|
|
400
|
-
HasUpdate,
|
|
401
|
-
HasFormUpdate,
|
|
402
|
-
HasWrapper
|
|
403
|
-
>;
|
|
404
|
-
}) &
|
|
405
|
-
(HasUpdate extends true
|
|
406
|
-
? {}
|
|
407
|
-
: {
|
|
408
|
-
onUpdate(
|
|
409
|
-
fn: UpdateFn<THookReturn>
|
|
410
|
-
): BuildRet<
|
|
411
|
-
THookReturn,
|
|
412
|
-
HasTransform,
|
|
413
|
-
true,
|
|
414
|
-
HasFormUpdate,
|
|
415
|
-
HasWrapper
|
|
416
|
-
>;
|
|
417
|
-
}) &
|
|
418
|
-
(HasFormUpdate extends true
|
|
419
|
-
? {}
|
|
420
|
-
: {
|
|
421
|
-
onFormUpdate(
|
|
422
|
-
fn: FormUpdateFn<THookReturn>
|
|
423
|
-
): BuildRet<THookReturn, HasTransform, HasUpdate, true, HasWrapper>;
|
|
424
|
-
});
|
|
425
|
-
|
|
426
946
|
function createBuilder<
|
|
427
947
|
THookReturn = never,
|
|
948
|
+
TChainMethods extends ChainMethodDefinitions = {},
|
|
428
949
|
HasTransform extends boolean = false,
|
|
429
950
|
HasUpdate extends boolean = false,
|
|
430
951
|
HasFormUpdate extends boolean = false,
|
|
952
|
+
HasMethods extends boolean = false,
|
|
431
953
|
HasWrapper extends boolean = false,
|
|
954
|
+
HasInitialState extends boolean = false,
|
|
955
|
+
TInitialState extends Record<string, unknown> = {},
|
|
432
956
|
>(
|
|
433
957
|
hookFn?: (
|
|
434
|
-
params: UseHookParams<Options, PluginMetaData, FieldMetaData>
|
|
958
|
+
params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>
|
|
435
959
|
) => THookReturn,
|
|
436
|
-
transformFn?:
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
960
|
+
transformFn?: PluginTransformFn<
|
|
961
|
+
Options,
|
|
962
|
+
THookReturn,
|
|
963
|
+
PluginMetaData,
|
|
964
|
+
FieldMetaData
|
|
965
|
+
>,
|
|
966
|
+
updateHandler?: PluginUpdateFn<
|
|
967
|
+
Options,
|
|
968
|
+
THookReturn,
|
|
969
|
+
PluginMetaData,
|
|
970
|
+
FieldMetaData
|
|
971
|
+
>,
|
|
972
|
+
formUpdateHandler?: PluginFormUpdateFn<
|
|
973
|
+
Options,
|
|
974
|
+
THookReturn,
|
|
975
|
+
PluginMetaData,
|
|
976
|
+
FieldMetaData
|
|
977
|
+
>,
|
|
978
|
+
chainMethods?: TChainMethods,
|
|
979
|
+
initialStateFn?: () => TInitialState,
|
|
980
|
+
wrapperFn?: PluginFormWrapperFn<
|
|
981
|
+
Options,
|
|
982
|
+
THookReturn,
|
|
983
|
+
PluginMetaData,
|
|
984
|
+
FieldMetaData
|
|
985
|
+
>
|
|
986
|
+
): Builder<
|
|
440
987
|
THookReturn,
|
|
988
|
+
TChainMethods,
|
|
441
989
|
HasTransform,
|
|
442
990
|
HasUpdate,
|
|
443
991
|
HasFormUpdate,
|
|
444
|
-
|
|
992
|
+
HasMethods,
|
|
993
|
+
HasWrapper,
|
|
994
|
+
HasInitialState,
|
|
995
|
+
TInitialState
|
|
445
996
|
> {
|
|
446
|
-
const plugin = createPluginObject<THookReturn>(
|
|
997
|
+
const plugin = createPluginObject<THookReturn, TChainMethods, TInitialState>(
|
|
447
998
|
hookFn,
|
|
448
999
|
transformFn,
|
|
449
1000
|
updateHandler,
|
|
450
|
-
formUpdateHandler
|
|
1001
|
+
formUpdateHandler,
|
|
1002
|
+
chainMethods,
|
|
1003
|
+
initialStateFn,
|
|
1004
|
+
wrapperFn
|
|
451
1005
|
);
|
|
452
1006
|
|
|
453
1007
|
const methods = {} as Partial<
|
|
454
|
-
|
|
1008
|
+
Builder<
|
|
455
1009
|
THookReturn,
|
|
1010
|
+
TChainMethods,
|
|
456
1011
|
HasTransform,
|
|
457
1012
|
HasUpdate,
|
|
458
1013
|
HasFormUpdate,
|
|
459
|
-
|
|
1014
|
+
HasMethods,
|
|
1015
|
+
HasWrapper,
|
|
1016
|
+
HasInitialState,
|
|
1017
|
+
TInitialState
|
|
460
1018
|
>
|
|
461
1019
|
>;
|
|
462
1020
|
|
|
463
1021
|
if (!transformFn) {
|
|
464
|
-
(methods as any).transformState = (
|
|
1022
|
+
(methods as any).transformState = (
|
|
1023
|
+
fn: PluginTransformFn<
|
|
1024
|
+
Options,
|
|
1025
|
+
THookReturn,
|
|
1026
|
+
PluginMetaData,
|
|
1027
|
+
FieldMetaData
|
|
1028
|
+
>
|
|
1029
|
+
) =>
|
|
465
1030
|
createBuilder<
|
|
466
1031
|
THookReturn,
|
|
1032
|
+
TChainMethods,
|
|
467
1033
|
true,
|
|
468
1034
|
HasUpdate,
|
|
469
1035
|
HasFormUpdate,
|
|
470
|
-
|
|
471
|
-
|
|
1036
|
+
HasMethods,
|
|
1037
|
+
HasWrapper,
|
|
1038
|
+
HasInitialState,
|
|
1039
|
+
TInitialState
|
|
1040
|
+
>(
|
|
1041
|
+
hookFn,
|
|
1042
|
+
fn,
|
|
1043
|
+
updateHandler,
|
|
1044
|
+
formUpdateHandler,
|
|
1045
|
+
chainMethods,
|
|
1046
|
+
initialStateFn,
|
|
1047
|
+
wrapperFn
|
|
1048
|
+
);
|
|
472
1049
|
}
|
|
473
1050
|
if (!updateHandler) {
|
|
474
|
-
(methods as any).onUpdate = (
|
|
1051
|
+
(methods as any).onUpdate = (
|
|
1052
|
+
fn: PluginUpdateFn<
|
|
1053
|
+
Options,
|
|
1054
|
+
THookReturn,
|
|
1055
|
+
PluginMetaData,
|
|
1056
|
+
FieldMetaData
|
|
1057
|
+
>
|
|
1058
|
+
) =>
|
|
475
1059
|
createBuilder<
|
|
476
1060
|
THookReturn,
|
|
1061
|
+
TChainMethods,
|
|
477
1062
|
HasTransform,
|
|
478
1063
|
true,
|
|
479
1064
|
HasFormUpdate,
|
|
480
|
-
|
|
481
|
-
|
|
1065
|
+
HasMethods,
|
|
1066
|
+
HasWrapper,
|
|
1067
|
+
HasInitialState,
|
|
1068
|
+
TInitialState
|
|
1069
|
+
>(
|
|
1070
|
+
hookFn,
|
|
1071
|
+
transformFn,
|
|
1072
|
+
fn,
|
|
1073
|
+
formUpdateHandler,
|
|
1074
|
+
chainMethods,
|
|
1075
|
+
initialStateFn,
|
|
1076
|
+
wrapperFn
|
|
1077
|
+
);
|
|
482
1078
|
}
|
|
483
1079
|
if (!formUpdateHandler) {
|
|
484
|
-
(methods as any).onFormUpdate = (
|
|
485
|
-
|
|
1080
|
+
(methods as any).onFormUpdate = (
|
|
1081
|
+
fn: PluginFormUpdateFn<
|
|
1082
|
+
Options,
|
|
1083
|
+
THookReturn,
|
|
1084
|
+
PluginMetaData,
|
|
1085
|
+
FieldMetaData
|
|
1086
|
+
>
|
|
1087
|
+
) =>
|
|
1088
|
+
createBuilder<
|
|
1089
|
+
THookReturn,
|
|
1090
|
+
TChainMethods,
|
|
1091
|
+
HasTransform,
|
|
1092
|
+
HasUpdate,
|
|
1093
|
+
true,
|
|
1094
|
+
HasMethods,
|
|
1095
|
+
HasWrapper,
|
|
1096
|
+
HasInitialState,
|
|
1097
|
+
TInitialState
|
|
1098
|
+
>(
|
|
1099
|
+
hookFn,
|
|
1100
|
+
transformFn,
|
|
1101
|
+
updateHandler,
|
|
1102
|
+
fn,
|
|
1103
|
+
chainMethods,
|
|
1104
|
+
initialStateFn,
|
|
1105
|
+
wrapperFn
|
|
1106
|
+
);
|
|
1107
|
+
}
|
|
1108
|
+
if (!chainMethods) {
|
|
1109
|
+
(methods as any).methods = <
|
|
1110
|
+
TNextMethods extends ChainMethodDefinitions,
|
|
1111
|
+
>(
|
|
1112
|
+
fn: (helpers: MethodsBuilderParams) => TNextMethods
|
|
1113
|
+
) =>
|
|
1114
|
+
createBuilder<
|
|
1115
|
+
THookReturn,
|
|
1116
|
+
TNextMethods,
|
|
1117
|
+
HasTransform,
|
|
1118
|
+
HasUpdate,
|
|
1119
|
+
HasFormUpdate,
|
|
1120
|
+
true,
|
|
1121
|
+
HasWrapper,
|
|
1122
|
+
HasInitialState,
|
|
1123
|
+
TInitialState
|
|
1124
|
+
>(
|
|
1125
|
+
hookFn,
|
|
1126
|
+
transformFn,
|
|
1127
|
+
updateHandler,
|
|
1128
|
+
formUpdateHandler,
|
|
1129
|
+
fn(createMethodsBuilderParams()),
|
|
1130
|
+
initialStateFn,
|
|
1131
|
+
wrapperFn
|
|
1132
|
+
);
|
|
1133
|
+
}
|
|
1134
|
+
if (!initialStateFn) {
|
|
1135
|
+
(methods as any).initialState = <TNewState extends Record<string, unknown>>(fn: () => TNewState) =>
|
|
1136
|
+
createBuilder<
|
|
1137
|
+
THookReturn,
|
|
1138
|
+
TChainMethods,
|
|
1139
|
+
HasTransform,
|
|
1140
|
+
HasUpdate,
|
|
1141
|
+
HasFormUpdate,
|
|
1142
|
+
HasMethods,
|
|
1143
|
+
HasWrapper,
|
|
1144
|
+
true,
|
|
1145
|
+
TNewState
|
|
1146
|
+
>(
|
|
1147
|
+
hookFn,
|
|
1148
|
+
transformFn,
|
|
1149
|
+
updateHandler,
|
|
1150
|
+
formUpdateHandler,
|
|
1151
|
+
chainMethods,
|
|
1152
|
+
fn,
|
|
1153
|
+
wrapperFn
|
|
1154
|
+
);
|
|
1155
|
+
}
|
|
1156
|
+
if (!wrapperFn) {
|
|
1157
|
+
(methods as any).formWrapper = (
|
|
1158
|
+
fn: PluginFormWrapperFn<
|
|
1159
|
+
Options,
|
|
1160
|
+
THookReturn,
|
|
1161
|
+
PluginMetaData,
|
|
1162
|
+
FieldMetaData
|
|
1163
|
+
>
|
|
1164
|
+
) =>
|
|
1165
|
+
createBuilder<
|
|
1166
|
+
THookReturn,
|
|
1167
|
+
TChainMethods,
|
|
1168
|
+
HasTransform,
|
|
1169
|
+
HasUpdate,
|
|
1170
|
+
HasFormUpdate,
|
|
1171
|
+
HasMethods,
|
|
1172
|
+
true,
|
|
1173
|
+
HasInitialState,
|
|
1174
|
+
TInitialState
|
|
1175
|
+
>(
|
|
486
1176
|
hookFn,
|
|
487
1177
|
transformFn,
|
|
488
1178
|
updateHandler,
|
|
1179
|
+
formUpdateHandler,
|
|
1180
|
+
chainMethods,
|
|
1181
|
+
initialStateFn,
|
|
489
1182
|
fn
|
|
490
1183
|
);
|
|
491
1184
|
}
|
|
492
1185
|
|
|
493
|
-
return Object.assign(plugin, methods) as
|
|
1186
|
+
return Object.assign(plugin, methods) as Builder<
|
|
494
1187
|
THookReturn,
|
|
1188
|
+
TChainMethods,
|
|
495
1189
|
HasTransform,
|
|
496
1190
|
HasUpdate,
|
|
497
1191
|
HasFormUpdate,
|
|
498
|
-
|
|
1192
|
+
HasMethods,
|
|
1193
|
+
HasWrapper,
|
|
1194
|
+
HasInitialState,
|
|
1195
|
+
TInitialState
|
|
499
1196
|
>;
|
|
500
1197
|
}
|
|
501
1198
|
|
|
502
1199
|
const start = Object.assign(
|
|
503
|
-
createBuilder<never, false, false, false, false>(),
|
|
1200
|
+
createBuilder<never, {}, false, false, false, false, false, false, {}>(),
|
|
504
1201
|
{
|
|
505
1202
|
useHook<THookReturn>(
|
|
506
1203
|
hookFn: (
|
|
507
|
-
params: UseHookParams<Options, PluginMetaData, FieldMetaData>
|
|
1204
|
+
params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>
|
|
508
1205
|
) => THookReturn
|
|
509
1206
|
) {
|
|
510
|
-
return createBuilder<
|
|
1207
|
+
return createBuilder<
|
|
1208
|
+
THookReturn,
|
|
1209
|
+
{},
|
|
1210
|
+
false,
|
|
1211
|
+
false,
|
|
1212
|
+
false,
|
|
1213
|
+
false,
|
|
1214
|
+
false,
|
|
1215
|
+
false,
|
|
1216
|
+
{}
|
|
1217
|
+
>(hookFn);
|
|
1218
|
+
},
|
|
1219
|
+
initialState<TNewState extends Record<string, unknown>>(fn: () => TNewState) {
|
|
1220
|
+
return createBuilder<
|
|
1221
|
+
never,
|
|
1222
|
+
{},
|
|
1223
|
+
false,
|
|
1224
|
+
false,
|
|
1225
|
+
false,
|
|
1226
|
+
false,
|
|
1227
|
+
false,
|
|
1228
|
+
true,
|
|
1229
|
+
TNewState
|
|
1230
|
+
>(undefined, undefined, undefined, undefined, undefined, fn);
|
|
511
1231
|
},
|
|
512
1232
|
}
|
|
513
|
-
) as
|
|
514
|
-
useHook<THookReturn>(
|
|
515
|
-
hookFn: (
|
|
516
|
-
params: UseHookParams<Options, PluginMetaData, FieldMetaData>
|
|
517
|
-
) => THookReturn
|
|
518
|
-
): BuildRet<THookReturn, false, false, false, false>;
|
|
519
|
-
};
|
|
1233
|
+
) as CreatePluginStart<TName, Options, PluginMetaData, FieldMetaData>;
|
|
520
1234
|
|
|
521
1235
|
return start;
|
|
522
1236
|
}
|