@piying/view-angular 2.7.6 → 3.0.1

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,14 @@ 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_FIELD_TEMPLATE_REF_TOKEN = new InjectionToken('PI_VIEW_TEMPLATE_REF');
18
+ const PI_VIEW_NEXT_TEMPLATE_REF_TOKEN = new InjectionToken('PI_VIEW_NEXT_TEMPLATE_REF');
19
+ /** todo 用以前的? */
20
+ const PI_VIEW_COMPONENT_LIST_TOKEN = new InjectionToken('PI_VIEW_COMPONENT_LIST');
16
21
  /**
17
22
  * @internal
18
23
  * 内部传参用
@@ -27,10 +32,10 @@ class PiyingViewGroupBase {
27
32
  children$$ = computed(() => this.field$$().children());
28
33
  fixedChildren$$ = computed(() => this.field$$().fixedChildren?.() ?? []);
29
34
  restChildren$$ = computed(() => this.field$$().restChildren?.() ?? []);
30
- fieldTemplateRef = input.required();
35
+ fieldTemplateRef = inject(PI_VIEW_FIELD_TEMPLATE_REF_TOKEN);
31
36
  injector = inject(Injector);
32
37
  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 });
38
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: PiyingViewGroupBase, isStandalone: true, ngImport: i0 });
34
39
  }
35
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingViewGroupBase, decorators: [{
36
41
  type: Directive
@@ -40,32 +45,32 @@ class PiyingViewGroup extends PiyingViewGroupBase {
40
45
  static __version = 2;
41
46
  templateRef = viewChild.required('templateRef');
42
47
  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 });
48
+ 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
49
  }
45
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingViewGroup, decorators: [{
46
51
  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" }]
52
+ 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
53
  }] });
49
54
 
50
- const EMPTY_ARRAY = [];
55
+ class AngularFormBuilder extends FormBuilder {
56
+ afterResolveConfig(rawConfig, config) {
57
+ const field = rawConfig;
58
+ config.directives = field.directives;
59
+ return config;
60
+ }
61
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
62
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder });
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder, decorators: [{
65
+ type: Injectable
66
+ }] });
51
67
 
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
- };
68
+ class NgSchemaHandle extends CoreSchemaHandle {
69
+ directives = combineSignal([]);
70
+ }
71
+
72
+ function isComponentType(input) {
73
+ return !!reflectComponentType(input);
69
74
  }
70
75
 
71
76
  class AttributesDirective {
@@ -103,10 +108,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
103
108
  }]
104
109
  }] });
105
110
 
106
- function isComponentType(input) {
107
- return !!reflectComponentType(input);
108
- }
109
-
110
111
  class EventsDirective {
111
112
  events = input.required();
112
113
  #renderer = inject(Renderer2);
@@ -137,199 +138,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
137
138
  }]
138
139
  }] });
139
140
 
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 cm = reflectComponentType(componentDefine.component);
257
- const templateSlots = componentConfig.slots();
258
- const templateRefList = cm.ngContentSelectors.map((key) => templateSlots[key]);
259
- const viewRefList = templateRefList.map((item) => item ? viewContainerRef.createEmbeddedView(item) : undefined);
260
- const componentRef = createComponent(componentDefine.component, {
261
- elementInjector: injector,
262
- environmentInjector: injector.get(EnvironmentInjector),
263
- bindings: [
264
- ...createInputsBind(this.#inputCache.inputs),
265
- ...createOutputsBind(componentConfig.outputs),
266
- ],
267
- directives: [
268
- ...(componentConfig.directives ?? []).map((item, index) => ({
269
- type: item.type,
270
- bindings: [
271
- ...createInputsBind(this.#inputCache.directiveList[index]),
272
- ...createOutputsBind(item.outputs, injector.get(PI_VIEW_FIELD_TOKEN)),
273
- ],
274
- })),
275
- ...(COMPONENT_VERSION === 2
276
- ? []
277
- : [
278
- ...createAttributesDirective(componentConfig.attributes),
279
- ...createEventsDirective(componentConfig.events),
280
- ]),
281
- ],
282
- projectableNodes: viewRefList.map((item) => item?.rootNodes ?? []),
283
- });
284
- this.componentRef = componentRef;
285
- this.fieldComponentInstance = componentRef.instance;
286
- this.fieldElementRef = componentRef.location;
287
- this.fieldDirectiveRefList = (componentConfig.directives ?? []).map((item) => componentRef.injector.get(item.type));
288
- if (COMPONENT_VERSION === 2) {
289
- const templateRef = componentRef.instance.templateRef();
290
- viewContainerRef.createEmbeddedView(templateRef, {
291
- attributes: componentConfig.attributes,
292
- events: componentConfig.events,
293
- });
294
- this.#app.attachView(componentRef.hostView);
295
- componentRef.changeDetectorRef.detectChanges();
296
- }
297
- else {
298
- viewContainerRef.insert(componentRef.hostView);
299
- }
300
- this.destroyComponentFn = () => {
301
- viewContainerRef.clear();
302
- componentRef.destroy();
303
- this.#eventEmitter.unsubscribe();
304
- };
305
- if (list.length === this.#index + 1) {
306
- const field = componentInjector.get(PI_VIEW_FIELD_TOKEN)();
307
- field.hooks?.afterCreateComponent?.(field);
308
- }
309
- });
310
- }
311
- update(list) {
312
- const item = list[this.#index];
313
- const currentCheckConfig = getComponentCheckConfig(item);
314
- const isEqual = deepEqual(currentCheckConfig, this.#componentCheckConfig$$());
315
- // this.#componentCheckConfig$$ = computed(() => currentCheckConfig);
316
- if (isEqual) {
317
- this.#componentConfig = item;
318
- this.#configUpdate$.update((a) => a + 1);
319
- // 相等不处理
320
- this.#eventEmitter.next(list);
321
- }
322
- else {
323
- this.createComponent(list, this.#viewContainerRef);
324
- }
325
- }
326
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
327
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: BaseComponent, isStandalone: true, ngImport: i0 });
328
- }
329
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BaseComponent, decorators: [{
330
- type: Directive
331
- }] });
332
-
333
141
  class InteropNgControl extends NgControl {
334
142
  field;
335
143
  constructor(field) {
@@ -459,128 +267,232 @@ class ChainedInjector {
459
267
  }
460
268
  }
461
269
 
462
- class NgComponentOutlet extends BaseComponent {
463
- /** 输入 */
464
- ngComponentOutlet = input();
465
- ngComponentOutletExtraInputs = input();
466
- /** 控件用 */
467
- ngComponentOutletFormControl = input();
468
- /** 包裹用 */
469
- ngComponentOutletWrappers = input();
470
- ngComponentOutletDirectives = input();
471
- ngComponentOutletField = input.required();
472
- #viewContainerRef = inject(ViewContainerRef);
473
- // 这里感觉会在非发射时出现多次输入?
474
- ngComponentOutletInjector = input.required();
475
- #injector$$ = computed(() => new ChainedInjector(this.ngComponentOutletField().injector, this.ngComponentOutletInjector()));
270
+ function createInputsBind(inputs) {
271
+ if (!inputs?.()) {
272
+ return [];
273
+ }
274
+ return Object.keys(inputs()).map((key) => inputBinding(key, computed(() => inputs()[key])));
275
+ }
276
+ function createOutputsBind(outputs) {
277
+ if (!outputs?.()) {
278
+ return [];
279
+ }
280
+ return Object.keys(outputs()).map((key) => outputBinding(key, (event) => outputs()[key](event)));
281
+ }
282
+ function createAttributesDirective(attributes) {
283
+ if (attributes()) {
284
+ return [
285
+ {
286
+ type: AttributesDirective,
287
+ bindings: [inputBinding('attributes', attributes)],
288
+ },
289
+ ];
290
+ }
291
+ return [];
292
+ }
293
+ function createEventsDirective(events) {
294
+ if (events()) {
295
+ return [
296
+ {
297
+ type: EventsDirective,
298
+ bindings: [inputBinding('events', events)],
299
+ },
300
+ ];
301
+ }
302
+ return [];
303
+ }
304
+ // 没有保存
305
+ class FieldOutlet {
306
+ fieldOutlet = 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);
476
315
  #formControlDirectiveConfig$$ = computed(() => {
