@piying/view-angular 2.7.5 → 3.0.0

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.
@@ -1,9 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, computed, input, Injector, Directive, viewChild, ChangeDetectionStrategy, Component, Renderer2, ElementRef, reflectComponentType, inputBinding, outputBinding, untracked, signal, ApplicationRef, PendingTasks, EventEmitter, createNgModule, createComponent, EnvironmentInjector, ViewContainerRef, Injectable, Pipe, output } from '@angular/core';
3
- import { PI_VIEW_FIELD_TOKEN as PI_VIEW_FIELD_TOKEN$1, isLazyMark, getLazyImport, PENDING, createViewControlLink, asyncObjectSignal, FormBuilder, CoreSchemaHandle, combineSignal, convert, initListen, rawConfig as rawConfig$1, mergeHooksFn, CustomDataSymbol, actions as actions$1, setComponent } from '@piying/view-angular-core';
2
+ import { InjectionToken, inject, computed, Injector, Directive, viewChild, ChangeDetectionStrategy, Component, Injectable, reflectComponentType, input, Renderer2, ElementRef, inputBinding, outputBinding, ViewContainerRef, PendingTasks, ApplicationRef, EnvironmentInjector, signal, createNgModule, createComponent, Pipe, output, untracked } from '@angular/core';
3
+ import { PI_VIEW_FIELD_TOKEN as PI_VIEW_FIELD_TOKEN$1, FormBuilder, CoreSchemaHandle, combineSignal, PENDING, createViewControlLink, asyncObjectSignal, isLazyMark, getLazyImport, convert, initListen, rawConfig as rawConfig$1, mergeHooksFn, CustomDataSymbol, actions as actions$1, setComponent } from '@piying/view-angular-core';
4
4
  export { asControl, asVirtualGroup, condition, layout } from '@piying/view-angular-core';
5
5
  import { NgTemplateOutlet } from '@angular/common';
6
- import { deepEqual } from 'fast-equals';
7
6
  import { NgControl, Validators, NG_VALUE_ACCESSOR } from '@angular/forms';
8
7
  import { metadataList } from '@piying/valibot-visit';
9
8
 
@@ -11,8 +10,13 @@ import { metadataList } from '@piying/valibot-visit';
11
10
  const PI_INPUT_OPTIONS_TOKEN = new InjectionToken('PI_INPUT_OPTIONS');
12
11
  const PI_INPUT_SCHEMA_TOKEN = new InjectionToken('PI_INPUT_SCHEMA');
13
12
  const PI_INPUT_MODEL_TOKEN = new InjectionToken('PI_INPUT_MODEL');
14
- /** wrapper中可以使用,已解析的配置 */
13
+ /** wrapper中可以使用,已解析的配置
14
+ * core
15
+ */
15
16
  const PI_VIEW_FIELD_TOKEN = PI_VIEW_FIELD_TOKEN$1;
17
+ const PI_VIEW_TEMPLATE_REF_TOKEN = new InjectionToken('PI_VIEW_TEMPLATE_REF');
18
+ /** todo 用以前的? */
19
+ const PI_VIEW_COMPONENT_LIST_TOKEN = new InjectionToken('PI_VIEW_COMPONENT_LIST');
16
20
  /**
17
21
  * @internal
18
22
  * 内部传参用
@@ -27,10 +31,10 @@ class PiyingViewGroupBase {
27
31
  children$$ = computed(() => this.field$$().children());
28
32
  fixedChildren$$ = computed(() => this.field$$().fixedChildren?.() ?? []);
29
33
  restChildren$$ = computed(() => this.field$$().restChildren?.() ?? []);
30
- fieldTemplateRef = input.required();
34
+ fieldTemplateRef = inject(PI_VIEW_TEMPLATE_REF_TOKEN);
31
35
  injector = inject(Injector);
32
36
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingViewGroupBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
33
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: PiyingViewGroupBase, isStandalone: true, inputs: { fieldTemplateRef: { classPropertyName: "fieldTemplateRef", publicName: "fieldTemplateRef", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
37
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: PiyingViewGroupBase, isStandalone: true, ngImport: i0 });
34
38
  }
35
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingViewGroupBase, decorators: [{
36
40
  type: Directive
@@ -40,32 +44,32 @@ class PiyingViewGroup extends PiyingViewGroupBase {
40
44
  static __version = 2;
41
45
  templateRef = viewChild.required('templateRef');
42
46
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingViewGroup, deps: null, target: i0.ɵɵFactoryTarget.Component });
43
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: PiyingViewGroup, isStandalone: true, selector: "piying-view-group", viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateRef>\n @for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"\n fieldTemplateRef();\n context: { $implicit: field, injector }\n \"\n ></ng-container>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: PiyingViewGroup, isStandalone: true, selector: "piying-view-group", viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateRef>\n @for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"\n fieldTemplateRef;\n context: { $implicit: field, injector }\n \"\n ></ng-container>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
48
  }
45
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingViewGroup, decorators: [{
46
50
  type: Component,
47
- args: [{ selector: 'piying-view-group', imports: [NgTemplateOutlet], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #templateRef>\n @for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"\n fieldTemplateRef();\n context: { $implicit: field, injector }\n \"\n ></ng-container>\n }\n</ng-template>\n" }]
51
+ args: [{ selector: 'piying-view-group', imports: [NgTemplateOutlet], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #templateRef>\n @for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"\n fieldTemplateRef;\n context: { $implicit: field, injector }\n \"\n ></ng-container>\n }\n</ng-template>\n" }]
48
52
  }] });
49
53
 
50
- const EMPTY_ARRAY = [];
54
+ class AngularFormBuilder extends FormBuilder {
55
+ afterResolveConfig(rawConfig, config) {
56
+ const field = rawConfig;
57
+ config.directives = field.directives;
58
+ return config;
59
+ }
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
61
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder });
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder, decorators: [{
64
+ type: Injectable
65
+ }] });
51
66
 
52
- function getComponentCheckConfig(a) {
53
- return {
54
- ...a,
55
- inputs: Object.keys(a.inputs() ?? {}).join(','),
56
- directives: a.directives
57
- ? a.directives.map((config) => ({
58
- ...config,
59
- inputs: `${config.inputs ? Object.keys(config.inputs() ?? {}).join(',') : ''}`,
60
- }))
61
- : undefined,
62
- // todo 这里是为了schema被替换时,进行比较,感觉应该有更好的方法
63
- attributes: Object.entries(a.attributes() ?? {})
64
- .map((key, value) => `${key}:${value}`)
65
- .join(','),
66
- events: Object.keys(a.events() ?? {}).join(','),
67
- outputs: Object.keys(a.events() ?? {}).join(','),
68
- };
67
+ class NgSchemaHandle extends CoreSchemaHandle {
68
+ directives = combineSignal([]);
69
+ }
70
+
71
+ function isComponentType(input) {
72
+ return !!reflectComponentType(input);
69
73
  }
70
74
 
71
75
  class AttributesDirective {
@@ -103,10 +107,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
103
107
  }]
104
108
  }] });
105
109
 
106
- function isComponentType(input) {
107
- return !!reflectComponentType(input);
108
- }
109
-
110
110
  class EventsDirective {
111
111
  events = input.required();
112
112
  #renderer = inject(Renderer2);
@@ -137,194 +137,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
137
137
  }]
138
138
  }] });
139
139
 
140
- function createInputsBind(inputs) {
141
- if (!inputs || !inputs()) {
142
- return [];
143
- }
144
- return Object.keys(inputs()).map((key) => inputBinding(key, computed(() => inputs()[key])));
145
- }
146
- function createOutputsBind(outputs, config) {
147
- if (!outputs?.()) {
148
- return [];
149
- }
150
- return Object.entries(outputs()).map(([key, value]) => outputBinding(key, config ? (event) => value(event, config()) : value));
151
- }
152
- function createAttributesDirective(attributes) {
153
- if (attributes()) {
154
- return [
155
- {
156
- type: AttributesDirective,
157
- bindings: [inputBinding('attributes', attributes)],
158
- },
159
- ];
160
- }
161
- return [];
162
- }
163
- function createEventsDirective(events) {
164
- if (events()) {
165
- return [
166
- {
167
- type: EventsDirective,
168
- bindings: [inputBinding('events', events)],
169
- },
170
- ];
171
- }
172
- return [];
173
- }
174
- const EmptyOBJ = {};
175
- class BaseComponent {
176
- /** 第一次默认为空 */
177
- #index = inject(PI_COMPONENT_INDEX, { optional: true }) ?? 0;
178
- /** 发射提供到下一级 */
179
- #eventEmitter;
180
- #componentConfig;
181
- #viewContainerRef;
182
- destroyComponentFn;
183
- fieldComponentInstance;
184
- fieldElementRef;
185
- fieldDirectiveRefList;
186
- componentRef;
187
- /** 比较时使用 */
188
- #componentCheckConfig$$;
189
- #setComponentCheck(config) {
190
- this.#componentCheckConfig$$ = computed(() => untracked(() => getComponentCheckConfig(config)));
191
- }
192
- setFieldData(field, index) {
193
- this.#index = index;
194
- }
195
- /**
196
- * 输入引用绑定
197
- * 1. 上次传入的数据格式和当前一样,只触发更新
198
- * 2. 上次传入的数据格式和当前不一样,直接重新创建
199
- */
200
- #inputCache;
201
- #configUpdate$ = signal(0);
202
- #app = inject(ApplicationRef);
203
- #task = inject(PendingTasks);
204
- #loadComponent(type, loadFn) {
205
- if (isComponentType(type)) {
206
- loadFn({ component: type });
207
- return;
208
- }
209
- if (typeof type === 'function' || isLazyMark(type)) {
210
- this.#task.run(() => getLazyImport(type)()
211
- .then((type) => {
212
- if (isComponentType(type)) {
213
- return { component: type };
214
- }
215
- return type;
216
- })
217
- .then((data) => loadFn(data)));
218
- return;
219
- }
220
- loadFn(type);
221
- }
222
- createComponent(list, viewContainerRef) {
223
- // 销毁
224
- this.destroyComponentFn?.();
225
- this.#viewContainerRef = viewContainerRef;
226
- // 取消上一级的定义
227
- this.#eventEmitter = new EventEmitter();
228
- const componentConfig = list[this.#index];
229
- this.#loadComponent(componentConfig.type, (componentDefine) => {
230
- this.#componentConfig = componentConfig;
231
- this.#inputCache = {
232
- inputs: computed(() => {
233
- this.#configUpdate$();
234
- return this.#componentConfig.inputs() ?? EmptyOBJ;
235
- }),
236
- directiveList: this.#componentConfig?.directives?.map((config, index) => config.inputs
237
- ? computed(() => {
238
- this.#configUpdate$();
239
- return (this.#componentConfig.directives[index].inputs() ?? {});
240
- })
241
- : undefined),
242
- };
243
- this.#setComponentCheck(componentConfig);
244
- const componentInjector = Injector.create({
245
- providers: [
246
- { provide: PI_COMPONENT_LIST, useValue: list },
247
- { provide: PI_COMPONENT_INDEX, useValue: this.#index + 1 },
248
- { provide: PI_COMPONENT_LIST_LISTEN, useValue: this.#eventEmitter },
249
- ],
250
- parent: componentConfig.injector ?? viewContainerRef.injector,
251
- });
252
- const COMPONENT_VERSION = componentDefine.component.__version;
253
- const injector = componentDefine.module
254
- ? createNgModule(componentDefine.module, componentInjector).injector
255
- : componentInjector;
256
- const componentRef = createComponent(componentDefine.component, {
257
- elementInjector: injector,
258
- environmentInjector: injector.get(EnvironmentInjector),
259
- bindings: [
260
- ...createInputsBind(this.#inputCache.inputs),
261
- ...createOutputsBind(componentConfig.outputs),
262
- ],
263
- directives: [
264
- ...(componentConfig.directives ?? []).map((item, index) => ({
265
- type: item.type,
266
- bindings: [
267
- ...createInputsBind(this.#inputCache.directiveList[index]),
268
- ...createOutputsBind(item.outputs, injector.get(PI_VIEW_FIELD_TOKEN)),
269
- ],
270
- })),
271
- ...(COMPONENT_VERSION === 2
272
- ? []
273
- : [
274
- ...createAttributesDirective(componentConfig.attributes),
275
- ...createEventsDirective(componentConfig.events),
276
- ]),
277
- ],
278
- });
279
- this.componentRef = componentRef;
280
- this.fieldComponentInstance = componentRef.instance;
281
- this.fieldElementRef = componentRef.location;
282
- this.fieldDirectiveRefList = (componentConfig.directives ?? []).map((item) => componentRef.injector.get(item.type));
283
- if (COMPONENT_VERSION === 2) {
284
- const templateRef = componentRef.instance.templateRef();
285
- viewContainerRef.createEmbeddedView(templateRef, {
286
- attributes: componentConfig.attributes,
287
- events: componentConfig.events,
288
- });
289
- this.#app.attachView(componentRef.hostView);
290
- componentRef.changeDetectorRef.detectChanges();
291
- }
292
- else {
293
- viewContainerRef.insert(componentRef.hostView);
294
- }
295
- this.destroyComponentFn = () => {
296
- viewContainerRef.clear();
297
- componentRef.destroy();
298
- this.#eventEmitter.unsubscribe();
299
- };
300
- if (list.length === this.#index + 1) {
301
- const field = componentInjector.get(PI_VIEW_FIELD_TOKEN)();
302
- field.hooks?.afterCreateComponent?.(field);
303
- }
304
- });
305
- }
306
- update(list) {
307
- const item = list[this.#index];
308
- const currentCheckConfig = getComponentCheckConfig(item);
309
- const isEqual = deepEqual(currentCheckConfig, this.#componentCheckConfig$$());
310
- // this.#componentCheckConfig$$ = computed(() => currentCheckConfig);
311
- if (isEqual) {
312
- this.#componentConfig = item;
313
- this.#configUpdate$.update((a) => a + 1);
314
- // 相等不处理
315
- this.#eventEmitter.next(list);
316
- }
317
- else {
318
- this.createComponent(list, this.#viewContainerRef);
319
- }
320
- }
321
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
322
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: BaseComponent, isStandalone: true, ngImport: i0 });
323
- }
324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BaseComponent, decorators: [{
325
- type: Directive
326
- }] });
327
-
328
140
  class InteropNgControl extends NgControl {
329
141
  field;
330
142
  constructor(field) {
@@ -454,128 +266,251 @@ class ChainedInjector {
454
266
  }
455
267
  }
456
268
 
457
- class NgComponentOutlet extends BaseComponent {
458
- /** 输入 */
459
- ngComponentOutlet = input();
460
- ngComponentOutletExtraInputs = input();
461
- /** 控件用 */
462
- ngComponentOutletFormControl = input();
463
- /** 包裹用 */
464
- ngComponentOutletWrappers = input();
465
- ngComponentOutletDirectives = input();
466
- ngComponentOutletField = input.required();
467
- #viewContainerRef = inject(ViewContainerRef);
468
- // 这里感觉会在非发射时出现多次输入?
469
- ngComponentOutletInjector = input.required();
470
- #injector$$ = computed(() => new ChainedInjector(this.ngComponentOutletField().injector, this.ngComponentOutletInjector()));
269
+ function createInputsBind(inputs) {
270
+ if (!inputs?.()) {
271
+ return [];
272
+ }
273
+ return Object.keys(inputs()).map((key) => inputBinding(key, computed(() => inputs()[key])));
274
+ }
275
+ function createOutputsBind(outputs) {
276
+ if (!outputs?.()) {
277
+ return [];
278
+ }
279
+ return Object.keys(outputs()).map((key) => outputBinding(key, (event) => outputs()[key](event)));
280
+ }
281
+ function createAttributesDirective(attributes) {
282
+ if (attributes()) {
283
+ return [
284
+ {
285
+ type: AttributesDirective,
286
+ bindings: [inputBinding('attributes', attributes)],
287
+ },
288
+ ];
289
+ }
290
+ return [];
291
+ }
292
+ function createEventsDirective(events) {
293
+ if (events()) {
294
+ return [
295
+ {
296
+ type: EventsDirective,
297
+ bindings: [inputBinding('events', events)],
298
+ },
299
+ ];
300
+ }
301
+ return [];
302
+ }
303
+ // 没有保存
304
+ class FieldOutlet {
305
+ fieldOutlet = input.required();
306
+ nextTemplateRef = input.required();
307
+ index = input(0);
308
+ injector = input.required();
309
+ listen = input();
310
+ #isGroup$$ = computed(() => {
311
+ const define = this.fieldOutlet();
312
+ return define?.fixedChildren || define?.restChildren;
313
+ });
314
+ #control = computed(() => this.fieldOutlet().form.control);
471
315
  #formControlDirectiveConfig$$ = computed(() => {
472
- const fieldControl = this.ngComponentOutletFormControl();
473
- return fieldControl
316
+ const isGroup = this.#isGroup$$();
317
+ return !isGroup && this.#control()
474
318
  ? {
475
319
  type: FieldControlDirective,
476
- inputs: asyncObjectSignal({ fieldControl: fieldControl }),
320
+ inputs: asyncObjectSignal({ fieldControl: this.#control() }),
477
321
  }
478
322
  : undefined;
479
323
  });
324
+ /* 组件的指令 **/
480
325
  #directiveConfigList$$ = computed(() => {
481
- const directivesInputs = this.ngComponentOutletDirectives();
326
+ const directivesInputs = this.fieldOutlet().directives() ?? [];
482
327
  const formConfig = this.#formControlDirectiveConfig$$();
483
- return formConfig
484
- ? [...(directivesInputs?.() ?? []), formConfig]
485
- : directivesInputs?.();
328
+ return formConfig ? [...directivesInputs, formConfig] : directivesInputs;
486
329
  });
