@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.
- package/fesm2022/piying-view-angular.mjs +250 -360
- package/fesm2022/piying-view-angular.mjs.map +1 -1
- package/index.d.ts +20 -41
- package/package.json +2 -2
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, computed,
|
|
3
|
-
import { PI_VIEW_FIELD_TOKEN as PI_VIEW_FIELD_TOKEN$1,
|
|
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 =
|
|
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: "
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
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
|
|
478
|
-
return
|
|
316
|
+
const isGroup = this.#isGroup$$();
|
|
317
|
+
return !isGroup && this.#control()
|
|
479
318
|
? {
|
|
480
319
|
type: FieldControlDirective,
|
|
481
|
-
inputs: asyncObjectSignal({ fieldControl:
|
|
320
|
+
inputs: asyncObjectSignal({ fieldControl: this.#control() }),
|
|
482
321
|
}
|
|
483
322
|
: undefined;
|
|
484
323
|
});
|
|
324
|
+
/* 组件的指令 **/
|
|
485
325
|
#directiveConfigList$$ = computed(() => {
|
|
486
|
-
const directivesInputs = this.
|
|
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
|
-
#
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
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
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
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
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
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
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
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
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
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
|
-
|
|
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
|
|
447
|
+
this.#dispose();
|
|
542
448
|
}
|
|
543
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type:
|
|
544
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type:
|
|
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:
|
|
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: '[
|
|
455
|
+
selector: '[fieldOutlet]',
|
|
550
456
|
standalone: true,
|
|
551
457
|
}]
|
|
552
458
|
}] });
|
|
553
459
|
|
|
554
|
-
class
|
|
555
|
-
|
|
556
|
-
|
|
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:
|
|
561
|
-
static
|
|
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:
|
|
564
|
-
type:
|
|
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
|
-
|
|
568
|
-
|
|
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
|
|
572
|
-
transform(
|
|
573
|
-
return
|
|
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:
|
|
576
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.3", ngImport: i0, type:
|
|
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:
|
|
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(() =>
|
|
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
|
|
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: [
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
#
|
|
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,
|
|
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!()),\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":";;;;;;;;AAAA;MAea,sBAAsB,GAAG,IAAI,cAAc,CAOtD,kBAAkB;MACP,qBAAqB,GAAG,IAAI,cAAc,CAErD,iBAAiB;MACN,oBAAoB,GAAG,IAAI,cAAc,CACpD,gBAAgB;AAElB;;AAEG;AACI,MAAM,mBAAmB,GAAGA;MACtB,gCAAgC,GAAG,IAAI,cAAc,CAEhE,sBAAsB;MACX,+BAA+B,GAAG,IAAI,cAAc,CAE/D,2BAA2B;AAC7B;MACa,4BAA4B,GAAG,IAAI,cAAc,CAE5D,wBAAwB;AAE1B;;;AAGG;MACU,iBAAiB,GAAG,IAAI,cAAc,CACjD,mBAAmB;MAER,kBAAkB,GAAG,IAAI,cAAc,CAClD,oBAAoB;MAET,wBAAwB,GAAG,IAAI,cAAc,CAExD,0BAA0B;;MCpDf,mBAAmB,CAAA;AAC9B,IAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACrC,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AAChD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,QAAS,EAAE,CAAC;AACvD,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;AACxE,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;AACtE,IAAA,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,CAAC;AAE3D,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;uGARhB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACSK,MAAO,eAAgB,SAAQ,mBAAmB,CAAA;AACtD,IAAA,OAAO,SAAS,GAAG,CAAC;AACpB,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;uGAFpC,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ5B,0QAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACE,mBAAmB,EAAA,OAAA,EACpB,CAAC,gBAAgB,CAAC,cAEf,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0QAAA,EAAA;;;AEH3C,MAAO,kBAAmB,SAAQ,WAA2B,CAAA;IACxD,kBAAkB,CACzB,SAAyB,EACzB,MAAiC,EAAA;QAEjC,MAAM,KAAK,GAAG,SAAS;AAEvB,QAAA,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;AACpC,QAAA,OAAO,MAAM;IACf;uGATW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAlB,kBAAkB,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACHK,MAAO,cAAe,SAAQ,gBAGnC,CAAA;AAEC,IAAA,UAAU,GAAG,aAAa,CAAoB,EAAE,CAAC;AAClD;;ACRK,SAAU,eAAe,CAAC,KAAU,EAAA;AACxC,IAAA,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAY,CAAC;AAC7C;;MCUa,mBAAmB,CAAA;AAC9B,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAuB;AAClD,IAAA,QAAQ,GAAG,KAAK,CAAW,EAAE,CAAC;AAC9B,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AACtC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;AAC1E,QAAA,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;YAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACjC;YACF;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9D;QACA,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;gBAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACjC;gBACF;AACA,gBAAA,IAAI,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE;oBAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;gBAC9C;YACF;QACF;IACF;uGAvBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA;;;MCNY,eAAe,CAAA;AAC1B,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAuC;AAC9D,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;IACtC,UAAU,GAAmB,EAAE;IAC/B,WAAW,GAAA;QACT,IAAI,CAAC,MAAM,EAAE;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACnE;IACF;IACA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;IACvC;IACA,WAAW,GAAA;QACT,IAAI,CAAC,MAAM,EAAE;IACf;uGAlBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA;;;ACeK,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AACvB,IAAA,KAAA;AAAtB,IAAA,WAAA,CAAsB,KAAkC,EAAA;AACtD,QAAA,KAAK,EAAE;QADa,IAAA,CAAA,KAAK,GAAL,KAAK;IAE3B;IAES,OAAO,GACd,IAA4C;AAE9C,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;IAC3B;AAEA,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;IAC3B;AAEA,IAAA,IAAa,OAAO,GAAA;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;IAC5B;AAEA,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;IAC5C;AAEA,IAAA,IAAa,QAAQ,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ;IAC9B;AAEA,IAAA,IAAa,OAAO,GAAA;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ;IAC/B;AAEA,IAAA,IAAa,MAAM,GAAA;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM;QAClC,OAAO,MAAM,IAAI,IAAI;IACvB;AAEA,IAAA,IAAa,QAAQ,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ;IAC9B;AAEA,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;IAC3B;AAEA,IAAA,IAAa,OAAO,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO;IAC7B;AAEA,IAAA,IAAa,SAAS,GAAA;AACpB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO;IAC9B;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;IAES,iBAAiB,CAAC,QAAa,EAAA,EAAS;AACjD,IAAA,IAAa,YAAY,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY;IAClC;AACA,IAAA,IAAa,aAAa,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa;IACnC;AACA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,UAAU,CAAC,QAAQ,KAAK,KAAK,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;QAClC;AACA,QAAA,OAAO,KAAK;IACd;AACD;;ACzED,MAAM,kBAAkB,GAAa;AACnC,IAAA,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS;CAC1D;MAOY,qBAAqB,CAAA;AAChC,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAgB;AACpC,IAAA,QAAQ,GAAG,MAAM,CAAyB,iBAAiB,CAAC;AAC5D,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEpC,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzB;AACA,IAAA,WAAW;AAEX,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,QAAQ,IAAI,CAAC,WAAW,KAAK,IAAI,gBAAgB,CAAC,MAChD,IAAI,CAAC,YAAY,EAAE,CACpB;IACH;AAEA,IAAA,UAAU;IACV,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,IAAI;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CACrC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,QAAQ,CACd;IACH;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB;uGA7BW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAHrB,CAAC,kBAAkB,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAGpB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;AC1BD;;;;;;AAMG;AAIH,MAAM,qCAAqC,GAAG,EAAE;AAChD;;;AAGG;MACU,eAAe,CAAA;AAEjB,IAAA,QAAA;AACA,IAAA,cAAA;IAFT,WAAA,CACS,QAAkB,EAClB,cAAwB,EAAA;QADxB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,cAAc,GAAd,cAAc;IACpB;AAEH,IAAA,GAAG,CACD,KAAuB,EACvB,aAAiB,EACjB,OAAuB,EAAA;AAEvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAE7B,KAAK,EAAE,qCAAqC,EAAE,OAAO,CAAC;QAExD,IACE,KAAK,KAAK,qCAAqC;YAC/C,aAAa,KAAM,qCAAsD,EACzE;;;;;;AAMA,YAAA,OAAO,KAAU;QACnB;AAEA,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC;IAC/D;AACD;;ACKD,SAAS,gBAAgB,CAAC,MAAuC,EAAA;AAC/D,IAAA,IAAI,CAAC,MAAM,IAAI,EAAE;AACf,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KACpC,YAAY,CACV,GAAG,EACH,QAAQ,CAAC,MAAM,MAAM,EAAG,CAAC,GAAG,CAAC,CAAC,CAC/B,CACF;AACH;AACA,SAAS,iBAAiB,CAAC,OAA6B,EAAA;AACtD,IAAA,IAAI,CAAC,OAAO,IAAI,EAAE;AAChB,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,OAAQ,EAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KACtC,aAAa,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,OAAQ,EAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CACvD;AACH;AACA,SAAS,yBAAyB,CAChC,UAA8C,EAAA;IAE9C,IAAI,UAAU,EAAE,EAAE;QAChB,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACnD,aAAA;SACF;IACH;AACA,IAAA,OAAO,EAAE;AACX;AACA,SAAS,qBAAqB,CAAC,MAAsC,EAAA;IACnE,IAAI,MAAM,EAAE,EAAE;QACZ,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3C,aAAA;SACF;IACH;AACA,IAAA,OAAO,EAAE;AACX;AACA;MAKa,WAAW,CAAA;AACtB,IAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,EAA6B;AACzD,IAAA,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAChB,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAY;IACrC,MAAM,GAAG,KAAK,EAAO;AACrB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,OAAO,MAAM,EAAE,aAAa,IAAI,MAAM,EAAE,YAAY;AACtD,IAAA,CAAC,CAAC;AACF,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1D,IAAA,6BAA6B,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ;AAC9B,cAAG;AACC,gBAAA,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACzC;cACrB,SAAS;AACf,IAAA,CAAC,CAAC;;AAEF,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;QACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,UAAW,EAAE,IAAI,EAAE;AAC/D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,6BAA6B,EAAE;AACvD,QAAA,OAAO,UAAU,GAAG,CAAC,GAAG,gBAAgB,EAAE,UAAU,CAAC,GAAG,gBAAgB;AAC1E,IAAA,CAAC,CAAC;AAEF,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;AAEzD,IAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACnC,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;IAC5B,cAAc,CACZ,IAAsB,EACtB,MAA0C,EAAA;AAE1C,QAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACzB,YAAA,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC3B;QACF;QACA,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MACb,aAAa,CAAqB,IAAI,CAAE;AACrC,iBAAA,IAAI,CAAC,CAAC,IAAI,KAAI;AACb,gBAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACzB,oBAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;gBAC5B;AACA,gBAAA,OAAO,IAAI;AACb,YAAA,CAAC;AACA,iBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAChC;YACD;QACF;QACA,MAAM,CAAC,IAAW,CAAC;IACrB;AACA,IAAA,UAAU;IACV,WAAW,GAAG,QAAQ,CACpB,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CACxE;AACD,IAAA,aAAa;AACb,IAAA,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;IAC7B,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;IACzB;IACA,gBAAgB,GAAA;QACd,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;QACnC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAEpD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;;AAE1B,QAAA,IAAI,sBAES;QACb,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAA2B;AAClE,QAAA,MAAM,WAAW,GAAG,MAAM,CAAuB,SAAS,CAAC;AAC3D,QAAA,IAAI,cAAoC;;QAExC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,4BAA4B,CAAC;;QAGhE,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAC7C,QAAQ,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAC7C;AACE,gBAAA,QAAQ,EAAE,WAAW;gBACrB,KAAK,EAAE,KAAK,GAAG,CAAC;AAChB,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAChC,aAAA,EACD,EAAE,QAAQ,EAAE,QAAQ,EAAE,CACvB;YACD,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;YACjD,cAAc,GAAG,EAAE;QACrB;aAAO;;YAEL,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAO,EAAS;AAChD,YAAA,sBAAsB,GAAG,CAAC,eAAe,KAAI;gBAC3C,MAAM,EAAE,GAAG,oBAAoB,CAAC,eAAe,CAAC,SAAS,CAAE;AAC3D,gBAAA,MAAM,aAAa,GAAG,UAAU,CAAC,KAAM,EAAE;AACzC,gBAAA,MAAM,eAAe,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAC/C,CAAC,GAAG,KAAK,aAAa,CAAC,GAAG,CAAiC,CAC5D;AACD,gBAAA,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,KAC3C,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,SAAS,CAC1D;AACD,gBAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;AACzD,YAAA,CAAC;AACD,YAAA,cAAc,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAChD;QACA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,eAAe,KAAI;AACvD,YAAA,MAAM,iBAAiB,GACrB,eAAe,CAAC,SACjB,CAAC,SAAS;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;kBAC9B,cAAc,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ;kBAC/C,SAAS;YACb,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,UAAU;AAC3D,YAAA,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,SAAS,EAAE;AAC9D,gBAAA,eAAe,EAAE,QAAQ;AACzB,gBAAA,mBAAmB,EAAE,WAAW;AAEhC,gBAAA,QAAQ,EAAE;AACR,oBAAA,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;AACtC,oBAAA,GAAG,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC;AACzC,iBAAA;AACD,gBAAA,UAAU,EAAE;oBACV,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;wBAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,wBAAA,QAAQ,EAAE;AACR,4BAAA,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,4BAAA,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,yBAAA;AACF,qBAAA,CAAC,CAAC;oBACH,IAAI,iBAAiB,KAAK;AACxB,0BAAE;AACF,0BAAE;AACE,4BAAA,GAAG,yBAAyB,CAAC,UAAU,CAAC,UAAU,CAAC;AACnD,4BAAA,GAAG,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC;yBAC5C,CAAC;AACP,iBAAA;AACD,gBAAA,gBAAgB,EAAE,sBAAsB,CAAC,eAAe,CAAC;AAC1D,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY;AACjC,YAAA,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AAChC,YAAA,IAAI,iBAAiB,KAAK,CAAC,EAAE;gBAC3B,MAAM,WAAW,GACf,YAAY,CAAC,QACd,CAAC,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,WAAW,EAAE;oBAC5C,UAAU,EAAE,UAAU,CAAC,UAAU;oBACjC,MAAM,EAAE,UAAU,CAAC,MAAM;AAC1B,iBAAA,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC3C,gBAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;YAChD;iBAAO;gBACL,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC7C;AAEA,YAAA,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;AACxC,QAAA,CAAC,CAAC;IACJ;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrB,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;IAC7B;IACA,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE;IACjB;uGAxKW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MC7FY,UAAU,CAAA;AACrB,IAAA,SAAS,CAAC,KAAU,EAAE,GAAG,IAAW,EAAA;AAClC,QAAA,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;IACzB;uGAHW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,IAAI;mBAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;;MAOX,UAAU,CAAA;AACrB,IAAA,SAAS,CAAC,KAA0B,EAAA;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACrC;uGAHW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,IAAI;mBAAC,EAAE,IAAI,EAAE,WAAW,EAAE;;;MCJd,gBAAgB,CAAA;AAC3B,IAAA,SAAS,CAAC,QAAkB,EAAA;QAC1B,OAAO,QAAQ,CAAC,MAAM,CAAC;YACrB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACpE,YAAA,MAAM,EAAE,QAAQ;AACjB,SAAA,CAAC;IACJ;uGANW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,IAAI;mBAAC,EAAE,IAAI,EAAE,cAAc,EAAE;;;ACuC9B,MAAM,qBAAqB,GAAG;AAC5B,IAAA,OAAO,EAAE,kBAAkB;AAC3B,IAAA,MAAM,EAAE,cAAc;CACvB;MAcY,UAAU,CAAA;AACrB,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC/C,IAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC;AACnD,IAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;AACxC,IAAA,YAAY,GAAG,KAAK,CAAU,KAAK,CAAC;AAC7C,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAA+B;AACtD,IAAA,KAAK,GAAG,KAAK,CAAM,SAAS,CAAC;IAC7B,WAAW,GAAG,MAAM,EAAO;IAC3B,OAAO,GAAG,KAAK,EAKZ;AACH,IAAA,MAAM,GAAG,QAAQ,CACf,MACE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,OAEf,CAChB;AAED,IAAA,OAAO;AACP,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACxC,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,IAAI,OAAO,EAAE;YAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;AAEA,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;QAChC,IAAI,CAAC,MAAM,EAAE;QACb,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7C,IAAA,CAAC,CAAC;AAEF,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,gBAAgB;AAChB,IAAA,cAAc,GAAG,MAAM,CAAwC,SAAS,CAAC;AACzE,IAAA,cAAc;AACd,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC1B,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,gCAAgC;AACzC,oBAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;AAC/B,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,+BAA+B;AACxC,oBAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE;AAC9B,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,EAAG,CAAC,QAAQ;AACxC,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACF,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC3B,QAAA,SAAS,EAAE;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,sBAAsB;gBAC/B,QAAQ,EAAE,IAAI,CAAC,OAAO;AACvB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,IAAI,CAAC,MAAM;AACtB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,oBAAoB;gBAC7B,QAAQ,EAAE,IAAI,CAAC,KAAK;AACrB,aAAA;AACF,SAAA;QACD,MAAM,EAAE,IAAI,CAAC,SAAS;AACvB,KAAA,CAAC;IACF,YAAY,GAAA;QACV,IAAI,CAAC,MAAM,EAAE;;AAEb,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;AAClC,YAAA,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,IAAI,CAAC,UAAU;AACxB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW;QACnC,MAAM,MAAM,GAAG,OAAO,CAA4B,IAAI,CAAC,MAAM,EAAS,EAAE;AACtE,YAAA,GAAG,qBAAqB;YACxB,GAAG,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,QAAQ,EAAE,WAAW;AACtB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/B,QAAA,OAAO,MAAM;IACf;IACA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;QACnC;IACF;AAEA,IAAA,YAAY,CAAC,KAAsC,EAAA;AACjD,QAAA,IAAI,CAAC,cAAc,IAAI;AACvB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAG;AACrC,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;;AAEvB,YAAA,MAAM,GAAG,GAAG,UAAU,CACpB,IAAI,CAAC,KAAK,EAAE,EACZ,MAAO,CAAC,IAAI,CAAC,OAAO;;AAEpB,YAAA,IAAI,CAAC,SAAS,EACd,CAAC,KAAK,KAAI;gBACR,SAAS,CAAC,MAAK;oBACb,IAAI,MAAO,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE;AAC1C,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC9B;AACF,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CACF;AACD,YAAA,IAAI,CAAC,cAAc,GAAG,MAAK;gBACzB,GAAG,CAAC,OAAO,EAAE;AACb,gBAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AACjC,YAAA,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;QACxC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,IAAI;IACzB;uGA1HW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3DvB,uuCAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACX,UAAU,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACV,UAAU,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACV,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAbtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EACd;wBACP,gBAAgB;wBAChB,WAAW;wBACX,UAAU;wBACV,UAAU;wBACV,gBAAgB;AACjB,qBAAA,EAAA,UAAA,EAEW,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uuCAAA,EAAA;;;AEtD1C,MAAM,SAAS,GAAGC;;ACWzB,SAAS,mCAAmC,CAAC,OAAiB,EAAA;IAC5D,OAAO,CACL,KAMG,KAEH,SAAS,CAAI,CAAC,KAAK,KAAI;QACrB,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;QAC1B;AACA,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,YAAA,KAAK,CAAC,UAAU,CAAC,GAAG,CAClB,MAAM,CAAoB;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC5C,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC9C,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;gBACpD,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC5C,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAC3C,aAAA,CAAC,CACH;AACH,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACN;AACA,SAAS,eAAe,CACtB,GAAQ,EACR,EAA6C,EAC7C,OAAY,EAAA;AAEZ,IAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;QACrC;IACF;AACA,IAAA,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B;AACA,SAAS,mBAAmB,CAC1B,IAAe,EACf,OAAsD,EACtD,OAAkC,EAAA;AAElC,IAAA,OAAO,SAAS,CAAI,CAAC,QAAQ,KAAI;AAC/B,QAAA,YAAY,CACV;AACE,YAAA,iBAAiB,EAAE,CAAC,KAAK,KAAI;gBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAoB;oBACzC,IAAI;AACJ,oBAAA,UAAU,EAAE,iBAAiB,CAAC,EAAE,CAAC;AACjC,oBAAA,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC;AAC7B,oBAAA,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC;AAC7B,oBAAA,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC;AAC9B,oBAAA,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC;AAC7B,iBAAA,CAAC;gBACF,KAAK,CAAC,UAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC;AACrD,gBAAA,KAAK,MAAM,IAAI,IAAI,OAAO,IAAI,EAAE,EAAE;AAChC,oBAAA,MAAM,SAAS,GAAkD;AAC/D,wBAAA,MAAM,EAAE,EAAE;AACV,wBAAA,OAAO,EAAE,EAAE;AACX,wBAAA,UAAU,EAAE,EAAE;AACd,wBAAA,MAAM,EAAE,EAAE;AACV,wBAAA,KAAK,EAAE,EAAE;qBACV;AACA,oBAAA,IAAI,CAAC,KAAa,CAAC,SAAS,EAAE,SAAS,EAAE;wBACxC,CAAC,gBAAgB,GAAG,CAClB,QAA6B,EAC7B,KAAuC,KACrC;4BACF,IAAI,QAAQ,EAAE;AACZ,gCAAA,OAAO,SAAS;4BAClB;AACA,4BAAA,OAAO,QAAQ;wBACjB,CAAC;AACF,qBAAA,CAAC;AACF,oBAAA,eAAe,CAAC,QAAQ,EAAE,QAAe,EAAE,SAAS,CAAC;AACrD,oBAAA,eAAe,CAAC,SAAS,EAAE,QAAe,EAAE,SAAS,CAAC;AACtD,oBAAA,eAAe,CAAC,YAAY,EAAE,QAAe,EAAE,SAAS,CAAC;AACzD,oBAAA,eAAe,CAAC,QAAQ,EAAE,QAAe,EAAE,SAAS,CAAC;AACrD,oBAAA,eAAe,CAAC,OAAO,EAAE,QAAe,EAAE,SAAS,CAAC;oBAEnD,SAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,KAAK,CAAC;gBACtD;YACF,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACtB,QAAQ,CACT;AACH,IAAA,CAAC,CAAC;AACJ;AACA,SAAS,gBAAgB,CACvB,UAEgC,EAAA;AAEhC,IAAA,OAAO,SAAS,CAAI,CAAC,KAAK,KAAI;AAC5B,QAAA,YAAY,CACV;AACE,YAAA,iBAAiB,EAAE,CAAC,KAAK,KAAI;AAC3B,gBAAA,KAAK,CAAC,UAAW,CAAC,MAAM,CAAC,UAAU,CAAC;YACtC,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACtB,KAAK,CACN;AACH,IAAA,CAAC,CAAC;AACJ;AACO,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE,mCAAmC,EAAE;AAC1C,IAAA,KAAK,EAAE,mCAAmC,CAAC,IAAI,CAAC;AAChD,IAAA,UAAU,EAAE,mBAAmB;AAC/B,IAAA,MAAM,EAAE,gBAAgB;;;ACnHnB,MAAM,OAAO,GAAG,EAAE,GAAGC,SAAW,EAAE,UAAU;;MCPtC,WAAW,CAAA;IACb,YAAY,GAAQ,SAAS;IACtC,MAAM,GAAG,MAAM,CAAI,IAAI,CAAC,YAAY,IAAK,SAAiB,CAAC;AAEjD,IAAA,SAAS;AACnB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;;AAEA,IAAA,WAAW,CAAC,KAAQ,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC;IACnC;AACA,IAAA,QAAQ;AACR,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;IACA,aAAa,GAAA;QACX,IAAI,CAAC,QAAS,EAAE;IAClB;AACA,IAAA,qBAAqB,CAAC,KAAQ,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE;IACtB;AACA,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC;AACD;;ACgHK,SAAU,cAAc,CAC5B,KAAQ,EAAA;IAeR,OAAO;AACL,QAAA,MAAM,EAAE,KAAK;QACb,YAAY,CAAC,GAAG,EAAE,EAAE,EAAA;YAClB,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,KAAK,CAAC,KAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG;AACnE,YAAA,OAAO,YAAY,CACjB,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAACC,SAAc,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CACxE;QACH,CAAC;KACF;AACH;;AC5KA;;AAEG;;;;"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import {
|
|
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.
|
|
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, {
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
slots
|
|
62
|
-
directives
|
|
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<
|
|
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,
|
|
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": "
|
|
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": "^
|
|
41
|
+
"@piying/view-angular-core": "^3.0.1",
|
|
42
42
|
"tslib": "^2.3.0"
|
|
43
43
|
},
|
|
44
44
|
"sideEffects": false,
|