477
- const fieldControl = this.ngComponentOutletFormControl();
478
- return fieldControl
316
+ const isGroup = this.#isGroup$$();
317
+ return !isGroup && this.#control()
479
318
  ? {
480
319
  type: FieldControlDirective,
481
- inputs: asyncObjectSignal({ fieldControl: fieldControl }),
320
+ inputs: asyncObjectSignal({ fieldControl: this.#control() }),
482
321
  }
483
322
  : undefined;
484
323
  });
324
+ /* 组件的指令 **/
485
325
  #directiveConfigList$$ = computed(() => {
486
- const directivesInputs = this.ngComponentOutletDirectives();
326
+ const directivesInputs = this.fieldOutlet().directives() ?? [];
487
327
  const formConfig = this.#formControlDirectiveConfig$$();
488
- return formConfig
489
- ? [...(directivesInputs?.() ?? []), formConfig]
490
- : directivesInputs?.();
328
+ return formConfig ? [...directivesInputs, formConfig] : directivesInputs;
491
329
  });
492
- #componentInput$$ = computed(() => ({
493
- ...this.ngComponentOutlet()?.inputs?.(),
494
- ...this.ngComponentOutletExtraInputs(),
495
- }));
496
- #componentConfig$$ = computed(() => {
497
- const define = this.ngComponentOutlet();
498
- 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 });
499
336
  return;
