@piying/view-angular 1.5.11 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/piying-view-angular.mjs +98 -217
- package/fesm2022/piying-view-angular.mjs.map +1 -1
- package/index.d.ts +4 -13
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, computed, input, Directive, ChangeDetectionStrategy, Component,
|
|
2
|
+
import { InjectionToken, inject, computed, input, Directive, ChangeDetectionStrategy, Component, Renderer2, ElementRef, inputBinding, outputBinding, untracked, signal, DOCUMENT, EventEmitter, reflectComponentType, Injector, createComponent, EnvironmentInjector, ViewContainerRef, createNgModule, resource, Injectable, Pipe, output, createEnvironmentInjector, DestroyRef, viewChild, linkedSignal } from '@angular/core';
|
|
3
3
|
import { NgTemplateOutlet } from '@angular/common';
|
|
4
4
|
import { deepEqual } from 'fast-equals';
|
|
5
5
|
import { NgControl, Validators, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
@@ -66,7 +66,6 @@ function getComponentCheckConfig(a) {
|
|
|
66
66
|
inputs: `${config.inputs ? Object.keys(config.inputs()).join(',') : ''}`,
|
|
67
67
|
}))
|
|
68
68
|
: undefined,
|
|
69
|
-
contents: a.contents?.map((item) => ({ ...item, text: !!item.text })),
|
|
70
69
|
};
|
|
71
70
|
}
|
|
72
71
|
|
|
@@ -312,192 +311,87 @@ function parseSelectorToR3Selector(selector) {
|
|
|
312
311
|
: [];
|
|
313
312
|
}
|
|
314
313
|
|
|
315
|
-
function
|
|
316
|
-
|
|
317
|
-
const
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
const listenerList = [];
|
|
321
|
-
const modelList = [];
|
|
322
|
-
let classData;
|
|
323
|
-
let elementTag;
|
|
324
|
-
if (typeof component.type === 'string') {
|
|
325
|
-
elementTag = component.type;
|
|
314
|
+
function createElement(selector, document) {
|
|
315
|
+
const [item] = parseSelectorToR3Selector(selector);
|
|
316
|
+
const [element, ...rest] = item;
|
|
317
|
+
if (!element || typeof element !== 'string') {
|
|
318
|
+
throw new Error(`tag must be string;selector: ${selector}`);
|
|
326
319
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
}
|
|
335
|
-
const attributes = component.attributes?.();
|
|
336
|
-
if (attributes) {
|
|
337
|
-
for (const key in attributes) {
|
|
338
|
-
if (key === 'class') {
|
|
339
|
-
classData = computed(() => component.attributes()[key]);
|
|
340
|
-
vars += 2;
|
|
341
|
-
continue;
|
|
342
|
-
}
|
|
343
|
-
consts.push(key, attributes[key]);
|
|
320
|
+
const el = document.createElement(element);
|
|
321
|
+
let index = 0;
|
|
322
|
+
for (; index < rest.length; index += 2) {
|
|
323
|
+
const key = rest[index];
|
|
324
|
+
const value = rest[index + 1];
|
|
325
|
+
if (typeof key !== 'string') {
|
|
326
|
+
break;
|
|
344
327
|
}
|
|
328
|
+
el.setAttribute(key, value);
|
|
345
329
|
}
|
|
346
|
-
|
|
347
|
-
for (
|
|
348
|
-
const item =
|
|
349
|
-
if (
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const selectors = define.selectors;
|
|
353
|
-
const selector = item.selector ??
|
|
354
|
-
selectors.find((selectorList) => selectorList.length === 3 &&
|
|
355
|
-
selectorList[0] === '' &&
|
|
356
|
-
selectorList[2] === '')[1];
|
|
357
|
-
if (((item.inputs && !(selector in item.inputs())) || !item.inputs) &&
|
|
358
|
-
((item.model && !(selector in item.model)) || !item.model)) {
|
|
359
|
-
consts.push(selector, '');
|
|
360
|
-
}
|
|
330
|
+
let type;
|
|
331
|
+
for (; index < rest.length; index++) {
|
|
332
|
+
const item = rest[index];
|
|
333
|
+
if (typeof item === 'number') {
|
|
334
|
+
type = item;
|
|
335
|
+
continue;
|
|
361
336
|
}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
vars++;
|
|
366
|
-
propertyList[i].keyList.push(key);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
for (const key in item.outputs) {
|
|
370
|
-
listenerList.push({
|
|
371
|
-
eventName: key,
|
|
372
|
-
listenerFn: item.outputs[key],
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
for (const key in item.model) {
|
|
376
|
-
vars++;
|
|
377
|
-
modelList.push({
|
|
378
|
-
key: key,
|
|
379
|
-
eventName: `${key}Change`,
|
|
380
|
-
signal: item.model[key],
|
|
381
|
-
});
|
|
337
|
+
// class
|
|
338
|
+
if (type === 8) {
|
|
339
|
+
el.classList.add(item);
|
|
382
340
|
}
|
|
383
341
|
}
|
|
384
|
-
|
|
385
|
-
consts.push(3);
|
|
386
|
-
consts.push(...new Set([
|
|
387
|
-
...listenerList.map(({ eventName }) => eventName),
|
|
388
|
-
...modelList.map(({ eventName }) => eventName),
|
|
389
|
-
]));
|
|
390
|
-
consts.push(...new Set([
|
|
391
|
-
...propertyList.flatMap((item) => item.keyList),
|
|
392
|
-
...modelList.map(({ key }) => key),
|
|
393
|
-
]));
|
|
394
|
-
return {
|
|
395
|
-
vars,
|
|
396
|
-
consts: [['el', ''], consts],
|
|
397
|
-
directiveList,
|
|
398
|
-
propertyList: propertyList,
|
|
399
|
-
listenerList: listenerList,
|
|
400
|
-
modelList,
|
|
401
|
-
elementTag,
|
|
402
|
-
classData,
|
|
403
|
-
};
|
|
342
|
+
return el;
|
|
404
343
|
}
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
contentData;
|
|
415
|
-
}
|
|
416
|
-
function templateFn(rf, ctx) {
|
|
417
|
-
if (rf & 1) {
|
|
418
|
-
__elementStart(0, result.elementTag, 1, 0);
|
|
419
|
-
result.listenerList.reduce((fn, item) => fn(item.eventName, item.listenerFn), __listener);
|
|
420
|
-
result.modelList.reduce((fn, item) => fn(item.eventName, (value) => {
|
|
421
|
-
__twoWayBindingSet(item.signal, value);
|
|
422
|
-
}), __listener);
|
|
423
|
-
if (component.contents?.length) {
|
|
424
|
-
component.contents.forEach((item, index) => {
|
|
425
|
-
if (item.select) {
|
|
426
|
-
__projection(index + 2, index, [
|
|
427
|
-
'ngProjectAs',
|
|
428
|
-
item.select,
|
|
429
|
-
5,
|
|
430
|
-
parseSelectorToR3Selector(item.select)[0],
|
|
431
|
-
], item.text
|
|
432
|
-
? (rf, ctx) => {
|
|
433
|
-
if (rf & 1) {
|
|
434
|
-
__text(0);
|
|
435
|
-
}
|
|
436
|
-
if (rf & 2) {
|
|
437
|
-
__textInterpolate(item.text());
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
: undefined, item.text ? 1 : undefined, item.text ? 1 : undefined);
|
|
441
|
-
}
|
|
442
|
-
else {
|
|
443
|
-
__projection(index + 1, index);
|
|
444
|
-
}
|
|
445
|
-
});
|
|
446
|
-
}
|
|
447
|
-
__elementEnd();
|
|
344
|
+
|
|
345
|
+
class AttributesDirective {
|
|
346
|
+
a = input.required();
|
|
347
|
+
#rederer = inject(Renderer2);
|
|
348
|
+
#el = inject(ElementRef).nativeElement;
|
|
349
|
+
ngOnChanges(changes) {
|
|
350
|
+
const { previousValue, currentValue, firstChange } = changes['a'];
|
|
351
|
+
for (const key in currentValue) {
|
|
352
|
+
this.#rederer.setAttribute(this.#el, key, currentValue[key]);
|
|
448
353
|
}
|
|
449
|
-
if (
|
|
450
|
-
|
|
451
|
-
|
|
354
|
+
if (!firstChange) {
|
|
355
|
+
for (const key in previousValue) {
|
|
356
|
+
if (!(key in currentValue)) {
|
|
357
|
+
this.#rederer.removeAttribute(this.#el, key);
|
|
358
|
+
}
|
|
452
359
|
}
|
|
453
|
-
result.propertyList.reduce((fn, { signal, keyList }) => {
|
|
454
|
-
const value = signal();
|
|
455
|
-
return keyList.reduce((fn, key) => fn(key, value[key]), fn);
|
|
456
|
-
}, __property);
|
|
457
|
-
result.modelList.reduce((fn, item) => fn(item.key, item.signal), __twoWayProperty);
|
|
458
360
|
}
|
|
459
361
|
}
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
componentInstance = viewChild('el');
|
|
463
|
-
elementRef = viewChild('el', { read: ElementRef });
|
|
464
|
-
directiveRefList = directives.map(({ type }) => viewChild('el', { read: type }));
|
|
465
|
-
static ɵfac = (_) => new (_ || D)();
|
|
466
|
-
static ɵcmp = __defineComponent({
|
|
467
|
-
type: D,
|
|
468
|
-
selectors: [[`d-${index++}`]],
|
|
469
|
-
ngContentSelectors: contentArray,
|
|
470
|
-
decls: 1,
|
|
471
|
-
vars: 0,
|
|
472
|
-
consts: result.consts,
|
|
473
|
-
template: (rf, ctx) => {
|
|
474
|
-
if (rf & 1) {
|
|
475
|
-
if (contentArray) {
|
|
476
|
-
__projectionDef(contentArray);
|
|
477
|
-
}
|
|
478
|
-
__template(0, templateFn, 2 + (component.contents?.length ?? 0), result.vars, 'ng-template');
|
|
479
|
-
}
|
|
480
|
-
},
|
|
481
|
-
viewQuery: (rf, ctx) => {
|
|
482
|
-
if (rf & 1) {
|
|
483
|
-
__viewQuerySignal(ctx.templateRef, TemplateRef, 5);
|
|
484
|
-
__viewQuerySignal(ctx.componentInstance, EL_QUERY, 5);
|
|
485
|
-
__viewQuerySignal(ctx.elementRef, EL_QUERY, 5, ElementRef);
|
|
486
|
-
directives.forEach(({ type }, index) => {
|
|
487
|
-
__viewQuerySignal(ctx.directiveRefList[index], EL_QUERY, 5, type);
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
if (rf & 2) {
|
|
491
|
-
__queryAdvance(3 + directives.length);
|
|
492
|
-
}
|
|
493
|
-
},
|
|
494
|
-
dependencies: result.directiveList,
|
|
495
|
-
encapsulation: 2,
|
|
496
|
-
changeDetection: 0,
|
|
497
|
-
});
|
|
498
|
-
};
|
|
362
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AttributesDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
363
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: AttributesDirective, isStandalone: true, inputs: { a: { classPropertyName: "a", publicName: "a", isSignal: true, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0 });
|
|
499
364
|
}
|
|
365
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: AttributesDirective, decorators: [{
|
|
366
|
+
type: Directive,
|
|
367
|
+
args: [{
|
|
368
|
+
standalone: true,
|
|
369
|
+
}]
|
|
370
|
+
}] });
|
|
500
371
|
|
|
372
|
+
function createInputsBind(inputs) {
|
|
373
|
+
if (!inputs || !inputs()) {
|
|
374
|
+
return [];
|
|
375
|
+
}
|
|
376
|
+
return Object.keys(inputs()).map((key) => inputBinding(key, computed(() => inputs()[key])));
|
|
377
|
+
}
|
|
378
|
+
function createOutputsBind(outputs) {
|
|
379
|
+
if (!outputs) {
|
|
380
|
+
return [];
|
|
381
|
+
}
|
|
382
|
+
return Object.entries(outputs).map(([key, value]) => outputBinding(key, value));
|
|
383
|
+
}
|
|
384
|
+
function createAttributesDirective(attributes) {
|
|
385
|
+
if (attributes()) {
|
|
386
|
+
return [
|
|
387
|
+
{
|
|
388
|
+
type: AttributesDirective,
|
|
389
|
+
bindings: [inputBinding('a', attributes)],
|
|
390
|
+
},
|
|
391
|
+
];
|
|
392
|
+
}
|
|
393
|
+
return [];
|
|
394
|
+
}
|
|
501
395
|
const EmptyOBJ = {};
|
|
502
396
|
class BaseComponent {
|
|
503
397
|
/** 第一次默认为空 */
|
|
@@ -524,8 +418,8 @@ class BaseComponent {
|
|
|
524
418
|
* 2. 上次传入的数据格式和当前不一样,直接重新创建
|
|
525
419
|
*/
|
|
526
420
|
#inputCache;
|
|
527
|
-
#contentCache;
|
|
528
421
|
#configUpdate$ = signal(0);
|
|
422
|
+
#document = inject(DOCUMENT);
|
|
529
423
|
createComponent(list, viewContainerRef) {
|
|
530
424
|
// 销毁
|
|
531
425
|
this.destroyComponentFn?.();
|
|
@@ -550,28 +444,9 @@ class BaseComponent {
|
|
|
550
444
|
})
|
|
551
445
|
: undefined),
|
|
552
446
|
};
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
return {
|
|
556
|
-
...item,
|
|
557
|
-
text: computed(() => {
|
|
558
|
-
this.#configUpdate$();
|
|
559
|
-
return this.#componentConfig.contents[index].text();
|
|
560
|
-
}),
|
|
561
|
-
};
|
|
562
|
-
}
|
|
563
|
-
return item;
|
|
564
|
-
});
|
|
447
|
+
const type = reflectComponentType(componentConfig.type);
|
|
448
|
+
const el = createElement(type.selector, this.#document);
|
|
565
449
|
this.#setComponentCheck(componentConfig);
|
|
566
|
-
const SidecarComponent = createDynamicComponentDefine({
|
|
567
|
-
...componentConfig,
|
|
568
|
-
inputs: this.#inputCache.inputs,
|
|
569
|
-
attributes: this.#inputCache.attributes,
|
|
570
|
-
contents: this.#contentCache,
|
|
571
|
-
}, componentConfig.directives?.map((config, index) => ({
|
|
572
|
-
...config,
|
|
573
|
-
inputs: this.#inputCache.directiveList[index],
|
|
574
|
-
})) ?? []);
|
|
575
450
|
const componentInjector = Injector.create({
|
|
576
451
|
providers: [
|
|
577
452
|
{ provide: PI_COMPONENT_LIST, useValue: list },
|
|
@@ -580,18 +455,30 @@ class BaseComponent {
|
|
|
580
455
|
],
|
|
581
456
|
parent: componentConfig.injector ?? viewContainerRef.injector,
|
|
582
457
|
});
|
|
583
|
-
const
|
|
458
|
+
const attrDirective = createAttributesDirective(componentConfig.attributes);
|
|
459
|
+
const componentRef = createComponent(componentConfig.type, {
|
|
584
460
|
elementInjector: componentInjector,
|
|
585
461
|
environmentInjector: componentInjector.get(EnvironmentInjector),
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
.
|
|
462
|
+
hostElement: el,
|
|
463
|
+
bindings: [
|
|
464
|
+
...createInputsBind(this.#inputCache.inputs),
|
|
465
|
+
...createOutputsBind(componentConfig.outputs),
|
|
466
|
+
],
|
|
467
|
+
directives: [
|
|
468
|
+
...(componentConfig.directives ?? []).map((item, index) => ({
|
|
469
|
+
type: item.type,
|
|
470
|
+
bindings: [
|
|
471
|
+
...createInputsBind(this.#inputCache.directiveList[index]),
|
|
472
|
+
...createOutputsBind(item.outputs),
|
|
473
|
+
],
|
|
474
|
+
})),
|
|
475
|
+
...attrDirective,
|
|
476
|
+
],
|
|
589
477
|
});
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
this.
|
|
593
|
-
this.
|
|
594
|
-
this.fieldDirectiveRefList = componentRef.instance.directiveRefList.map((item) => item());
|
|
478
|
+
viewContainerRef.insert(componentRef.hostView);
|
|
479
|
+
this.fieldComponentInstance = componentRef.instance;
|
|
480
|
+
this.fieldElementRef = componentRef.location;
|
|
481
|
+
this.fieldDirectiveRefList = (componentConfig.directives ?? []).map((item) => componentRef.injector.get(item.type));
|
|
595
482
|
this.destroyComponentFn = () => {
|
|
596
483
|
viewContainerRef.clear();
|
|
597
484
|
componentRef.destroy();
|
|
@@ -708,14 +595,14 @@ class FieldControlDirective {
|
|
|
708
595
|
this.#disposeFn?.(true);
|
|
709
596
|
}
|
|
710
597
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: FieldControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
711
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: FieldControlDirective, isStandalone:
|
|
598
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: FieldControlDirective, isStandalone: true, selector: "[fieldControl]", inputs: { fieldControl: { classPropertyName: "fieldControl", publicName: "fieldControl", isSignal: true, isRequired: true, transformFunction: null } }, providers: [formControlBinding], usesOnChanges: true, ngImport: i0 });
|
|
712
599
|
}
|
|
713
600
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: FieldControlDirective, decorators: [{
|
|
714
601
|
type: Directive,
|
|
715
602
|
args: [{
|
|
716
603
|
selector: '[fieldControl]',
|
|
717
604
|
providers: [formControlBinding],
|
|
718
|
-
standalone:
|
|
605
|
+
standalone: true,
|
|
719
606
|
}]
|
|
720
607
|
}] });
|
|
721
608
|
|
|
@@ -725,12 +612,10 @@ class NgComponentOutlet extends BaseComponent {
|
|
|
725
612
|
ngComponentOutletInputs = input();
|
|
726
613
|
ngComponentOutletOutputs = input();
|
|
727
614
|
ngComponentOutletInjector = input();
|
|
728
|
-
ngComponentOutletContent = input();
|
|
729
615
|
/** 控件用 */
|
|
730
616
|
ngComponentOutletFormControl = input();
|
|
731
617
|
/** 包裹用 */
|
|
732
618
|
ngComponentOutletWrappers = input();
|
|
733
|
-
ngComponentOutletTopDirectives = input();
|
|
734
619
|
ngComponentOutletDirectives = input();
|
|
735
620
|
ngComponentOutletField = input.required();
|
|
736
621
|
#viewContainerRef = inject(ViewContainerRef);
|
|
@@ -816,7 +701,6 @@ class NgComponentOutlet extends BaseComponent {
|
|
|
816
701
|
})
|
|
817
702
|
: undefined,
|
|
818
703
|
outputs: this.#onputEqual$$(),
|
|
819
|
-
contents: this.ngComponentOutletContent(),
|
|
820
704
|
};
|
|
821
705
|
});
|
|
822
706
|
#componentList$$ = computed(() => {
|
|
@@ -856,13 +740,12 @@ class NgComponentOutlet extends BaseComponent {
|
|
|
856
740
|
this.destroyComponentFn?.();
|
|
857
741
|
}
|
|
858
742
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgComponentOutlet, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
859
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: NgComponentOutlet, isStandalone: true, selector: "[ngComponentOutlet]", inputs: { ngComponentOutlet: { classPropertyName: "ngComponentOutlet", publicName: "ngComponentOutlet", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletInputs: { classPropertyName: "ngComponentOutletInputs", publicName: "ngComponentOutletInputs", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletOutputs: { classPropertyName: "ngComponentOutletOutputs", publicName: "ngComponentOutletOutputs", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletInjector: { classPropertyName: "ngComponentOutletInjector", publicName: "ngComponentOutletInjector", isSignal: true, isRequired: false, transformFunction: null },
|
|
743
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: NgComponentOutlet, isStandalone: true, selector: "[ngComponentOutlet]", inputs: { ngComponentOutlet: { classPropertyName: "ngComponentOutlet", publicName: "ngComponentOutlet", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletInputs: { classPropertyName: "ngComponentOutletInputs", publicName: "ngComponentOutletInputs", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletOutputs: { classPropertyName: "ngComponentOutletOutputs", publicName: "ngComponentOutletOutputs", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletInjector: { classPropertyName: "ngComponentOutletInjector", publicName: "ngComponentOutletInjector", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletFormControl: { classPropertyName: "ngComponentOutletFormControl", publicName: "ngComponentOutletFormControl", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletWrappers: { classPropertyName: "ngComponentOutletWrappers", publicName: "ngComponentOutletWrappers", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletDirectives: { classPropertyName: "ngComponentOutletDirectives", publicName: "ngComponentOutletDirectives", isSignal: true, isRequired: false, transformFunction: null }, ngComponentOutletField: { classPropertyName: "ngComponentOutletField", publicName: "ngComponentOutletField", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
860
744
|
}
|
|
861
745
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgComponentOutlet, decorators: [{
|
|
862
746
|
type: Directive,
|
|
863
747
|
args: [{
|
|
864
748
|
selector: '[ngComponentOutlet]',
|
|
865
|
-
exportAs: 'ngComponentOutlet',
|
|
866
749
|
standalone: true,
|
|
867
750
|
}]
|
|
868
751
|
}] });
|
|
@@ -942,7 +825,6 @@ class AngularFormBuilder extends FormBuilder {
|
|
|
942
825
|
const directives = this.configMerge([componentDefaultConfig?.directives, field.directives], true, mergeStrategy?.directives ?? NG_CONFIG_DEFAULT_MERGE_STRAGEGY.directives);
|
|
943
826
|
return {
|
|
944
827
|
...config,
|
|
945
|
-
contents: field.contents?.sort((a, b) => a.nodes && b.nodes ? 0 : a.nodes ? -1 : 1),
|
|
946
828
|
directives: directives,
|
|
947
829
|
};
|
|
948
830
|
}
|
|
@@ -979,7 +861,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
|
|
|
979
861
|
}] });
|
|
980
862
|
|
|
981
863
|
class NgSchemaHandle extends CoreSchemaHandle {
|
|
982
|
-
contents;
|
|
983
864
|
directives;
|
|
984
865
|
}
|
|
985
866
|
|
|
@@ -1098,11 +979,11 @@ class PiyingView {
|
|
|
1098
979
|
this.#listenDispose?.();
|
|
1099
980
|
}
|
|
1100
981
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingView, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1101
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: PiyingView, isStandalone: true, selector: "piying-view", inputs: { 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" }, usesOnChanges: true, ngImport: i0, template: "<ng-template #dynamicComponent let-field>\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @let typeResource = resolvedComponent | pure: field.define;\n @let type = typeResource.value();\n @let wrappersResource = resolvedWrapper | pure: field.wrappers();\n @let wrappers = wrappersResource.value();\n @if (type) {\n @if (field.fixedChildren || field.restChildren) {\n @if (!(groupHidden | pure: field)()) {\n <!-- \u81EA\u5B9A\u4E49group -->\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"\n (groupInputsValue | pure: field.inputs : dynamicComponent)?.()\n \"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n } @else {\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"field.inputs()\"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n
|
|
982
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: PiyingView, isStandalone: true, selector: "piying-view", inputs: { 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" }, usesOnChanges: true, ngImport: i0, template: "<ng-template #dynamicComponent let-field>\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @let typeResource = resolvedComponent | pure: field.define;\n @let type = typeResource.value();\n @let wrappersResource = resolvedWrapper | pure: field.wrappers();\n @let wrappers = wrappersResource.value();\n @if (type) {\n @if (field.fixedChildren || field.restChildren) {\n @if (!(groupHidden | pure: field)()) {\n <!-- \u81EA\u5B9A\u4E49group -->\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"\n (groupInputsValue | pure: field.inputs : dynamicComponent)?.()\n \"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n } @else {\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"field.inputs()\"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n }\n }\n</ng-template>\n\n@if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"dynamicComponent; context: { $implicit: field }\"\n ></ng-container>\n}\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletOutputs", "ngComponentOutletInjector", "ngComponentOutletFormControl", "ngComponentOutletWrappers", "ngComponentOutletDirectives", "ngComponentOutletField"] }, { kind: "pipe", type: PurePipe, name: "pure" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1102
983
|
}
|
|
1103
984
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: PiyingView, decorators: [{
|
|
1104
985
|
type: Component,
|
|
1105
|
-
args: [{ selector: 'piying-view', imports: [NgComponentOutlet, PurePipe, NgTemplateOutlet], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #dynamicComponent let-field>\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @let typeResource = resolvedComponent | pure: field.define;\n @let type = typeResource.value();\n @let wrappersResource = resolvedWrapper | pure: field.wrappers();\n @let wrappers = wrappersResource.value();\n @if (type) {\n @if (field.fixedChildren || field.restChildren) {\n @if (!(groupHidden | pure: field)()) {\n <!-- \u81EA\u5B9A\u4E49group -->\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"\n (groupInputsValue | pure: field.inputs : dynamicComponent)?.()\n \"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n } @else {\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"field.inputs()\"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n
|
|
986
|
+
args: [{ selector: 'piying-view', imports: [NgComponentOutlet, PurePipe, NgTemplateOutlet], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #dynamicComponent let-field>\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @let typeResource = resolvedComponent | pure: field.define;\n @let type = typeResource.value();\n @let wrappersResource = resolvedWrapper | pure: field.wrappers();\n @let wrappers = wrappersResource.value();\n @if (type) {\n @if (field.fixedChildren || field.restChildren) {\n @if (!(groupHidden | pure: field)()) {\n <!-- \u81EA\u5B9A\u4E49group -->\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"\n (groupInputsValue | pure: field.inputs : dynamicComponent)?.()\n \"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n } @else {\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"field.inputs()\"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n }\n }\n</ng-template>\n\n@if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"dynamicComponent; context: { $implicit: field }\"\n ></ng-container>\n}\n" }]
|
|
1106
987
|
}] });
|
|
1107
988
|
|
|
1108
989
|
class PiyingViewWrapperBase extends BaseComponent {
|
|
@@ -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/hook/directive_matching.ts","../../../projects/view-angular/lib/hook/selector.ts","../../../projects/view-angular/lib/component/dynamic-define.component.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/ng_component_outlet.ts","../../../projects/view-angular/lib/util/async-cache.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/wrapper-base.component.ts","../../../projects/view-angular/lib/schema/action/raw-config.ts","../../../projects/view-angular/lib/schema/action/directive.ts","../../../projects/view-angular/lib/component/form/control.base.component.ts","../../../projects/view-angular/piying-view-angular.ts"],"sourcesContent":["/** component */\n\nimport { InjectionToken, Signal, EventEmitter } from '@angular/core';\nimport { DynamicComponentConfig } from './component';\nimport { PiResolvedViewFieldConfig } from './group';\n\n/** wrapper中可以使用,已解析的配置 */\nexport const PI_VIEW_FIELD_TOKEN = new InjectionToken<\n Signal<PiResolvedViewFieldConfig>\n>('PI_VIEW_FIELD_TOKEN');\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, input, TemplateRef } 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}\n","import { ChangeDetectionStrategy, Component } 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","@for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"fieldTemplateRef(); context: { $implicit: field }\"\n ></ng-container>\n}\n","import { ConfigMergeStrategyObject } from './type';\n\nexport const EMPTY_ARRAY = [];\nexport const NG_CONFIG_DEFAULT_MERGE_STRAGEGY: ConfigMergeStrategyObject = {\n directives: 'merge',\n formConfig: 'merge',\n inputs: 'merge',\n outputs: 'merge',\n props: 'merge',\n renderConfig: 'merge',\n wrappers: 'replace',\n attributes: 'merge',\n};\n","import { DynamicComponentConfig } from '../type/component';\n\nexport function getComponentCheckConfig(a: DynamicComponentConfig) {\n return {\n ...a,\n inputs: Object.keys(a.inputs() ?? {}).join(','),\n // todo 需要等修改为动态的再比较key\n attributes: Object.entries(a.attributes() ?? {})\n .map((key, value) => `${key}:${value}`)\n .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 contents: a.contents?.map((item) => ({ ...item, text: !!item.text })),\n };\n}\n\nexport type ComponentCheckConfig = ReturnType<typeof getComponentCheckConfig>;\n","//packages/compiler/src/directive_matching.ts\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\nconst _SELECTOR_REGEXP = new RegExp(\n '(\\\\:not\\\\()|' + // 1: \":not(\"\n '(([\\\\.\\\\#]?)[-\\\\w]+)|' + // 2: \"tag\"; 3: \".\"/\"#\";\n // \"-\" should appear first in the regexp below as FF31 parses \"[.-\\w]\" as a range\n // 4: attribute; 5: attribute_string; 6: attribute_value\n '(?:\\\\[([-.\\\\w*\\\\\\\\$]+)(?:=([\"\\']?)([^\\\\]\"\\']*)\\\\5)?\\\\])|' + // \"[name]\", \"[name=value]\",\n // \"[name=\"value\"]\",\n // \"[name='value']\"\n '(\\\\))|' + // 7: \")\"\n '(\\\\s*,\\\\s*)', // 8: \",\"\n 'g',\n);\n\n/**\n * These offsets should match the match-groups in `_SELECTOR_REGEXP` offsets.\n */\nconst enum SelectorRegexp {\n ALL = 0, // The whole match\n NOT = 1,\n TAG = 2,\n PREFIX = 3,\n ATTRIBUTE = 4,\n ATTRIBUTE_STRING = 5,\n ATTRIBUTE_VALUE = 6,\n NOT_END = 7,\n SEPARATOR = 8,\n}\n/**\n * A css selector contains an element name,\n * css classes and attribute/value pairs with the purpose\n * of selecting subsets out of them.\n */\nexport class CssSelector {\n element: string | null = null;\n classNames: string[] = [];\n /**\n * The selectors are encoded in pairs where:\n * - even locations are attribute names\n * - odd locations are attribute values.\n *\n * Example:\n * Selector: `[key1=value1][key2]` would parse to:\n * ```\n * ['key1', 'value1', 'key2', '']\n * ```\n */\n attrs: string[] = [];\n notSelectors: CssSelector[] = [];\n\n static parse(selector: string): CssSelector[] {\n const results: CssSelector[] = [];\n const _addResult = (res: CssSelector[], cssSel: CssSelector) => {\n if (\n cssSel.notSelectors.length > 0 &&\n !cssSel.element &&\n cssSel.classNames.length == 0 &&\n cssSel.attrs.length == 0\n ) {\n cssSel.element = '*';\n }\n res.push(cssSel);\n };\n let cssSelector = new CssSelector();\n let match: string[] | null;\n let current = cssSelector;\n let inNot = false;\n _SELECTOR_REGEXP.lastIndex = 0;\n while ((match = _SELECTOR_REGEXP.exec(selector))) {\n if (match[SelectorRegexp.NOT]) {\n if (inNot) {\n throw new Error('Nesting :not in a selector is not allowed');\n }\n inNot = true;\n current = new CssSelector();\n cssSelector.notSelectors.push(current);\n }\n const tag = match[SelectorRegexp.TAG];\n if (tag) {\n const prefix = match[SelectorRegexp.PREFIX];\n if (prefix === '#') {\n // #hash\n current.addAttribute('id', tag.slice(1));\n } else if (prefix === '.') {\n // Class\n current.addClassName(tag.slice(1));\n } else {\n // Element\n current.setElement(tag);\n }\n }\n const attribute = match[SelectorRegexp.ATTRIBUTE];\n\n if (attribute) {\n current.addAttribute(\n current.unescapeAttribute(attribute),\n match[SelectorRegexp.ATTRIBUTE_VALUE],\n );\n }\n if (match[SelectorRegexp.NOT_END]) {\n inNot = false;\n current = cssSelector;\n }\n if (match[SelectorRegexp.SEPARATOR]) {\n if (inNot) {\n throw new Error('Multiple selectors in :not are not supported');\n }\n _addResult(results, cssSelector);\n cssSelector = current = new CssSelector();\n }\n }\n _addResult(results, cssSelector);\n return results;\n }\n\n /**\n * Unescape `\\$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * but we might want to match an attribute that contains `$`.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to unescape.\n * @returns the unescaped string.\n */\n unescapeAttribute(attr: string): string {\n let result = '';\n let escaping = false;\n for (let i = 0; i < attr.length; i++) {\n const char = attr.charAt(i);\n if (char === '\\\\') {\n escaping = true;\n continue;\n }\n if (char === '$' && !escaping) {\n throw new Error(\n `Error in attribute selector \"${attr}\". ` +\n `Unescaped \"$\" is not supported. Please escape with \"\\\\$\".`,\n );\n }\n escaping = false;\n result += char;\n }\n return result;\n }\n\n /**\n * Escape `$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * with this method we are escaping `$` with `\\$'.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to escape.\n * @returns the escaped string.\n */\n escapeAttribute(attr: string): string {\n return attr.replace(/\\\\/g, '\\\\\\\\').replace(/\\$/g, '\\\\$');\n }\n\n setElement(element: string | null = null) {\n this.element = element;\n }\n\n addAttribute(name: string, value: string = '') {\n this.attrs.push(name, (value && value.toLowerCase()) || '');\n }\n\n addClassName(name: string) {\n this.classNames.push(name.toLowerCase());\n }\n\n toString(): string {\n let res: string = this.element || '';\n if (this.classNames) {\n this.classNames.forEach((klass) => (res += `.${klass}`));\n }\n if (this.attrs) {\n for (let i = 0; i < this.attrs.length; i += 2) {\n const name = this.escapeAttribute(this.attrs[i]);\n const value = this.attrs[i + 1];\n res += `[${name}${value ? '=' + value : ''}]`;\n }\n }\n this.notSelectors.forEach((notSelector) => (res += `:not(${notSelector})`));\n return res;\n }\n}\n","import { CssSelector } from './directive_matching';\n// packages/compiler/src/core.ts\n/**\n * Flags used to generate R3-style CSS Selectors. They are pasted from\n * core/src/render3/projection.ts because they cannot be referenced directly.\n */\nconst enum SelectorFlags {\n /** Indicates this is the beginning of a new negative selector */\n NOT = 0b0001,\n\n /** Mode for matching attributes */\n ATTRIBUTE = 0b0010,\n\n /** Mode for matching tag names */\n ELEMENT = 0b0100,\n\n /** Mode for matching class names */\n CLASS = 0b1000,\n}\n\n// These are a copy the CSS types from core/src/render3/interfaces/projection.ts\n// They are duplicated here as they cannot be directly referenced from core.\ntype R3CssSelector = (string | SelectorFlags)[];\ntype R3CssSelectorList = R3CssSelector[];\n\nfunction parserSelectorToSimpleSelector(selector: CssSelector): R3CssSelector {\n const classes =\n selector.classNames && selector.classNames.length\n ? [SelectorFlags.CLASS, ...selector.classNames]\n : [];\n const elementName =\n selector.element && selector.element !== '*' ? selector.element : '';\n return [elementName, ...selector.attrs, ...classes];\n}\n\nfunction parserSelectorToNegativeSelector(\n selector: CssSelector,\n): R3CssSelector {\n const classes =\n selector.classNames && selector.classNames.length\n ? [SelectorFlags.CLASS, ...selector.classNames]\n : [];\n\n if (selector.element) {\n return [\n SelectorFlags.NOT | SelectorFlags.ELEMENT,\n selector.element,\n ...selector.attrs,\n ...classes,\n ];\n } else if (selector.attrs.length) {\n return [\n SelectorFlags.NOT | SelectorFlags.ATTRIBUTE,\n ...selector.attrs,\n ...classes,\n ];\n } else {\n return selector.classNames && selector.classNames.length\n ? [SelectorFlags.NOT | SelectorFlags.CLASS, ...selector.classNames]\n : [];\n }\n}\n\nfunction parserSelectorToR3Selector(selector: CssSelector): R3CssSelector {\n const positive = parserSelectorToSimpleSelector(selector);\n\n const negative: R3CssSelectorList =\n selector.notSelectors && selector.notSelectors.length\n ? selector.notSelectors.map((notSelector) =>\n parserSelectorToNegativeSelector(notSelector),\n )\n : [];\n\n return positive.concat(...negative);\n}\n\nexport function parseSelectorToR3Selector(\n selector: string | null,\n): R3CssSelectorList {\n return selector\n ? CssSelector.parse(selector).map(parserSelectorToR3Selector)\n : [];\n}\n","import {\n ɵɵdefineComponent,\n ɵɵelementStart,\n ɵɵtwoWayBindingSet,\n ɵɵelementEnd,\n ɵɵtwoWayProperty,\n Type,\n Signal,\n ɵɵproperty,\n ɵɵlistener,\n WritableSignal,\n viewChild,\n TemplateRef,\n ɵRenderFlags,\n ɵɵtemplate,\n ɵɵviewQuerySignal,\n ɵɵqueryAdvance,\n reflectComponentType,\n ElementRef,\n ɵɵprojectionDef,\n ɵɵprojection,\n ɵɵtext,\n ɵɵtextInterpolate,\n computed,\n ɵɵclassMap,\n} from '@angular/core';\nimport { ComponentContent } from '../type/component';\nimport { parseSelectorToR3Selector } from '../hook/selector';\nimport {\n CoreRawViewAttributes,\n CoreRawViewOutputs,\n} from '@piying/view-angular-core';\n\nexport type DirectiveConfig<T = any> = {\n /** string表示是标签,type<any>是组件或者指令 */\n type: Type<T> | string;\n inputs?: Signal<Record<string, any>>;\n outputs?: CoreRawViewOutputs;\n model?: Record<string, WritableSignal<any>>;\n selector?: string;\n attributes?: Signal<CoreRawViewAttributes | undefined>;\n contents?: ComponentContent;\n};\ntype InputDirectives = DirectiveConfig[];\nfunction parseDirectives(\n component: InputDirectives[number],\n list: InputDirectives,\n) {\n let vars = 0;\n const consts: (string | number)[] = [];\n const directiveList: Type<any>[] = [];\n const propertyList: { signal: Signal<any>; keyList: string[] }[] = [];\n const listenerList = [];\n const modelList = [];\n let classData: Signal<any> | undefined;\n let elementTag: string;\n if (typeof component.type === 'string') {\n elementTag = component.type;\n } else {\n const componentDefine = reflectComponentType(component.type);\n elementTag = component.selector ?? componentDefine!.selector;\n directiveList.push(component.type);\n }\n if (!elementTag) {\n throw new Error('未找到元素对应的选择器');\n }\n const attributes = component.attributes?.();\n if (attributes) {\n for (const key in attributes) {\n if (key === 'class') {\n classData = computed(() => component.attributes!()![key]);\n vars += 2;\n continue;\n }\n consts.push(key, attributes[key]);\n }\n }\n const mergedList = [component, ...list];\n for (let i = 0; i < mergedList.length; i++) {\n const item = mergedList[i];\n if (i > 0) {\n directiveList.push(item.type as Type<any>);\n const define = (item.type as any)['ɵdir'];\n const selectors = define.selectors as string[][];\n const selector =\n item.selector ??\n selectors.find(\n (selectorList) =>\n selectorList.length === 3 &&\n selectorList[0] === '' &&\n selectorList[2] === '',\n )![1];\n if (\n ((item.inputs && !(selector in item.inputs())) || !item.inputs) &&\n ((item.model && !(selector in item.model)) || !item.model)\n ) {\n consts.push(selector, '');\n }\n }\n if (item.inputs) {\n propertyList[i] = { signal: item.inputs, keyList: [] };\n for (const key in item.inputs()) {\n vars++;\n propertyList[i].keyList.push(key);\n }\n }\n for (const key in item.outputs) {\n listenerList.push({\n eventName: key,\n listenerFn: item.outputs[key],\n });\n }\n for (const key in item.model) {\n vars++;\n modelList.push({\n key: key,\n eventName: `${key}Change`,\n signal: item.model[key],\n });\n }\n }\n // packages/core/src/render3/interfaces/attribute_marker.ts\n consts.push(3);\n consts.push(\n ...new Set([\n ...listenerList.map(({ eventName }) => eventName),\n ...modelList.map(({ eventName }) => eventName),\n ]),\n );\n consts.push(\n ...new Set([\n ...propertyList.flatMap((item) => item.keyList),\n ...modelList.map(({ key }) => key),\n ]),\n );\n return {\n vars,\n consts: [['el', ''], consts],\n directiveList,\n propertyList: propertyList,\n listenerList: listenerList,\n modelList,\n elementTag,\n classData,\n };\n}\n/** 常量不变 */\nconst EL_QUERY = ['el'] as ['el'];\nlet index = 0;\nexport function createDynamicComponentDefine<T extends DirectiveConfig>(\n component: T,\n directives: InputDirectives,\n) {\n const result = parseDirectives(component, directives);\n let contentArray: '*'[] | undefined;\n let contentData;\n if (component.contents?.length) {\n contentArray = new Array(component.contents!.length).fill('*');\n contentData;\n }\n function templateFn(rf: ɵRenderFlags, ctx: any) {\n if (rf & 1) {\n ɵɵelementStart(0, result.elementTag, 1, 0);\n result.listenerList.reduce(\n (fn, item) => fn(item.eventName, item.listenerFn),\n ɵɵlistener,\n );\n result.modelList.reduce(\n (fn, item) =>\n fn(item.eventName, (value) => {\n ɵɵtwoWayBindingSet(item.signal, value);\n })!,\n ɵɵlistener,\n );\n if (component.contents?.length) {\n component.contents.forEach((item, index) => {\n if (item.select) {\n ɵɵprojection(\n index + 2,\n index,\n [\n 'ngProjectAs',\n item.select,\n 5,\n parseSelectorToR3Selector(item.select)[0] as any,\n ],\n item.text\n ? (rf, ctx) => {\n if (rf & 1) {\n ɵɵtext(0);\n }\n if (rf & 2) {\n ɵɵtextInterpolate(item.text!());\n }\n }\n : undefined,\n item.text ? 1 : undefined,\n item.text ? 1 : undefined,\n );\n } else {\n ɵɵprojection(index + 1, index);\n }\n });\n }\n ɵɵelementEnd();\n }\n if (rf & 2) {\n if (result.classData) {\n ɵɵclassMap(result.classData());\n }\n result.propertyList.reduce((fn, { signal, keyList }) => {\n const value = signal();\n return keyList.reduce((fn, key) => fn(key, value[key]), fn);\n }, ɵɵproperty);\n result.modelList.reduce(\n (fn, item) => fn(item.key, item.signal)!,\n ɵɵtwoWayProperty,\n );\n }\n }\n return class D {\n templateRef = viewChild.required(TemplateRef) as any as Signal<\n TemplateRef<any>\n >;\n componentInstance = viewChild('el') as any as Signal<\n | (T['type'] extends string ? ElementRef<HTMLElement> : T['type'])\n | undefined\n >;\n elementRef = viewChild('el', { read: ElementRef }) as any as Signal<\n ElementRef<HTMLElement> | undefined\n >;\n directiveRefList = directives.map(\n ({ type }) =>\n viewChild('el', { read: type as any }) as any as Signal<any>,\n );\n static ɵfac = (_: any) => new (_ || D)();\n static ɵcmp = ɵɵdefineComponent({\n type: D,\n selectors: [[`d-${index++}`]],\n ngContentSelectors: contentArray,\n decls: 1,\n vars: 0,\n consts: result.consts,\n template: (rf, ctx) => {\n if (rf & 1) {\n if (contentArray) {\n ɵɵprojectionDef(contentArray);\n }\n ɵɵtemplate(\n 0,\n templateFn,\n 2 + (component.contents?.length ?? 0),\n result.vars,\n 'ng-template',\n );\n }\n },\n viewQuery: (rf, ctx) => {\n if (rf & 1) {\n ɵɵviewQuerySignal(ctx.templateRef, TemplateRef, 5 as any);\n ɵɵviewQuerySignal(ctx.componentInstance, EL_QUERY, 5 as any);\n ɵɵviewQuerySignal(ctx.elementRef, EL_QUERY, 5 as any, ElementRef);\n directives.forEach(({ type }, index) => {\n ɵɵviewQuerySignal(\n ctx.directiveRefList[index],\n EL_QUERY,\n 5 as any,\n type as any,\n );\n });\n }\n if (rf & 2) {\n ɵɵqueryAdvance(3 + directives.length);\n }\n },\n dependencies: result.directiveList,\n encapsulation: 2,\n changeDetection: 0,\n });\n };\n}\n","import {\n computed,\n createComponent,\n Directive,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n inject,\n Injector,\n signal,\n Signal,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { PiResolvedViewFieldConfig } from '../type';\nimport { ComponentContent, DynamicComponentConfig } from '../type/component';\nimport {\n ComponentCheckConfig,\n getComponentCheckConfig,\n} from '../util/component-config.equal';\nimport { createDynamicComponentDefine } from './dynamic-define.component';\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';\nconst EmptyOBJ = {};\n@Directive()\nexport class BaseComponent {\n /** 第一次默认为空 */\n #index = inject(PI_COMPONENT_INDEX, { optional: true })!;\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 /** 比较时使用 */\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 attributes?: Signal<Record<string, any>>;\n directiveList?: (Signal<Record<string, any>> | undefined)[];\n };\n #contentCache!: ComponentContent | undefined;\n\n #configUpdate$ = signal(0);\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.#componentConfig = componentConfig;\n this.#inputCache = {\n inputs: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.inputs!() ?? EmptyOBJ;\n }),\n attributes: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.attributes!() ?? EmptyOBJ;\n }),\n directiveList: this.#componentConfig?.directives?.map((config, index) =>\n config.inputs\n ? computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.directives![index].inputs!();\n })\n : undefined,\n ),\n };\n this.#contentCache = componentConfig.contents?.map((item, index) => {\n if (item.text) {\n return {\n ...item,\n text: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig.contents![index].text!();\n }),\n };\n }\n return item;\n });\n this.#setComponentCheck(componentConfig);\n const SidecarComponent = createDynamicComponentDefine(\n {\n ...componentConfig,\n inputs: this.#inputCache.inputs,\n attributes: this.#inputCache.attributes,\n contents: this.#contentCache,\n },\n componentConfig.directives?.map((config, index) => ({\n ...config,\n inputs: this.#inputCache.directiveList![index],\n })) ?? [],\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 componentRef = createComponent(SidecarComponent, {\n elementInjector: componentInjector,\n environmentInjector: componentInjector.get(EnvironmentInjector),\n projectableNodes: componentConfig.contents\n ?.map(({ nodes }) => nodes!)\n .filter(Boolean),\n });\n // todo 这里需不需要加注入?\n viewContainerRef.createEmbeddedView(componentRef.instance.templateRef());\n\n this.fieldComponentInstance = componentRef.instance.componentInstance()!;\n this.fieldElementRef = componentRef.instance.elementRef()!;\n this.fieldDirectiveRefList = componentRef.instance.directiveRefList.map(\n (item) => item(),\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 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: false,\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","import {\n computed,\n createNgModule,\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 RawDirectiveOutputs,\n ComponentContent,\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 { deepEqual } from 'fast-equals';\nimport { FieldControl } from '@piying/view-angular-core';\nimport { PI_COMPONENT_INDEX, PI_VIEW_FIELD_TOKEN } from '../type/view-token';\nimport { FieldControlDirective } from '../directives/field-control-directive';\n\n@Directive({\n selector: '[ngComponentOutlet]',\n exportAs: 'ngComponentOutlet',\n standalone: true,\n})\nexport class NgComponentOutlet<T = any>\n extends BaseComponent\n implements OnChanges, OnDestroy\n{\n /** 输入 */\n ngComponentOutlet = input<NgResolvedComponentDefine2>();\n ngComponentOutletInputs = input<Record<string, unknown>>();\n ngComponentOutletOutputs = input<RawDirectiveOutputs>();\n ngComponentOutletInjector = input<Injector>();\n ngComponentOutletContent = input<ComponentContent>();\n /** 控件用 */\n ngComponentOutletFormControl = input<FieldControl>();\n /** 包裹用 */\n ngComponentOutletWrappers = input<NgResolvedWraaperConfig[]>();\n ngComponentOutletTopDirectives = input<DirectiveConfig[]>();\n ngComponentOutletDirectives =\n input<PiResolvedViewFieldConfig['directives']>();\n\n ngComponentOutletField = input.required<PiResolvedViewFieldConfig>();\n #viewContainerRef = inject(ViewContainerRef);\n // 这里感觉会在非发射时出现多次输入?\n #wrappers = computed(() =>\n this.ngComponentOutletWrappers()?.map((item) => ({\n ...item,\n type: item.type.component,\n module: item.type.module,\n })),\n );\n #onputEqual$$ = computed(() => this.ngComponentOutletOutputs(), {\n equal: deepEqual,\n });\n\n #moduleDestroy?: () => void;\n\n #moduleRef$$ = computed(() => {\n this.#moduleDestroy?.();\n const injector = this.ngComponentOutletInjector() || this.#injector;\n const module = this.ngComponentOutlet()?.type.module;\n if (!module) {\n return;\n }\n const moduleRef = createNgModule(module, injector);\n this.#moduleDestroy = () => {\n moduleRef.destroy();\n this.#moduleDestroy = undefined;\n };\n return moduleRef;\n });\n #usedEnvInjector$$ = computed(() => {\n const injector =\n this.#moduleRef$$()?.injector ??\n (this.ngComponentOutletInjector() || this.#injector);\n return Injector.create({\n providers: [\n {\n provide: PI_VIEW_FIELD_TOKEN,\n useValue: this.ngComponentOutletField,\n },\n {\n provide: PI_COMPONENT_INDEX,\n useValue: 0,\n },\n ],\n parent: injector,\n }).get(Injector);\n });\n #injector = inject(Injector);\n #formControlDirectiveConfig$$ = computed(() => {\n const fieldControl = this.ngComponentOutletFormControl();\n return fieldControl\n ? ({\n type: FieldControlDirective,\n inputs: computed(() => ({ 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\n #componentConfig$$ = computed(() => {\n const define = this.ngComponentOutlet();\n if (!define) {\n return;\n }\n const directives = this.#directiveConfigList$$();\n return {\n ...define!,\n type: define!.type.component,\n module: define!.type.module,\n inputs: this.ngComponentOutletInputs,\n directives: directives\n ? directives.map((item) => {\n const outputs = item.outputs;\n if (outputs) {\n return {\n ...item,\n outputs: outputs,\n };\n }\n return item;\n })\n : undefined,\n outputs: this.#onputEqual$$(),\n contents: this.ngComponentOutletContent(),\n } as DynamicComponentConfig;\n });\n #componentList$$ = computed(() => {\n const componentConfig = this.#componentConfig$$();\n if (!componentConfig) {\n return EMPTY_ARRAY;\n }\n const injector = this.#usedEnvInjector$$();\n const list: DynamicComponentConfig[] = [\n ...(this.#wrappers() ?? []),\n componentConfig,\n ];\n\n list[0] = { ...list[0], injector };\n\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.#moduleDestroy?.();\n this.destroyComponentFn?.();\n }\n}\n","import {\n computed,\n Injector,\n reflectComponentType,\n resource,\n Type,\n untracked,\n} from '@angular/core';\nimport { NgResolvedComponentDefine2 } from '../type/component';\nimport { NgResolvedComponentDefine1 } from '../type';\nimport { getLazyImport, isLazyMark } from '@piying/view-angular-core';\nfunction isComponentType(input: any): input is Type<any> {\n return !!reflectComponentType(input as any);\n}\nexport function createAsyncCache<One extends boolean, Result>(\n one: One,\n injector: Injector,\n) {\n const loading = new Map<any, Promise<Result>>();\n const cached = new Map<any, Result>();\n return (\n list:\n | (One extends true\n ? NgResolvedComponentDefine2\n : NgResolvedComponentDefine2[])\n | undefined,\n ) =>\n untracked(() => {\n if (!list) {\n return { value: computed(() => undefined) };\n }\n let hasPromise = false;\n const result = (\n ((one as One) ? [list] : list) as any as NgResolvedComponentDefine1[]\n ).map((item) => {\n if (cached.has(item)) {\n return cached.get(item)!;\n } else if (loading.has(item)) {\n hasPromise = true;\n return loading.get(item)!;\n }\n const resolved = item;\n const type = resolved.type;\n if (typeof type === 'string' || isComponentType(type)) {\n const result = { ...resolved, type: { component: type } };\n cached.set(item, result as any);\n return result;\n } else if (typeof type === 'function' || isLazyMark(type)) {\n hasPromise = true;\n const result$$ = getLazyImport<() => Promise<any>>(type)!().then(\n (value) => {\n const result = {\n ...resolved,\n type: isComponentType(value) ? { component: value } : value,\n } as any;\n cached.set(item, result);\n loading.delete(item);\n return result;\n },\n );\n loading.set(item, result$$);\n return result$$;\n } else {\n return resolved;\n }\n });\n if (hasPromise) {\n return resource<Result, undefined>({\n loader: async () => (one ? result[0] : Promise.all(result)) as any,\n injector: injector,\n });\n } else {\n return {\n value: computed<Result>(() => (one ? result[0] : result) as any),\n };\n }\n });\n}\n","import {\n PiComponentDefaultConfig,\n PiResolvedViewFieldConfig,\n ConfigMergeStrategyObject,\n PiViewConfig,\n NgResolvedComponentDefine1,\n} from './type';\nimport { inject, Injectable, Type } from '@angular/core';\n\nimport { FormBuilder, PI_VIEW_CONFIG_TOKEN } from '@piying/view-angular-core';\nimport { NG_CONFIG_DEFAULT_MERGE_STRAGEGY } from './const';\nimport { NgSchemaHandle } from './schema/ng-schema';\n\n@Injectable()\nexport class AngularFormBuilder extends FormBuilder<NgSchemaHandle> {\n #globalConfig: PiViewConfig = inject(PI_VIEW_CONFIG_TOKEN) as any;\n override afterResolveConfig(\n rawConfig: NgSchemaHandle,\n config: PiResolvedViewFieldConfig,\n ): PiResolvedViewFieldConfig {\n const field = rawConfig;\n const type = rawConfig.type;\n let componentDefaultConfig: PiComponentDefaultConfig | undefined;\n let define;\n const mergeStrategy = this.#globalConfig\n .defaultConfigMergeStrategy as ConfigMergeStrategyObject;\n\n if (type) {\n const result = this.#resolveComponent(type);\n define = result.define;\n componentDefaultConfig = result.defaultConfig;\n }\n\n const directives = this.configMerge(\n [componentDefaultConfig?.directives, field.directives],\n true,\n mergeStrategy?.directives ?? NG_CONFIG_DEFAULT_MERGE_STRAGEGY.directives,\n );\n return {\n ...config,\n contents: field.contents?.sort((a, b) =>\n a.nodes && b.nodes ? 0 : a.nodes ? -1 : 1,\n ),\n directives: directives,\n };\n }\n\n #resolveComponent(type: string | Type<any> | (() => Promise<Type<any>>)) {\n let define;\n let defaultConfig;\n // 查引用\n if (typeof type === 'string') {\n const config = this.#globalConfig.types?.[type];\n if (!config) {\n throw new Error(`未注册${type}`);\n }\n defaultConfig = config;\n if (Object.keys(config).length) {\n define = {\n ...config,\n } as NgResolvedComponentDefine1;\n }\n } else {\n // 直接使用视为独立组件,并且selector只有一个\n define = { type } as NgResolvedComponentDefine1;\n }\n return {\n define,\n defaultConfig,\n };\n }\n}\n","import { CoreSchemaHandle } from '@piying/view-angular-core';\nimport { PiResolvedViewFieldConfig, NgDirectiveConfig } from '../type';\nimport { ComponentContent } from '../type/component';\n\nexport class NgSchemaHandle extends CoreSchemaHandle<\n NgSchemaHandle,\n () => PiResolvedViewFieldConfig\n> {\n declare type?: any;\n contents?: ComponentContent;\n directives?: 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 createEnvironmentInjector,\n DestroyRef,\n EnvironmentInjector,\n inject,\n Injector,\n input,\n OnChanges,\n output,\n signal,\n SimpleChanges,\n TemplateRef,\n untracked,\n} from '@angular/core';\nimport { NgComponentOutlet } from './hook/ng_component_outlet';\n\nimport {\n PiViewConfig,\n PiResolvedViewFieldConfig,\n NgResolvedWraaperConfig,\n} from './type';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NgResolvedComponentDefine2 } from './type/component';\nimport { createAsyncCache } from './util/async-cache';\nimport {\n convert,\n FieldArray,\n FieldControl,\n FieldGroup,\n initListen,\n isFieldArray,\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 as any,\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 schema = input.required<\n v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>\n >();\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 #envInjector = inject(EnvironmentInjector);\n #builderEnvInjector?: EnvironmentInjector;\n resolvedField$ = signal<PiResolvedViewFieldConfig | undefined>(undefined);\n #listenDispose?: () => void;\n\n #updateField() {\n this.#clean();\n // 临时销毁\n const envInjector = createEnvironmentInjector([], this.#envInjector);\n this.#builderEnvInjector = envInjector;\n const result = convert<PiResolvedViewFieldConfig>(this.schema() as any, {\n ...DefaultConvertOptions,\n ...this.options(),\n injector: envInjector,\n registerOnDestroy: (fn) => {\n envInjector.get(DestroyRef).onDestroy(() => {\n fn();\n });\n },\n });\n this.resolvedField$.set(result);\n return result;\n }\n #clean() {\n if (this.#builderEnvInjector) {\n this.#builderEnvInjector.destroy();\n this.#builderEnvInjector = 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 = (\n inputs: PiResolvedViewFieldConfig['inputs'],\n\n fieldTemplateRef: TemplateRef<any>,\n ) =>\n computed(() => ({\n ...inputs(),\n fieldTemplateRef,\n }));\n\n resolvedComponent = createAsyncCache<true, NgResolvedComponentDefine2>(\n true,\n this.#injector,\n );\n // 这里的组件还是不准确,因为type已经改了,\n resolvedWrapper = createAsyncCache<false, NgResolvedWraaperConfig[]>(\n false,\n this.#injector,\n );\n\n groupHidden = (field: PiResolvedViewFieldConfig) =>\n computed(() => this.#groupHidden(field));\n #groupHidden(field: PiResolvedViewFieldConfig): boolean {\n if (isFieldArray(field.form.control) || field.restChildren) {\n return false;\n }\n if (field.fixedChildren) {\n if (!field.fixedChildren?.().length) {\n return true;\n } else {\n return field.fixedChildren().every((field) => this.#groupHidden(field));\n }\n } else {\n return !field.define || !!field.renderConfig().hidden;\n }\n }\n ngOnDestroy(): void {\n this.#listenDispose?.();\n }\n}\n","<ng-template #dynamicComponent let-field>\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @let typeResource = resolvedComponent | pure: field.define;\n @let type = typeResource.value();\n @let wrappersResource = resolvedWrapper | pure: field.wrappers();\n @let wrappers = wrappersResource.value();\n @if (type) {\n @if (field.fixedChildren || field.restChildren) {\n @if (!(groupHidden | pure: field)()) {\n <!-- 自定义group -->\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"\n (groupInputsValue | pure: field.inputs : dynamicComponent)?.()\n \"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n } @else {\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"field.inputs()\"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n [ngComponentOutletContent]=\"field.contents\"\n ></ng-container>\n }\n }\n }\n</ng-template>\n\n@if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"dynamicComponent; context: { $implicit: field }\"\n ></ng-container>\n}\n","import {\n computed,\n Directive,\n inject,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { BaseComponent } from './base.component';\nimport {\n PI_COMPONENT_LIST,\n PI_COMPONENT_LIST_LISTEN,\n PI_VIEW_FIELD_TOKEN,\n} from '../type/view-token';\n\n@Directive()\nexport class PiyingViewWrapperBase extends BaseComponent {\n fieldComponentAnchor = viewChild('fieldComponent', {\n read: ViewContainerRef,\n });\n field$$ = inject(PI_VIEW_FIELD_TOKEN);\n props$$ = computed(() => this.field$$().props());\n #listen = inject(PI_COMPONENT_LIST_LISTEN);\n #list = inject(PI_COMPONENT_LIST);\n override createComponent() {\n const result = super.createComponent(\n this.#list,\n this.fieldComponentAnchor()!,\n );\n this.#listen.subscribe((list) => {\n this.update(list);\n });\n return result;\n }\n ngOnInit(): void {\n this.createComponent();\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 _PiResolvedCommonViewFieldConfig,\n asyncInputMerge,\n mergeHooksFn,\n} from '@piying/view-angular-core';\nimport { NgDirectiveConfig } from '../../type';\nimport { rawConfig } from './raw-config';\nimport { NgSchemaHandle } from '../ng-schema';\nimport { linkedSignal, signal } from '@angular/core';\n\nexport function setDirectives<T>(items: NgDirectiveConfig[]) {\n return rawConfig<T>((field) => {\n field.directives = items;\n });\n}\nexport function patchDirectives<T>(items: NgDirectiveConfig[]) {\n return rawConfig<T>((field) => {\n field.directives ??= [];\n field.directives.push(...items);\n });\n}\nexport function patchAsyncDirective<T>(\n fn: (\n field: _PiResolvedCommonViewFieldConfig,\n ) => Omit<NgDirectiveConfig, 'inputs'> & { inputs?: Record<string, any> },\n) {\n return rawConfig<T>((field) => {\n mergeHooksFn<NgSchemaHandle>(\n {\n fieldResolved: (field) => {\n field.directives ??= signal([]);\n const directive = fn(field);\n const inputs = directive.inputs;\n let inputs$ = signal<Record<string, any>>({});\n if (inputs) {\n inputs$.set(\n Object.keys(inputs).reduce(\n (obj, key) => {\n obj[key] = undefined;\n return obj;\n },\n {} as Record<string, any>,\n ),\n );\n inputs$ = asyncInputMerge(inputs, inputs$);\n }\n const oldDirectives = field.directives;\n field.directives = linkedSignal(() => [\n ...oldDirectives(),\n { ...directive, inputs: inputs$ },\n ]);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n}\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: any) {\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 disabled$ = signal(false);\n setDisabledState(isDisabled: boolean): void {\n this.disabled$.set(isDisabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵɵelementStart","ɵɵlistener","ɵɵtwoWayBindingSet","ɵɵprojection","ɵɵtext","ɵɵtextInterpolate","ɵɵelementEnd","ɵɵclassMap","ɵɵproperty","ɵɵtwoWayProperty","ɵɵdefineComponent","ɵɵprojectionDef","ɵɵtemplate","ɵɵviewQuerySignal","ɵɵqueryAdvance","originRawConfig"],"mappings":";;;;;;;;AAAA;AAMA;MACa,mBAAmB,GAAG,IAAI,cAAc,CAEnD,qBAAqB;AAEvB;;;AAGG;MACU,iBAAiB,GAAG,IAAI,cAAc,CACjD,mBAAmB;MAER,kBAAkB,GAAG,IAAI,cAAc,CAClD,oBAAoB;MAET,wBAAwB,GAAG,IAAI,cAAc,CAExD,0BAA0B;;MCnBf,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,KAAK,CAAC,QAAQ,EAAoB;uGAN1C,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACSK,MAAO,eAAgB,SAAQ,mBAAmB,CAAA;uGAA3C,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,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ5B,iLAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,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,iLAAA,EAAA;;;AER1C,MAAM,WAAW,GAAG,EAAE;AACtB,MAAM,gCAAgC,GAA8B;AACzE,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,YAAY,EAAE,OAAO;AACrB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,UAAU,EAAE,OAAO;CACpB;;ACVK,SAAU,uBAAuB,CAAC,CAAyB,EAAA;IAC/D,OAAO;AACL,QAAA,GAAG,CAAC;AACJ,QAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;QAE/C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE;AAC5C,aAAA,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,EAAE;aACrC,IAAI,CAAC,GAAG,CAAC;QACZ,UAAU,EAAE,CAAC,CAAC;AACZ,cAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AAC5B,gBAAA,GAAG,MAAM;gBACT,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA,CAAE;AACzE,aAAA,CAAC;AACJ,cAAE,SAAS;QACb,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACtE;AACH;;AClBA;AACA;;;;;;AAMG;AAEH,MAAM,gBAAgB,GAAG,IAAI,MAAM,CACjC,cAAc;AACZ,IAAA,uBAAuB;;;AAGvB,IAAA,0DAA0D;;;AAG1D,IAAA,QAAQ;AACR,IAAA,aAAa;AACf,GAAG,CACJ;AAED;;AAEG;AACH,IAAW,cAUV;AAVD,CAAA,UAAW,cAAc,EAAA;AACvB,IAAA,cAAA,CAAA,cAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,cAAA,CAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAoB;AACpB,IAAA,cAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAmB;AACnB,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACf,CAAC,EAVU,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;AAWzB;;;;AAIG;MACU,WAAW,CAAA;IACtB,OAAO,GAAkB,IAAI;IAC7B,UAAU,GAAa,EAAE;AACzB;;;;;;;;;;AAUG;IACH,KAAK,GAAa,EAAE;IACpB,YAAY,GAAkB,EAAE;IAEhC,OAAO,KAAK,CAAC,QAAgB,EAAA;QAC3B,MAAM,OAAO,GAAkB,EAAE;AACjC,QAAA,MAAM,UAAU,GAAG,CAAC,GAAkB,EAAE,MAAmB,KAAI;AAC7D,YAAA,IACE,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAC9B,CAAC,MAAM,CAAC,OAAO;AACf,gBAAA,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;AAC7B,gBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EACxB;AACA,gBAAA,MAAM,CAAC,OAAO,GAAG,GAAG;YACtB;AACA,YAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAClB,QAAA,CAAC;AACD,QAAA,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE;AACnC,QAAA,IAAI,KAAsB;QAC1B,IAAI,OAAO,GAAG,WAAW;QACzB,IAAI,KAAK,GAAG,KAAK;AACjB,QAAA,gBAAgB,CAAC,SAAS,GAAG,CAAC;QAC9B,QAAQ,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG;AAChD,YAAA,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC7B,IAAI,KAAK,EAAE;AACT,oBAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;gBAC9D;gBACA,KAAK,GAAG,IAAI;AACZ,gBAAA,OAAO,GAAG,IAAI,WAAW,EAAE;AAC3B,gBAAA,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC;YACA,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;YACrC,IAAI,GAAG,EAAE;gBACP,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;AAC3C,gBAAA,IAAI,MAAM,KAAK,GAAG,EAAE;;AAElB,oBAAA,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1C;AAAO,qBAAA,IAAI,MAAM,KAAK,GAAG,EAAE;;oBAEzB,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpC;qBAAO;;AAEL,oBAAA,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBACzB;YACF;YACA,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC;YAEjD,IAAI,SAAS,EAAE;AACb,gBAAA,OAAO,CAAC,YAAY,CAClB,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,EACpC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CACtC;YACH;AACA,YAAA,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBACjC,KAAK,GAAG,KAAK;gBACb,OAAO,GAAG,WAAW;YACvB;AACA,YAAA,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;gBACnC,IAAI,KAAK,EAAE;AACT,oBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;gBACjE;AACA,gBAAA,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC;AAChC,gBAAA,WAAW,GAAG,OAAO,GAAG,IAAI,WAAW,EAAE;YAC3C;QACF;AACA,QAAA,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC;AAChC,QAAA,OAAO,OAAO;IAChB;AAEA;;;;;;;;;AASG;AACH,IAAA,iBAAiB,CAAC,IAAY,EAAA;QAC5B,IAAI,MAAM,GAAG,EAAE;QACf,IAAI,QAAQ,GAAG,KAAK;AACpB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3B,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,QAAQ,GAAG,IAAI;gBACf;YACF;AACA,YAAA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,gBAAA,MAAM,IAAI,KAAK,CACb,CAAA,6BAAA,EAAgC,IAAI,CAAA,GAAA,CAAK;AACvC,oBAAA,CAAA,yDAAA,CAA2D,CAC9D;YACH;YACA,QAAQ,GAAG,KAAK;YAChB,MAAM,IAAI,IAAI;QAChB;AACA,QAAA,OAAO,MAAM;IACf;AAEA;;;;;;;;;AASG;AACH,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;IAC1D;IAEA,UAAU,CAAC,UAAyB,IAAI,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;AAEA,IAAA,YAAY,CAAC,IAAY,EAAE,KAAA,GAAgB,EAAE,EAAA;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;IAC7D;AAEA,IAAA,YAAY,CAAC,IAAY,EAAA;QACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1C;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,GAAG,GAAW,IAAI,CAAC,OAAO,IAAI,EAAE;AACpC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC,CAAC;QAC1D;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,gBAAA,GAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,EAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,GAAG;YAC/C;QACF;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,MAAM,GAAG,IAAI,CAAA,KAAA,EAAQ,WAAW,CAAA,CAAA,CAAG,CAAC,CAAC;AAC3E,QAAA,OAAO,GAAG;IACZ;AACD;;AClMD;AACA;;;AAGG;AACH,IAAW,aAYV;AAZD,CAAA,UAAW,aAAa,EAAA;;AAEtB,IAAA,aAAA,CAAA,aAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAY;;AAGZ,IAAA,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAkB;;AAGlB,IAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAgB;;AAGhB,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAc;AAChB,CAAC,EAZU,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;AAmBxB,SAAS,8BAA8B,CAAC,QAAqB,EAAA;IAC3D,MAAM,OAAO,GACX,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC;UACvC,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,UAAU;UAC5C,EAAE;IACR,MAAM,WAAW,GACf,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,GAAG,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE;IACtE,OAAO,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC;AACrD;AAEA,SAAS,gCAAgC,CACvC,QAAqB,EAAA;IAErB,MAAM,OAAO,GACX,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC;UACvC,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,UAAU;UAC5C,EAAE;AAER,IAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;QACpB,OAAO;AACL,YAAA,aAAa,CAAC,GAAG,GAAG,aAAa,CAAC,OAAO;AACzC,YAAA,QAAQ,CAAC,OAAO;YAChB,GAAG,QAAQ,CAAC,KAAK;AACjB,YAAA,GAAG,OAAO;SACX;IACH;AAAO,SAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;QAChC,OAAO;AACL,YAAA,aAAa,CAAC,GAAG,GAAG,aAAa,CAAC,SAAS;YAC3C,GAAG,QAAQ,CAAC,KAAK;AACjB,YAAA,GAAG,OAAO;SACX;IACH;SAAO;QACL,OAAO,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC;AAChD,cAAE,CAAC,aAAa,CAAC,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,UAAU;cAChE,EAAE;IACR;AACF;AAEA,SAAS,0BAA0B,CAAC,QAAqB,EAAA;AACvD,IAAA,MAAM,QAAQ,GAAG,8BAA8B,CAAC,QAAQ,CAAC;IAEzD,MAAM,QAAQ,GACZ,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;AAC7C,UAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,KACpC,gCAAgC,CAAC,WAAW,CAAC;UAE/C,EAAE;AAER,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACrC;AAEM,SAAU,yBAAyB,CACvC,QAAuB,EAAA;AAEvB,IAAA,OAAO;UACH,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,0BAA0B;UAC1D,EAAE;AACR;;ACtCA,SAAS,eAAe,CACtB,SAAkC,EAClC,IAAqB,EAAA;IAErB,IAAI,IAAI,GAAG,CAAC;IACZ,MAAM,MAAM,GAAwB,EAAE;IACtC,MAAM,aAAa,GAAgB,EAAE;IACrC,MAAM,YAAY,GAAiD,EAAE;IACrE,MAAM,YAAY,GAAG,EAAE;IACvB,MAAM,SAAS,GAAG,EAAE;AACpB,IAAA,IAAI,SAAkC;AACtC,IAAA,IAAI,UAAkB;AACtB,IAAA,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;AACtC,QAAA,UAAU,GAAG,SAAS,CAAC,IAAI;IAC7B;SAAO;QACL,MAAM,eAAe,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC;QAC5D,UAAU,GAAG,SAAS,CAAC,QAAQ,IAAI,eAAgB,CAAC,QAAQ;AAC5D,QAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IACpC;IACA,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC;IAChC;AACA,IAAA,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI;IAC3C,IAAI,UAAU,EAAE;AACd,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC5B,YAAA,IAAI,GAAG,KAAK,OAAO,EAAE;AACnB,gBAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,SAAS,CAAC,UAAW,EAAG,CAAC,GAAG,CAAC,CAAC;gBACzD,IAAI,IAAI,CAAC;gBACT;YACF;YACA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC;IACF;IACA,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;AACvC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;AACT,YAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAiB,CAAC;YAC1C,MAAM,MAAM,GAAI,IAAI,CAAC,IAAY,CAAC,MAAM,CAAC;AACzC,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAuB;AAChD,YAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ;AACb,gBAAA,SAAS,CAAC,IAAI,CACZ,CAAC,YAAY,KACX,YAAY,CAAC,MAAM,KAAK,CAAC;AACzB,oBAAA,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE;oBACtB,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,CACxB,CAAC,CAAC,CAAC;YACP,IACE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;iBAC7D,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAC1D;AACA,gBAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3B;QACF;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YACtD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AAC/B,gBAAA,IAAI,EAAE;gBACN,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YACnC;QACF;AACA,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9B,YAAY,CAAC,IAAI,CAAC;AAChB,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9B,aAAA,CAAC;QACJ;AACA,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,EAAE;YACN,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,GAAG,EAAE,GAAG;gBACR,SAAS,EAAE,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACxB,aAAA,CAAC;QACJ;IACF;;AAEA,IAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACd,IAAA,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,GAAG,CAAC;AACT,QAAA,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC;AACjD,QAAA,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC;AAC/C,KAAA,CAAC,CACH;AACD,IAAA,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,GAAG,CAAC;AACT,QAAA,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC;AAC/C,QAAA,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AACnC,KAAA,CAAC,CACH;IACD,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAC5B,aAAa;AACb,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,YAAY,EAAE,YAAY;QAC1B,SAAS;QACT,UAAU;QACV,SAAS;KACV;AACH;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAW;AACjC,IAAI,KAAK,GAAG,CAAC;AACP,SAAU,4BAA4B,CAC1C,SAAY,EACZ,UAA2B,EAAA;IAE3B,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC;AACrD,IAAA,IAAI,YAA+B;AACnC,IAAA,IAAI,WAAW;AACf,IAAA,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC9B,QAAA,YAAY,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,QAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,QAAA,WAAW;IACb;AACA,IAAA,SAAS,UAAU,CAAC,EAAgB,EAAE,GAAQ,EAAA;AAC5C,QAAA,IAAI,EAAE,GAAG,CAAC,EAAE;YACVA,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,MAAM,CACxB,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,EACjDC,UAAU,CACX;YACD,MAAM,CAAC,SAAS,CAAC,MAAM,CACrB,CAAC,EAAE,EAAE,IAAI,KACP,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,KAAI;AAC3B,gBAAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AACxC,YAAA,CAAC,CAAE,EACLD,UAAU,CACX;AACD,YAAA,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE;gBAC9B,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACzC,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,wBAAAE,YAAY,CACV,KAAK,GAAG,CAAC,EACT,KAAK,EACL;4BACE,aAAa;AACb,4BAAA,IAAI,CAAC,MAAM;4BACX,CAAC;AACD,4BAAA,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAQ;yBACjD,EACD,IAAI,CAAC;AACH,8BAAE,CAAC,EAAE,EAAE,GAAG,KAAI;AACV,gCAAA,IAAI,EAAE,GAAG,CAAC,EAAE;oCACVC,MAAM,CAAC,CAAC,CAAC;gCACX;AACA,gCAAA,IAAI,EAAE,GAAG,CAAC,EAAE;AACV,oCAAAC,iBAAiB,CAAC,IAAI,CAAC,IAAK,EAAE,CAAC;gCACjC;4BACF;8BACA,SAAS,EACb,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,SAAS,EACzB,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,SAAS,CAC1B;oBACH;yBAAO;AACL,wBAAAF,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC;oBAChC;AACF,gBAAA,CAAC,CAAC;YACJ;AACA,YAAAG,YAAY,EAAE;QAChB;AACA,QAAA,IAAI,EAAE,GAAG,CAAC,EAAE;AACV,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,gBAAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAChC;AACA,YAAA,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAI;AACrD,gBAAA,MAAM,KAAK,GAAG,MAAM,EAAE;gBACtB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7D,CAAC,EAAEC,UAAU,CAAC;YACd,MAAM,CAAC,SAAS,CAAC,MAAM,CACrB,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAE,EACxCC,gBAAgB,CACjB;QACH;IACF;AACA,IAAA,OAAO,MAAM,CAAC,CAAA;AACZ,QAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAE3C;AACD,QAAA,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAGjC;QACD,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAEhD;QACD,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAC/B,CAAC,EAAE,IAAI,EAAE,KACP,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAW,EAAE,CAAuB,CAC/D;AACD,QAAA,OAAO,IAAI,GAAG,CAAC,CAAM,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG;AACxC,QAAA,OAAO,IAAI,GAAGC,iBAAiB,CAAC;AAC9B,YAAA,IAAI,EAAE,CAAC;YACP,SAAS,EAAE,CAAC,CAAC,CAAA,EAAA,EAAK,KAAK,EAAE,CAAA,CAAE,CAAC,CAAC;AAC7B,YAAA,kBAAkB,EAAE,YAAY;AAChC,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,KAAI;AACpB,gBAAA,IAAI,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI,YAAY,EAAE;wBAChBC,eAAe,CAAC,YAAY,CAAC;oBAC/B;oBACAC,UAAU,CACR,CAAC,EACD,UAAU,EACV,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,EACrC,MAAM,CAAC,IAAI,EACX,aAAa,CACd;gBACH;YACF,CAAC;AACD,YAAA,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,KAAI;AACrB,gBAAA,IAAI,EAAE,GAAG,CAAC,EAAE;oBACVC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,CAAQ,CAAC;oBACzDA,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAQ,CAAC;oBAC5DA,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAQ,EAAE,UAAU,CAAC;oBACjE,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,KAAI;AACrC,wBAAAA,iBAAiB,CACf,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAC3B,QAAQ,EACR,CAAQ,EACR,IAAW,CACZ;AACH,oBAAA,CAAC,CAAC;gBACJ;AACA,gBAAA,IAAI,EAAE,GAAG,CAAC,EAAE;AACV,oBAAAC,cAAc,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;gBACvC;YACF,CAAC;YACD,YAAY,EAAE,MAAM,CAAC,aAAa;AAClC,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,eAAe,EAAE,CAAC;AACnB,SAAA,CAAC;KACH;AACH;;AC5PA,MAAM,QAAQ,GAAG,EAAE;MAEN,aAAa,CAAA;;IAExB,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;;AAGxD,IAAA,aAAa;AACb,IAAA,gBAAgB;AAChB,IAAA,iBAAiB;AAEjB,IAAA,kBAAkB;AAClB,IAAA,sBAAsB;AACtB,IAAA,eAAe;AACf,IAAA,qBAAqB;;AAErB,IAAA,uBAAuB;AACvB,IAAA,kBAAkB,CAAC,MAA8B,EAAA;AAC/C,QAAA,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,MACtC,SAAS,CAAC,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC,CACjD;IACH;IACA,YAAY,CAAC,KAAwC,EAAE,KAAa,EAAA;AAClE,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;AACA;;;;AAIG;AACH,IAAA,WAAW;AAKX,IAAA,aAAa;AAEb,IAAA,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC;IAC1B,eAAe,CACb,IAA8B,EAC9B,gBAAkC,EAAA;;AAGlC,QAAA,IAAI,CAAC,kBAAkB,IAAI;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;;AAEzC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAEzC,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;QACvC,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,MAAM,EAAE,QAAQ,CAAC,MAAK;gBACpB,IAAI,CAAC,cAAc,EAAE;gBACrB,OAAO,IAAI,CAAC,gBAAiB,CAAC,MAAO,EAAE,IAAI,QAAQ;AACrD,YAAA,CAAC,CAAC;AACF,YAAA,UAAU,EAAE,QAAQ,CAAC,MAAK;gBACxB,IAAI,CAAC,cAAc,EAAE;gBACrB,OAAO,IAAI,CAAC,gBAAiB,CAAC,UAAW,EAAE,IAAI,QAAQ;AACzD,YAAA,CAAC,CAAC;AACF,YAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAClE,MAAM,CAAC;AACL,kBAAE,QAAQ,CAAC,MAAK;oBACZ,IAAI,CAAC,cAAc,EAAE;oBACrB,OAAO,IAAI,CAAC,gBAAiB,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,MAAO,EAAE;AAC5D,gBAAA,CAAC;kBACD,SAAS,CACd;SACF;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACjE,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,OAAO;AACL,oBAAA,GAAG,IAAI;AACP,oBAAA,IAAI,EAAE,QAAQ,CAAC,MAAK;wBAClB,IAAI,CAAC,cAAc,EAAE;wBACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAS,CAAC,KAAK,CAAC,CAAC,IAAK,EAAE;AACvD,oBAAA,CAAC,CAAC;iBACH;YACH;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;QACxC,MAAM,gBAAgB,GAAG,4BAA4B,CACnD;AACE,YAAA,GAAG,eAAe;AAClB,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;AAC/B,YAAA,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU;YACvC,QAAQ,EAAE,IAAI,CAAC,aAAa;AAC7B,SAAA,EACD,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAAM;AAClD,YAAA,GAAG,MAAM;YACT,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,KAAK,CAAC;AAC/C,SAAA,CAAC,CAAC,IAAI,EAAE,CACV;AACD,QAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxC,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC9C,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1D,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;AACpE,aAAA;AACD,YAAA,MAAM,EAAE,eAAe,CAAC,QAAQ,IAAI,gBAAgB,CAAC,QAAQ;AAC9D,SAAA,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,EAAE;AACrD,YAAA,eAAe,EAAE,iBAAiB;AAClC,YAAA,mBAAmB,EAAE,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC/D,gBAAgB,EAAE,eAAe,CAAC;kBAC9B,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAM;iBAC1B,MAAM,CAAC,OAAO,CAAC;AACnB,SAAA,CAAC;;QAEF,gBAAgB,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAExE,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAG;QACxE,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAG;AAC1D,QAAA,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CACrE,CAAC,IAAI,KAAK,IAAI,EAAE,CACjB;AACD,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAK;YAC7B,gBAAgB,CAAC,KAAK,EAAE;YACxB,YAAY,CAAC,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAClC,QAAA,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAC1D,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,KAAK,CAAC;QAC5C;IACF;AAEA,IAAA,MAAM,CAAC,IAA8B,EAAA;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,QAAA,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,IAAI,CAAC;QACxD,MAAM,OAAO,GAAG,SAAS,CACvB,kBAAkB,EAClB,IAAI,CAAC,uBAAuB,EAAE,CAC/B;;QAED,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;AAExC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B;aAAO;YACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAkB,CAAC;QACrD;IACF;uGA7IW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACTK,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,KAAA,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,KAAK;AAClB,iBAAA;;;ACKK,MAAO,iBACX,SAAQ,aAAa,CAAA;;IAIrB,iBAAiB,GAAG,KAAK,EAA8B;IACvD,uBAAuB,GAAG,KAAK,EAA2B;IAC1D,wBAAwB,GAAG,KAAK,EAAuB;IACvD,yBAAyB,GAAG,KAAK,EAAY;IAC7C,wBAAwB,GAAG,KAAK,EAAoB;;IAEpD,4BAA4B,GAAG,KAAK,EAAgB;;IAEpD,yBAAyB,GAAG,KAAK,EAA6B;IAC9D,8BAA8B,GAAG,KAAK,EAAqB;IAC3D,2BAA2B,GACzB,KAAK,EAA2C;AAElD,IAAA,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAA6B;AACpE,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAE5C,IAAA,SAAS,GAAG,QAAQ,CAAC,MACnB,IAAI,CAAC,yBAAyB,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM;AAC/C,QAAA,GAAG,IAAI;AACP,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;AACzB,QAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;KACzB,CAAC,CAAC,CACJ;IACD,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,EAAE;AAC9D,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA,CAAC;AAEF,IAAA,cAAc;AAEd,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,QAAA,IAAI,CAAC,cAAc,IAAI;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAI,CAAC,SAAS;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,MAAM;QACpD,IAAI,CAAC,MAAM,EAAE;YACX;QACF;QACA,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,MAAK;YACzB,SAAS,CAAC,OAAO,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AACjC,QAAA,CAAC;AACD,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC,CAAC;AACF,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ;aAC5B,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;QACtD,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,mBAAmB;oBAC5B,QAAQ,EAAE,IAAI,CAAC,sBAAsB;AACtC,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,kBAAkB;AAC3B,oBAAA,QAAQ,EAAE,CAAC;AACZ,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE,QAAQ;AACjB,SAAA,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClB,IAAA,CAAC,CAAC;AACF,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,6BAA6B,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACxD,QAAA,OAAO;AACL,cAAG;AACC,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;AACrC;cACrB,SAAS;AACf,IAAA,CAAC,CAAC;AACF,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAC3D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,6BAA6B,EAAE;AACvD,QAAA,OAAO;AACL,cAAE,CAAC,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C,cAAE,gBAAgB,IAAI;AAC1B,IAAA,CAAC,CAAC;AAEF,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACvC,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAChD,OAAO;AACL,YAAA,GAAG,MAAO;AACV,YAAA,IAAI,EAAE,MAAO,CAAC,IAAI,CAAC,SAAS;AAC5B,YAAA,MAAM,EAAE,MAAO,CAAC,IAAI,CAAC,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,uBAAuB;AACpC,YAAA,UAAU,EAAE;kBACR,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACtB,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;oBAC5B,IAAI,OAAO,EAAE;wBACX,OAAO;AACL,4BAAA,GAAG,IAAI;AACP,4BAAA,OAAO,EAAE,OAAO;yBACjB;oBACH;AACA,oBAAA,OAAO,IAAI;AACb,gBAAA,CAAC;AACH,kBAAE,SAAS;AACb,YAAA,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;AAC7B,YAAA,QAAQ,EAAE,IAAI,CAAC,wBAAwB,EAAE;SAChB;AAC7B,IAAA,CAAC,CAAC;AACF,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACjD,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,OAAO,WAAW;QACpB;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,QAAA,MAAM,IAAI,GAA6B;AACrC,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;YAC3B,eAAe;SAChB;AAED,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE;AAElC,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,CAAC;AAEF,IAAA,SAAS;IACT,WAAW,GAAA;;AAET,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI;QACpC;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE;YAC3C,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,KAAK,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC;QACpD;AAAO,aAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACnB;;AAGA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,IAAI;AACvB,QAAA,IAAI,CAAC,kBAAkB,IAAI;IAC7B;uGAtJW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACnBD,SAAS,eAAe,CAAC,KAAU,EAAA;AACjC,IAAA,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAY,CAAC;AAC7C;AACM,SAAU,gBAAgB,CAC9B,GAAQ,EACR,QAAkB,EAAA;AAElB,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB;AAC/C,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe;IACrC,OAAO,CACL,IAIa,KAEb,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,SAAS,CAAC,EAAE;QAC7C;QACA,IAAI,UAAU,GAAG,KAAK;QACtB,MAAM,MAAM,GACV,CAAE,GAAW,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAC7B,GAAG,CAAC,CAAC,IAAI,KAAI;AACb,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACpB,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE;YAC1B;AAAO,iBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5B,UAAU,GAAG,IAAI;AACjB,gBAAA,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE;YAC3B;YACA,MAAM,QAAQ,GAAG,IAAI;AACrB,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;YAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACrD,gBAAA,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;AACzD,gBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAa,CAAC;AAC/B,gBAAA,OAAO,MAAM;YACf;iBAAO,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;gBACzD,UAAU,GAAG,IAAI;AACjB,gBAAA,MAAM,QAAQ,GAAG,aAAa,CAAqB,IAAI,CAAE,EAAE,CAAC,IAAI,CAC9D,CAAC,KAAK,KAAI;AACR,oBAAA,MAAM,MAAM,GAAG;AACb,wBAAA,GAAG,QAAQ;AACX,wBAAA,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK;qBACrD;AACR,oBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACxB,oBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACpB,oBAAA,OAAO,MAAM;AACf,gBAAA,CAAC,CACF;AACD,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC3B,gBAAA,OAAO,QAAQ;YACjB;iBAAO;AACL,gBAAA,OAAO,QAAQ;YACjB;AACF,QAAA,CAAC,CAAC;QACF,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,QAAQ,CAAoB;gBACjC,MAAM,EAAE,aAAa,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAQ;AAClE,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA,CAAC;QACJ;aAAO;YACL,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAS,OAAO,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAQ,CAAC;aACjE;QACH;AACF,IAAA,CAAC,CAAC;AACN;;AC/DM,MAAO,kBAAmB,SAAQ,WAA2B,CAAA;AACjE,IAAA,aAAa,GAAiB,MAAM,CAAC,oBAAoB,CAAQ;IACxD,kBAAkB,CACzB,SAAyB,EACzB,MAAiC,EAAA;QAEjC,MAAM,KAAK,GAAG,SAAS;AACvB,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI;AAC3B,QAAA,IAAI,sBAA4D;AAChE,QAAA,IAAI,MAAM;AACV,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC;AACxB,aAAA,0BAAuD;QAE1D,IAAI,IAAI,EAAE;YACR,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC3C,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM;AACtB,YAAA,sBAAsB,GAAG,MAAM,CAAC,aAAa;QAC/C;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CACjC,CAAC,sBAAsB,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EACtD,IAAI,EACJ,aAAa,EAAE,UAAU,IAAI,gCAAgC,CAAC,UAAU,CACzE;QACD,OAAO;AACL,YAAA,GAAG,MAAM;AACT,YAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAClC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAC1C;AACD,YAAA,UAAU,EAAE,UAAU;SACvB;IACH;AAEA,IAAA,iBAAiB,CAAC,IAAqD,EAAA;AACrE,QAAA,IAAI,MAAM;AACV,QAAA,IAAI,aAAa;;AAEjB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;YAC/C,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAA,CAAE,CAAC;YAC/B;YACA,aAAa,GAAG,MAAM;YACtB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC9B,gBAAA,MAAM,GAAG;AACP,oBAAA,GAAG,MAAM;iBACoB;YACjC;QACF;aAAO;;AAEL,YAAA,MAAM,GAAG,EAAE,IAAI,EAAgC;QACjD;QACA,OAAO;YACL,MAAM;YACN,aAAa;SACd;IACH;uGAxDW,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;;;ACTK,MAAO,cAAe,SAAQ,gBAGnC,CAAA;AAEC,IAAA,QAAQ;AACR,IAAA,UAAU;AACX;;MCLY,QAAQ,CAAA;AACnB,IAAA,SAAS,CAAoC,EAAK,EAAE,GAAG,IAAmB,EAAA;AACxE,QAAA,OAAO,EAAE,CAAC,GAAG,IAAI,CAAkB;IACrC;uGAHW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACqCD,MAAM,qBAAqB,GAAG;AAC5B,IAAA,OAAO,EAAE,kBAAkB;AAC3B,IAAA,MAAM,EAAE,cAAqB;CAC9B;MAQY,UAAU,CAAA;AACrB,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAEpB;AACH,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,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1C,IAAA,mBAAmB;AACnB,IAAA,cAAc,GAAG,MAAM,CAAwC,SAAS,CAAC;AACzE,IAAA,cAAc;IAEd,YAAY,GAAA;QACV,IAAI,CAAC,MAAM,EAAE;;QAEb,MAAM,WAAW,GAAG,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC;AACpE,QAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW;QACtC,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;AACrB,YAAA,iBAAiB,EAAE,CAAC,EAAE,KAAI;gBACxB,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AACzC,oBAAA,EAAE,EAAE;AACN,gBAAA,CAAC,CAAC;YACJ,CAAC;AACF,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,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;QACtC;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;AAEA,IAAA,gBAAgB,GAAG,CACjB,MAA2C,EAE3C,gBAAkC,KAElC,QAAQ,CAAC,OAAO;AACd,QAAA,GAAG,MAAM,EAAE;QACX,gBAAgB;AACjB,KAAA,CAAC,CAAC;IAEL,iBAAiB,GAAG,gBAAgB,CAClC,IAAI,EACJ,IAAI,CAAC,SAAS,CACf;;IAED,eAAe,GAAG,gBAAgB,CAChC,KAAK,EACL,IAAI,CAAC,SAAS,CACf;AAED,IAAA,WAAW,GAAG,CAAC,KAAgC,KAC7C,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAA,YAAY,CAAC,KAAgC,EAAA;AAC3C,QAAA,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE;AAC1D,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,KAAK,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE;AACnC,gBAAA,OAAO,IAAI;YACb;iBAAO;AACL,gBAAA,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzE;QACF;aAAO;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM;QACvD;IACF;IACA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,IAAI;IACzB;uGAhIW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,igBCrDvB,8oDA2CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDKY,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,QAAQ,6CAAE,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;;2FAK5C,UAAU,EAAA,UAAA,EAAA,CAAA;kBAPtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EACd,CAAC,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAA,UAAA,EAE5C,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8oDAAA,EAAA;;;AEnC3C,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AACtD,IAAA,oBAAoB,GAAG,SAAS,CAAC,gBAAgB,EAAE;AACjD,QAAA,IAAI,EAAE,gBAAgB;AACvB,KAAA,CAAC;AACF,IAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACrC,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AAChD,IAAA,OAAO,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC1C,IAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACxB,eAAe,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAClC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,oBAAoB,EAAG,CAC7B;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM;IACf;IACA,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE;IACxB;uGApBW,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,iJAExB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAFb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACZM,MAAM,SAAS,GAAGC;;ACOnB,SAAU,aAAa,CAAI,KAA0B,EAAA;AACzD,IAAA,OAAO,SAAS,CAAI,CAAC,KAAK,KAAI;AAC5B,QAAA,KAAK,CAAC,UAAU,GAAG,KAAK;AAC1B,IAAA,CAAC,CAAC;AACJ;AACM,SAAU,eAAe,CAAI,KAA0B,EAAA;AAC3D,IAAA,OAAO,SAAS,CAAI,CAAC,KAAK,KAAI;AAC5B,QAAA,KAAK,CAAC,UAAU,KAAK,EAAE;QACvB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACjC,IAAA,CAAC,CAAC;AACJ;AACM,SAAU,mBAAmB,CACjC,EAEyE,EAAA;AAEzE,IAAA,OAAO,SAAS,CAAI,CAAC,KAAK,KAAI;AAC5B,QAAA,YAAY,CACV;AACE,YAAA,aAAa,EAAE,CAAC,KAAK,KAAI;AACvB,gBAAA,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAC/B,gBAAA,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC;AAC3B,gBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM;AAC/B,gBAAA,IAAI,OAAO,GAAG,MAAM,CAAsB,EAAE,CAAC;gBAC7C,IAAI,MAAM,EAAE;AACV,oBAAA,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,GAAG,KAAI;AACX,wBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;AACpB,wBAAA,OAAO,GAAG;AACZ,oBAAA,CAAC,EACD,EAAyB,CAC1B,CACF;AACD,oBAAA,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC5C;AACA,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU;AACtC,gBAAA,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM;AACpC,oBAAA,GAAG,aAAa,EAAE;AAClB,oBAAA,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AAClC,iBAAA,CAAC;YACJ,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACtB,KAAK,CACN;AACH,IAAA,CAAC,CAAC;AACJ;;MCtDa,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,KAAU,EAAA;AACpB,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,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC;AACD;;AC/BD;;AAEG;;;;"}
|
|
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/hook/directive_matching.ts","../../../projects/view-angular/lib/hook/selector.ts","../../../projects/view-angular/lib/hook/create-element.ts","../../../projects/view-angular/lib/directives/attributes.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/ng_component_outlet.ts","../../../projects/view-angular/lib/util/async-cache.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/wrapper-base.component.ts","../../../projects/view-angular/lib/schema/action/raw-config.ts","../../../projects/view-angular/lib/schema/action/directive.ts","../../../projects/view-angular/lib/component/form/control.base.component.ts","../../../projects/view-angular/piying-view-angular.ts"],"sourcesContent":["/** component */\n\nimport { InjectionToken, Signal, EventEmitter } from '@angular/core';\nimport { DynamicComponentConfig } from './component';\nimport { PiResolvedViewFieldConfig } from './group';\n\n/** wrapper中可以使用,已解析的配置 */\nexport const PI_VIEW_FIELD_TOKEN = new InjectionToken<\n Signal<PiResolvedViewFieldConfig>\n>('PI_VIEW_FIELD_TOKEN');\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, input, TemplateRef } 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}\n","import { ChangeDetectionStrategy, Component } 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","@for (field of children$$(); track field.id || $index) {\n <ng-container\n *ngTemplateOutlet=\"fieldTemplateRef(); context: { $implicit: field }\"\n ></ng-container>\n}\n","import { ConfigMergeStrategyObject } from './type';\n\nexport const EMPTY_ARRAY = [];\nexport const NG_CONFIG_DEFAULT_MERGE_STRAGEGY: ConfigMergeStrategyObject = {\n directives: 'merge',\n formConfig: 'merge',\n inputs: 'merge',\n outputs: 'merge',\n props: 'merge',\n renderConfig: 'merge',\n wrappers: 'replace',\n attributes: 'merge',\n};\n","import { DynamicComponentConfig } from '../type/component';\n\nexport function getComponentCheckConfig(a: DynamicComponentConfig) {\n return {\n ...a,\n inputs: Object.keys(a.inputs() ?? {}).join(','),\n // todo 需要等修改为动态的再比较key\n attributes: Object.entries(a.attributes() ?? {})\n .map((key, value) => `${key}:${value}`)\n .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 };\n}\n\nexport type ComponentCheckConfig = ReturnType<typeof getComponentCheckConfig>;\n","//packages/compiler/src/directive_matching.ts\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\nconst _SELECTOR_REGEXP = new RegExp(\n '(\\\\:not\\\\()|' + // 1: \":not(\"\n '(([\\\\.\\\\#]?)[-\\\\w]+)|' + // 2: \"tag\"; 3: \".\"/\"#\";\n // \"-\" should appear first in the regexp below as FF31 parses \"[.-\\w]\" as a range\n // 4: attribute; 5: attribute_string; 6: attribute_value\n '(?:\\\\[([-.\\\\w*\\\\\\\\$]+)(?:=([\"\\']?)([^\\\\]\"\\']*)\\\\5)?\\\\])|' + // \"[name]\", \"[name=value]\",\n // \"[name=\"value\"]\",\n // \"[name='value']\"\n '(\\\\))|' + // 7: \")\"\n '(\\\\s*,\\\\s*)', // 8: \",\"\n 'g',\n);\n\n/**\n * These offsets should match the match-groups in `_SELECTOR_REGEXP` offsets.\n */\nconst enum SelectorRegexp {\n ALL = 0, // The whole match\n NOT = 1,\n TAG = 2,\n PREFIX = 3,\n ATTRIBUTE = 4,\n ATTRIBUTE_STRING = 5,\n ATTRIBUTE_VALUE = 6,\n NOT_END = 7,\n SEPARATOR = 8,\n}\n/**\n * A css selector contains an element name,\n * css classes and attribute/value pairs with the purpose\n * of selecting subsets out of them.\n */\nexport class CssSelector {\n element: string | null = null;\n classNames: string[] = [];\n /**\n * The selectors are encoded in pairs where:\n * - even locations are attribute names\n * - odd locations are attribute values.\n *\n * Example:\n * Selector: `[key1=value1][key2]` would parse to:\n * ```\n * ['key1', 'value1', 'key2', '']\n * ```\n */\n attrs: string[] = [];\n notSelectors: CssSelector[] = [];\n\n static parse(selector: string): CssSelector[] {\n const results: CssSelector[] = [];\n const _addResult = (res: CssSelector[], cssSel: CssSelector) => {\n if (\n cssSel.notSelectors.length > 0 &&\n !cssSel.element &&\n cssSel.classNames.length == 0 &&\n cssSel.attrs.length == 0\n ) {\n cssSel.element = '*';\n }\n res.push(cssSel);\n };\n let cssSelector = new CssSelector();\n let match: string[] | null;\n let current = cssSelector;\n let inNot = false;\n _SELECTOR_REGEXP.lastIndex = 0;\n while ((match = _SELECTOR_REGEXP.exec(selector))) {\n if (match[SelectorRegexp.NOT]) {\n if (inNot) {\n throw new Error('Nesting :not in a selector is not allowed');\n }\n inNot = true;\n current = new CssSelector();\n cssSelector.notSelectors.push(current);\n }\n const tag = match[SelectorRegexp.TAG];\n if (tag) {\n const prefix = match[SelectorRegexp.PREFIX];\n if (prefix === '#') {\n // #hash\n current.addAttribute('id', tag.slice(1));\n } else if (prefix === '.') {\n // Class\n current.addClassName(tag.slice(1));\n } else {\n // Element\n current.setElement(tag);\n }\n }\n const attribute = match[SelectorRegexp.ATTRIBUTE];\n\n if (attribute) {\n current.addAttribute(\n current.unescapeAttribute(attribute),\n match[SelectorRegexp.ATTRIBUTE_VALUE],\n );\n }\n if (match[SelectorRegexp.NOT_END]) {\n inNot = false;\n current = cssSelector;\n }\n if (match[SelectorRegexp.SEPARATOR]) {\n if (inNot) {\n throw new Error('Multiple selectors in :not are not supported');\n }\n _addResult(results, cssSelector);\n cssSelector = current = new CssSelector();\n }\n }\n _addResult(results, cssSelector);\n return results;\n }\n\n /**\n * Unescape `\\$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * but we might want to match an attribute that contains `$`.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to unescape.\n * @returns the unescaped string.\n */\n unescapeAttribute(attr: string): string {\n let result = '';\n let escaping = false;\n for (let i = 0; i < attr.length; i++) {\n const char = attr.charAt(i);\n if (char === '\\\\') {\n escaping = true;\n continue;\n }\n if (char === '$' && !escaping) {\n throw new Error(\n `Error in attribute selector \"${attr}\". ` +\n `Unescaped \"$\" is not supported. Please escape with \"\\\\$\".`,\n );\n }\n escaping = false;\n result += char;\n }\n return result;\n }\n\n /**\n * Escape `$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * with this method we are escaping `$` with `\\$'.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to escape.\n * @returns the escaped string.\n */\n escapeAttribute(attr: string): string {\n return attr.replace(/\\\\/g, '\\\\\\\\').replace(/\\$/g, '\\\\$');\n }\n\n setElement(element: string | null = null) {\n this.element = element;\n }\n\n addAttribute(name: string, value: string = '') {\n this.attrs.push(name, (value && value.toLowerCase()) || '');\n }\n\n addClassName(name: string) {\n this.classNames.push(name.toLowerCase());\n }\n\n toString(): string {\n let res: string = this.element || '';\n if (this.classNames) {\n this.classNames.forEach((klass) => (res += `.${klass}`));\n }\n if (this.attrs) {\n for (let i = 0; i < this.attrs.length; i += 2) {\n const name = this.escapeAttribute(this.attrs[i]);\n const value = this.attrs[i + 1];\n res += `[${name}${value ? '=' + value : ''}]`;\n }\n }\n this.notSelectors.forEach((notSelector) => (res += `:not(${notSelector})`));\n return res;\n }\n}\n","import { CssSelector } from './directive_matching';\n// packages/compiler/src/core.ts\n/**\n * Flags used to generate R3-style CSS Selectors. They are pasted from\n * core/src/render3/projection.ts because they cannot be referenced directly.\n */\nconst enum SelectorFlags {\n /** Indicates this is the beginning of a new negative selector */\n NOT = 0b0001,\n\n /** Mode for matching attributes */\n ATTRIBUTE = 0b0010,\n\n /** Mode for matching tag names */\n ELEMENT = 0b0100,\n\n /** Mode for matching class names */\n CLASS = 0b1000,\n}\n\n// These are a copy the CSS types from core/src/render3/interfaces/projection.ts\n// They are duplicated here as they cannot be directly referenced from core.\ntype R3CssSelector = (string | SelectorFlags)[];\ntype R3CssSelectorList = R3CssSelector[];\n\nfunction parserSelectorToSimpleSelector(selector: CssSelector): R3CssSelector {\n const classes =\n selector.classNames && selector.classNames.length\n ? [SelectorFlags.CLASS, ...selector.classNames]\n : [];\n const elementName =\n selector.element && selector.element !== '*' ? selector.element : '';\n return [elementName, ...selector.attrs, ...classes];\n}\n\nfunction parserSelectorToNegativeSelector(\n selector: CssSelector,\n): R3CssSelector {\n const classes =\n selector.classNames && selector.classNames.length\n ? [SelectorFlags.CLASS, ...selector.classNames]\n : [];\n\n if (selector.element) {\n return [\n SelectorFlags.NOT | SelectorFlags.ELEMENT,\n selector.element,\n ...selector.attrs,\n ...classes,\n ];\n } else if (selector.attrs.length) {\n return [\n SelectorFlags.NOT | SelectorFlags.ATTRIBUTE,\n ...selector.attrs,\n ...classes,\n ];\n } else {\n return selector.classNames && selector.classNames.length\n ? [SelectorFlags.NOT | SelectorFlags.CLASS, ...selector.classNames]\n : [];\n }\n}\n\nfunction parserSelectorToR3Selector(selector: CssSelector): R3CssSelector {\n const positive = parserSelectorToSimpleSelector(selector);\n\n const negative: R3CssSelectorList =\n selector.notSelectors && selector.notSelectors.length\n ? selector.notSelectors.map((notSelector) =>\n parserSelectorToNegativeSelector(notSelector),\n )\n : [];\n\n return positive.concat(...negative);\n}\n\nexport function parseSelectorToR3Selector(\n selector: string | null,\n): R3CssSelectorList {\n return selector\n ? CssSelector.parse(selector).map(parserSelectorToR3Selector)\n : [];\n}\n","import { parseSelectorToR3Selector } from './selector';\n\nexport function createElement(selector: string, document: Document) {\n const [item] = parseSelectorToR3Selector(selector);\n const [element, ...rest] = item;\n if (!element || typeof element !== 'string') {\n throw new Error(`tag must be string;selector: ${selector}`);\n }\n const el = document.createElement(element);\n let index = 0;\n for (; index < rest.length; index += 2) {\n const key = rest[index];\n const value = rest[index + 1];\n if (typeof key !== 'string') {\n break;\n }\n el.setAttribute(key, value as string);\n }\n let type;\n for (; index < rest.length; index++) {\n const item = rest[index];\n if (typeof item === 'number') {\n type = item;\n continue;\n }\n // class\n if (type === 8) {\n el.classList.add(item);\n }\n }\n return el;\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})\nexport class AttributesDirective {\n a = input.required<Record<string, any>>();\n #rederer = inject(Renderer2);\n #el = inject(ElementRef).nativeElement;\n ngOnChanges(changes: SimpleChanges): void {\n const { previousValue, currentValue, firstChange } = changes['a'];\n for (const key in currentValue) {\n this.#rederer.setAttribute(this.#el, key, currentValue[key]);\n }\n if (!firstChange) {\n for (const key in previousValue) {\n if (!(key in currentValue)) {\n this.#rederer.removeAttribute(this.#el, key);\n }\n }\n }\n }\n}\n","import {\n computed,\n createComponent,\n Directive,\n DOCUMENT,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n inject,\n Injector,\n inputBinding,\n outputBinding,\n reflectComponentType,\n signal,\n Signal,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { PiResolvedViewFieldConfig } from '../type';\nimport { DynamicComponentConfig } 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 { createElement } from '../hook/create-element';\nimport {\n CoreRawViewAttributes,\n CoreRawViewInputs,\n CoreRawViewOutputs,\n} from '@piying/view-angular-core';\nimport { AttributesDirective } from '../directives/attributes.directive';\nfunction createInputsBind(inputs?: Signal<CoreRawViewInputs | 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(outputs?: CoreRawViewOutputs) {\n if (!outputs) {\n return [];\n }\n return Object.entries(outputs).map(([key, value]) =>\n outputBinding(key, value),\n );\n}\nfunction createAttributesDirective(\n attributes: Signal<CoreRawViewAttributes | undefined>,\n) {\n if (attributes()) {\n return [\n {\n type: AttributesDirective,\n bindings: [inputBinding('a', attributes)],\n },\n ];\n }\n return [];\n}\nconst EmptyOBJ = {};\n@Directive()\nexport class BaseComponent {\n /** 第一次默认为空 */\n #index = inject(PI_COMPONENT_INDEX, { optional: true })!;\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 /** 比较时使用 */\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 attributes?: Signal<Record<string, any>>;\n directiveList?: (Signal<Record<string, any>> | undefined)[];\n };\n #configUpdate$ = signal(0);\n #document = inject(DOCUMENT);\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.#componentConfig = componentConfig;\n this.#inputCache = {\n inputs: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.inputs!() ?? EmptyOBJ;\n }),\n attributes: computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.attributes!() ?? EmptyOBJ;\n }),\n directiveList: this.#componentConfig?.directives?.map((config, index) =>\n config.inputs\n ? computed(() => {\n this.#configUpdate$();\n return this.#componentConfig!.directives![index].inputs!();\n })\n : undefined,\n ),\n };\n const type = reflectComponentType(componentConfig.type as any)!;\n const el = createElement(type.selector, this.#document);\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 attrDirective = createAttributesDirective(componentConfig.attributes);\n\n const componentRef = createComponent(componentConfig.type as any, {\n elementInjector: componentInjector,\n environmentInjector: componentInjector.get(EnvironmentInjector),\n hostElement: el,\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(item.outputs),\n ],\n })),\n ...attrDirective,\n ],\n });\n viewContainerRef.insert(componentRef.hostView);\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 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 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","import {\n computed,\n createNgModule,\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 RawDirectiveOutputs,\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 { deepEqual } from 'fast-equals';\nimport { FieldControl } from '@piying/view-angular-core';\nimport { PI_COMPONENT_INDEX, PI_VIEW_FIELD_TOKEN } from '../type/view-token';\nimport { FieldControlDirective } from '../directives/field-control-directive';\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 ngComponentOutletInputs = input<Record<string, unknown>>();\n ngComponentOutletOutputs = input<RawDirectiveOutputs>();\n ngComponentOutletInjector = input<Injector>();\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 #wrappers = computed(() =>\n this.ngComponentOutletWrappers()?.map((item) => ({\n ...item,\n type: item.type.component,\n module: item.type.module,\n })),\n );\n #onputEqual$$ = computed(() => this.ngComponentOutletOutputs(), {\n equal: deepEqual,\n });\n\n #moduleDestroy?: () => void;\n\n #moduleRef$$ = computed(() => {\n this.#moduleDestroy?.();\n const injector = this.ngComponentOutletInjector() || this.#injector;\n const module = this.ngComponentOutlet()?.type.module;\n if (!module) {\n return;\n }\n const moduleRef = createNgModule(module, injector);\n this.#moduleDestroy = () => {\n moduleRef.destroy();\n this.#moduleDestroy = undefined;\n };\n return moduleRef;\n });\n #usedEnvInjector$$ = computed(() => {\n const injector =\n this.#moduleRef$$()?.injector ??\n (this.ngComponentOutletInjector() || this.#injector);\n return Injector.create({\n providers: [\n {\n provide: PI_VIEW_FIELD_TOKEN,\n useValue: this.ngComponentOutletField,\n },\n {\n provide: PI_COMPONENT_INDEX,\n useValue: 0,\n },\n ],\n parent: injector,\n }).get(Injector);\n });\n #injector = inject(Injector);\n #formControlDirectiveConfig$$ = computed(() => {\n const fieldControl = this.ngComponentOutletFormControl();\n return fieldControl\n ? ({\n type: FieldControlDirective,\n inputs: computed(() => ({ 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\n #componentConfig$$ = computed(() => {\n const define = this.ngComponentOutlet();\n if (!define) {\n return;\n }\n const directives = this.#directiveConfigList$$();\n return {\n ...define!,\n type: define!.type.component,\n module: define!.type.module,\n inputs: this.ngComponentOutletInputs,\n directives: directives\n ? directives.map((item) => {\n const outputs = item.outputs;\n if (outputs) {\n return {\n ...item,\n outputs: outputs,\n };\n }\n return item;\n })\n : undefined,\n outputs: this.#onputEqual$$(),\n } as DynamicComponentConfig;\n });\n #componentList$$ = computed(() => {\n const componentConfig = this.#componentConfig$$();\n if (!componentConfig) {\n return EMPTY_ARRAY;\n }\n const injector = this.#usedEnvInjector$$();\n const list: DynamicComponentConfig[] = [\n ...(this.#wrappers() ?? []),\n componentConfig,\n ];\n\n list[0] = { ...list[0], injector };\n\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.#moduleDestroy?.();\n this.destroyComponentFn?.();\n }\n}\n","import {\n computed,\n Injector,\n reflectComponentType,\n resource,\n Type,\n untracked,\n} from '@angular/core';\nimport { NgResolvedComponentDefine2 } from '../type/component';\nimport { NgResolvedComponentDefine1 } from '../type';\nimport { getLazyImport, isLazyMark } from '@piying/view-angular-core';\nfunction isComponentType(input: any): input is Type<any> {\n return !!reflectComponentType(input as any);\n}\nexport function createAsyncCache<One extends boolean, Result>(\n one: One,\n injector: Injector,\n) {\n const loading = new Map<any, Promise<Result>>();\n const cached = new Map<any, Result>();\n return (\n list:\n | (One extends true\n ? NgResolvedComponentDefine2\n : NgResolvedComponentDefine2[])\n | undefined,\n ) =>\n untracked(() => {\n if (!list) {\n return { value: computed(() => undefined) };\n }\n let hasPromise = false;\n const result = (\n ((one as One) ? [list] : list) as any as NgResolvedComponentDefine1[]\n ).map((item) => {\n if (cached.has(item)) {\n return cached.get(item)!;\n } else if (loading.has(item)) {\n hasPromise = true;\n return loading.get(item)!;\n }\n const resolved = item;\n const type = resolved.type;\n if (typeof type === 'string' || isComponentType(type)) {\n const result = { ...resolved, type: { component: type } };\n cached.set(item, result as any);\n return result;\n } else if (typeof type === 'function' || isLazyMark(type)) {\n hasPromise = true;\n const result$$ = getLazyImport<() => Promise<any>>(type)!().then(\n (value) => {\n const result = {\n ...resolved,\n type: isComponentType(value) ? { component: value } : value,\n } as any;\n cached.set(item, result);\n loading.delete(item);\n return result;\n },\n );\n loading.set(item, result$$);\n return result$$;\n } else {\n return resolved;\n }\n });\n if (hasPromise) {\n return resource<Result, undefined>({\n loader: async () => (one ? result[0] : Promise.all(result)) as any,\n injector: injector,\n });\n } else {\n return {\n value: computed<Result>(() => (one ? result[0] : result) as any),\n };\n }\n });\n}\n","import {\n PiComponentDefaultConfig,\n PiResolvedViewFieldConfig,\n ConfigMergeStrategyObject,\n PiViewConfig,\n NgResolvedComponentDefine1,\n} from './type';\nimport { inject, Injectable, Type } from '@angular/core';\n\nimport { FormBuilder, PI_VIEW_CONFIG_TOKEN } from '@piying/view-angular-core';\nimport { NG_CONFIG_DEFAULT_MERGE_STRAGEGY } from './const';\nimport { NgSchemaHandle } from './schema/ng-schema';\n\n@Injectable()\nexport class AngularFormBuilder extends FormBuilder<NgSchemaHandle> {\n #globalConfig: PiViewConfig = inject(PI_VIEW_CONFIG_TOKEN) as any;\n override afterResolveConfig(\n rawConfig: NgSchemaHandle,\n config: PiResolvedViewFieldConfig,\n ): PiResolvedViewFieldConfig {\n const field = rawConfig;\n const type = rawConfig.type;\n let componentDefaultConfig: PiComponentDefaultConfig | undefined;\n let define;\n const mergeStrategy = this.#globalConfig\n .defaultConfigMergeStrategy as ConfigMergeStrategyObject;\n\n if (type) {\n const result = this.#resolveComponent(type);\n define = result.define;\n componentDefaultConfig = result.defaultConfig;\n }\n\n const directives = this.configMerge(\n [componentDefaultConfig?.directives, field.directives],\n true,\n mergeStrategy?.directives ?? NG_CONFIG_DEFAULT_MERGE_STRAGEGY.directives,\n );\n return {\n ...config,\n directives: directives,\n };\n }\n\n #resolveComponent(type: string | Type<any> | (() => Promise<Type<any>>)) {\n let define;\n let defaultConfig;\n // 查引用\n if (typeof type === 'string') {\n const config = this.#globalConfig.types?.[type];\n if (!config) {\n throw new Error(`未注册${type}`);\n }\n defaultConfig = config;\n if (Object.keys(config).length) {\n define = {\n ...config,\n } as NgResolvedComponentDefine1;\n }\n } else {\n // 直接使用视为独立组件,并且selector只有一个\n define = { type } as NgResolvedComponentDefine1;\n }\n return {\n define,\n defaultConfig,\n };\n }\n}\n","import { 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?: 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 createEnvironmentInjector,\n DestroyRef,\n EnvironmentInjector,\n inject,\n Injector,\n input,\n OnChanges,\n output,\n signal,\n SimpleChanges,\n TemplateRef,\n untracked,\n} from '@angular/core';\nimport { NgComponentOutlet } from './hook/ng_component_outlet';\n\nimport {\n PiViewConfig,\n PiResolvedViewFieldConfig,\n NgResolvedWraaperConfig,\n} from './type';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NgResolvedComponentDefine2 } from './type/component';\nimport { createAsyncCache } from './util/async-cache';\nimport {\n convert,\n FieldArray,\n FieldControl,\n FieldGroup,\n initListen,\n isFieldArray,\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 as any,\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 schema = input.required<\n v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>\n >();\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 #envInjector = inject(EnvironmentInjector);\n #builderEnvInjector?: EnvironmentInjector;\n resolvedField$ = signal<PiResolvedViewFieldConfig | undefined>(undefined);\n #listenDispose?: () => void;\n\n #updateField() {\n this.#clean();\n // 临时销毁\n const envInjector = createEnvironmentInjector([], this.#envInjector);\n this.#builderEnvInjector = envInjector;\n const result = convert<PiResolvedViewFieldConfig>(this.schema() as any, {\n ...DefaultConvertOptions,\n ...this.options(),\n injector: envInjector,\n registerOnDestroy: (fn) => {\n envInjector.get(DestroyRef).onDestroy(() => {\n fn();\n });\n },\n });\n this.resolvedField$.set(result);\n return result;\n }\n #clean() {\n if (this.#builderEnvInjector) {\n this.#builderEnvInjector.destroy();\n this.#builderEnvInjector = 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 = (\n inputs: PiResolvedViewFieldConfig['inputs'],\n\n fieldTemplateRef: TemplateRef<any>,\n ) =>\n computed(() => ({\n ...inputs(),\n fieldTemplateRef,\n }));\n\n resolvedComponent = createAsyncCache<true, NgResolvedComponentDefine2>(\n true,\n this.#injector,\n );\n // 这里的组件还是不准确,因为type已经改了,\n resolvedWrapper = createAsyncCache<false, NgResolvedWraaperConfig[]>(\n false,\n this.#injector,\n );\n\n groupHidden = (field: PiResolvedViewFieldConfig) =>\n computed(() => this.#groupHidden(field));\n #groupHidden(field: PiResolvedViewFieldConfig): boolean {\n if (isFieldArray(field.form.control) || field.restChildren) {\n return false;\n }\n if (field.fixedChildren) {\n if (!field.fixedChildren?.().length) {\n return true;\n } else {\n return field.fixedChildren().every((field) => this.#groupHidden(field));\n }\n } else {\n return !field.define || !!field.renderConfig().hidden;\n }\n }\n ngOnDestroy(): void {\n this.#listenDispose?.();\n }\n}\n","<ng-template #dynamicComponent let-field>\n @let renderConfig = field.renderConfig();\n @if (!renderConfig?.hidden) {\n @let typeResource = resolvedComponent | pure: field.define;\n @let type = typeResource.value();\n @let wrappersResource = resolvedWrapper | pure: field.wrappers();\n @let wrappers = wrappersResource.value();\n @if (type) {\n @if (field.fixedChildren || field.restChildren) {\n @if (!(groupHidden | pure: field)()) {\n <!-- 自定义group -->\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"\n (groupInputsValue | pure: field.inputs : dynamicComponent)?.()\n \"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n } @else {\n <ng-container\n [ngComponentOutlet]=\"type\"\n [ngComponentOutletInputs]=\"field.inputs()\"\n [ngComponentOutletOutputs]=\"field.outputs()\"\n [ngComponentOutletFormControl]=\"$any(field.form.control)\"\n [ngComponentOutletWrappers]=\"wrappers\"\n [ngComponentOutletField]=\"field\"\n [ngComponentOutletDirectives]=\"field.directives\"\n ></ng-container>\n }\n }\n }\n</ng-template>\n\n@if (resolvedField$(); as field) {\n <ng-container\n *ngTemplateOutlet=\"dynamicComponent; context: { $implicit: field }\"\n ></ng-container>\n}\n","import {\n computed,\n Directive,\n inject,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { BaseComponent } from './base.component';\nimport {\n PI_COMPONENT_LIST,\n PI_COMPONENT_LIST_LISTEN,\n PI_VIEW_FIELD_TOKEN,\n} from '../type/view-token';\n\n@Directive()\nexport class PiyingViewWrapperBase extends BaseComponent {\n fieldComponentAnchor = viewChild('fieldComponent', {\n read: ViewContainerRef,\n });\n field$$ = inject(PI_VIEW_FIELD_TOKEN);\n props$$ = computed(() => this.field$$().props());\n #listen = inject(PI_COMPONENT_LIST_LISTEN);\n #list = inject(PI_COMPONENT_LIST);\n override createComponent() {\n const result = super.createComponent(\n this.#list,\n this.fieldComponentAnchor()!,\n );\n this.#listen.subscribe((list) => {\n this.update(list);\n });\n return result;\n }\n ngOnInit(): void {\n this.createComponent();\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 _PiResolvedCommonViewFieldConfig,\n asyncInputMerge,\n mergeHooksFn,\n} from '@piying/view-angular-core';\nimport { NgDirectiveConfig } from '../../type';\nimport { rawConfig } from './raw-config';\nimport { NgSchemaHandle } from '../ng-schema';\nimport { linkedSignal, signal } from '@angular/core';\n\nexport function setDirectives<T>(items: NgDirectiveConfig[]) {\n return rawConfig<T>((field) => {\n field.directives = items;\n });\n}\nexport function patchDirectives<T>(items: NgDirectiveConfig[]) {\n return rawConfig<T>((field) => {\n field.directives ??= [];\n field.directives.push(...items);\n });\n}\nexport function patchAsyncDirective<T>(\n fn: (\n field: _PiResolvedCommonViewFieldConfig,\n ) => Omit<NgDirectiveConfig, 'inputs'> & { inputs?: Record<string, any> },\n) {\n return rawConfig<T>((field) => {\n mergeHooksFn<NgSchemaHandle>(\n {\n fieldResolved: (field) => {\n field.directives ??= signal([]);\n const directive = fn(field);\n const inputs = directive.inputs;\n let inputs$ = signal<Record<string, any>>({});\n if (inputs) {\n inputs$.set(\n Object.keys(inputs).reduce(\n (obj, key) => {\n obj[key] = undefined;\n return obj;\n },\n {} as Record<string, any>,\n ),\n );\n inputs$ = asyncInputMerge(inputs, inputs$);\n }\n const oldDirectives = field.directives;\n field.directives = linkedSignal(() => [\n ...oldDirectives(),\n { ...directive, inputs: inputs$ },\n ]);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n}\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: any) {\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 disabled$ = signal(false);\n setDisabledState(isDisabled: boolean): void {\n this.disabled$.set(isDisabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["originRawConfig"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -26,13 +26,12 @@ declare class PiyingViewGroup extends PiyingViewGroupBase {
|
|
|
26
26
|
|
|
27
27
|
type DirectiveConfig<T = any> = {
|
|
28
28
|
/** string表示是标签,type<any>是组件或者指令 */
|
|
29
|
-
type: Type<T
|
|
29
|
+
type: Type<T>;
|
|
30
30
|
inputs?: Signal<Record<string, any>>;
|
|
31
31
|
outputs?: CoreRawViewOutputs;
|
|
32
32
|
model?: Record<string, WritableSignal<any>>;
|
|
33
33
|
selector?: string;
|
|
34
34
|
attributes?: Signal<CoreRawViewAttributes | undefined>;
|
|
35
|
-
contents?: ComponentContent;
|
|
36
35
|
};
|
|
37
36
|
|
|
38
37
|
/** todo 这个没有支持 */
|
|
@@ -40,7 +39,7 @@ interface RawDirectiveOutputs {
|
|
|
40
39
|
[name: string]: (event: any, field: PiResolvedViewFieldConfig) => void;
|
|
41
40
|
}
|
|
42
41
|
interface DynamicComponentConfig {
|
|
43
|
-
type: Type<any
|
|
42
|
+
type: Type<any>;
|
|
44
43
|
module?: Type<any>;
|
|
45
44
|
attributes: Signal<CoreRawViewAttributes | undefined>;
|
|
46
45
|
selector?: string;
|
|
@@ -48,26 +47,19 @@ interface DynamicComponentConfig {
|
|
|
48
47
|
directives?: DirectiveConfig[];
|
|
49
48
|
outputs?: CoreRawViewOutputs;
|
|
50
49
|
injector?: Injector;
|
|
51
|
-
contents?: ComponentContent;
|
|
52
50
|
}
|
|
53
|
-
type ComponentContent = {
|
|
54
|
-
select?: string;
|
|
55
|
-
nodes?: any[];
|
|
56
|
-
text?: Signal<string>;
|
|
57
|
-
}[];
|
|
58
51
|
/** 解析后组件已经加载 ngcomponentoutlet */
|
|
59
52
|
type NgResolvedComponentDefine2 = Omit<NgResolvedComponentDefine1, 'type'> & {
|
|
60
53
|
type: NgComponentDefine;
|
|
61
54
|
};
|
|
62
55
|
/** component,wrapper通用定义 */
|
|
63
56
|
type NgComponentDefine = {
|
|
64
|
-
component: Type<any
|
|
57
|
+
component: Type<any>;
|
|
65
58
|
module?: Type<any>;
|
|
66
59
|
};
|
|
67
60
|
|
|
68
61
|
declare class NgSchemaHandle extends CoreSchemaHandle<NgSchemaHandle, () => PiResolvedViewFieldConfig> {
|
|
69
62
|
type?: any;
|
|
70
|
-
contents?: ComponentContent;
|
|
71
63
|
directives?: NgDirectiveConfig[];
|
|
72
64
|
}
|
|
73
65
|
|
|
@@ -84,11 +76,10 @@ type NgRawComponentDefine = Omit<CoreRawComponentDefine, 'type'> & {
|
|
|
84
76
|
};
|
|
85
77
|
/** 解析后但是未加载 */
|
|
86
78
|
type NgResolvedComponentDefine1 = Omit<CoreResolvedComponentDefine, 'type'> & {
|
|
87
|
-
type:
|
|
79
|
+
type: Type<any> | LazyImport<Type<any>> | NgComponentDefine | LazyImport<NgComponentDefine> | LazyMarkType<Type<any>> | LazyMarkType<NgComponentDefine>;
|
|
88
80
|
selector?: string;
|
|
89
81
|
};
|
|
90
82
|
type PiResolvedViewFieldConfig = PiResolvedCommonViewFieldConfig<() => PiResolvedViewFieldConfig, NgResolvedComponentDefine1> & {
|
|
91
|
-
contents?: ComponentContent;
|
|
92
83
|
directives?: WritableSignal<NgDirectiveConfig[]>;
|
|
93
84
|
};
|
|
94
85
|
type NgResolvedWraaperConfig = Omit<CoreResolvedWrapperConfig, 'type'> & {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@piying/view-angular",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Piying view For Angular;Valibot to Component",
|
|
5
5
|
"homepage": "https://piying-org.github.io/website/docs/client/intro",
|
|
6
6
|
"repository": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"valibot": "^1.1.0"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@piying/view-angular-core": "^1.
|
|
41
|
+
"@piying/view-angular-core": "^1.6.0",
|
|
42
42
|
"tslib": "^2.3.0"
|
|
43
43
|
},
|
|
44
44
|
"sideEffects": false,
|