487
- #componentInput$$ = computed(() => ({
488
- ...this.ngComponentOutlet()?.inputs?.(),
489
- ...this.ngComponentOutletExtraInputs(),
490
- }));
491
- #componentConfig$$ = computed(() => {
492
- const define = this.ngComponentOutlet();
493
- if (!define) {
330
+ #wrappers = computed(() => this.fieldOutlet().wrappers());
331
+ #viewRef = inject(ViewContainerRef);
332
+ #task = inject(PendingTasks);
333
+ #loadComponent(type, loadFn) {
334
+ if (isComponentType(type)) {
335
+ loadFn({ component: type });
494
336
  return;
495
337
  }
496
- const directives = this.#directiveConfigList$$();
497
- return {
498
- ...define,
499
- outputs: define.outputs,
500
- inputs: this.#componentInput$$,
501
- directives: directives,
502
- };
503
- });
504
- #componentList$$ = computed(() => {
505
- const componentConfig = this.#componentConfig$$();
506
- if (!componentConfig) {
507
- return EMPTY_ARRAY;
338
+ if (typeof type === 'function' || isLazyMark(type)) {
339
+ this.#task.run(() => getLazyImport(type)()
340
+ .then((type) => {
341
+ if (isComponentType(type)) {
342
+ return { component: type };
343
+ }
344
+ return type;
345
+ })
346
+ .then((data) => loadFn(data)));
347
+ return;
508
348
  }
509
- const list = [
510
- ...(this.ngComponentOutletWrappers() ?? []),
511
- componentConfig,
512
- ];
513
- list[0].injector = this.#injector$$();
514
- return list;
515
- });
516
- #lastList;
349
+ loadFn(type);
350
+ }
351
+ #moduleRef;
352
+ #injector$$ = computed(() => new ChainedInjector(this.fieldOutlet().injector, this.injector()));
353
+ #componentRef;
354
+ #app = inject(ApplicationRef);
517
355
  ngOnChanges() {
518
- //todo 变更时的一些检测,相同时应该不处理
519
- const list = this.#componentList$$();
520
- if (!list.length) {
521
- return this.destroyComponentFn?.();
522
- }
523
- if (!this.#lastList) {
524
- const field = this.ngComponentOutletField();
525
- field.hooks?.beforeCreateComponent?.(field);
526
- this.setFieldData(this.ngComponentOutletField, 0);
527
- this.createComponent(list, this.#viewContainerRef);
356
+ this.#createComponent();
357
+ }
358
+ #createComponent() {
359
+ this.#dispose();
360
+ const injector = this.#injector$$();
361
+ const evInjector = injector.get(EnvironmentInjector);
362
+ const index = this.index();
363
+ /** 用于wrapper的槽传递 */
364
+ const templateRef = this.nextTemplateRef();
365
+ let createProjectableNodes;
366
+ let typeDefine = this.#wrappers()[index];
367
+ const cmpInjector = signal(undefined);
368
+ let directivesList;
369
+ // 改增量后,要保证列表更新时没有问题
370
+ const componentList = injector.get(PI_VIEW_COMPONENT_LIST_TOKEN);
371
+ /** 包装器 */
372
+ if (typeDefine) {
373
+ const embRef = this.#viewRef.createEmbeddedView(templateRef, {
374
+ injector: cmpInjector,
375
+ index: index + 1,
376
+ fieldConfig: this.fieldOutlet(),
377
+ });
378
+ createProjectableNodes = () => [embRef.rootNodes];
379
+ directivesList = [];
528
380
  }
529
- else if (this.#lastList !== list) {
530
- this.update(list);
381
+ else {
382
+ /** 内层组件 */
383
+ typeDefine = this.fieldOutlet().define();
384
+ createProjectableNodes = (componentDefine) => {
385
+ const cm = reflectComponentType(componentDefine.component);
386
+ const templateSlots = typeDefine.slots();
387
+ const templateRefList = cm.ngContentSelectors.map((key) => templateSlots[key]);
388
+ const viewRefList = templateRefList.map((item) => item ? this.#viewRef.createEmbeddedView(item) : undefined);
389
+ return viewRefList.map((item) => item?.rootNodes ?? []);
390
+ };
391
+ directivesList = this.#directiveConfigList$$();
531
392
  }
532
- // 监听输入/输出变更,重新进行赋值
533
- this.#lastList = list;
393
+ this.#loadComponent(typeDefine.type, (componentDefine) => {
394
+ const COMPONENT_VERSION = componentDefine.component.__version;
395
+ this.#moduleRef = componentDefine.module
396
+ ? createNgModule(componentDefine.module, injector)
397
+ : undefined;
398
+ const evInjector2 = this.#moduleRef?.injector ?? evInjector;
399
+ const componentRef = createComponent(componentDefine.component, {
400
+ elementInjector: injector,
401
+ environmentInjector: evInjector2,
402
+ bindings: [
403
+ ...createInputsBind(typeDefine.inputs),
404
+ ...createOutputsBind(typeDefine.outputs),
405
+ ],
406
+ directives: [
407
+ ...directivesList.map((item) => ({
408
+ type: item.type,
409
+ bindings: [
410
+ ...createInputsBind(item.inputs),
411
+ ...createOutputsBind(item.outputs),
412
+ ],
413
+ })),
414
+ ...(COMPONENT_VERSION === 2
415
+ ? []
416
+ : [
417
+ ...createAttributesDirective(typeDefine.attributes),
418
+ ...createEventsDirective(typeDefine.events),
419
+ ]),
420
+ ],
421
+ projectableNodes: createProjectableNodes(componentDefine),
422
+ });
423
+ this.#componentRef = componentRef;
424
+ componentList.push(componentRef);
425
+ if (COMPONENT_VERSION === 2) {
426
+ const templateRef = componentRef.instance.templateRef();
427
+ this.#viewRef.createEmbeddedView(templateRef, {
428
+ attributes: typeDefine.attributes,
429
+ events: typeDefine.events,
430
+ });
431
+ this.#app.attachView(componentRef.hostView);
432
+ componentRef.changeDetectorRef.detectChanges();
433
+ }
434
+ else {
435
+ this.#viewRef.insert(componentRef.hostView);
436
+ }
437
+ cmpInjector.set(componentRef.injector);
438
+ });
439
+ }
440
+ #dispose() {
441
+ this.#viewRef.clear();
442
+ this.#componentRef?.destroy();
443
+ this.#componentRef = undefined;
444
+ this.#moduleRef?.destroy();
445
+ this.#moduleRef = undefined;
534
446
  }
535
447
  ngOnDestroy() {
536
- this.destroyComponentFn?.();
448
+ this.#dispose();
537
449
  }
538
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgComponentOutlet, deps: null, target: i0.ɵɵFactoryTarget.Directive });
539
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: NgComponentOutlet, isStandalone: true, selector: "[ngComponentOutlet]", inputs: { ngComponentOutlet: { classPropertyName: "ngComponentOutlet", publicName: "ngComponentOutlet", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletExtraInputs: { classPropertyName: "ngComponentOutletExtraInputs", publicName: "ngComponentOutletExtraInputs", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletFormControl: { classPropertyName: "ngComponentOutletFormControl", publicName: "ngComponentOutletFormControl", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletWrappers: { classPropertyName: "ngComponentOutletWrappers", publicName: "ngComponentOutletWrappers", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletDirectives: { classPropertyName: "ngComponentOutletDirectives", publicName: "ngComponentOutletDirectives", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletField: { classPropertyName: "ngComponentOutletField", publicName: "ngComponentOutletField", isSignal: true, isRequired: true, transformFunction: null }, ngComponentOutletInjector: { classPropertyName: "ngComponentOutletInjector", publicName: "ngComponentOutletInjector", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
450
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: FieldOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
451
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: FieldOutlet, isStandalone: true, selector: "[fieldOutlet]", inputs: { fieldOutlet: { classPropertyName: "fieldOutlet", publicName: "fieldOutlet", isSignal: true, isRequired: true, transformFunction: null }, nextTemplateRef: { classPropertyName: "nextTemplateRef", publicName: "nextTemplateRef", isSignal: true, isRequired: true, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, injector: { classPropertyName: "injector", publicName: "injector", isSignal: true, isRequired: true, transformFunction: null }, listen: { classPropertyName: "listen", publicName: "listen", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0 });
540
452
  }
541
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgComponentOutlet, decorators: [{
453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: FieldOutlet, decorators: [{
542
454
  type: Directive,
543
455
  args: [{
544
- selector: '[ngComponentOutlet]',
456
+ selector: '[fieldOutlet]',
545
457
  standalone: true,
546
458
  }]
547
459
  }] });
548
460
 
549
- class AngularFormBuilder extends FormBuilder {
550
- afterResolveConfig(rawConfig, config) {
551
- const field = rawConfig;
552
- config.directives = field.directives;
553
- return config;
461
+ class TemplatePipe {
462
+ transform(injector, templateRef) {
463
+ return Injector.create({
464
+ providers: [
465
+ { provide: PI_VIEW_TEMPLATE_REF_TOKEN, useValue: templateRef },
466
+ ],
467
+ parent: injector,
468
+ });
554
469
  }
555
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
556
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder });
470
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: TemplatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
471
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: TemplatePipe, isStandalone: true, name: "templateInjector" });
557
472
  }
558
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder, decorators: [{
559
- type: Injectable
473
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: TemplatePipe, decorators: [{
474
+ type: Pipe,
475
+ args: [{ name: 'templateInjector' }]
560
476
  }] });
561
477
 
562
- class NgSchemaHandle extends CoreSchemaHandle {
563
- directives = combineSignal([]);
478
+ class ListenPipe {
479
+ transform(value, ...args) {
480
+ return [value, ...args];
481
+ }
482
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: ListenPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
483
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: ListenPipe, isStandalone: true, name: "listen" });
564
484
  }
485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: ListenPipe, decorators: [{
486
+ type: Pipe,
487
+ args: [{ name: 'listen' }]
488
+ }] });
489
+ class InputsPipe {
490
+ transform(value) {
491
+ return Object.keys(value).join('|');
492
+ }
493
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: InputsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
494
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: InputsPipe, isStandalone: true, name: "inputKeys" });
495
+ }
496
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: InputsPipe, decorators: [{
497
+ type: Pipe,
498
+ args: [{ name: 'inputKeys' }]
499
+ }] });
565
500
 
566
- class PurePipe {
567
- transform(fn, ...args) {
568
- return fn(...args);
501
+ class ListInjectorPipe {
502
+ transform(injector) {
503
+ return Injector.create({
504
+ providers: [{ provide: PI_VIEW_COMPONENT_LIST_TOKEN, useValue: [] }],
505
+ parent: injector,
506
+ });
569
507
  }
570
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PurePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
571
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: PurePipe, isStandalone: true, name: "pure" });
508
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: ListInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
509
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: ListInjectorPipe, isStandalone: true, name: "listInjector" });
572
510
  }
573
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PurePipe, decorators: [{
511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: ListInjectorPipe, decorators: [{
574
512
  type: Pipe,
575
- args: [{
576
- name: 'pure',
577
- standalone: true,
578
- }]
513
+ args: [{ name: 'listInjector' }]
579
514
  }] });
580
515
 
581
516
  const DefaultConvertOptions = {
@@ -667,49 +602,22 @@ class PiyingView {
667
602
  result.form.control.updateValue(model);
668
603
  }
669
604
  }
670
- groupInputsValue(fieldTemplateRef) {
671
- return { fieldTemplateRef };
672
- }
673
605
  ngOnDestroy() {
674
606
  this.#listenDispose?.();
675
607
  }