500
337
  }
501
- const directives = this.#directiveConfigList$$();
502
- return {
503
- ...define,
504
- outputs: define.outputs,
505
- inputs: this.#componentInput$$,
506
- directives: directives,
507
- };
508
- });
509
- #componentList$$ = computed(() => {
510
- const componentConfig = this.#componentConfig$$();
511
- if (!componentConfig) {
512
- 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;
513
348
  }
514
- const list = [
515
- ...(this.ngComponentOutletWrappers() ?? []),
516
- componentConfig,
517
- ];
518
- list[0].injector = this.#injector$$();
519
- return list;
520
- });
521
- #lastList;
349
+ loadFn(type);
350
+ }
351
+ #moduleRef;
352
+ #injector$$ = computed(() => new ChainedInjector(this.fieldOutlet().injector, this.injector()));
353
+ #componentRef;
354
+ #app = inject(ApplicationRef);
522
355
  ngOnChanges() {
523
- //todo 变更时的一些检测,相同时应该不处理
524
- const list = this.#componentList$$();
525
- if (!list.length) {
526
- return this.destroyComponentFn?.();
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
+ let createProjectableNodes;
365
+ let typeDefine = this.#wrappers()[index];
366
+ const cmpInjector = signal(undefined);
367
+ let directivesList;
368
+ // 改增量后,要保证列表更新时没有问题
369
+ const componentList = injector.get(PI_VIEW_COMPONENT_LIST_TOKEN);
370
+ /** 包装器 */
371
+ if (typeDefine) {
372
+ const embRef = this.#viewRef.createEmbeddedView(injector.get(PI_VIEW_NEXT_TEMPLATE_REF_TOKEN), {
373
+ injector: cmpInjector,
374
+ index: index + 1,
375
+ fieldConfig: this.fieldOutlet(),
376
+ }, { injector: injector });
377
+ createProjectableNodes = () => [embRef.rootNodes];
378
+ directivesList = [];
527
379
  }
528
- if (!this.#lastList) {
529
- const field = this.ngComponentOutletField();
530
- field.hooks?.beforeCreateComponent?.(field);
531
- this.setFieldData(this.ngComponentOutletField, 0);
532
- this.createComponent(list, this.#viewContainerRef);
533
- }
534
- else if (this.#lastList !== list) {
535
- this.update(list);
380
+ else {
381
+ /** 内层组件 */
382
+ typeDefine = this.fieldOutlet().define();
383
+ createProjectableNodes = (componentDefine) => {
384
+ const cm = reflectComponentType(componentDefine.component);
385
+ const templateSlots = typeDefine.slots();
386
+ const templateRefList = cm.ngContentSelectors.map((key) => templateSlots[key]);
387
+ const viewRefList = templateRefList.map((item) => item ? this.#viewRef.createEmbeddedView(item) : undefined);
388
+ return viewRefList.map((item) => item?.rootNodes ?? []);
389
+ };
390
+ directivesList = this.#directiveConfigList$$();
536
391
  }
537
- // 监听输入/输出变更,重新进行赋值
538
- this.#lastList = list;
392
+ this.#loadComponent(typeDefine.type, (componentDefine) => {
393
+ const COMPONENT_VERSION = componentDefine.component.__version;
394
+ this.#moduleRef = componentDefine.module
395
+ ? createNgModule(componentDefine.module, injector)
396
+ : undefined;
397
+ const evInjector2 = this.#moduleRef?.injector ?? evInjector;
398
+ const componentRef = createComponent(componentDefine.component, {
399
+ elementInjector: injector,
400
+ environmentInjector: evInjector2,
401
+ bindings: [
402
+ ...createInputsBind(typeDefine.inputs),
403
+ ...createOutputsBind(typeDefine.outputs),
404
+ ],
405
+ directives: [
406
+ ...directivesList.map((item) => ({
407
+ type: item.type,
408
+ bindings: [
409
+ ...createInputsBind(item.inputs),
410
+ ...createOutputsBind(item.outputs),
411
+ ],
412
+ })),
413
+ ...(COMPONENT_VERSION === 2
414
+ ? []
415
+ : [
416
+ ...createAttributesDirective(typeDefine.attributes),
417
+ ...createEventsDirective(typeDefine.events),
418
+ ]),
419
+ ],
420
+ projectableNodes: createProjectableNodes(componentDefine),
421
+ });
422
+ this.#componentRef = componentRef;
423
+ componentList.push(componentRef);
424
+ if (COMPONENT_VERSION === 2) {
425
+ const templateRef = componentRef.instance.templateRef();
426
+ this.#viewRef.createEmbeddedView(templateRef, {
427
+ attributes: typeDefine.attributes,
428
+ events: typeDefine.events,
429
+ });
430
+ this.#app.attachView(componentRef.hostView);
431
+ componentRef.changeDetectorRef.detectChanges();
432
+ }
433
+ else {
434
+ this.#viewRef.insert(componentRef.hostView);
435
+ }
436
+ cmpInjector.set(componentRef.injector);
437
+ });
438
+ }
439
+ #dispose() {
440
+ this.#viewRef.clear();
441
+ this.#componentRef?.destroy();
442
+ this.#componentRef = undefined;
443
+ this.#moduleRef?.destroy();
444
+ this.#moduleRef = undefined;
539
445
  }
540
446
  ngOnDestroy() {
541
- this.destroyComponentFn?.();
447
+ this.#dispose();
542
448
  }
543
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgComponentOutlet, deps: null, target: i0.ɵɵFactoryTarget.Directive });
544
- 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 });
449
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: FieldOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
450
+ 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 }, 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 });
545
451
  }
546
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgComponentOutlet, decorators: [{
452
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: FieldOutlet, decorators: [{
547
453
  type: Directive,
548
454
  args: [{
549
- selector: '[ngComponentOutlet]',
455
+ selector: '[fieldOutlet]',
550
456
  standalone: true,
551
457
  }]
552
458
  }] });
553
459
 
554
- class AngularFormBuilder extends FormBuilder {
555
- afterResolveConfig(rawConfig, config) {
556
- const field = rawConfig;
557
- config.directives = field.directives;
558
- return config;
460
+ class ListenPipe {
461
+ transform(value, ...args) {
462
+ return [value, ...args];
559
463
  }
560
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
561
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder });
464
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: ListenPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
465
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: ListenPipe, isStandalone: true, name: "listen" });
562
466
  }
563
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AngularFormBuilder, decorators: [{
564
- type: Injectable
467
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: ListenPipe, decorators: [{
468
+ type: Pipe,
469
+ args: [{ name: 'listen' }]
565
470
  }] });