676
608
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingView, deps: [], target: i0.ɵɵFactoryTarget.Component });
677
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: PiyingView, isStandalone: true, selector: "piying-view", inputs: { selectorless: { classPropertyName: "selectorless", publicName: "selectorless", isSignal: true, isRequired: false, transformFunction: null }, schema: { classPropertyName: "schema", publicName: "schema", isSignal: true, isRequired: true, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { modelChange: "modelChange" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #dynamicComponent let-field let-injector=\"injector\">\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @if (field.fixedChildren || field.restChildren) {\n <!-- \u81EA\u5B9A\u4E49group -->\n <ng-container\n [ngComponentOutlet]=\"field.define?.()\"\n [ngComponentOutletExtraInputs]=\"\n groupInputsValue | pure: dynamicComponent\n \"\n [ngComponentOutletWrappers]=\"field.wrappers()\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n [ngComponentOutletInjector]=\"injector ?? injector3$$()\"\n ></ng-container>\n } @else {\n <ng-container\n [ngComponentOutlet]=\"field.define?.()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"field.wrappers()\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n [ngComponentOutletInjector]=\"injector ?? injector3$$()\"\n ></ng-container>\n }\n }\n</ng-template>\n<ng-template #templateRef>\n @if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"\n dynamicComponent;\n context: {\n $implicit: field,\n injector: injector3$$(),\n }\n \"\n ></ng-container>\n }\n</ng-template>\n@if (!selectorless()) {\n <ng-container *ngTemplateOutlet=\"templateRef\"></ng-container>\n}\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletExtraInputs", "ngComponentOutletFormControl", "ngComponentOutletWrappers", "ngComponentOutletDirectives", "ngComponentOutletField", "ngComponentOutletInjector"] }, { kind: "pipe", type: PurePipe, name: "pure" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
609
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: PiyingView, isStandalone: true, selector: "piying-view", inputs: { selectorless: { classPropertyName: "selectorless", publicName: "selectorless", isSignal: true, isRequired: false, transformFunction: null }, schema: { classPropertyName: "schema", publicName: "schema", isSignal: true, isRequired: true, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { modelChange: "modelChange" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template\n #nextTemplate\n let-injector=\"injector\"\n let-index=\"index\"\n let-fieldConfig=\"fieldConfig\"\n>\n @if (injector(); as injector) {\n <ng-template\n [fieldOutlet]=\"fieldConfig\"\n [index]=\"index\"\n [nextTemplateRef]=\"nextTemplate\"\n [injector]=\"injector\"\n ></ng-template>\n }\n</ng-template>\n\n<ng-template #dynamicComponent let-field let-injector=\"injector\">\n @let listij = injector ?? NewInjector | listInjector;\n @let renderConfig = field.renderConfig();\n @if (field.define && !renderConfig?.hidden) {\n @let define = field.define();\n <ng-template\n [fieldOutlet]=\"field\"\n [index]=\"0\"\n [nextTemplateRef]=\"nextTemplate\"\n [injector]=\"listij\"\n [listen]=\"\n field.wrappers()\n | listen\n : (define.inputs | inputKeys)\n : (define.outputs | inputKeys)\n : define.type\n \"\n ></ng-template>\n }\n</ng-template>\n@let NewInjector = injector3$$() | templateInjector: dynamicComponent;\n\n<ng-template #templateRef>\n @if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"\n dynamicComponent;\n context: {\n $implicit: field,\n injector: NewInjector,\n }\n \"\n ></ng-container>\n }\n</ng-template>\n@if (!selectorless()) {\n <ng-container *ngTemplateOutlet=\"templateRef\"></ng-container>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FieldOutlet, selector: "[fieldOutlet]", inputs: ["fieldOutlet", "nextTemplateRef", "index", "injector", "listen"] }, { kind: "pipe", type: TemplatePipe, name: "templateInjector" }, { kind: "pipe", type: ListenPipe, name: "listen" }, { kind: "pipe", type: InputsPipe, name: "inputKeys" }, { kind: "pipe", type: ListInjectorPipe, name: "listInjector" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
678
610
  }
679
611
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingView, decorators: [{
680
612
  type: Component,
681
- args: [{ selector: 'piying-view', imports: [NgComponentOutlet, PurePipe, NgTemplateOutlet], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #dynamicComponent let-field let-injector=\"injector\">\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @if (field.fixedChildren || field.restChildren) {\n <!-- \u81EA\u5B9A\u4E49group -->\n <ng-container\n [ngComponentOutlet]=\"field.define?.()\"\n [ngComponentOutletExtraInputs]=\"\n groupInputsValue | pure: dynamicComponent\n \"\n [ngComponentOutletWrappers]=\"field.wrappers()\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n [ngComponentOutletInjector]=\"injector ?? injector3$$()\"\n ></ng-container>\n } @else {\n <ng-container\n [ngComponentOutlet]=\"field.define?.()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"field.wrappers()\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n [ngComponentOutletInjector]=\"injector ?? injector3$$()\"\n ></ng-container>\n }\n }\n</ng-template>\n<ng-template #templateRef>\n @if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"\n dynamicComponent;\n context: {\n $implicit: field,\n injector: injector3$$(),\n }\n \"\n ></ng-container>\n }\n</ng-template>\n@if (!selectorless()) {\n <ng-container *ngTemplateOutlet=\"templateRef\"></ng-container>\n}\n" }]
682
- }] });
683
-
684
- class InsertFieldDirective extends BaseComponent {
685
- #viewContainerRef = inject(ViewContainerRef);
686
- #listen = inject(PI_COMPONENT_LIST_LISTEN);
687
- #list = inject(PI_COMPONENT_LIST);
688
- createComponent(list, viewContainerRef) {
689
- const result = super.createComponent(list ?? this.#list, this.#viewContainerRef);
690
- this.#listen.subscribe((list) => {
691
- this.update(list);
692
- });
693
- return result;
694
- }
695
- ngOnInit() {
696
- this.createComponent();
697
- }
698
- ngOnDestroy() {
699
- if (this.componentRef &&
700
- this.componentRef.componentType.__version === 2) {
701
- this.componentRef.destroy();
702
- }
703
- }
704
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: InsertFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
705
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: InsertFieldDirective, isStandalone: true, selector: "[insertField]", exportAs: ["insertField"], usesInheritance: true, ngImport: i0 });
706
- }
707
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: InsertFieldDirective, decorators: [{
708
- type: Directive,
709
- args: [{
710
- selector: '[insertField]',
711
- exportAs: 'insertField',
712
- }]
613
+ args: [{ selector: 'piying-view', imports: [
614
+ NgTemplateOutlet,
615
+ FieldOutlet,
616
+ TemplatePipe,
617
+ ListenPipe,
618
+ InputsPipe,
619
+ ListInjectorPipe,
620
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template\n #nextTemplate\n let-injector=\"injector\"\n let-index=\"index\"\n let-fieldConfig=\"fieldConfig\"\n>\n @if (injector(); as injector) {\n <ng-template\n [fieldOutlet]=\"fieldConfig\"\n [index]=\"index\"\n [nextTemplateRef]=\"nextTemplate\"\n [injector]=\"injector\"\n ></ng-template>\n }\n</ng-template>\n\n<ng-template #dynamicComponent let-field let-injector=\"injector\">\n @let listij = injector ?? NewInjector | listInjector;\n @let renderConfig = field.renderConfig();\n @if (field.define && !renderConfig?.hidden) {\n @let define = field.define();\n <ng-template\n [fieldOutlet]=\"field\"\n [index]=\"0\"\n [nextTemplateRef]=\"nextTemplate\"\n [injector]=\"listij\"\n [listen]=\"\n field.wrappers()\n | listen\n : (define.inputs | inputKeys)\n : (define.outputs | inputKeys)\n : define.type\n \"\n ></ng-template>\n }\n</ng-template>\n@let NewInjector = injector3$$() | templateInjector: dynamicComponent;\n\n<ng-template #templateRef>\n @if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"\n dynamicComponent;\n context: {\n $implicit: field,\n injector: NewInjector,\n }\n \"\n ></ng-container>\n }\n</ng-template>\n@if (!selectorless()) {\n <ng-container *ngTemplateOutlet=\"templateRef\"></ng-container>\n}\n" }]
713
621
  }] });
714
622
 
715
623
  const rawConfig = rawConfig$1;
@@ -841,5 +749,5 @@ function typedComponent(input) {
841
749
  * Generated bundle index. Do not edit.
842
750
  */
843
751
 
844
- export { AngularFormBuilder, AttributesDirective, BaseControl, EventsDirective, InsertFieldDirective, NgSchemaHandle, PI_COMPONENT_INDEX, PI_COMPONENT_LIST, PI_COMPONENT_LIST_LISTEN, PI_INPUT_MODEL_TOKEN, PI_INPUT_OPTIONS_TOKEN, PI_INPUT_SCHEMA_TOKEN, PI_VIEW_FIELD_TOKEN, PiyingView, PiyingViewGroup, PiyingViewGroupBase, actions, directives, rawConfig, typedComponent };
752
+ export { AngularFormBuilder, AttributesDirective, BaseControl, EventsDirective, NgSchemaHandle, PI_COMPONENT_INDEX, PI_COMPONENT_LIST, PI_COMPONENT_LIST_LISTEN, PI_INPUT_MODEL_TOKEN, PI_INPUT_OPTIONS_TOKEN, PI_INPUT_SCHEMA_TOKEN, PI_VIEW_COMPONENT_LIST_TOKEN, PI_VIEW_FIELD_TOKEN, PI_VIEW_TEMPLATE_REF_TOKEN, PiyingView, PiyingViewGroup, PiyingViewGroupBase, actions, directives, rawConfig, typedComponent };
845
753
  //# sourceMappingURL=piying-view-angular.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"piying-view-angular.mjs","sources":["../../../projects/view-angular/lib/type/view-token.ts","../../../projects/view-angular/lib/component/group/component.base.ts","../../../projects/view-angular/lib/component/group/component.ts","../../../projects/view-angular/lib/component/group/component.html","../../../projects/view-angular/lib/const.ts","../../../projects/view-angular/lib/util/component-config.equal.ts","../../../projects/view-angular/lib/directives/attributes.directive.ts","../../../projects/view-angular/lib/util/async-cache.ts","../../../projects/view-angular/lib/directives/events.directive.ts","../../../projects/view-angular/lib/component/base.component.ts","../../../projects/view-angular/lib/directives/interop_ng_control.ts","../../../projects/view-angular/lib/directives/field-control-directive.ts","../../../projects/view-angular/lib/hook/chained_injector.ts","../../../projects/view-angular/lib/hook/ng_component_outlet.ts","../../../projects/view-angular/lib/builder.ts","../../../projects/view-angular/lib/schema/ng-schema.ts","../../../projects/view-angular/lib/pipe/pure.pipe.ts","../../../projects/view-angular/lib/view.component.ts","../../../projects/view-angular/lib/component.html","../../../projects/view-angular/lib/component/insert-field.directive.ts","../../../projects/view-angular/lib/schema/action/raw-config.ts","../../../projects/view-angular/lib/schema/action/directive.ts","../../../projects/view-angular/lib/schema/action/index.ts","../../../projects/view-angular/lib/component/form/control.base.component.ts","../../../projects/view-angular/lib/util/typed-component.ts","../../../projects/view-angular/piying-view-angular.ts"],"sourcesContent":["/** component */\n\nimport { InjectionToken, Signal, EventEmitter } from '@angular/core';\nimport { DynamicComponentConfig } from './component';\nimport { SetOptional } from '@piying/view-angular-core';\nimport { NgConvertOptions } from './builder-type';\nimport { PiViewConfig } from './view-config';\nimport * as v from 'valibot';\nimport { PI_VIEW_FIELD_TOKEN as PVFT } from '@piying/view-angular-core';\nexport const PI_INPUT_OPTIONS_TOKEN = new InjectionToken<\n Signal<\n Omit<\n SetOptional<NgConvertOptions, 'builder' | 'handle'>,\n 'fieldGlobalConfig'\n > & { fieldGlobalConfig?: PiViewConfig }\n >\n>('PI_INPUT_OPTIONS');\nexport const PI_INPUT_SCHEMA_TOKEN = new InjectionToken<\n Signal<v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>>\n>('PI_INPUT_SCHEMA');\nexport const PI_INPUT_MODEL_TOKEN = new InjectionToken<Signal<any>>(\n 'PI_INPUT_MODEL',\n);\n/** wrapper中可以使用,已解析的配置 */\nexport const PI_VIEW_FIELD_TOKEN = PVFT;\n\n/**\n * @internal\n * 内部传参用\n */\nexport const PI_COMPONENT_LIST = new InjectionToken<DynamicComponentConfig[]>(\n 'PI_COMPONENT_LIST',\n);\nexport const PI_COMPONENT_INDEX = new InjectionToken<number>(\n 'PI_COMPONENT_INDEX',\n);\nexport const PI_COMPONENT_LIST_LISTEN = new InjectionToken<\n EventEmitter<DynamicComponentConfig[]>\n>('PI_COMPONENT_LIST_LISTEN');\n","import {\n computed,\n Directive,\n inject,\n Injector,\n input,\n TemplateRef,\n} from '@angular/core';\nimport { PI_VIEW_FIELD_TOKEN } from '../../type';\n\n@Directive()\nexport class PiyingViewGroupBase {\n field$$ = inject(PI_VIEW_FIELD_TOKEN);\n props$$ = computed(() => this.field$$().props());\n children$$ = computed(() => this.field$$().children!());\n fixedChildren$$ = computed(() => this.field$$().fixedChildren?.() ?? []);\n restChildren$$ = computed(() => this.field$$().restChildren?.() ?? []);\n fieldTemplateRef = input.required<TemplateRef<any>>();\n injector = inject(Injector);\n}\n","import { ChangeDetectionStrategy, Component, viewChild } from '@angular/core';\n\nimport { PiyingViewGroupBase } from './component.base';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'piying-view-group',\n imports: [NgTemplateOutlet],\n templateUrl: './component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PiyingViewGroup extends PiyingViewGroupBase {\n static __version = 2;\n templateRef = viewChild.required('templateRef');\n}\n","<ng-template #templateRef>\n @for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"\n fieldTemplateRef();\n context: { $implicit: field, injector }\n \"\n ></ng-container>\n }\n</ng-template>\n","export const EMPTY_ARRAY = [];\n","import { DynamicComponentConfig } from '../type/component';\n\nexport function getComponentCheckConfig(a: DynamicComponentConfig) {\n return {\n ...a,\n inputs: Object.keys(a.inputs() ?? {}).join(','),\n directives: a.directives\n ? a.directives.map((config) => ({\n ...config,\n inputs: `${config.inputs ? Object.keys(config.inputs() ?? {}).join(',') : ''}`,\n }))\n : undefined,\n // todo 这里是为了schema被替换时,进行比较,感觉应该有更好的方法\n attributes: Object.entries(a.attributes() ?? {})\n .map((key, value) => `${key}:${value}`)\n .join(','),\n events: Object.keys(a.events() ?? {}).join(','),\n outputs: Object.keys(a.events() ?? {}).join(','),\n };\n}\n\nexport type ComponentCheckConfig = ReturnType<typeof getComponentCheckConfig>;\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[attributes]',\n})\nexport class AttributesDirective {\n attributes = input.required<Record<string, any>>();\n excludes = input<string[]>([]);\n #rederer = inject(Renderer2);\n #el = inject(ElementRef).nativeElement;\n ngOnChanges(changes: SimpleChanges): void {\n const { previousValue, currentValue, firstChange } = changes['attributes'];\n for (const key in currentValue) {\n if (this.excludes().includes(key)) {\n continue;\n }\n this.#rederer.setAttribute(this.#el, key, currentValue[key]);\n }\n if (!firstChange) {\n for (const key in previousValue) {\n if (this.excludes().includes(key)) {\n continue;\n }\n if (!(key in currentValue)) {\n this.#rederer.removeAttribute(this.#el, key);\n }\n }\n }\n }\n}\n","import { reflectComponentType, Type } from '@angular/core';\nexport function isComponentType(input: any): input is Type<any> {\n return !!reflectComponentType(input as any);\n}\n","import { Directive, ElementRef, inject, input, Renderer2 } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[events]',\n})\nexport class EventsDirective {\n events = input.required<Record<string, (event: any) => any>>();\n #renderer = inject(Renderer2);\n #el = inject(ElementRef).nativeElement;\n #cleanList: (() => void)[] = [];\n ngOnChanges(): void {\n this.#clean();\n this.#cleanList = [];\n for (const key in this.events()) {\n const event = this.events()[key];\n this.#cleanList.push(this.#renderer.listen(this.#el, key, event));\n }\n }\n #clean() {\n this.#cleanList.forEach((fn) => fn());\n }\n ngOnDestroy(): void {\n this.#clean();\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n computed,\n createComponent,\n createNgModule,\n Directive,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n inject,\n Injector,\n inputBinding,\n outputBinding,\n PendingTasks,\n signal,\n Signal,\n TemplateRef,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { ComponentRawType, PiResolvedViewFieldConfig } from '../type';\nimport { DynamicComponentConfig, NgComponentDefine } from '../type/component';\nimport {\n ComponentCheckConfig,\n getComponentCheckConfig,\n} from '../util/component-config.equal';\nimport { deepEqual } from 'fast-equals';\nimport {\n PI_COMPONENT_INDEX,\n PI_COMPONENT_LIST,\n PI_COMPONENT_LIST_LISTEN,\n PI_VIEW_FIELD_TOKEN,\n} from '../type/view-token';\nimport {\n ViewAttributes,\n ViewInputs,\n ViewOutputs,\n getLazyImport,\n isLazyMark,\n} from '@piying/view-angular-core';\nimport { AttributesDirective } from '../directives/attributes.directive';\nimport { isComponentType } from '../util/async-cache';\nimport { EventsDirective } from '../directives/events.directive';\nfunction createInputsBind(inputs?: Signal<ViewInputs | undefined>) {\n if (!inputs || !inputs()) {\n return [];\n }\n return Object.keys(inputs()!).map((key) =>\n inputBinding(\n key,\n computed(() => inputs()![key]),\n ),\n );\n}\nfunction createOutputsBind(\n outputs?: () => ViewOutputs | undefined,\n config?: Signal<PiResolvedViewFieldConfig>,\n) {\n if (!outputs?.()) {\n return [];\n }\n return Object.entries(outputs!()!).map(([key, value]) =>\n outputBinding(key, config ? (event) => value(event, config()) : value),\n );\n}\nfunction createAttributesDirective(\n attributes: Signal<ViewAttributes | undefined>,\n) {\n if (attributes()) {\n return [\n {\n type: AttributesDirective,\n bindings: [inputBinding('attributes', attributes)],\n },\n ];\n }\n return [];\n}\nfunction createEventsDirective(events: Signal<ViewAttributes | undefined>) {\n if (events()) {\n return [\n {\n type: EventsDirective,\n bindings: [inputBinding('events', events)],\n },\n ];\n }\n return [];\n}\nconst EmptyOBJ = {};\n@Directive()\nexport class BaseComponent {\n /** 第一次默认为空 */\n #index = inject(PI_COMPONENT_INDEX, { optional: true }) ?? 0!;\n\n /** 发射提供到下一级 */\n #eventEmitter!: EventEmitter<DynamicComponentConfig[]>;\n #componentConfig!: DynamicComponentConfig;\n #viewContainerRef?: ViewContainerRef;\n\n destroyComponentFn?: () => void;\n fieldComponentInstance?: any;\n fieldElementRef?: ElementRef<HTMLElement>;\n fieldDirectiveRefList?: any[];\n componentRef?: ComponentRef<any>;\n /** 比较时使用 */\n #componentCheckConfig$$!: Signal<ComponentCheckConfig>;\n #setComponentCheck(config: DynamicComponentConfig) {\n this.#componentCheckConfig$$ = computed(() =>\n untracked(() => getComponentCheckConfig(config)),\n );\n }\n setFieldData(field: Signal<PiResolvedViewFieldConfig>, index: number) {\n this.#index = index;\n }\n /**\n * 输入引用绑定\n * 1. 上次传入的数据格式和当前一样,只触发更新\n * 2. 上次传入的数据格式和当前不一样,直接重新创建\n */\n #inputCache!: {\n inputs?: Signal<Record<string, any>>;\n directiveList?: (Signal<Record<string, any>> | undefined)[];\n };\n #configUpdate$ = signal(0);\n #app = inject(ApplicationRef);\n #task = inject(PendingTasks);\n #loadComponent(\n type: ComponentRawType,\n loadFn: (input: NgComponentDefine) => void,\n ) {\n if (isComponentType(type)) {\n loadFn({ component: type });\n return;\n }\n if (typeof type === 'function' || isLazyMark(type)) {\n this.#task.run(() =>\n getLazyImport<() => Promise<any>>(type)!()\n .then((type) => {\n if (isComponentType(type)) {\n return { component: type };\n }\n return type;\n })\n .then((data) => loadFn(data)),\n );\n return;\n }\n loadFn(type as any);\n }\n createComponent(\n list: DynamicComponentConfig[],\n viewContainerRef: ViewContainerRef,\n ) {\n // 销毁\n this.destroyComponentFn?.();\n this.#viewContainerRef = viewContainerRef;\n // 取消上一级的定义\n this.#eventEmitter = new EventEmitter();\n const componentConfig = list[this.#index];\n\n this.#loadComponent(componentConfig.type, (componentDefine) => {\n this.#componentConfig = componentConfig;\n this.#inputCache = {\n inputs: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.inputs!() ?? EmptyOBJ;\n }),\n\n directiveList: this.#componentConfig?.directives?.map(\n (config, index) =>\n config.inputs\n ? computed(() => {\n this.#configUpdate$();\n return (\n this.#componentConfig!.directives![index].inputs!() ?? {}\n );\n })\n : undefined,\n ),\n };\n this.#setComponentCheck(componentConfig);\n\n const componentInjector = Injector.create({\n providers: [\n { provide: PI_COMPONENT_LIST, useValue: list },\n { provide: PI_COMPONENT_INDEX, useValue: this.#index + 1 },\n { provide: PI_COMPONENT_LIST_LISTEN, useValue: this.#eventEmitter },\n ],\n parent: componentConfig.injector ?? viewContainerRef.injector,\n });\n const COMPONENT_VERSION: number | undefined = (\n componentDefine.component as any\n ).__version;\n const injector = componentDefine.module\n ? createNgModule(componentDefine.module, componentInjector).injector\n : componentInjector;\n const componentRef = createComponent(componentDefine.component, {\n elementInjector: injector,\n environmentInjector: injector.get(EnvironmentInjector),\n bindings: [\n ...createInputsBind(this.#inputCache.inputs),\n ...createOutputsBind(componentConfig.outputs),\n ],\n directives: [\n ...(componentConfig.directives ?? []).map((item, index) => ({\n type: item.type,\n bindings: [\n ...createInputsBind(this.#inputCache.directiveList![index]),\n ...createOutputsBind(\n item.outputs,\n injector!.get(PI_VIEW_FIELD_TOKEN),\n ),\n ],\n })),\n ...(COMPONENT_VERSION === 2\n ? []\n : [\n ...createAttributesDirective(componentConfig.attributes),\n ...createEventsDirective(componentConfig.events),\n ]),\n ],\n });\n this.componentRef = componentRef;\n this.fieldComponentInstance = componentRef.instance;\n this.fieldElementRef = componentRef.location;\n this.fieldDirectiveRefList = (componentConfig.directives ?? []).map(\n (item) => componentRef.injector.get(item.type),\n );\n if (COMPONENT_VERSION === 2) {\n const templateRef = (\n componentRef.instance as { templateRef: Signal<TemplateRef<any>> }\n ).templateRef();\n viewContainerRef.createEmbeddedView(templateRef, {\n attributes: componentConfig.attributes,\n events: componentConfig.events,\n });\n this.#app.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n } else {\n viewContainerRef.insert(componentRef.hostView);\n }\n this.destroyComponentFn = () => {\n viewContainerRef.clear();\n componentRef.destroy();\n this.#eventEmitter.unsubscribe();\n };\n if (list.length === this.#index + 1) {\n const field = componentInjector.get(PI_VIEW_FIELD_TOKEN)();\n field.hooks?.afterCreateComponent?.(field);\n }\n });\n }\n\n update(list: DynamicComponentConfig[]) {\n const item = list[this.#index];\n const currentCheckConfig = getComponentCheckConfig(item);\n const isEqual = deepEqual(\n currentCheckConfig,\n this.#componentCheckConfig$$(),\n );\n // this.#componentCheckConfig$$ = computed(() => currentCheckConfig);\n if (isEqual) {\n this.#componentConfig = item;\n this.#configUpdate$.update((a) => a + 1);\n // 相等不处理\n this.#eventEmitter.next(list);\n } else {\n this.createComponent(list, this.#viewContainerRef!);\n }\n }\n}\n","import {\n NgControl,\n Validators,\n type AbstractControl,\n type ValidationErrors,\n} from '@angular/forms';\nimport { FieldControl, PENDING } from '@piying/view-angular-core';\n\nexport type InteropSharedKeys =\n | 'value'\n | 'valid'\n | 'invalid'\n | 'touched'\n | 'untouched'\n | 'disabled'\n | 'enabled'\n | 'errors'\n | 'pristine'\n | 'dirty';\n\nexport class InteropNgControl extends NgControl {\n constructor(protected field: () => FieldControl<unknown>) {\n super();\n }\n\n readonly control: AbstractControl<any, any> =\n this as unknown as AbstractControl<any, any>;\n\n override get value(): any {\n return this.field().value;\n }\n\n override get valid(): boolean {\n return this.field().valid;\n }\n\n override get invalid(): boolean {\n return !this.field().valid;\n }\n\n override get pending(): boolean | null {\n return this.field().status$$() === PENDING;\n }\n\n override get disabled(): boolean {\n return this.field().disabled;\n }\n\n override get enabled(): boolean {\n return !this.field().disabled;\n }\n\n override get errors(): ValidationErrors | null {\n const errors = this.field().errors;\n return errors ?? null;\n }\n\n override get pristine(): boolean {\n return this.field().pristine;\n }\n\n override get dirty(): boolean {\n return this.field().dirty;\n }\n\n override get touched(): boolean {\n return this.field().touched;\n }\n\n override get untouched(): boolean {\n return !this.field().touched;\n }\n\n get submitted(): boolean {\n return false;\n }\n\n override viewToModelUpdate(newValue: any): void {}\n override get valueChanges() {\n return this.field().valueChanges;\n }\n override get statusChanges() {\n return this.field().statusChanges;\n }\n hasValidator(input: any) {\n if (Validators.required === input) {\n return this.field().required$$();\n }\n return false;\n }\n}\n","import {\n Directive,\n inject,\n Injector,\n input,\n OnDestroy,\n Provider,\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n} from '@angular/forms';\nimport { createViewControlLink, FieldControl } from '@piying/view-angular-core';\nimport { InteropNgControl } from './interop_ng_control';\n\nconst formControlBinding: Provider = {\n provide: NgControl,\n useFactory: () => inject(FieldControlDirective).ngControl,\n};\n\n@Directive({\n selector: '[fieldControl]',\n providers: [formControlBinding],\n standalone: true,\n})\nexport class FieldControlDirective implements OnDestroy {\n fieldControl = input.required<FieldControl>();\n readonly cvaArray = inject<ControlValueAccessor[]>(NG_VALUE_ACCESSOR);\n readonly injector = inject(Injector);\n\n get cva() {\n return this.cvaArray[0];\n }\n #_ngControl: InteropNgControl | undefined;\n\n get ngControl(): NgControl {\n return (this.#_ngControl ??= new InteropNgControl(() =>\n this.fieldControl(),\n )) as unknown as NgControl;\n }\n\n #disposeFn?: (destroyed?: boolean) => void;\n ngOnChanges(): void {\n this.#disposeFn?.();\n this.#disposeFn = createViewControlLink(\n this.fieldControl,\n this.cva,\n this.injector,\n );\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.#disposeFn?.(true);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Injector, ProviderToken, InjectOptions } from '@angular/core';\n\nconst NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};\n/**\n * Injector that looks up a value using a specific injector, before falling back to the module\n * injector. Used primarily when creating components or embedded views dynamically.\n */\nexport class ChainedInjector implements Injector {\n constructor(\n public injector: Injector,\n public parentInjector: Injector,\n ) {}\n\n get<T>(\n token: ProviderToken<T>,\n notFoundValue?: T,\n options?: InjectOptions,\n ): T {\n const value = this.injector.get<\n T | typeof NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR\n >(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, options);\n\n if (\n value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||\n notFoundValue === (NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as unknown as T)\n ) {\n // Return the value from the root element injector when\n // - it provides it\n // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n // - the module injector should not be checked\n // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n return value as T;\n }\n\n return this.parentInjector.get(token, notFoundValue, options);\n }\n}\n","import {\n computed,\n Directive,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n ViewContainerRef,\n} from '@angular/core';\nimport { PiResolvedViewFieldConfig, NgResolvedWraaperConfig } from '../type';\nimport {\n DynamicComponentConfig,\n NgResolvedComponentDefine2,\n} from '../type/component';\nimport { EMPTY_ARRAY } from '../const';\nimport { BaseComponent } from '../component/base.component';\nimport { DirectiveConfig } from '../component/dynamic-define.component';\nimport { asyncObjectSignal, FieldControl } from '@piying/view-angular-core';\nimport { FieldControlDirective } from '../directives/field-control-directive';\nimport { ChainedInjector } from './chained_injector';\n\n@Directive({\n selector: '[ngComponentOutlet]',\n standalone: true,\n})\nexport class NgComponentOutlet<T = any>\n extends BaseComponent\n implements OnChanges, OnDestroy\n{\n /** 输入 */\n ngComponentOutlet = input<NgResolvedComponentDefine2>();\n ngComponentOutletExtraInputs = input<Record<string, unknown>>();\n /** 控件用 */\n ngComponentOutletFormControl = input<FieldControl>();\n /** 包裹用 */\n ngComponentOutletWrappers = input<NgResolvedWraaperConfig[]>();\n ngComponentOutletDirectives =\n input<PiResolvedViewFieldConfig['directives']>();\n\n ngComponentOutletField = input.required<PiResolvedViewFieldConfig>();\n #viewContainerRef = inject(ViewContainerRef);\n // 这里感觉会在非发射时出现多次输入?\n\n ngComponentOutletInjector = input.required<Injector>();\n\n #injector$$ = computed(\n () =>\n new ChainedInjector(\n this.ngComponentOutletField().injector,\n this.ngComponentOutletInjector(),\n ),\n );\n #formControlDirectiveConfig$$ = computed(() => {\n const fieldControl = this.ngComponentOutletFormControl();\n return fieldControl\n ? ({\n type: FieldControlDirective,\n inputs: asyncObjectSignal({ fieldControl: fieldControl }),\n } as DirectiveConfig)\n : undefined;\n });\n #directiveConfigList$$ = computed(() => {\n const directivesInputs = this.ngComponentOutletDirectives();\n const formConfig = this.#formControlDirectiveConfig$$();\n return formConfig\n ? [...(directivesInputs?.() ?? []), formConfig]\n : directivesInputs?.();\n });\n #componentInput$$ = computed(() => ({\n ...this.ngComponentOutlet()?.inputs?.(),\n ...this.ngComponentOutletExtraInputs(),\n }));\n #componentConfig$$ = computed(() => {\n const define = this.ngComponentOutlet();\n if (!define) {\n return;\n }\n const directives = this.#directiveConfigList$$();\n return {\n ...define!,\n outputs: define.outputs,\n inputs: this.#componentInput$$,\n directives: directives,\n } as DynamicComponentConfig;\n });\n #componentList$$ = computed(() => {\n const componentConfig = this.#componentConfig$$();\n if (!componentConfig) {\n return EMPTY_ARRAY;\n }\n const list = [\n ...(this.ngComponentOutletWrappers() ?? []),\n componentConfig,\n ] as DynamicComponentConfig[];\n list[0].injector = this.#injector$$();\n return list;\n });\n\n #lastList?: DynamicComponentConfig[];\n ngOnChanges() {\n //todo 变更时的一些检测,相同时应该不处理\n const list = this.#componentList$$();\n if (!list.length) {\n return this.destroyComponentFn?.();\n }\n if (!this.#lastList) {\n const field = this.ngComponentOutletField();\n field.hooks?.beforeCreateComponent?.(field);\n this.setFieldData(this.ngComponentOutletField, 0);\n this.createComponent(list, this.#viewContainerRef);\n } else if (this.#lastList !== list) {\n this.update(list);\n }\n // 监听输入/输出变更,重新进行赋值\n\n this.#lastList = list;\n }\n\n ngOnDestroy() {\n this.destroyComponentFn?.();\n }\n}\n","import { PiResolvedViewFieldConfig } from './type';\nimport { Injectable } from '@angular/core';\n\nimport { FormBuilder } from '@piying/view-angular-core';\nimport { NgSchemaHandle } from './schema/ng-schema';\n\n@Injectable()\nexport class AngularFormBuilder extends FormBuilder<NgSchemaHandle> {\n override afterResolveConfig(\n rawConfig: NgSchemaHandle,\n config: PiResolvedViewFieldConfig,\n ): PiResolvedViewFieldConfig {\n const field = rawConfig;\n\n config.directives = field.directives;\n return config;\n }\n}\n","import { combineSignal, CoreSchemaHandle } from '@piying/view-angular-core';\nimport { PiResolvedViewFieldConfig, NgDirectiveConfig } from '../type';\n\nexport class NgSchemaHandle extends CoreSchemaHandle<\n NgSchemaHandle,\n () => PiResolvedViewFieldConfig\n> {\n declare type: any;\n directives = combineSignal<NgDirectiveConfig>([]);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'pure',\n standalone: true,\n})\nexport class PurePipe implements PipeTransform {\n transform<T extends (...args: any[]) => any>(fn: T, ...args: Parameters<T>) {\n return fn(...args) as ReturnType<T>;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyableInjector,\n inject,\n Injector,\n input,\n OnChanges,\n output,\n signal,\n SimpleChanges,\n TemplateRef,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { NgComponentOutlet } from './hook/ng_component_outlet';\n\nimport {\n PiViewConfig,\n PiResolvedViewFieldConfig,\n PI_INPUT_OPTIONS_TOKEN,\n PI_INPUT_SCHEMA_TOKEN,\n PI_INPUT_MODEL_TOKEN,\n} from './type';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n convert,\n FieldArray,\n FieldControl,\n FieldGroup,\n initListen,\n} from '@piying/view-angular-core';\nimport { AngularFormBuilder } from './builder';\nimport { NgSchemaHandle } from './schema/ng-schema';\nimport { NgConvertOptions } from './type/builder-type';\nimport type { SetOptional } from '@piying/view-angular-core';\nimport * as v from 'valibot';\nimport { PurePipe } from './pipe/pure.pipe';\nconst DefaultConvertOptions = {\n builder: AngularFormBuilder,\n handle: NgSchemaHandle,\n};\n@Component({\n selector: 'piying-view',\n imports: [NgComponentOutlet, PurePipe, NgTemplateOutlet],\n templateUrl: './component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PiyingView implements OnChanges {\n templateRef = viewChild.required('templateRef');\n readonly selectorless = input<boolean>(false);\n schema = input.required<v.BaseSchema<any, any, any>>();\n model = input<any>(undefined);\n modelChange = output<any>();\n options = input<\n Omit<\n SetOptional<NgConvertOptions, 'builder' | 'handle'>,\n 'fieldGlobalConfig'\n > & { fieldGlobalConfig?: PiViewConfig }\n >();\n form$$ = computed(\n () =>\n this.resolvedField$()?.form.control as\n | (FieldControl | FieldGroup | FieldArray)\n | undefined,\n );\n\n #lastRF?: PiResolvedViewFieldConfig;\n ngOnChanges(changes: SimpleChanges): void {\n const rFields = this.#resolvedFields$$();\n if (this.#lastRF !== rFields || 'model' in changes) {\n this.#updateValue(this.model());\n }\n this.#lastRF = rFields;\n }\n\n #resolvedFields$$ = computed(() => {\n this.schema();\n return untracked(() => this.#updateField());\n });\n\n #injector = inject(Injector);\n #builderInjector?: DestroyableInjector;\n resolvedField$ = signal<PiResolvedViewFieldConfig | undefined>(undefined);\n #listenDispose?: () => void;\n injector3$$ = computed(() => this.resolvedField$()!.injector);\n #fieldRoot = Injector.create({\n providers: [\n {\n provide: PI_INPUT_OPTIONS_TOKEN,\n useValue: this.options,\n },\n {\n provide: PI_INPUT_SCHEMA_TOKEN,\n useValue: this.schema,\n },\n {\n provide: PI_INPUT_MODEL_TOKEN,\n useValue: this.model,\n },\n ],\n parent: this.#injector,\n });\n #updateField() {\n this.#clean();\n // 临时销毁\n const envInjector = Injector.create({\n providers: [],\n parent: this.#fieldRoot,\n });\n this.#builderInjector = envInjector;\n const result = convert<PiResolvedViewFieldConfig>(this.schema() as any, {\n ...DefaultConvertOptions,\n ...this.options(),\n injector: envInjector,\n });\n this.resolvedField$.set(result);\n return result;\n }\n #clean() {\n if (this.#builderInjector) {\n this.#builderInjector.destroy();\n this.#builderInjector = undefined;\n }\n }\n\n #updateValue(model: Record<string, any> | undefined) {\n this.#listenDispose?.();\n const result = this.resolvedField$()!;\n if (result.form.control) {\n // 监听初始化,每次field变更会初始化\n const ref = initListen(\n this.model(),\n result!.form.control,\n // 使用envInjector会导致在测试中慢一次检查,生产上可能也会慢一点?\n this.#injector,\n (value) => {\n untracked(() => {\n if (result!.form.control?.valueNoError$$()) {\n this.modelChange.emit(value);\n }\n });\n },\n );\n this.#listenDispose = () => {\n ref.destroy();\n this.#listenDispose = undefined;\n };\n result.form.control.updateValue(model);\n }\n }\n\n groupInputsValue(fieldTemplateRef: TemplateRef<any>) {\n return { fieldTemplateRef };\n }\n\n ngOnDestroy(): void {\n this.#listenDispose?.();\n }\n}\n","<ng-template #dynamicComponent let-field let-injector=\"injector\">\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @if (field.fixedChildren || field.restChildren) {\n <!-- 自定义group -->\n <ng-container\n [ngComponentOutlet]=\"field.define?.()\"\n [ngComponentOutletExtraInputs]=\"\n groupInputsValue | pure: dynamicComponent\n \"\n [ngComponentOutletWrappers]=\"field.wrappers()\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n [ngComponentOutletInjector]=\"injector ?? injector3$$()\"\n ></ng-container>\n } @else {\n <ng-container\n [ngComponentOutlet]=\"field.define?.()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"field.wrappers()\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n [ngComponentOutletInjector]=\"injector ?? injector3$$()\"\n ></ng-container>\n }\n }\n</ng-template>\n<ng-template #templateRef>\n @if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"\n dynamicComponent;\n context: {\n $implicit: field,\n injector: injector3$$(),\n }\n \"\n ></ng-container>\n }\n</ng-template>\n@if (!selectorless()) {\n <ng-container *ngTemplateOutlet=\"templateRef\"></ng-container>\n}\n","import { Directive, inject, ViewContainerRef } from '@angular/core';\nimport { PI_COMPONENT_LIST_LISTEN, PI_COMPONENT_LIST } from '../type';\nimport { DynamicComponentConfig } from '../type/component';\nimport { BaseComponent } from './base.component';\n\n@Directive({\n selector: '[insertField]',\n exportAs: 'insertField',\n})\nexport class InsertFieldDirective extends BaseComponent {\n #viewContainerRef = inject(ViewContainerRef);\n #listen = inject(PI_COMPONENT_LIST_LISTEN);\n #list = inject(PI_COMPONENT_LIST);\n override createComponent(\n list?: DynamicComponentConfig[],\n viewContainerRef?: ViewContainerRef,\n ) {\n const result = super.createComponent(\n list ?? this.#list,\n this.#viewContainerRef,\n );\n this.#listen.subscribe((list) => {\n this.update(list);\n });\n return result;\n }\n\n ngOnInit(): void {\n this.createComponent();\n }\n ngOnDestroy(): void {\n if (\n this.componentRef &&\n (this.componentRef.componentType as any).__version === 2\n ) {\n this.componentRef.destroy();\n }\n }\n}\n","import { RawConfigCommon } from '@piying/valibot-visit';\nimport { rawConfig as originRawConfig } from '@piying/view-angular-core';\nimport { NgSchemaHandle } from '../ng-schema';\nexport const rawConfig = originRawConfig as RawConfigCommon<NgSchemaHandle>;\n","import {\n asyncObjectSignal,\n mergeHooksFn,\n SetOptional,\n SetUnWrapper$,\n CustomDataSymbol,\n AnyCoreSchemaHandle,\n _PiResolvedCommonViewFieldConfig,\n AsyncObjectSignal,\n} from '@piying/view-angular-core';\nimport { NgDirectiveConfig } from '../../type';\nimport { rawConfig } from './raw-config';\nimport { Signal, signal, Type } from '@angular/core';\nimport { RawConfigAction } from '@piying/valibot-visit';\nfunction createSetOrPatchDirectivePropertyFn(isPatch?: boolean) {\n return <T>(\n items: SetOptional<\n SetUnWrapper$<\n NgDirectiveConfig,\n 'inputs' | 'outputs' | 'attributes' | 'events' | 'model'\n >,\n 'inputs' | 'outputs' | 'attributes' | 'events' | 'model'\n >[],\n ) =>\n rawConfig<T>((field) => {\n if (!isPatch) {\n field.directives.clean();\n }\n items.forEach((item) => {\n field.directives.add(\n signal<NgDirectiveConfig>({\n type: item.type,\n inputs: asyncObjectSignal(item.inputs ?? {}),\n outputs: asyncObjectSignal(item.outputs ?? {}),\n attributes: asyncObjectSignal(item.attributes ?? {}),\n events: asyncObjectSignal(item.events ?? {}),\n model: asyncObjectSignal(item.model ?? {}),\n }),\n );\n });\n });\n}\nfunction setSubInitValue<Key extends string>(\n key: Key,\n fn: () => Record<Key, AsyncObjectSignal<any>>,\n initObj: any,\n) {\n if (!Object.keys(initObj[key]).length) {\n return;\n }\n fn()[key].set(initObj[key]);\n}\nfunction patchAsyncDirective<T>(\n type: Type<any>,\n actions?: RawConfigAction<'viewRawConfig', any, any>[],\n options?: { insertIndex?: number },\n) {\n return rawConfig<T>((rawFiled) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n const initData = signal<NgDirectiveConfig>({\n type,\n attributes: asyncObjectSignal({}),\n events: asyncObjectSignal({}),\n inputs: asyncObjectSignal({}),\n outputs: asyncObjectSignal({}),\n model: asyncObjectSignal({}),\n });\n field.directives!.add(initData, options?.insertIndex);\n for (const item of actions ?? []) {\n const tempField: Partial<AnyCoreSchemaHandle> & { model: any } = {\n inputs: {},\n outputs: {},\n attributes: {},\n events: {},\n model: {},\n };\n (item.value as any)(tempField, undefined, {\n [CustomDataSymbol]: (\n rawField: AnyCoreSchemaHandle,\n field: _PiResolvedCommonViewFieldConfig,\n ) => {\n if (rawField) {\n return tempField;\n }\n return initData;\n },\n });\n setSubInitValue('inputs', initData as any, tempField);\n setSubInitValue('outputs', initData as any, tempField);\n setSubInitValue('attributes', initData as any, tempField);\n setSubInitValue('events', initData as any, tempField);\n setSubInitValue('model', initData as any, tempField);\n\n (tempField as any).hooks?.allFieldsResolved?.(field);\n }\n },\n },\n { position: 'bottom' },\n rawFiled,\n );\n });\n}\nfunction removeDirectives<T>(\n removeList: (\n list: Signal<NgDirectiveConfig>[],\n ) => Signal<NgDirectiveConfig>[],\n) {\n return rawConfig<T>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n field.directives!.update(removeList);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n}\nexport const directives = {\n set: createSetOrPatchDirectivePropertyFn(),\n patch: createSetOrPatchDirectivePropertyFn(true),\n patchAsync: patchAsyncDirective,\n remove: removeDirectives,\n};\n","import { actions as coreActions } from '@piying/view-angular-core';\nimport { directives } from './directive';\nexport * from './raw-config';\nexport {\n asControl,\n condition,\n asVirtualGroup,\n layout,\n} from '@piying/view-angular-core';\nexport * from './directive';\nexport const actions = { ...coreActions, directives };\n","import { signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nexport class BaseControl<T = any> implements ControlValueAccessor {\n readonly defaultValue: any = undefined;\n value$ = signal<T>(this.defaultValue ?? (undefined as any));\n\n protected emitValue?: (value: any) => void;\n registerOnChange(fn: any): void {\n this.emitValue = fn;\n }\n /** 同时发射和value变更 */\n valueChange(value: T) {\n this.emitValue?.(value);\n this.value$.set(value);\n }\n\n writeValue(obj: any): void {\n this.value$.set(obj ?? undefined);\n }\n #touched?: () => void;\n registerOnTouched(fn: any): void {\n this.#touched = fn;\n }\n touchedChange() {\n this.#touched!();\n }\n valueAndTouchedChange(value: T) {\n this.valueChange(value);\n this.touchedChange();\n }\n disabled$ = signal(false);\n setDisabledState(isDisabled: boolean): void {\n this.disabled$.set(isDisabled);\n }\n}\n","import {\n actions as PresetActions,\n PiCommonConfig,\n actions,\n _PiResolvedCommonViewFieldConfig,\n setComponent,\n PiTypeConfig,\n AsyncProperty,\n} from '@piying/view-angular-core';\n\nimport {\n InputSignal,\n InputSignalWithTransform,\n OutputEmitterRef,\n Type,\n} from '@angular/core';\nimport {\n metadataList,\n MetadataListAction,\n RawConfigAction,\n} from '@piying/valibot-visit';\nimport { AnyCoreSchemaHandle } from '@piying/view-angular-core';\ntype GetKeyWithType<T, ValueType> = {\n [K in keyof T as T[K] extends ValueType\n ? T[K] extends any\n ? any extends T[K]\n ? never\n : K\n : K\n : never]: T[K];\n};\n\ntype ComponentInputs<Component> = GetKeyWithType<Component, InputSignal<any>>;\n\ntype ComponentInputsOrigin<T> = {\n [K in keyof T]: T[K] extends InputSignal<infer V>\n ? V\n : T[K] extends InputSignalWithTransform<infer V, infer D>\n ? D\n : never;\n};\ntype ComponentInputsAsync<T> = {\n [K in keyof T]: T[K] extends InputSignal<infer V>\n ? AsyncProperty<V>\n : T[K] extends InputSignalWithTransform<infer V, infer D>\n ? AsyncProperty<D>\n : never;\n};\n\ntype ComponentOutputs<Component> = GetKeyWithType<\n Component,\n OutputEmitterRef<any>\n>;\n\ntype ComponentOutputsOrigin<T> = {\n [K in keyof T]: T[K] extends OutputEmitterRef<infer V>\n ? (input: V) => void\n : never;\n};\ntype ComponentOutputsAsync<T> = {\n [K in keyof T]: T[K] extends OutputEmitterRef<infer V>\n ? AsyncProperty<(input: V) => void>\n : never;\n};\n\ntype ComponentInstance<TComponent> =\n TComponent extends Type<infer Instance> ? Instance : never;\n\n// inputs\ntype GetComponentInputs<TComponent> = ComponentInputs<\n ComponentInstance<TComponent>\n>;\n\ntype GetComponentInputsOrigin<TComponent> = Partial<\n ComponentInputsOrigin<GetComponentInputs<TComponent>>\n>;\n\ntype GetComponentInputsAsync<TComponent> = Partial<\n ComponentInputsAsync<GetComponentInputs<TComponent>>\n>;\n// outputs\ntype GetComponentOutputs<TComponent> = ComponentOutputs<\n ComponentInstance<TComponent>\n>;\n\ntype GetComponentOutputsOrigin<TComponent> = Partial<\n ComponentOutputsOrigin<GetComponentOutputs<TComponent>>\n>;\n\ntype GetComponentOutputsAsync<TComponent> = Partial<\n ComponentOutputsAsync<GetComponentOutputs<TComponent>>\n>;\ntype ReturnAction<Input> = RawConfigAction<\n 'viewRawConfig',\n Input,\n AnyCoreSchemaHandle\n>;\ntype ComponentActions<TComponent> = {\n inputs: {\n patch: <Input>(\n value: GetComponentInputsOrigin<TComponent>,\n ) => ReturnAction<Input>;\n set: <Input>(\n value: GetComponentInputsOrigin<TComponent>,\n ) => ReturnAction<Input>;\n patchAsync: <Input>(\n value: GetComponentInputsAsync<TComponent>,\n ) => ReturnAction<Input>;\n remove: <Input>(\n value: (keyof GetComponentInputs<TComponent>)[],\n ) => ReturnAction<Input>;\n mapAsync: <Input>(\n value: (\n field: _PiResolvedCommonViewFieldConfig,\n ) => (\n value: GetComponentInputs<TComponent>,\n ) => GetComponentInputs<TComponent>,\n ) => ReturnAction<Input>;\n };\n outputs: {\n patch: <Input>(\n value: GetComponentOutputsOrigin<TComponent>,\n ) => ReturnAction<Input>;\n set: <Input>(\n value: GetComponentOutputsOrigin<TComponent>,\n ) => ReturnAction<Input>;\n patchAsync: <Input>(\n value: GetComponentOutputsAsync<TComponent>,\n ) => ReturnAction<Input>;\n remove: <Input>(\n value: (keyof GetComponentOutputs<TComponent>)[],\n ) => ReturnAction<Input>;\n mapAsync: <Input>(\n value: (\n field: _PiResolvedCommonViewFieldConfig,\n ) => (\n value: GetComponentOutputs<TComponent>,\n ) => GetComponentOutputs<TComponent>,\n ) => ReturnAction<Input>;\n };\n};\n\ntype ActionComponent<A extends PiTypeConfig> =\n A['type'] extends Type<any>\n ? A['type']\n : NonNullable<A['actions']>[0]['__type'];\n\nexport function typedComponent<T extends PiCommonConfig>(\n input: T,\n): {\n define: T;\n setComponent: <TCName extends keyof T['types'] | Type<any>, K>(\n input: TCName,\n fn?: (\n actions: Omit<typeof PresetActions, 'inputs' | 'outputs'> &\n ComponentActions<\n TCName extends keyof T['types']\n ? ActionComponent<NonNullable<T['types']>[TCName]>\n : TCName\n >,\n ) => any[],\n ) => MetadataListAction<K>;\n} {\n return {\n define: input,\n setComponent(key, fn) {\n const type = typeof key === 'string' ? input.types![key].type : key;\n return metadataList(\n fn ? [setComponent(type), ...fn(actions as any)] : [setComponent(type)],\n );\n },\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PVFT","originRawConfig","coreActions","actions"],"mappings":"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"}
1
+ {"version":3,"file":"piying-view-angular.mjs","sources":["../../../projects/view-angular/lib/type/view-token.ts","../../../projects/view-angular/lib/component/group/component.base.ts","../../../projects/view-angular/lib/component/group/component.ts","../../../projects/view-angular/lib/component/group/component.html","../../../projects/view-angular/lib/builder.ts","../../../projects/view-angular/lib/schema/ng-schema.ts","../../../projects/view-angular/lib/util/async-cache.ts","../../../projects/view-angular/lib/directives/attributes.directive.ts","../../../projects/view-angular/lib/directives/events.directive.ts","../../../projects/view-angular/lib/directives/interop_ng_control.ts","../../../projects/view-angular/lib/directives/field-control-directive.ts","../../../projects/view-angular/lib/hook/chained_injector.ts","../../../projects/view-angular/lib/directives/field-outlet.directive.ts","../../../projects/view-angular/lib/pipe/template.pipe.ts","../../../projects/view-angular/lib/pipe/listen.pipe.ts","../../../projects/view-angular/lib/pipe/list-injector.pipe.ts","../../../projects/view-angular/lib/view.component.ts","../../../projects/view-angular/lib/view.component.html","../../../projects/view-angular/lib/schema/action/raw-config.ts","../../../projects/view-angular/lib/schema/action/directive.ts","../../../projects/view-angular/lib/schema/action/index.ts","../../../projects/view-angular/lib/component/form/control.base.component.ts","../../../projects/view-angular/lib/util/typed-component.ts","../../../projects/view-angular/piying-view-angular.ts"],"sourcesContent":["/** component */\n\nimport {\n InjectionToken,\n Signal,\n EventEmitter,\n TemplateRef,\n ComponentRef,\n} from '@angular/core';\nimport { DynamicComponentConfig } from './component';\nimport { SetOptional } from '@piying/view-angular-core';\nimport { NgConvertOptions } from './builder-type';\nimport { PiViewConfig } from './view-config';\nimport * as v from 'valibot';\nimport { PI_VIEW_FIELD_TOKEN as PVFT } from '@piying/view-angular-core';\nexport const PI_INPUT_OPTIONS_TOKEN = new InjectionToken<\n Signal<\n Omit<\n SetOptional<NgConvertOptions, 'builder' | 'handle'>,\n 'fieldGlobalConfig'\n > & { fieldGlobalConfig?: PiViewConfig }\n >\n>('PI_INPUT_OPTIONS');\nexport const PI_INPUT_SCHEMA_TOKEN = new InjectionToken<\n Signal<v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>>\n>('PI_INPUT_SCHEMA');\nexport const PI_INPUT_MODEL_TOKEN = new InjectionToken<Signal<any>>(\n 'PI_INPUT_MODEL',\n);\n/** wrapper中可以使用,已解析的配置\n * core\n */\nexport const PI_VIEW_FIELD_TOKEN = PVFT;\nexport const PI_VIEW_TEMPLATE_REF_TOKEN = new InjectionToken<TemplateRef<any>>(\n 'PI_VIEW_TEMPLATE_REF',\n);\n/** todo 用以前的? */\nexport const PI_VIEW_COMPONENT_LIST_TOKEN = new InjectionToken<\n ComponentRef<any>[]\n>('PI_VIEW_COMPONENT_LIST');\n\n/**\n * @internal\n * 内部传参用\n */\nexport const PI_COMPONENT_LIST = new InjectionToken<DynamicComponentConfig[]>(\n 'PI_COMPONENT_LIST',\n);\nexport const PI_COMPONENT_INDEX = new InjectionToken<number>(\n 'PI_COMPONENT_INDEX',\n);\nexport const PI_COMPONENT_LIST_LISTEN = new InjectionToken<\n EventEmitter<DynamicComponentConfig[]>\n>('PI_COMPONENT_LIST_LISTEN');\n","import { computed, Directive, inject, Injector } from '@angular/core';\nimport { PI_VIEW_FIELD_TOKEN, PI_VIEW_TEMPLATE_REF_TOKEN } from '../../type';\n\n@Directive()\nexport class PiyingViewGroupBase {\n field$$ = inject(PI_VIEW_FIELD_TOKEN);\n props$$ = computed(() => this.field$$().props());\n children$$ = computed(() => this.field$$().children!());\n fixedChildren$$ = computed(() => this.field$$().fixedChildren?.() ?? []);\n restChildren$$ = computed(() => this.field$$().restChildren?.() ?? []);\n fieldTemplateRef = inject(PI_VIEW_TEMPLATE_REF_TOKEN);\n\n injector = inject(Injector);\n}\n","import { ChangeDetectionStrategy, Component, viewChild } from '@angular/core';\n\nimport { PiyingViewGroupBase } from './component.base';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'piying-view-group',\n imports: [NgTemplateOutlet],\n templateUrl: './component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PiyingViewGroup extends PiyingViewGroupBase {\n static __version = 2;\n templateRef = viewChild.required('templateRef');\n}\n","<ng-template #templateRef>\n @for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"\n fieldTemplateRef;\n context: { $implicit: field, injector }\n \"\n ></ng-container>\n }\n</ng-template>\n","import { PiResolvedViewFieldConfig } from './type';\nimport { Injectable } from '@angular/core';\n\nimport { FormBuilder } from '@piying/view-angular-core';\nimport { NgSchemaHandle } from './schema/ng-schema';\n\n@Injectable()\nexport class AngularFormBuilder extends FormBuilder<NgSchemaHandle> {\n override afterResolveConfig(\n rawConfig: NgSchemaHandle,\n config: PiResolvedViewFieldConfig,\n ): PiResolvedViewFieldConfig {\n const field = rawConfig;\n\n config.directives = field.directives;\n return config;\n }\n}\n","import { combineSignal, CoreSchemaHandle } from '@piying/view-angular-core';\nimport { PiResolvedViewFieldConfig, NgDirectiveConfig } from '../type';\n\nexport class NgSchemaHandle extends CoreSchemaHandle<\n NgSchemaHandle,\n () => PiResolvedViewFieldConfig\n> {\n declare type: any;\n directives = combineSignal<NgDirectiveConfig>([]);\n}\n","import { reflectComponentType, Type } from '@angular/core';\nexport function isComponentType(input: any): input is Type<any> {\n return !!reflectComponentType(input as any);\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[attributes]',\n})\nexport class AttributesDirective {\n attributes = input.required<Record<string, any>>();\n excludes = input<string[]>([]);\n #rederer = inject(Renderer2);\n #el = inject(ElementRef).nativeElement;\n ngOnChanges(changes: SimpleChanges): void {\n const { previousValue, currentValue, firstChange } = changes['attributes'];\n for (const key in currentValue) {\n if (this.excludes().includes(key)) {\n continue;\n }\n this.#rederer.setAttribute(this.#el, key, currentValue[key]);\n }\n if (!firstChange) {\n for (const key in previousValue) {\n if (this.excludes().includes(key)) {\n continue;\n }\n if (!(key in currentValue)) {\n this.#rederer.removeAttribute(this.#el, key);\n }\n }\n }\n }\n}\n","import { Directive, ElementRef, inject, input, Renderer2 } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[events]',\n})\nexport class EventsDirective {\n events = input.required<Record<string, (event: any) => any>>();\n #renderer = inject(Renderer2);\n #el = inject(ElementRef).nativeElement;\n #cleanList: (() => void)[] = [];\n ngOnChanges(): void {\n this.#clean();\n this.#cleanList = [];\n for (const key in this.events()) {\n const event = this.events()[key];\n this.#cleanList.push(this.#renderer.listen(this.#el, key, event));\n }\n }\n #clean() {\n this.#cleanList.forEach((fn) => fn());\n }\n ngOnDestroy(): void {\n this.#clean();\n }\n}\n","import {\n NgControl,\n Validators,\n type AbstractControl,\n type ValidationErrors,\n} from '@angular/forms';\nimport { FieldControl, PENDING } from '@piying/view-angular-core';\n\nexport type InteropSharedKeys =\n | 'value'\n | 'valid'\n | 'invalid'\n | 'touched'\n | 'untouched'\n | 'disabled'\n | 'enabled'\n | 'errors'\n | 'pristine'\n | 'dirty';\n\nexport class InteropNgControl extends NgControl {\n constructor(protected field: () => FieldControl<unknown>) {\n super();\n }\n\n readonly control: AbstractControl<any, any> =\n this as unknown as AbstractControl<any, any>;\n\n override get value(): any {\n return this.field().value;\n }\n\n override get valid(): boolean {\n return this.field().valid;\n }\n\n override get invalid(): boolean {\n return !this.field().valid;\n }\n\n override get pending(): boolean | null {\n return this.field().status$$() === PENDING;\n }\n\n override get disabled(): boolean {\n return this.field().disabled;\n }\n\n override get enabled(): boolean {\n return !this.field().disabled;\n }\n\n override get errors(): ValidationErrors | null {\n const errors = this.field().errors;\n return errors ?? null;\n }\n\n override get pristine(): boolean {\n return this.field().pristine;\n }\n\n override get dirty(): boolean {\n return this.field().dirty;\n }\n\n override get touched(): boolean {\n return this.field().touched;\n }\n\n override get untouched(): boolean {\n return !this.field().touched;\n }\n\n get submitted(): boolean {\n return false;\n }\n\n override viewToModelUpdate(newValue: any): void {}\n override get valueChanges() {\n return this.field().valueChanges;\n }\n override get statusChanges() {\n return this.field().statusChanges;\n }\n hasValidator(input: any) {\n if (Validators.required === input) {\n return this.field().required$$();\n }\n return false;\n }\n}\n","import {\n Directive,\n inject,\n Injector,\n input,\n OnDestroy,\n Provider,\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n} from '@angular/forms';\nimport { createViewControlLink, FieldControl } from '@piying/view-angular-core';\nimport { InteropNgControl } from './interop_ng_control';\n\nconst formControlBinding: Provider = {\n provide: NgControl,\n useFactory: () => inject(FieldControlDirective).ngControl,\n};\n\n@Directive({\n selector: '[fieldControl]',\n providers: [formControlBinding],\n standalone: true,\n})\nexport class FieldControlDirective implements OnDestroy {\n fieldControl = input.required<FieldControl>();\n readonly cvaArray = inject<ControlValueAccessor[]>(NG_VALUE_ACCESSOR);\n readonly injector = inject(Injector);\n\n get cva() {\n return this.cvaArray[0];\n }\n #_ngControl: InteropNgControl | undefined;\n\n get ngControl(): NgControl {\n return (this.#_ngControl ??= new InteropNgControl(() =>\n this.fieldControl(),\n )) as unknown as NgControl;\n }\n\n #disposeFn?: (destroyed?: boolean) => void;\n ngOnChanges(): void {\n this.#disposeFn?.();\n this.#disposeFn = createViewControlLink(\n this.fieldControl,\n this.cva,\n this.injector,\n );\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.#disposeFn?.(true);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { Injector, ProviderToken, InjectOptions } from '@angular/core';\n\nconst NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};\n/**\n * Injector that looks up a value using a specific injector, before falling back to the module\n * injector. Used primarily when creating components or embedded views dynamically.\n */\nexport class ChainedInjector implements Injector {\n constructor(\n public injector: Injector,\n public parentInjector: Injector,\n ) {}\n\n get<T>(\n token: ProviderToken<T>,\n notFoundValue?: T,\n options?: InjectOptions,\n ): T {\n const value = this.injector.get<\n T | typeof NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR\n >(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, options);\n\n if (\n value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||\n notFoundValue === (NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as unknown as T)\n ) {\n // Return the value from the root element injector when\n // - it provides it\n // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n // - the module injector should not be checked\n // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n return value as T;\n }\n\n return this.parentInjector.get(token, notFoundValue, options);\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n computed,\n createComponent,\n createNgModule,\n Directive,\n EnvironmentInjector,\n inject,\n Injector,\n input,\n inputBinding,\n NgModuleRef,\n outputBinding,\n PendingTasks,\n reflectComponentType,\n signal,\n Signal,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n PiResolvedViewFieldConfig,\n ComponentRawType,\n NgDirectiveConfig,\n PI_VIEW_COMPONENT_LIST_TOKEN,\n} from '../type';\nimport {\n ComponentVersion,\n DynamicComponentConfig,\n NgComponentDefine,\n} from '../type/component';\nimport { isComponentType } from '../util/async-cache';\nimport {\n asyncObjectSignal,\n getLazyImport,\n isLazyMark,\n ViewAttributes,\n ViewEvents,\n ViewInputs,\n ViewOutputs,\n} from '@piying/view-angular-core';\n\nimport { AttributesDirective } from './attributes.directive';\nimport { EventsDirective } from './events.directive';\nimport { FieldControlDirective } from './field-control-directive';\nimport { DirectiveConfig } from '../component/dynamic-define.component';\nimport { ChainedInjector } from '../hook/chained_injector';\nfunction createInputsBind(inputs?: Signal<ViewInputs | undefined>) {\n if (!inputs?.()) {\n return [];\n }\n return Object.keys(inputs()!).map((key) =>\n inputBinding(\n key,\n computed(() => inputs()![key]),\n ),\n );\n}\nfunction createOutputsBind(outputs?: Signal<ViewOutputs>) {\n if (!outputs?.()) {\n return [];\n }\n return Object.keys(outputs!()!).map((key) =>\n outputBinding(key, (event) => outputs!()![key](event)),\n );\n}\nfunction createAttributesDirective(\n attributes: Signal<ViewAttributes | undefined>,\n) {\n if (attributes()) {\n return [\n {\n type: AttributesDirective,\n bindings: [inputBinding('attributes', attributes)],\n },\n ];\n }\n return [];\n}\nfunction createEventsDirective(events: Signal<ViewEvents | undefined>) {\n if (events()) {\n return [\n {\n type: EventsDirective,\n bindings: [inputBinding('events', events)],\n },\n ];\n }\n return [];\n}\n// 没有保存\n@Directive({\n selector: '[fieldOutlet]',\n standalone: true,\n})\nexport class FieldOutlet {\n fieldOutlet = input.required<PiResolvedViewFieldConfig>();\n nextTemplateRef = input.required<\n TemplateRef<{\n injector: Signal<Injector | undefined>;\n index: number;\n fieldConfig: PiResolvedViewFieldConfig;\n }>\n >();\n index = input(0);\n injector = input.required<Injector>();\n listen = input<any>();\n #isGroup$$ = computed(() => {\n const define = this.fieldOutlet();\n return define?.fixedChildren || define?.restChildren;\n });\n #control = computed(() => this.fieldOutlet().form.control);\n #formControlDirectiveConfig$$ = computed(() => {\n const isGroup = this.#isGroup$$();\n return !isGroup && this.#control()\n ? ({\n type: FieldControlDirective,\n inputs: asyncObjectSignal({ fieldControl: this.#control() }),\n } as DirectiveConfig)\n : undefined;\n });\n /* 组件的指令 **/\n #directiveConfigList$$ = computed(() => {\n const directivesInputs = this.fieldOutlet().directives!() ?? [];\n const formConfig = this.#formControlDirectiveConfig$$();\n return formConfig ? [...directivesInputs, formConfig] : directivesInputs;\n });\n\n #wrappers = computed(() => this.fieldOutlet().wrappers());\n\n #viewRef = inject(ViewContainerRef);\n #task = inject(PendingTasks);\n #loadComponent(\n type: ComponentRawType,\n loadFn: (input: NgComponentDefine) => void,\n ) {\n if (isComponentType(type)) {\n loadFn({ component: type });\n return;\n }\n if (typeof type === 'function' || isLazyMark(type)) {\n this.#task.run(() =>\n getLazyImport<() => Promise<any>>(type)!()\n .then((type) => {\n if (isComponentType(type)) {\n return { component: type };\n }\n return type;\n })\n .then((data) => loadFn(data)),\n );\n return;\n }\n loadFn(type as any);\n }\n #moduleRef: NgModuleRef<any> | undefined;\n #injector$$ = computed(\n () => new ChainedInjector(this.fieldOutlet().injector, this.injector()),\n );\n #componentRef: ComponentRef<any> | undefined;\n #app = inject(ApplicationRef);\n ngOnChanges(): void {\n this.#createComponent();\n }\n #createComponent() {\n this.#dispose();\n const injector = this.#injector$$();\n const evInjector = injector.get(EnvironmentInjector);\n\n const index = this.index();\n /** 用于wrapper的槽传递 */\n const templateRef = this.nextTemplateRef();\n let createProjectableNodes: (\n componentDefine: NgComponentDefine,\n ) => Node[][];\n let typeDefine = this.#wrappers()[index] as DynamicComponentConfig;\n const cmpInjector = signal<Injector | undefined>(undefined);\n let directivesList!: NgDirectiveConfig[];\n // 改增量后,要保证列表更新时没有问题\n const componentList = injector.get(PI_VIEW_COMPONENT_LIST_TOKEN);\n\n /** 包装器 */\n if (typeDefine) {\n const embRef = this.#viewRef.createEmbeddedView(templateRef, {\n injector: cmpInjector,\n index: index + 1,\n fieldConfig: this.fieldOutlet(),\n });\n createProjectableNodes = () => [embRef.rootNodes];\n directivesList = [];\n } else {\n /** 内层组件 */\n typeDefine = this.fieldOutlet().define!() as any;\n createProjectableNodes = (componentDefine) => {\n const cm = reflectComponentType(componentDefine.component)!;\n const templateSlots = typeDefine.slots!();\n const templateRefList = cm.ngContentSelectors.map(\n (key) => templateSlots[key] as TemplateRef<any> | undefined,\n );\n const viewRefList = templateRefList.map((item) =>\n item ? this.#viewRef.createEmbeddedView(item) : undefined,\n );\n return viewRefList.map((item) => item?.rootNodes ?? []);\n };\n directivesList = this.#directiveConfigList$$();\n }\n this.#loadComponent(typeDefine.type, (componentDefine) => {\n const COMPONENT_VERSION: number | undefined = (\n componentDefine.component as ComponentVersion\n ).__version;\n this.#moduleRef = componentDefine.module\n ? createNgModule(componentDefine.module, injector)\n : undefined;\n const evInjector2 = this.#moduleRef?.injector ?? evInjector;\n const componentRef = createComponent(componentDefine.component, {\n elementInjector: injector,\n environmentInjector: evInjector2,\n\n bindings: [\n ...createInputsBind(typeDefine.inputs),\n ...createOutputsBind(typeDefine.outputs),\n ],\n directives: [\n ...directivesList.map((item) => ({\n type: item.type,\n bindings: [\n ...createInputsBind(item.inputs),\n ...createOutputsBind(item.outputs),\n ],\n })),\n ...(COMPONENT_VERSION === 2\n ? []\n : [\n ...createAttributesDirective(typeDefine.attributes),\n ...createEventsDirective(typeDefine.events),\n ]),\n ],\n projectableNodes: createProjectableNodes(componentDefine),\n });\n this.#componentRef = componentRef;\n componentList.push(componentRef);\n if (COMPONENT_VERSION === 2) {\n const templateRef = (\n componentRef.instance as { templateRef: Signal<TemplateRef<any>> }\n ).templateRef();\n this.#viewRef.createEmbeddedView(templateRef, {\n attributes: typeDefine.attributes,\n events: typeDefine.events,\n });\n this.#app.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n } else {\n this.#viewRef.insert(componentRef.hostView);\n }\n\n cmpInjector.set(componentRef.injector);\n });\n }\n #dispose() {\n this.#viewRef.clear();\n this.#componentRef?.destroy();\n this.#componentRef = undefined;\n this.#moduleRef?.destroy();\n this.#moduleRef = undefined;\n }\n ngOnDestroy(): void {\n this.#dispose();\n }\n}\n","import { Injector, Pipe, PipeTransform, TemplateRef } from '@angular/core';\nimport { PI_VIEW_TEMPLATE_REF_TOKEN } from '../type';\n\n@Pipe({ name: 'templateInjector' })\nexport class TemplatePipe implements PipeTransform {\n transform(injector: Injector, templateRef: TemplateRef<any>) {\n return Injector.create({\n providers: [\n { provide: PI_VIEW_TEMPLATE_REF_TOKEN, useValue: templateRef },\n ],\n parent: injector,\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'listen' })\nexport class ListenPipe implements PipeTransform {\n transform(value: any, ...args: any[]) {\n return [value, ...args];\n }\n}\n@Pipe({ name: 'inputKeys' })\nexport class InputsPipe implements PipeTransform {\n transform(value: Record<string, any>) {\n return Object.keys(value).join('|');\n }\n}\n","import { Injector, Pipe, PipeTransform } from '@angular/core';\nimport { PI_VIEW_COMPONENT_LIST_TOKEN } from '../type';\n\n@Pipe({ name: 'listInjector' })\nexport class ListInjectorPipe implements PipeTransform {\n transform(injector: Injector) {\n return Injector.create({\n providers: [{ provide: PI_VIEW_COMPONENT_LIST_TOKEN, useValue: [] }],\n parent: injector,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyableInjector,\n inject,\n Injector,\n input,\n OnChanges,\n output,\n signal,\n SimpleChanges,\n untracked,\n viewChild,\n} from '@angular/core';\n\nimport {\n PiViewConfig,\n PiResolvedViewFieldConfig,\n PI_INPUT_OPTIONS_TOKEN,\n PI_INPUT_SCHEMA_TOKEN,\n PI_INPUT_MODEL_TOKEN,\n} from './type';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n convert,\n FieldArray,\n FieldControl,\n FieldGroup,\n initListen,\n} from '@piying/view-angular-core';\nimport { AngularFormBuilder } from './builder';\nimport { NgSchemaHandle } from './schema/ng-schema';\nimport { NgConvertOptions } from './type/builder-type';\nimport type { SetOptional } from '@piying/view-angular-core';\nimport * as v from 'valibot';\nimport { FieldOutlet } from './directives/field-outlet.directive';\nimport { TemplatePipe } from './pipe/template.pipe';\nimport { InputsPipe, ListenPipe } from './pipe/listen.pipe';\nimport { ListInjectorPipe } from './pipe/list-injector.pipe';\nconst DefaultConvertOptions = {\n builder: AngularFormBuilder,\n handle: NgSchemaHandle,\n};\n@Component({\n selector: 'piying-view',\n imports: [\n NgTemplateOutlet,\n FieldOutlet,\n TemplatePipe,\n ListenPipe,\n InputsPipe,\n ListInjectorPipe,\n ],\n templateUrl: './view.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PiyingView implements OnChanges {\n templateRef = viewChild.required('templateRef');\n readonly selectorless = input<boolean>(false);\n schema = input.required<v.BaseSchema<any, any, any>>();\n model = input<any>(undefined);\n modelChange = output<any>();\n options = input<\n Omit<\n SetOptional<NgConvertOptions, 'builder' | 'handle'>,\n 'fieldGlobalConfig'\n > & { fieldGlobalConfig?: PiViewConfig }\n >();\n form$$ = computed(\n () =>\n this.resolvedField$()?.form.control as\n | (FieldControl | FieldGroup | FieldArray)\n | undefined,\n );\n\n #lastRF?: PiResolvedViewFieldConfig;\n ngOnChanges(changes: SimpleChanges): void {\n const rFields = this.#resolvedFields$$();\n if (this.#lastRF !== rFields || 'model' in changes) {\n this.#updateValue(this.model());\n }\n this.#lastRF = rFields;\n }\n\n #resolvedFields$$ = computed(() => {\n this.schema();\n return untracked(() => this.#updateField());\n });\n\n #injector = inject(Injector);\n #builderInjector?: DestroyableInjector;\n resolvedField$ = signal<PiResolvedViewFieldConfig | undefined>(undefined);\n #listenDispose?: () => void;\n injector3$$ = computed(() => this.resolvedField$()!.injector);\n #fieldRoot = Injector.create({\n providers: [\n {\n provide: PI_INPUT_OPTIONS_TOKEN,\n useValue: this.options,\n },\n {\n provide: PI_INPUT_SCHEMA_TOKEN,\n useValue: this.schema,\n },\n {\n provide: PI_INPUT_MODEL_TOKEN,\n useValue: this.model,\n },\n ],\n parent: this.#injector,\n });\n #updateField() {\n this.#clean();\n // 临时销毁\n const envInjector = Injector.create({\n providers: [],\n parent: this.#fieldRoot,\n });\n this.#builderInjector = envInjector;\n const result = convert<PiResolvedViewFieldConfig>(this.schema() as any, {\n ...DefaultConvertOptions,\n ...this.options(),\n injector: envInjector,\n });\n this.resolvedField$.set(result);\n return result;\n }\n #clean() {\n if (this.#builderInjector) {\n this.#builderInjector.destroy();\n this.#builderInjector = undefined;\n }\n }\n\n #updateValue(model: Record<string, any> | undefined) {\n this.#listenDispose?.();\n const result = this.resolvedField$()!;\n if (result.form.control) {\n // 监听初始化,每次field变更会初始化\n const ref = initListen(\n this.model(),\n result!.form.control,\n // 使用envInjector会导致在测试中慢一次检查,生产上可能也会慢一点?\n this.#injector,\n (value) => {\n untracked(() => {\n if (result!.form.control?.valueNoError$$()) {\n this.modelChange.emit(value);\n }\n });\n },\n );\n this.#listenDispose = () => {\n ref.destroy();\n this.#listenDispose = undefined;\n };\n result.form.control.updateValue(model);\n }\n }\n\n ngOnDestroy(): void {\n this.#listenDispose?.();\n }\n}\n","<ng-template\n #nextTemplate\n let-injector=\"injector\"\n let-index=\"index\"\n let-fieldConfig=\"fieldConfig\"\n>\n @if (injector(); as injector) {\n <ng-template\n [fieldOutlet]=\"fieldConfig\"\n [index]=\"index\"\n [nextTemplateRef]=\"nextTemplate\"\n [injector]=\"injector\"\n ></ng-template>\n }\n</ng-template>\n\n<ng-template #dynamicComponent let-field let-injector=\"injector\">\n @let listij = injector ?? NewInjector | listInjector;\n @let renderConfig = field.renderConfig();\n @if (field.define && !renderConfig?.hidden) {\n @let define = field.define();\n <ng-template\n [fieldOutlet]=\"field\"\n [index]=\"0\"\n [nextTemplateRef]=\"nextTemplate\"\n [injector]=\"listij\"\n [listen]=\"\n field.wrappers()\n | listen\n : (define.inputs | inputKeys)\n : (define.outputs | inputKeys)\n : define.type\n \"\n ></ng-template>\n }\n</ng-template>\n@let NewInjector = injector3$$() | templateInjector: dynamicComponent;\n\n<ng-template #templateRef>\n @if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"\n dynamicComponent;\n context: {\n $implicit: field,\n injector: NewInjector,\n }\n \"\n ></ng-container>\n }\n</ng-template>\n@if (!selectorless()) {\n <ng-container *ngTemplateOutlet=\"templateRef\"></ng-container>\n}\n","import { RawConfigCommon } from '@piying/valibot-visit';\nimport { rawConfig as originRawConfig } from '@piying/view-angular-core';\nimport { NgSchemaHandle } from '../ng-schema';\nexport const rawConfig = originRawConfig as RawConfigCommon<NgSchemaHandle>;\n","import {\n asyncObjectSignal,\n mergeHooksFn,\n SetOptional,\n SetUnWrapper$,\n CustomDataSymbol,\n AnyCoreSchemaHandle,\n _PiResolvedCommonViewFieldConfig,\n AsyncObjectSignal,\n} from '@piying/view-angular-core';\nimport { NgDirectiveConfig } from '../../type';\nimport { rawConfig } from './raw-config';\nimport { Signal, signal, Type } from '@angular/core';\nimport { RawConfigAction } from '@piying/valibot-visit';\nfunction createSetOrPatchDirectivePropertyFn(isPatch?: boolean) {\n return <T>(\n items: SetOptional<\n SetUnWrapper$<\n NgDirectiveConfig,\n 'inputs' | 'outputs' | 'attributes' | 'events' | 'model'\n >,\n 'inputs' | 'outputs' | 'attributes' | 'events' | 'model'\n >[],\n ) =>\n rawConfig<T>((field) => {\n if (!isPatch) {\n field.directives.clean();\n }\n items.forEach((item) => {\n field.directives.add(\n signal<NgDirectiveConfig>({\n type: item.type,\n inputs: asyncObjectSignal(item.inputs ?? {}),\n outputs: asyncObjectSignal(item.outputs ?? {}),\n attributes: asyncObjectSignal(item.attributes ?? {}),\n events: asyncObjectSignal(item.events ?? {}),\n model: asyncObjectSignal(item.model ?? {}),\n }),\n );\n });\n });\n}\nfunction setSubInitValue<Key extends string>(\n key: Key,\n fn: () => Record<Key, AsyncObjectSignal<any>>,\n initObj: any,\n) {\n if (!Object.keys(initObj[key]).length) {\n return;\n }\n fn()[key].set(initObj[key]);\n}\nfunction patchAsyncDirective<T>(\n type: Type<any>,\n actions?: RawConfigAction<'viewRawConfig', any, any>[],\n options?: { insertIndex?: number },\n) {\n return rawConfig<T>((rawFiled) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n const initData = signal<NgDirectiveConfig>({\n type,\n attributes: asyncObjectSignal({}),\n events: asyncObjectSignal({}),\n inputs: asyncObjectSignal({}),\n outputs: asyncObjectSignal({}),\n model: asyncObjectSignal({}),\n });\n field.directives!.add(initData, options?.insertIndex);\n for (const item of actions ?? []) {\n const tempField: Partial<AnyCoreSchemaHandle> & { model: any } = {\n inputs: {},\n outputs: {},\n attributes: {},\n events: {},\n model: {},\n };\n (item.value as any)(tempField, undefined, {\n [CustomDataSymbol]: (\n rawField: AnyCoreSchemaHandle,\n field: _PiResolvedCommonViewFieldConfig,\n ) => {\n if (rawField) {\n return tempField;\n }\n return initData;\n },\n });\n setSubInitValue('inputs', initData as any, tempField);\n setSubInitValue('outputs', initData as any, tempField);\n setSubInitValue('attributes', initData as any, tempField);\n setSubInitValue('events', initData as any, tempField);\n setSubInitValue('model', initData as any, tempField);\n\n (tempField as any).hooks?.allFieldsResolved?.(field);\n }\n },\n },\n { position: 'bottom' },\n rawFiled,\n );\n });\n}\nfunction removeDirectives<T>(\n removeList: (\n list: Signal<NgDirectiveConfig>[],\n ) => Signal<NgDirectiveConfig>[],\n) {\n return rawConfig<T>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n field.directives!.update(removeList);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n}\nexport const directives = {\n set: createSetOrPatchDirectivePropertyFn(),\n patch: createSetOrPatchDirectivePropertyFn(true),\n patchAsync: patchAsyncDirective,\n remove: removeDirectives,\n};\n","import { actions as coreActions } from '@piying/view-angular-core';\nimport { directives } from './directive';\nexport * from './raw-config';\nexport {\n asControl,\n condition,\n asVirtualGroup,\n layout,\n} from '@piying/view-angular-core';\nexport * from './directive';\nexport const actions = { ...coreActions, directives };\n","import { signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nexport class BaseControl<T = any> implements ControlValueAccessor {\n readonly defaultValue: any = undefined;\n value$ = signal<T>(this.defaultValue ?? (undefined as any));\n\n protected emitValue?: (value: any) => void;\n registerOnChange(fn: any): void {\n this.emitValue = fn;\n }\n /** 同时发射和value变更 */\n valueChange(value: T) {\n this.emitValue?.(value);\n this.value$.set(value);\n }\n\n writeValue(obj: any): void {\n this.value$.set(obj ?? undefined);\n }\n #touched?: () => void;\n registerOnTouched(fn: any): void {\n this.#touched = fn;\n }\n touchedChange() {\n this.#touched!();\n }\n valueAndTouchedChange(value: T) {\n this.valueChange(value);\n this.touchedChange();\n }\n disabled$ = signal(false);\n setDisabledState(isDisabled: boolean): void {\n this.disabled$.set(isDisabled);\n }\n}\n","import {\n actions as PresetActions,\n PiCommonConfig,\n actions,\n _PiResolvedCommonViewFieldConfig,\n setComponent,\n PiTypeConfig,\n AsyncProperty,\n} from '@piying/view-angular-core';\n\nimport {\n InputSignal,\n InputSignalWithTransform,\n OutputEmitterRef,\n Type,\n} from '@angular/core';\nimport {\n metadataList,\n MetadataListAction,\n RawConfigAction,\n} from '@piying/valibot-visit';\nimport { AnyCoreSchemaHandle } from '@piying/view-angular-core';\ntype GetKeyWithType<T, ValueType> = {\n [K in keyof T as T[K] extends ValueType\n ? T[K] extends any\n ? any extends T[K]\n ? never\n : K\n : K\n : never]: T[K];\n};\n\ntype ComponentInputs<Component> = GetKeyWithType<Component, InputSignal<any>>;\n\ntype ComponentInputsOrigin<T> = {\n [K in keyof T]: T[K] extends InputSignal<infer V>\n ? V\n : T[K] extends InputSignalWithTransform<infer V, infer D>\n ? D\n : never;\n};\ntype ComponentInputsAsync<T> = {\n [K in keyof T]: T[K] extends InputSignal<infer V>\n ? AsyncProperty<V>\n : T[K] extends InputSignalWithTransform<infer V, infer D>\n ? AsyncProperty<D>\n : never;\n};\n\ntype ComponentOutputs<Component> = GetKeyWithType<\n Component,\n OutputEmitterRef<any>\n>;\n\ntype ComponentOutputsOrigin<T> = {\n [K in keyof T]: T[K] extends OutputEmitterRef<infer V>\n ? (input: V) => void\n : never;\n};\ntype ComponentOutputsAsync<T> = {\n [K in keyof T]: T[K] extends OutputEmitterRef<infer V>\n ? AsyncProperty<(input: V) => void>\n : never;\n};\n\ntype ComponentInstance<TComponent> =\n TComponent extends Type<infer Instance> ? Instance : never;\n\n// inputs\ntype GetComponentInputs<TComponent> = ComponentInputs<\n ComponentInstance<TComponent>\n>;\n\ntype GetComponentInputsOrigin<TComponent> = Partial<\n ComponentInputsOrigin<GetComponentInputs<TComponent>>\n>;\n\ntype GetComponentInputsAsync<TComponent> = Partial<\n ComponentInputsAsync<GetComponentInputs<TComponent>>\n>;\n// outputs\ntype GetComponentOutputs<TComponent> = ComponentOutputs<\n ComponentInstance<TComponent>\n>;\n\ntype GetComponentOutputsOrigin<TComponent> = Partial<\n ComponentOutputsOrigin<GetComponentOutputs<TComponent>>\n>;\n\ntype GetComponentOutputsAsync<TComponent> = Partial<\n ComponentOutputsAsync<GetComponentOutputs<TComponent>>\n>;\ntype ReturnAction<Input> = RawConfigAction<\n 'viewRawConfig',\n Input,\n AnyCoreSchemaHandle\n>;\ntype ComponentActions<TComponent> = {\n inputs: {\n patch: <Input>(\n value: GetComponentInputsOrigin<TComponent>,\n ) => ReturnAction<Input>;\n set: <Input>(\n value: GetComponentInputsOrigin<TComponent>,\n ) => ReturnAction<Input>;\n patchAsync: <Input>(\n value: GetComponentInputsAsync<TComponent>,\n ) => ReturnAction<Input>;\n remove: <Input>(\n value: (keyof GetComponentInputs<TComponent>)[],\n ) => ReturnAction<Input>;\n mapAsync: <Input>(\n value: (\n field: _PiResolvedCommonViewFieldConfig,\n ) => (\n value: GetComponentInputs<TComponent>,\n ) => GetComponentInputs<TComponent>,\n ) => ReturnAction<Input>;\n };\n outputs: {\n patch: <Input>(\n value: GetComponentOutputsOrigin<TComponent>,\n ) => ReturnAction<Input>;\n set: <Input>(\n value: GetComponentOutputsOrigin<TComponent>,\n ) => ReturnAction<Input>;\n patchAsync: <Input>(\n value: GetComponentOutputsAsync<TComponent>,\n ) => ReturnAction<Input>;\n remove: <Input>(\n value: (keyof GetComponentOutputs<TComponent>)[],\n ) => ReturnAction<Input>;\n mapAsync: <Input>(\n value: (\n field: _PiResolvedCommonViewFieldConfig,\n ) => (\n value: GetComponentOutputs<TComponent>,\n ) => GetComponentOutputs<TComponent>,\n ) => ReturnAction<Input>;\n };\n};\n\ntype ActionComponent<A extends PiTypeConfig> =\n A['type'] extends Type<any>\n ? A['type']\n : NonNullable<A['actions']>[0]['__type'];\n\nexport function typedComponent<T extends PiCommonConfig>(\n input: T,\n): {\n define: T;\n setComponent: <TCName extends keyof T['types'] | Type<any>, K>(\n input: TCName,\n fn?: (\n actions: Omit<typeof PresetActions, 'inputs' | 'outputs'> &\n ComponentActions<\n TCName extends keyof T['types']\n ? ActionComponent<NonNullable<T['types']>[TCName]>\n : TCName\n >,\n ) => any[],\n ) => MetadataListAction<K>;\n} {\n return {\n define: input,\n setComponent(key, fn) {\n const type = typeof key === 'string' ? input.types![key].type : key;\n return metadataList(\n fn ? [setComponent(type), ...fn(actions as any)] : [setComponent(type)],\n );\n },\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PVFT","originRawConfig","coreActions","actions"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef, Injector, Type, WritableSignal, Signal, InjectionToken, EventEmitter, OnChanges, SimpleChanges, ElementRef, ComponentRef, ViewContainerRef, InputSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
2
+ import { Injector, Type, WritableSignal, InjectionToken, Signal, TemplateRef, ComponentRef, EventEmitter, OnChanges, SimpleChanges, InputSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
3
3
  import * as _piying_view_angular_core from '@piying/view-angular-core';
4
- import { AsyncObjectSignal, ViewInputs, ViewOutputs, ViewEvents, ViewAttributes, CoreResolvedComponentDefine, LazyImport, LazyMarkType, PiResolvedCommonViewFieldConfig, CombineSignal, CoreWrapperConfig, PiCommonConfig, SetOptional, CoreSchemaHandle, FormBuilder, FieldArray, FieldControl, FieldGroup, SetUnWrapper$, actions as actions$1, AnyCoreSchemaHandle, AsyncProperty, _PiResolvedCommonViewFieldConfig, PiTypeConfig } from '@piying/view-angular-core';
4
+ import { AsyncObjectSignal, ViewInputs, ViewOutputs, ViewEvents, ViewAttributes, CoreResolvedComponentDefine, LazyImport, LazyMarkType, PiResolvedCommonViewFieldConfig, CombineSignal, CoreWrapperConfig, ViewSlots, PiCommonConfig, SetOptional, CoreSchemaHandle, FormBuilder, FieldArray, FieldControl, FieldGroup, SetUnWrapper$, actions as actions$1, AnyCoreSchemaHandle, AsyncProperty, _PiResolvedCommonViewFieldConfig, PiTypeConfig } from '@piying/view-angular-core';
5
5
  export { asControl, asVirtualGroup, condition, layout } from '@piying/view-angular-core';
6
6
  import * as _piying_valibot_visit from '@piying/valibot-visit';
7
7
  import { ConvertOptions, RawConfigCommon, RawConfigAction, MetadataListAction } from '@piying/valibot-visit';
@@ -16,10 +16,10 @@ declare class PiyingViewGroupBase {
16
16
  children$$: _angular_core.Signal<_piying_view_angular_core._PiResolvedCommonViewFieldConfig[]>;
17
17
  fixedChildren$$: _angular_core.Signal<_piying_view_angular_core._PiResolvedCommonViewFieldConfig[]>;
18
18
  restChildren$$: _angular_core.Signal<_piying_view_angular_core._PiResolvedCommonViewFieldConfig[]>;
19
- fieldTemplateRef: _angular_core.InputSignal<TemplateRef<any>>;
19
+ fieldTemplateRef: _angular_core.TemplateRef<any>;
20
20
  injector: Injector;
21
21
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PiyingViewGroupBase, never>;
22
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PiyingViewGroupBase, never, never, { "fieldTemplateRef": { "alias": "fieldTemplateRef"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
22
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PiyingViewGroupBase, never, never, {}, {}, never, never, true, never>;
23
23
  }
24
24
 
25
25
  declare class PiyingViewGroup extends PiyingViewGroupBase {
@@ -54,12 +54,12 @@ type ComponentRawType = Type<any> | LazyImport<Type<any>> | NgComponentDefine |
54
54
 
55
55
  interface DynamicComponentConfig {
56
56
  type: Type<any> | LazyImport<Type<any>> | NgComponentDefine | LazyImport<NgComponentDefine> | LazyMarkType<Type<any>> | LazyMarkType<NgComponentDefine>;
57
- attributes: Signal<ViewAttributes | undefined>;
58
- events: Signal<Record<string, (event: any) => any> | undefined>;
59
- inputs: Signal<ViewInputs | undefined>;
60
- directives?: DirectiveConfig[];
61
- outputs?: Signal<ViewOutputs>;
62
- injector?: Injector;
57
+ inputs: AsyncObjectSignal<ViewInputs>;
58
+ outputs: AsyncObjectSignal<ViewOutputs>;
59
+ attributes: AsyncObjectSignal<ViewAttributes>;
60
+ events: AsyncObjectSignal<ViewEvents>;
61
+ slots: AsyncObjectSignal<ViewSlots>;
62
+ directives: DirectiveConfig[];
63
63
  }
64
64
  /** component,wrapper通用定义 */
65
65
  type NgComponentDefine = {
@@ -79,8 +79,13 @@ declare const PI_INPUT_OPTIONS_TOKEN: InjectionToken<Signal<Omit<SetOptional<NgC
79
79
  }>>;
80
80
  declare const PI_INPUT_SCHEMA_TOKEN: InjectionToken<Signal<v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>>>;
81
81
  declare const PI_INPUT_MODEL_TOKEN: InjectionToken<Signal<any>>;
82
- /** wrapper中可以使用,已解析的配置 */
82
+ /** wrapper中可以使用,已解析的配置
83
+ * core
84
+ */
83
85
  declare const PI_VIEW_FIELD_TOKEN: InjectionToken<Signal<_piying_view_angular_core._PiResolvedCommonViewFieldConfig>>;
86
+ declare const PI_VIEW_TEMPLATE_REF_TOKEN: InjectionToken<TemplateRef<any>>;
87
+ /** todo 用以前的? */
88
+ declare const PI_VIEW_COMPONENT_LIST_TOKEN: InjectionToken<ComponentRef<any>[]>;
84
89
  declare const PI_COMPONENT_INDEX: InjectionToken<number>;
85
90
  declare const PI_COMPONENT_LIST_LISTEN: InjectionToken<EventEmitter<DynamicComponentConfig[]>>;
86
91
 
@@ -98,37 +103,11 @@ declare class PiyingView implements OnChanges {
98
103
  ngOnChanges(changes: SimpleChanges): void;
99
104
  resolvedField$: _angular_core.WritableSignal<PiResolvedViewFieldConfig | undefined>;
100
105
  injector3$$: _angular_core.Signal<Injector>;
101
- groupInputsValue(fieldTemplateRef: TemplateRef<any>): {
102
- fieldTemplateRef: TemplateRef<any>;
103
- };
104
106
  ngOnDestroy(): void;
105
107
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PiyingView, never>;
106
108
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<PiyingView, "piying-view", never, { "selectorless": { "alias": "selectorless"; "required": false; "isSignal": true; }; "schema": { "alias": "schema"; "required": true; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "modelChange": "modelChange"; }, never, never, true, never>;
107
109
  }
108
110
 
109
- declare class BaseComponent {
110
- #private;
111
- destroyComponentFn?: () => void;
112
- fieldComponentInstance?: any;
113
- fieldElementRef?: ElementRef<HTMLElement>;
114
- fieldDirectiveRefList?: any[];
115
- componentRef?: ComponentRef<any>;
116
- setFieldData(field: Signal<PiResolvedViewFieldConfig>, index: number): void;
117
- createComponent(list: DynamicComponentConfig[], viewContainerRef: ViewContainerRef): void;
118
- update(list: DynamicComponentConfig[]): void;
119
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseComponent, never>;
120
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseComponent, never, never, {}, {}, never, never, true, never>;
121
- }
122
-
123
- declare class InsertFieldDirective extends BaseComponent {
124
- #private;
125
- createComponent(list?: DynamicComponentConfig[], viewContainerRef?: ViewContainerRef): void;
126
- ngOnInit(): void;
127
- ngOnDestroy(): void;
128
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<InsertFieldDirective, never>;
129
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<InsertFieldDirective, "[insertField]", ["insertField"], {}, {}, never, never, true, never>;
130
- }
131
-
132
111
  declare class NgSchemaHandle extends CoreSchemaHandle<NgSchemaHandle, () => PiResolvedViewFieldConfig> {
133
112
  type: any;
134
113
  directives: _piying_view_angular_core.CombineSignal<NgDirectiveConfig>;
@@ -165,8 +144,8 @@ declare const actions: {
165
144
  asyncComponent: <T>(fn: _piying_view_angular_core.AsyncCallback<string>) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
166
145
  };
167
146
  wrappers: {
168
- set: <T>(wrappers: (_piying_view_angular_core.SetOptional<_piying_view_angular_core.SetUnWrapper$<_piying_view_angular_core.CoreWrapperConfig, "inputs" | "outputs" | "attributes" | "events">, "inputs" | "outputs" | "attributes" | "events"> | string)[]) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
169
- patch: <T>(wrappers: (_piying_view_angular_core.SetOptional<_piying_view_angular_core.SetUnWrapper$<_piying_view_angular_core.CoreWrapperConfig, "inputs" | "outputs" | "attributes" | "events">, "inputs" | "outputs" | "attributes" | "events"> | string)[]) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
147
+ set: <T>(wrappers: (_piying_view_angular_core.SetOptional<_piying_view_angular_core.SetUnWrapper$<_piying_view_angular_core.CoreWrapperConfig, "inputs" | "outputs" | "attributes" | "events" | "slots">, "inputs" | "outputs" | "attributes" | "events" | "slots"> | string)[]) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
148
+ patch: <T>(wrappers: (_piying_view_angular_core.SetOptional<_piying_view_angular_core.SetUnWrapper$<_piying_view_angular_core.CoreWrapperConfig, "inputs" | "outputs" | "attributes" | "events" | "slots">, "inputs" | "outputs" | "attributes" | "events" | "slots"> | string)[]) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
170
149
  patchAsync: <T>(type: any, actions?: _piying_view_angular_core.ConfigAction<any>[], options?: {
171
150
  insertIndex?: number;
172
151
  }) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
@@ -214,6 +193,13 @@ declare const actions: {
214
193
  remove: <T>(list: string[]) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
215
194
  mapAsync: <T>(fn: (field: _piying_view_angular_core._PiResolvedCommonViewFieldConfig) => (value: any) => any) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
216
195
  };
196
+ slots: {
197
+ patch: <T>(value: Record<string, any>) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
198
+ set: <T>(value: Record<string, any>) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
199
+ patchAsync: <T>(dataObj: Record<string, _piying_view_angular_core.AsyncProperty<any>>) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
200
+ remove: <T>(list: string[]) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
201
+ mapAsync: <T>(fn: (field: _piying_view_angular_core._PiResolvedCommonViewFieldConfig) => (value: any) => any) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
202
+ };
217
203
  props: {
218
204
  patch: <T>(value: Record<string, any>) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
219
205
  set: <T>(value: Record<string, any>) => _piying_valibot_visit.RawConfigAction<"viewRawConfig", T, _piying_view_angular_core.AnyCoreSchemaHandle>;
@@ -310,5 +296,5 @@ declare function typedComponent<T extends PiCommonConfig>(input: T): {
310
296
  setComponent: <TCName extends keyof T['types'] | Type<any>, K>(input: TCName, fn?: (actions: Omit<typeof actions$1, 'inputs' | 'outputs'> & ComponentActions<TCName extends keyof T['types'] ? ActionComponent<NonNullable<T['types']>[TCName]> : TCName>) => any[]) => MetadataListAction<K>;
311
297
  };
312
298
 
313
- export { AngularFormBuilder, AttributesDirective, BaseControl, EventsDirective, InsertFieldDirective, NgSchemaHandle, PI_COMPONENT_INDEX, PI_COMPONENT_LIST_LISTEN, PI_INPUT_MODEL_TOKEN, PI_INPUT_OPTIONS_TOKEN, PI_INPUT_SCHEMA_TOKEN, PI_VIEW_FIELD_TOKEN, PiyingView, PiyingViewGroup, PiyingViewGroupBase, actions, directives, rawConfig, typedComponent };
299
+ export { AngularFormBuilder, AttributesDirective, BaseControl, EventsDirective, NgSchemaHandle, PI_COMPONENT_INDEX, PI_COMPONENT_LIST_LISTEN, PI_INPUT_MODEL_TOKEN, PI_INPUT_OPTIONS_TOKEN, PI_INPUT_SCHEMA_TOKEN, PI_VIEW_COMPONENT_LIST_TOKEN, PI_VIEW_FIELD_TOKEN, PI_VIEW_TEMPLATE_REF_TOKEN, PiyingView, PiyingViewGroup, PiyingViewGroupBase, actions, directives, rawConfig, typedComponent };
314
300
  export type { ComponentRawType, NgDirectiveConfig, NgResolvedComponentDefine1, NgResolvedWraaperConfig, PiResolvedViewFieldConfig, PiViewConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piying/view-angular",
3
- "version": "2.7.5",
3
+ "version": "3.0.0",
4
4
  "description": "Piying view For Angular;Valibot to Component",
5
5
  "homepage": "https://piying-org.github.io/website/docs/client/intro",
6
6
  "repository": {
@@ -38,7 +38,7 @@
38
38
  "valibot": "^1.1.0"
39
39
  },
40
40
  "dependencies": {
41
- "@piying/view-angular-core": "^2.7.5",
41
+ "@piying/view-angular-core": "^3.0.0",
42
42
  "tslib": "^2.3.0"
43
43
  },
44
44
  "sideEffects": false,