566
-
567
- class NgSchemaHandle extends CoreSchemaHandle {
568
- directives = combineSignal([]);
471
+ class InputsPipe {
472
+ transform(value) {
473
+ return Object.keys(value).join('|');
474
+ }
475
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: InputsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
476
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: InputsPipe, isStandalone: true, name: "inputKeys" });
569
477
  }
478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: InputsPipe, decorators: [{
479
+ type: Pipe,
480
+ args: [{ name: 'inputKeys' }]
481
+ }] });
570
482
 
571
- class PurePipe {
572
- transform(fn, ...args) {
573
- return fn(...args);
483
+ class ListInjectorPipe {
484
+ transform(injector) {
485
+ return Injector.create({
486
+ providers: [{ provide: PI_VIEW_COMPONENT_LIST_TOKEN, useValue: [] }],
487
+ parent: injector,
488
+ });
574
489
  }
575
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PurePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
576
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: PurePipe, isStandalone: true, name: "pure" });
490
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: ListInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
491
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type: ListInjectorPipe, isStandalone: true, name: "listInjector" });
577
492
  }
578
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PurePipe, decorators: [{
493
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: ListInjectorPipe, decorators: [{
579
494
  type: Pipe,
580
- args: [{
581
- name: 'pure',
582
- standalone: true,
583
- }]
495
+ args: [{ name: 'listInjector' }]
584
496
  }] });
585
497
 
586
498
  const DefaultConvertOptions = {
@@ -589,6 +501,8 @@ const DefaultConvertOptions = {
589
501
  };
590
502
  class PiyingView {
591
503
  templateRef = viewChild.required('templateRef');
504
+ fieldTemplate = viewChild.required('fieldTemplate');
505
+ nextTemplate = viewChild.required('nextTemplate');
592
506
  selectorless = input(false);
593
507
  schema = input.required();
594
508
  model = input(undefined);
@@ -611,7 +525,21 @@ class PiyingView {
611
525
  #builderInjector;
612
526
  resolvedField$ = signal(undefined);
613
527
  #listenDispose;
614
- injector3$$ = computed(() => this.resolvedField$().injector);
528
+ injector3$$ = computed(() => {
529
+ return Injector.create({
530
+ providers: [
531
+ {
532
+ provide: PI_VIEW_FIELD_TEMPLATE_REF_TOKEN,
533
+ useValue: this.fieldTemplate(),
534
+ },
535
+ {
536
+ provide: PI_VIEW_NEXT_TEMPLATE_REF_TOKEN,
537
+ useValue: this.nextTemplate(),
538
+ },
539
+ ],
540
+ parent: this.resolvedField$().injector,
541
+ });
542
+ });
615
543
  #fieldRoot = Injector.create({
616
544
  providers: [
617
545
  {
@@ -672,59 +600,21 @@ class PiyingView {
672
600
  result.form.control.updateValue(model);
673
601
  }
674
602
  }
675
- groupInputsValue(fieldTemplateRef) {
676
- return { fieldTemplateRef };
677
- }
678
603
  ngOnDestroy() {
679
604
  this.#listenDispose?.();
680
605
  }
681
606
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingView, deps: [], target: i0.ɵɵFactoryTarget.Component });
682
- 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 });
607
+ 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 }, { propertyName: "fieldTemplate", first: true, predicate: ["fieldTemplate"], descendants: true, isSignal: true }, { propertyName: "nextTemplate", first: true, predicate: ["nextTemplate"], 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 [injector]=\"injector\"\n ></ng-template>\n }\n</ng-template>\n\n<ng-template #fieldTemplate let-field let-injector=\"injector\">\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 [injector]=\"injector ?? injector3$$() | listInjector\"\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\n<ng-template #templateRef>\n @if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"\n fieldTemplate;\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FieldOutlet, selector: "[fieldOutlet]", inputs: ["fieldOutlet", "index", "injector", "listen"] }, { kind: "pipe", type: ListenPipe, name: "listen" }, { kind: "pipe", type: InputsPipe, name: "inputKeys" }, { kind: "pipe", type: ListInjectorPipe, name: "listInjector" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
683
608
  }
684
609
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingView, decorators: [{
685
610
  type: Component,
686
- 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" }]
687
- }] });
688
-
689
- class InsertFieldDirective extends BaseComponent {
690
- insertFieldSlots = input();
691
- #viewContainerRef = inject(ViewContainerRef);
692
- #listen = inject(PI_COMPONENT_LIST_LISTEN);
693
- #list = inject(PI_COMPONENT_LIST);
694
- #field = inject(PI_VIEW_FIELD_TOKEN$1);
695
- createComponent(list, viewContainerRef) {
696
- const result = super.createComponent(list ?? this.#list, this.#viewContainerRef);
697
- this.#listen.subscribe((list) => {
698
- this.update(list);
699
- });
700
- return result;
701
- }
702
- ngOnChanges(changes) {
703
- if (changes.insertFieldSlots) {
704
- this.#field().slots.update((slots) => ({
705
- ...slots,
706
- ...this.insertFieldSlots(),
707
- }));
708
- }
709
- }
710
- ngOnInit() {
711
- this.createComponent();
712
- }
713
- ngOnDestroy() {
714
- if (this.componentRef &&
715
- this.componentRef.componentType.__version === 2) {
716
- this.componentRef.destroy();
717
- }
718
- }
719
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: InsertFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
720
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: InsertFieldDirective, isStandalone: true, selector: "[insertField]", inputs: { insertFieldSlots: { classPropertyName: "insertFieldSlots", publicName: "insertFieldSlots", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["insertField"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
721
- }
722
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: InsertFieldDirective, decorators: [{
723
- type: Directive,
724
- args: [{
725
- selector: '[insertField]',
726
- exportAs: 'insertField',
727
- }]
611
+ args: [{ selector: 'piying-view', imports: [
612
+ NgTemplateOutlet,
613
+ FieldOutlet,
614
+ ListenPipe,
615
+ InputsPipe,
616
+ ListInjectorPipe,
617
+ ], 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 [injector]=\"injector\"\n ></ng-template>\n }\n</ng-template>\n\n<ng-template #fieldTemplate let-field let-injector=\"injector\">\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 [injector]=\"injector ?? injector3$$() | listInjector\"\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\n<ng-template #templateRef>\n @if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"\n fieldTemplate;\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" }]
728
618
  }] });
729
619
 
730
620
  const rawConfig = rawConfig$1;
@@ -856,5 +746,5 @@ function typedComponent(input) {
856
746
  * Generated bundle index. Do not edit.
857
747
  */
858
748
 
859
- 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 };
749
+ 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_TEMPLATE_REF_TOKEN, PI_VIEW_FIELD_TOKEN, PI_VIEW_NEXT_TEMPLATE_REF_TOKEN, PiyingView, PiyingViewGroup, PiyingViewGroupBase, actions, directives, rawConfig, typedComponent };
860
750
  //# 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 reflectComponentType,\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 cm = reflectComponentType(componentDefine.component)!;\n const templateSlots = componentConfig.slots!();\n const templateRefList = cm.ngContentSelectors.map(\n (key) => templateSlots[key] as TemplateRef<any> | undefined,\n );\n const viewRefList = templateRefList.map((item) =>\n item ? viewContainerRef.createEmbeddedView(item) : undefined,\n );\n\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 projectableNodes: viewRefList.map((item) => item?.rootNodes ?? []),\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 {\n Directive,\n inject,\n input,\n SimpleChange,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { PI_COMPONENT_LIST_LISTEN, PI_COMPONENT_LIST } from '../type';\nimport { DynamicComponentConfig } from '../type/component';\nimport { BaseComponent } from './base.component';\nimport { PI_VIEW_FIELD_TOKEN } from '@piying/view-angular-core';\n\n@Directive({\n selector: '[insertField]',\n exportAs: 'insertField',\n})\nexport class InsertFieldDirective extends BaseComponent {\n insertFieldSlots = input<Record<string, TemplateRef<any>>>();\n #viewContainerRef = inject(ViewContainerRef);\n #listen = inject(PI_COMPONENT_LIST_LISTEN);\n #list = inject(PI_COMPONENT_LIST);\n #field = inject(PI_VIEW_FIELD_TOKEN);\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 ngOnChanges(changes: Record<keyof InsertFieldDirective, SimpleChange>): void {\n if (changes.insertFieldSlots) {\n this.#field().slots.update((slots) => ({\n ...slots,\n ...this.insertFieldSlots(),\n }));\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","PI_VIEW_FIELD_TOKEN","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/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_FIELD_TEMPLATE_REF_TOKEN = new InjectionToken<\n TemplateRef<any>\n>('PI_VIEW_TEMPLATE_REF');\nexport const PI_VIEW_NEXT_TEMPLATE_REF_TOKEN = new InjectionToken<\n TemplateRef<any>\n>('PI_VIEW_NEXT_TEMPLATE_REF');\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_FIELD_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_FIELD_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 PI_VIEW_NEXT_TEMPLATE_REF_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 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 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(\n injector.get(PI_VIEW_NEXT_TEMPLATE_REF_TOKEN),\n {\n injector: cmpInjector,\n index: index + 1,\n fieldConfig: this.fieldOutlet(),\n },\n { injector: injector },\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 { 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 PI_VIEW_FIELD_TEMPLATE_REF_TOKEN,\n PI_VIEW_NEXT_TEMPLATE_REF_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 { 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 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 fieldTemplate = viewChild.required('fieldTemplate');\n nextTemplate = viewChild.required('nextTemplate');\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(() => {\n return Injector.create({\n providers: [\n {\n provide: PI_VIEW_FIELD_TEMPLATE_REF_TOKEN,\n useValue: this.fieldTemplate(),\n },\n {\n provide: PI_VIEW_NEXT_TEMPLATE_REF_TOKEN,\n useValue: this.nextTemplate(),\n },\n ],\n parent: this.resolvedField$()!.injector,\n });\n });\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 [injector]=\"injector\"\n ></ng-template>\n }\n</ng-template>\n\n<ng-template #fieldTemplate let-field let-injector=\"injector\">\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 [injector]=\"injector ?? injector3$$() | listInjector\"\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\n<ng-template #templateRef>\n @if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"\n fieldTemplate;\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 { 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,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef, Injector, Type, WritableSignal, Signal, InjectionToken, EventEmitter, OnChanges, SimpleChanges, ElementRef, ComponentRef, ViewContainerRef, SimpleChange, InputSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
2
+ import { Injector, Type, WritableSignal, InjectionToken, Signal, TemplateRef, ComponentRef, EventEmitter, OnChanges, SimpleChanges, DestroyableInjector, InputSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
3
3
  import * as _piying_view_angular_core from '@piying/view-angular-core';
4
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';
@@ -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,13 +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
- outputs?: Signal<ViewOutputs>;
61
- slots?: Signal<ViewSlots>;
62
- directives?: DirectiveConfig[];
63
- 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[];
64
63
  }
65
64
  /** component,wrapper通用定义 */
66
65
  type NgComponentDefine = {
@@ -80,14 +79,22 @@ declare const PI_INPUT_OPTIONS_TOKEN: InjectionToken<Signal<Omit<SetOptional<NgC
80
79
  }>>;
81
80
  declare const PI_INPUT_SCHEMA_TOKEN: InjectionToken<Signal<v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>>>;
82
81
  declare const PI_INPUT_MODEL_TOKEN: InjectionToken<Signal<any>>;
83
- /** wrapper中可以使用,已解析的配置 */
82
+ /** wrapper中可以使用,已解析的配置
83
+ * core
84
+ */
84
85
  declare const PI_VIEW_FIELD_TOKEN: InjectionToken<Signal<_piying_view_angular_core._PiResolvedCommonViewFieldConfig>>;
86
+ declare const PI_VIEW_FIELD_TEMPLATE_REF_TOKEN: InjectionToken<TemplateRef<any>>;
87
+ declare const PI_VIEW_NEXT_TEMPLATE_REF_TOKEN: InjectionToken<TemplateRef<any>>;
88
+ /** todo 用以前的? */
89
+ declare const PI_VIEW_COMPONENT_LIST_TOKEN: InjectionToken<ComponentRef<any>[]>;
85
90
  declare const PI_COMPONENT_INDEX: InjectionToken<number>;
86
91
  declare const PI_COMPONENT_LIST_LISTEN: InjectionToken<EventEmitter<DynamicComponentConfig[]>>;
87
92
 
88
93
  declare class PiyingView implements OnChanges {
89
94
  #private;
90
95
  templateRef: _angular_core.Signal<unknown>;
96
+ fieldTemplate: _angular_core.Signal<unknown>;
97
+ nextTemplate: _angular_core.Signal<unknown>;
91
98
  readonly selectorless: _angular_core.InputSignal<boolean>;
92
99
  schema: _angular_core.InputSignal<v.BaseSchema<any, any, any>>;
93
100
  model: _angular_core.InputSignal<any>;
@@ -98,40 +105,12 @@ declare class PiyingView implements OnChanges {
98
105
  form$$: _angular_core.Signal<FieldArray<any> | FieldControl<any> | FieldGroup<any> | undefined>;
99
106
  ngOnChanges(changes: SimpleChanges): void;
100
107
  resolvedField$: _angular_core.WritableSignal<PiResolvedViewFieldConfig | undefined>;
101
- injector3$$: _angular_core.Signal<Injector>;
102
- groupInputsValue(fieldTemplateRef: TemplateRef<any>): {
103
- fieldTemplateRef: TemplateRef<any>;
104
- };
108
+ injector3$$: _angular_core.Signal<DestroyableInjector>;
105
109
  ngOnDestroy(): void;
106
110
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PiyingView, never>;
107
111
  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>;
108
112
  }
109
113
 
110
- declare class BaseComponent {
111
- #private;
112
- destroyComponentFn?: () => void;
113
- fieldComponentInstance?: any;
114
- fieldElementRef?: ElementRef<HTMLElement>;
115
- fieldDirectiveRefList?: any[];
116
- componentRef?: ComponentRef<any>;
117
- setFieldData(field: Signal<PiResolvedViewFieldConfig>, index: number): void;
118
- createComponent(list: DynamicComponentConfig[], viewContainerRef: ViewContainerRef): void;
119
- update(list: DynamicComponentConfig[]): void;
120
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseComponent, never>;
121
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseComponent, never, never, {}, {}, never, never, true, never>;
122
- }
123
-
124
- declare class InsertFieldDirective extends BaseComponent {
125
- #private;
126
- insertFieldSlots: _angular_core.InputSignal<Record<string, TemplateRef<any>> | undefined>;
127
- createComponent(list?: DynamicComponentConfig[], viewContainerRef?: ViewContainerRef): void;
128
- ngOnChanges(changes: Record<keyof InsertFieldDirective, SimpleChange>): void;
129
- ngOnInit(): void;
130
- ngOnDestroy(): void;
131
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<InsertFieldDirective, never>;
132
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<InsertFieldDirective, "[insertField]", ["insertField"], { "insertFieldSlots": { "alias": "insertFieldSlots"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
133
- }
134
-
135
114
  declare class NgSchemaHandle extends CoreSchemaHandle<NgSchemaHandle, () => PiResolvedViewFieldConfig> {
136
115
  type: any;
137
116
  directives: _piying_view_angular_core.CombineSignal<NgDirectiveConfig>;
@@ -320,5 +299,5 @@ declare function typedComponent<T extends PiCommonConfig>(input: T): {
320
299
  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>;
321
300
  };
322
301
 
323
- 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 };
302
+ 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_TEMPLATE_REF_TOKEN, PI_VIEW_FIELD_TOKEN, PI_VIEW_NEXT_TEMPLATE_REF_TOKEN, PiyingView, PiyingViewGroup, PiyingViewGroupBase, actions, directives, rawConfig, typedComponent };
324
303
  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.6",
3
+ "version": "3.0.1",
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.6",
41
+ "@piying/view-angular-core": "^3.0.1",
42
42
  "tslib": "^2.3.0"
43
43
  },
44
44
  "sideEffects": false,