@tetacom/ng-components 1.4.5 → 1.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,24 +1,18 @@
1
- import { EventEmitter, QueryList } from '@angular/core';
2
- import { ControlContainer, FormGroup } from '@angular/forms';
1
+ import { QueryList } from '@angular/core';
3
2
  import { IDictionary } from '../../../../common/contract/i-dictionary';
4
3
  import { IIdName } from '../../../../common/contract/i-id-name';
5
4
  import { TableColumn } from '../../../table/contract/table-column';
6
5
  import { PropertyGridItemDescriptionDirective } from '../property-grid-item-description.directive';
7
6
  import * as i0 from "@angular/core";
8
7
  export declare class PropertyGridGroupComponent<T> {
9
- private _formGroup;
10
- column: TableColumn;
11
- hideNonEditable: boolean;
12
- dict: IDictionary<IIdName<any>[]>;
13
- item: T;
14
- horizontal: boolean;
15
- controlValueChange: EventEmitter<IIdName<any>>;
16
- decimalPart: number;
17
- itemTemplates: QueryList<PropertyGridItemDescriptionDirective>;
18
- get formGroup(): FormGroup;
19
- get editable(): boolean;
20
- constructor(_formGroup: ControlContainer);
21
- trackColumns(index: number, column: TableColumn): any;
22
- static ɵfac: i0.ɵɵFactoryDeclaration<PropertyGridGroupComponent<any>, [{ optional: true; }]>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<PropertyGridGroupComponent<any>, "teta-property-grid-group", never, { "column": { "alias": "column"; "required": false; }; "hideNonEditable": { "alias": "hideNonEditable"; "required": false; }; "dict": { "alias": "dict"; "required": false; }; "item": { "alias": "item"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "decimalPart": { "alias": "decimalPart"; "required": false; }; "itemTemplates": { "alias": "itemTemplates"; "required": false; }; }, { "controlValueChange": "controlValueChange"; }, never, never, true, never>;
8
+ column: import("@angular/core").InputSignal<TableColumn>;
9
+ hideNonEditable: import("@angular/core").InputSignal<boolean>;
10
+ dict: import("@angular/core").InputSignal<IDictionary<IIdName<any>[]>>;
11
+ item: import("@angular/core").InputSignal<T>;
12
+ horizontal: import("@angular/core").InputSignal<boolean>;
13
+ controlValueChange: import("@angular/core").OutputEmitterRef<IIdName<any>>;
14
+ decimalPart: import("@angular/core").InputSignal<number>;
15
+ itemTemplates: import("@angular/core").InputSignal<QueryList<PropertyGridItemDescriptionDirective>>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<PropertyGridGroupComponent<any>, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<PropertyGridGroupComponent<any>, "teta-property-grid-group", never, { "column": { "alias": "column"; "required": false; "isSignal": true; }; "hideNonEditable": { "alias": "hideNonEditable"; "required": false; "isSignal": true; }; "dict": { "alias": "dict"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "horizontal": { "alias": "horizontal"; "required": false; "isSignal": true; }; "decimalPart": { "alias": "decimalPart"; "required": false; "isSignal": true; }; "itemTemplates": { "alias": "itemTemplates"; "required": false; "isSignal": true; }; }, { "controlValueChange": "controlValueChange"; }, never, never, true, never>;
24
18
  }
@@ -1,6 +1,5 @@
1
- import { EventEmitter, OnChanges, OnDestroy, QueryList, SimpleChanges } from '@angular/core';
2
- import { ControlContainer, FormGroup } from '@angular/forms';
3
- import { TranslocoService } from '@ngneat/transloco';
1
+ import { OnChanges, OnDestroy, QueryList, SimpleChanges } from '@angular/core';
2
+ import { FormGroup } from '@angular/forms';
4
3
  import { IDictionary } from '../../../../common/contract/i-dictionary';
5
4
  import { IIdName } from '../../../../common/contract/i-id-name';
6
5
  import { Align } from '../../../../common/enum/align.enum';
@@ -9,30 +8,30 @@ import { TableColumn } from '../../../table/contract/table-column';
9
8
  import { PropertyGridItemDescriptionDirective } from '../property-grid-item-description.directive';
10
9
  import * as i0 from "@angular/core";
11
10
  export declare class PropertyGridItemComponent<T> implements OnDestroy, OnChanges {
12
- private _transloco;
11
+ private transloco;
13
12
  private _formGroup;
14
- column: TableColumn;
15
- hideNonEditable: boolean;
16
- dict: IDictionary<IIdName<any>[]>;
17
- decimalPart: number;
18
- item: T;
19
- itemTemplates: QueryList<PropertyGridItemDescriptionDirective>;
20
- get template(): PropertyGridItemDescriptionDirective;
13
+ column: import("@angular/core").InputSignal<TableColumn>;
14
+ hideNonEditable: import("@angular/core").InputSignal<boolean>;
15
+ dict: import("@angular/core").InputSignal<IDictionary<IIdName<any>[]>>;
16
+ decimalPart: import("@angular/core").InputSignal<number>;
17
+ item: import("@angular/core").InputSignal<T>;
18
+ itemTemplates: import("@angular/core").InputSignal<QueryList<PropertyGridItemDescriptionDirective>>;
19
+ template: import("@angular/core").Signal<PropertyGridItemDescriptionDirective>;
21
20
  get formGroup(): FormGroup;
22
- get editable(): boolean;
23
- horizontal: boolean;
24
- controlValueChange: EventEmitter<IIdName<any>>;
21
+ editable: import("@angular/core").Signal<boolean>;
22
+ horizontal: import("@angular/core").InputSignal<boolean>;
23
+ controlValueChange: import("@angular/core").OutputEmitterRef<IIdName<any>>;
25
24
  align: typeof Align;
26
25
  filterTypeEnum: typeof FilterType;
27
26
  private _formSub;
28
- get caption(): string;
27
+ caption: import("@angular/core").Signal<string>;
29
28
  private _alive;
30
- constructor(_transloco: TranslocoService, _formGroup: ControlContainer);
31
- getDict(): IIdName<any>[];
29
+ constructor();
30
+ getDict(): any;
32
31
  controlIsInvalid(controlName: string): boolean;
33
32
  getError(column: TableColumn): string;
34
33
  ngOnDestroy(): void;
35
34
  ngOnChanges(changes: SimpleChanges): void;
36
- static ɵfac: i0.ɵɵFactoryDeclaration<PropertyGridItemComponent<any>, [null, { optional: true; }]>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<PropertyGridItemComponent<any>, "teta-property-grid-item", never, { "column": { "alias": "column"; "required": false; }; "hideNonEditable": { "alias": "hideNonEditable"; "required": false; }; "dict": { "alias": "dict"; "required": false; }; "decimalPart": { "alias": "decimalPart"; "required": false; }; "item": { "alias": "item"; "required": false; }; "itemTemplates": { "alias": "itemTemplates"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; }, { "controlValueChange": "controlValueChange"; }, never, never, true, never>;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<PropertyGridItemComponent<any>, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<PropertyGridItemComponent<any>, "teta-property-grid-item", never, { "column": { "alias": "column"; "required": false; "isSignal": true; }; "hideNonEditable": { "alias": "hideNonEditable"; "required": false; "isSignal": true; }; "dict": { "alias": "dict"; "required": false; "isSignal": true; }; "decimalPart": { "alias": "decimalPart"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "itemTemplates": { "alias": "itemTemplates"; "required": false; "isSignal": true; }; "horizontal": { "alias": "horizontal"; "required": false; "isSignal": true; }; }, { "controlValueChange": "controlValueChange"; }, never, never, true, never>;
38
37
  }
@@ -1,31 +1,26 @@
1
- import { EventEmitter, OnDestroy, QueryList } from '@angular/core';
1
+ import { QueryList } from '@angular/core';
2
2
  import { ControlContainer, FormGroup } from '@angular/forms';
3
3
  import { IDictionary } from '../../../common/contract/i-dictionary';
4
4
  import { IIdName } from '../../../common/contract/i-id-name';
5
5
  import { TableColumn } from '../../table/contract/table-column';
6
6
  import { PropertyGridItemDescriptionDirective } from './property-grid-item-description.directive';
7
7
  import * as i0 from "@angular/core";
8
- export declare class PropertyGridComponent<T> implements OnDestroy {
8
+ export declare class PropertyGridComponent<T> {
9
9
  private _formGroup;
10
10
  formClass: boolean;
11
11
  itemTemplates: QueryList<PropertyGridItemDescriptionDirective>;
12
- hideNonEditable: boolean;
13
- columns: TableColumn[];
14
- dict: IDictionary<IIdName<any>[]>;
15
- set item(item: T);
16
- get item(): T;
17
- horizontal: boolean;
18
- decimalPart: number;
19
- controlValueChange: EventEmitter<IIdName<any>>;
20
- private _alive;
21
- private _item;
12
+ hideNonEditable: import("@angular/core").InputSignal<boolean>;
13
+ columns: import("@angular/core").InputSignal<TableColumn[]>;
14
+ dict: import("@angular/core").InputSignal<IDictionary<IIdName<any>[]>>;
15
+ item: import("@angular/core").InputSignal<T>;
16
+ horizontal: import("@angular/core").InputSignal<boolean>;
17
+ decimalPart: import("@angular/core").InputSignal<number>;
18
+ controlValueChange: import("@angular/core").OutputEmitterRef<IIdName<any>>;
22
19
  get formGroup(): FormGroup;
23
20
  constructor(_formGroup: ControlContainer);
24
21
  getEditable(column: TableColumn): boolean;
25
22
  onControlValueChange(event: IIdName<any>): void;
26
- ngOnDestroy(): void;
27
- trackColumns(index: number, column: TableColumn): any;
28
23
  private getDictValue;
29
24
  static ɵfac: i0.ɵɵFactoryDeclaration<PropertyGridComponent<any>, [{ optional: true; }]>;
30
- static ɵcmp: i0.ɵɵComponentDeclaration<PropertyGridComponent<any>, "teta-property-grid", never, { "hideNonEditable": { "alias": "hideNonEditable"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "dict": { "alias": "dict"; "required": false; }; "item": { "alias": "item"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "decimalPart": { "alias": "decimalPart"; "required": false; }; }, { "controlValueChange": "controlValueChange"; }, ["itemTemplates"], never, true, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<PropertyGridComponent<any>, "teta-property-grid", never, { "hideNonEditable": { "alias": "hideNonEditable"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "dict": { "alias": "dict"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "horizontal": { "alias": "horizontal"; "required": false; "isSignal": true; }; "decimalPart": { "alias": "decimalPart"; "required": false; "isSignal": true; }; }, { "controlValueChange": "controlValueChange"; }, ["itemTemplates"], never, true, never>;
31
26
  }
@@ -1,4 +1,3 @@
1
- export * from './property-grid.module';
2
1
  export * from './property-grid/property-grid.component';
3
2
  export * from './property-grid/property-grid-item/property-grid-item.component';
4
3
  export * from './property-grid/property-grid-item-description.directive';
@@ -89,11 +89,11 @@ export class DayPickerComponent {
89
89
  this.dayOrder = arr;
90
90
  }
91
91
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: DayPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: DayPickerComponent, isStandalone: true, selector: "teta-day-picker", inputs: { date: "date", calendar: "calendar", viewType: "viewType", range: "range", min: "min", max: "max", locale: "locale", hoveredDate: "hoveredDate" }, outputs: { hoveredDateChange: "hoveredDateChange", selectDate: "selectDate" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"datepicker-week font-caption\">\n @for (day of dayOrder; track day) {\n <p class=\"datepicker-day\">\n {{ day }}\n </p>\n }\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\">\n @for (day of calendar; track day) {\n <div\n [class]=\"getRangeActiveClass(day) + ' datepicker-date font-body-3 datepicker_' + viewType\"\n (mouseenter)=\"hover(day.date)\"\n (click)=\"pickDate(day)\"\n [ngClass]=\"{\n 'datepicker-date_active': day.selected || (day.date === hoveredDate && range && !range.to),\n 'datepicker-date-range_hover': range && isHoveredRange(day),\n 'datepicker-date_disabled': day.disabled,\n 'color-text-30': day.disabled || (!range && !day.isCurrentMonth),\n 'datepicker-date-range_disabled': !day.isCurrentMonth && range,\n 'datepicker-date-range_active': isActiveRange(day)\n }\"\n >\n <teta-day-item [day]=\"day\"></teta-day-item>\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: DayItemComponent, selector: "teta-day-item", inputs: ["day"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: DayPickerComponent, isStandalone: true, selector: "teta-day-picker", inputs: { date: "date", calendar: "calendar", viewType: "viewType", range: "range", min: "min", max: "max", locale: "locale", hoveredDate: "hoveredDate" }, outputs: { hoveredDateChange: "hoveredDateChange", selectDate: "selectDate" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"datepicker-week font-caption\">\n @for (day of dayOrder; track day) {\n <p class=\"datepicker-day\">\n {{ day }}\n </p>\n }\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\">\n @for (day of calendar; track day.date.getTime()) {\n <div\n [class]=\"getRangeActiveClass(day) + ' datepicker-date font-body-3 datepicker_' + viewType\"\n (mouseenter)=\"hover(day.date)\"\n (click)=\"pickDate(day)\"\n [ngClass]=\"{\n 'datepicker-date_active': day.selected || (day.date === hoveredDate && range && !range.to),\n 'datepicker-date-range_hover': range && isHoveredRange(day),\n 'datepicker-date_disabled': day.disabled,\n 'color-text-30': day.disabled || (!range && !day.isCurrentMonth),\n 'datepicker-date-range_disabled': !day.isCurrentMonth && range,\n 'datepicker-date-range_active': isActiveRange(day)\n }\"\n >\n <teta-day-item [day]=\"day\"></teta-day-item>\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: DayItemComponent, selector: "teta-day-item", inputs: ["day"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
93
93
  }
94
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: DayPickerComponent, decorators: [{
95
95
  type: Component,
96
- args: [{ selector: 'teta-day-picker', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, DayItemComponent], template: "<div class=\"datepicker-week font-caption\">\n @for (day of dayOrder; track day) {\n <p class=\"datepicker-day\">\n {{ day }}\n </p>\n }\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\">\n @for (day of calendar; track day) {\n <div\n [class]=\"getRangeActiveClass(day) + ' datepicker-date font-body-3 datepicker_' + viewType\"\n (mouseenter)=\"hover(day.date)\"\n (click)=\"pickDate(day)\"\n [ngClass]=\"{\n 'datepicker-date_active': day.selected || (day.date === hoveredDate && range && !range.to),\n 'datepicker-date-range_hover': range && isHoveredRange(day),\n 'datepicker-date_disabled': day.disabled,\n 'color-text-30': day.disabled || (!range && !day.isCurrentMonth),\n 'datepicker-date-range_disabled': !day.isCurrentMonth && range,\n 'datepicker-date-range_active': isActiveRange(day)\n }\"\n >\n <teta-day-item [day]=\"day\"></teta-day-item>\n </div>\n }\n</div>\n" }]
96
+ args: [{ selector: 'teta-day-picker', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, DayItemComponent], template: "<div class=\"datepicker-week font-caption\">\n @for (day of dayOrder; track day) {\n <p class=\"datepicker-day\">\n {{ day }}\n </p>\n }\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\">\n @for (day of calendar; track day.date.getTime()) {\n <div\n [class]=\"getRangeActiveClass(day) + ' datepicker-date font-body-3 datepicker_' + viewType\"\n (mouseenter)=\"hover(day.date)\"\n (click)=\"pickDate(day)\"\n [ngClass]=\"{\n 'datepicker-date_active': day.selected || (day.date === hoveredDate && range && !range.to),\n 'datepicker-date-range_hover': range && isHoveredRange(day),\n 'datepicker-date_disabled': day.disabled,\n 'color-text-30': day.disabled || (!range && !day.isCurrentMonth),\n 'datepicker-date-range_disabled': !day.isCurrentMonth && range,\n 'datepicker-date-range_active': isActiveRange(day)\n }\"\n >\n <teta-day-item [day]=\"day\"></teta-day-item>\n </div>\n }\n</div>\n" }]
97
97
  }], ctorParameters: () => [], propDecorators: { date: [{
98
98
  type: Input
99
99
  }], calendar: [{
@@ -115,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
115
115
  }], selectDate: [{
116
116
  type: Output
117
117
  }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RheS1waWNrZXIvZGF5LXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RheS1waWNrZXIvZGF5LXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHMUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVUxQyxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCO1FBWFMsU0FBSSxHQUEyQixJQUFJLElBQUksRUFBRSxDQUFDO1FBUXpDLHNCQUFpQixHQUF3QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xFLGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVyRCxDQUFDO0lBRWhCLFNBQVMsQ0FBQyxHQUFhLEVBQUUsSUFBNEIsRUFBRSxFQUEwQjtRQUMvRSxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQztRQUNsRixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUs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Q0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ3RCLENBQUM7OEdBckdVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDJVQ3pCL0IsMjdCQTBCQSwwRERIWSxPQUFPLG9GQUFFLGdCQUFnQjs7MkZBRXhCLGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7d0RBRzNCLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXlNb2RlbCB9IGZyb20gJy4uL21vZGVsL2RheS1tb2RlbCc7XG5pbXBvcnQgeyBEYXRlRnJvbVRvTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9mcm9tLXRvLm1vZGVsJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyB2aWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbC92aWV3LXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgVGV0YUxvY2FsaXNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2xvY2FsZS90ZXRhLWxvY2FsaXNhdGlvbic7XG5pbXBvcnQgeyBEYXlJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9kYXktaXRlbS9kYXktaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtZGF5LXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXktcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF5LXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIERheUl0ZW1Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXlQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyID0gbmV3IERhdGUoKTtcbiAgQElucHV0KCkgY2FsZW5kYXI6IERheU1vZGVsW107XG4gIEBJbnB1dCgpIHZpZXdUeXBlOiB2aWV3VHlwZTtcbiAgQElucHV0KCkgcmFuZ2U/OiBEYXRlRnJvbVRvTW9kZWw7XG4gIEBJbnB1dCgpIG1pbjogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcbiAgQElucHV0KCkgbWF4OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyO1xuICBASW5wdXQoKSBsb2NhbGU6IFRldGFMb2NhbGlzYXRpb247XG4gIEBJbnB1dCgpIGhvdmVyZWREYXRlPzogRGF0ZTtcbiAgQE91dHB1dCgpIGhvdmVyZWREYXRlQ2hhbmdlPzogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBwdWJsaWMgZGF5T3JkZXI6IHN0cmluZ1tdO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgaXNJblJhbmdlKGRheTogRGF5TW9kZWwsIGZyb206IERhdGUgfCBudW1iZXIgfCBzdHJpbmcsIHRvOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgY29uc3QgbWF0Y2hlc01pbkRhdGUgPSBkYXlqcyhuZXcgRGF0ZShmcm9tKSkuc3RhcnRPZignZGF0ZScpLnRvRGF0ZSgpIDw9IGRheS5kYXRlO1xuICAgIGNvbnN0IG1hdGNoZXNNYXhEYXRlID0gZGF5LmRhdGUgPCBkYXlqcyhuZXcgRGF0ZSh0bykpLmVuZE9mKCdkYXRlJykudG9EYXRlKCk7XG4gICAgcmV0dXJuIG1hdGNoZXNNaW5EYXRlICYmIG1hdGNoZXNNYXhEYXRlO1xuICB9XG5cbiAgaXNIb3ZlcmVkUmFuZ2UoZGF5OiBEYXlNb2RlbCkge1xuICAgIGlmICghdGhpcy5yYW5nZT8udG8gJiYgdGhpcy5yYW5nZT8uZnJvbSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5pc0luUmFuZ2UoZGF5LCB0aGlzLnJhbmdlLmZyb20sIHRoaXMuaG92ZXJlZERhdGUpIHx8IHRoaXMuaXNJblJhbmdlKGRheSwgdGhpcy5ob3ZlcmVkRGF0ZSwgdGhpcy5yYW5nZS5mcm9tKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNBY3RpdmVSYW5nZShkYXk6IERheU1vZGVsKSB7XG4gICAgaWYgKHRoaXMucmFuZ2U/LmZyb20gJiYgdGhpcy5yYW5nZT8udG8pIHtcbiAgICAgIHJldHVybiB0aGlzLmlzSW5SYW5nZShkYXksIHRoaXMucmFuZ2UuZnJvbSwgdGhpcy5yYW5nZS50byk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHBpY2tEYXRlKGRheTogRGF5TW9kZWwpIHtcbiAgICBpZiAoIWRheS5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWxlY3REYXRlLmVtaXQoZGF5LmRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJhbmdlQWN0aXZlQ2xhc3MoZDogRGF5TW9kZWwpIHtcbiAgICBpZiAodGhpcy5yYW5nZSAmJiBuZXcgRGF0ZSh0aGlzLnJhbmdlPy5mcm9tKS5nZXRUaW1lKCkgIT09IG5ldyBEYXRlKHRoaXMucmFuZ2U/LnRvKS5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICh0aGlzLnJhbmdlLnRvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzU3RhdGljSXRlbShkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmhvdmVyZWREYXRlLmdldFRpbWUoKSA9PT0gZC5kYXRlLmdldFRpbWUoKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzSG92ZXJlZEl0ZW0oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzc1NlbGVjdGVkSXRlbShkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBob3ZlcihkYXRlOiBEYXRlKSB7XG4gICAgaWYgKGRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5ob3ZlcmVkRGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLmhvdmVyZWREYXRlID0gZGF0ZTtcbiAgICAgIHRoaXMuaG92ZXJlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgICB9XG4gIH1cblxuICBnZXRDbGFzc1N0YXRpY0l0ZW0oZDogRGF5TW9kZWwpIHtcbiAgICBjb25zdCBmcm9tID0gZGF5anMobmV3IERhdGUodGhpcy5yYW5nZS5mcm9tKSkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG4gICAgY29uc3QgdG8gPSBkYXlqcyhuZXcgRGF0ZSh0aGlzLnJhbmdlLnRvKSkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG4gICAgY29uc3QgaXRlbURhdGUgPSBkYXlqcyhuZXcgRGF0ZShkLmRhdGUpKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTtcbiAgICBpZiAoZnJvbS5nZXRUaW1lKCkgPT09IGl0ZW1EYXRlLmdldFRpbWUoKSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLWZpcnN0JztcbiAgICB9XG4gICAgaWYgKHRvLmdldFRpbWUoKSA9PT0gaXRlbURhdGUuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4gJ2RhdGVwaWNrZXItZGF0ZV9hY3RpdmUtc2Vjb25kJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0Q2xhc3NIb3ZlcmVkSXRlbSgpIHtcbiAgICBpZiAobmV3IERhdGUodGhpcy5yYW5nZS5mcm9tKSA+IHRoaXMuaG92ZXJlZERhdGUpIHtcbiAgICAgIHJldHVybiAnZGF0ZXBpY2tlci1kYXRlX2FjdGl2ZS1maXJzdCc7XG4gICAgfVxuICAgIGlmIChuZXcgRGF0ZSh0aGlzLnJhbmdlLmZyb20pIDwgdGhpcy5ob3ZlcmVkRGF0ZSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLXNlY29uZCc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldENsYXNzU2VsZWN0ZWRJdGVtKGQ6IERheU1vZGVsKSB7XG4gICAgaWYgKGQuc2VsZWN0ZWQgJiYgZC5kYXRlIDwgdGhpcy5ob3ZlcmVkRGF0ZSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLWZpcnN0JztcbiAgICB9XG4gICAgaWYgKGQuc2VsZWN0ZWQgJiYgZC5kYXRlID4gdGhpcy5ob3ZlcmVkRGF0ZSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLXNlY29uZCc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBhcnIgPSBbLi4udGhpcy5sb2NhbGUuZGF5c1Nob3J0XTtcbiAgICBhcnIucHVzaChhcnIuc2hpZnQoKSk7XG4gICAgdGhpcy5kYXlPcmRlciA9IGFycjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItd2VlayBmb250LWNhcHRpb25cIj5cbiAgQGZvciAoZGF5IG9mIGRheU9yZGVyOyB0cmFjayBkYXkpIHtcbiAgPHAgY2xhc3M9XCJkYXRlcGlja2VyLWRheVwiPlxuICAgIHt7IGRheSB9fVxuICA8L3A+XG4gIH1cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItcGlja2VyIGNvbG9yLXRleHQtOTAgZm9udC1ib2R5LTNcIj5cbiAgQGZvciAoZGF5IG9mIGNhbGVuZGFyOyB0cmFjayBkYXkpIHtcbiAgPGRpdlxuICAgIFtjbGFzc109XCJnZXRSYW5nZUFjdGl2ZUNsYXNzKGRheSkgKyAnIGRhdGVwaWNrZXItZGF0ZSBmb250LWJvZHktMyBkYXRlcGlja2VyXycgKyB2aWV3VHlwZVwiXG4gICAgKG1vdXNlZW50ZXIpPVwiaG92ZXIoZGF5LmRhdGUpXCJcbiAgICAoY2xpY2spPVwicGlja0RhdGUoZGF5KVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2RhdGVwaWNrZXItZGF0ZV9hY3RpdmUnOiBkYXkuc2VsZWN0ZWQgfHwgKGRheS5kYXRlID09PSBob3ZlcmVkRGF0ZSAmJiByYW5nZSAmJiAhcmFuZ2UudG8pLFxuICAgICAgJ2RhdGVwaWNrZXItZGF0ZS1yYW5nZV9ob3Zlcic6IHJhbmdlICYmIGlzSG92ZXJlZFJhbmdlKGRheSksXG4gICAgICAnZGF0ZXBpY2tlci1kYXRlX2Rpc2FibGVkJzogZGF5LmRpc2FibGVkLFxuICAgICAgJ2NvbG9yLXRleHQtMzAnOiBkYXkuZGlzYWJsZWQgfHwgKCFyYW5nZSAmJiAhZGF5LmlzQ3VycmVudE1vbnRoKSxcbiAgICAgICdkYXRlcGlja2VyLWRhdGUtcmFuZ2VfZGlzYWJsZWQnOiAhZGF5LmlzQ3VycmVudE1vbnRoICYmIHJhbmdlLFxuICAgICAgJ2RhdGVwaWNrZXItZGF0ZS1yYW5nZV9hY3RpdmUnOiBpc0FjdGl2ZVJhbmdlKGRheSlcbiAgICB9XCJcbiAgPlxuICAgIDx0ZXRhLWRheS1pdGVtIFtkYXldPVwiZGF5XCI+PC90ZXRhLWRheS1pdGVtPlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RheS1waWNrZXIvZGF5LXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RheS1waWNrZXIvZGF5LXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHMUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVUxQyxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCO1FBWFMsU0FBSSxHQUEyQixJQUFJLElBQUksRUFBRSxDQUFDO1FBUXpDLHNCQUFpQixHQUF3QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xFLGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVyRCxDQUFDO0lBRWhCLFNBQVMsQ0FBQyxHQUFhLEVBQUUsSUFBNEIsRUFBRSxFQUEwQjtRQUMvRSxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQztRQUNsRixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUs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Q0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ3RCLENBQUM7OEdBckdVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDJVQ3pCL0IsMDhCQTBCQSwwRERIWSxPQUFPLG9GQUFFLGdCQUFnQjs7MkZBRXhCLGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7d0RBRzNCLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXlNb2RlbCB9IGZyb20gJy4uL21vZGVsL2RheS1tb2RlbCc7XG5pbXBvcnQgeyBEYXRlRnJvbVRvTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9mcm9tLXRvLm1vZGVsJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyB2aWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbC92aWV3LXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgVGV0YUxvY2FsaXNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2xvY2FsZS90ZXRhLWxvY2FsaXNhdGlvbic7XG5pbXBvcnQgeyBEYXlJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9kYXktaXRlbS9kYXktaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtZGF5LXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXktcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF5LXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIERheUl0ZW1Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXlQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyID0gbmV3IERhdGUoKTtcbiAgQElucHV0KCkgY2FsZW5kYXI6IERheU1vZGVsW107XG4gIEBJbnB1dCgpIHZpZXdUeXBlOiB2aWV3VHlwZTtcbiAgQElucHV0KCkgcmFuZ2U/OiBEYXRlRnJvbVRvTW9kZWw7XG4gIEBJbnB1dCgpIG1pbjogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcbiAgQElucHV0KCkgbWF4OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyO1xuICBASW5wdXQoKSBsb2NhbGU6IFRldGFMb2NhbGlzYXRpb247XG4gIEBJbnB1dCgpIGhvdmVyZWREYXRlPzogRGF0ZTtcbiAgQE91dHB1dCgpIGhvdmVyZWREYXRlQ2hhbmdlPzogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBwdWJsaWMgZGF5T3JkZXI6IHN0cmluZ1tdO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgaXNJblJhbmdlKGRheTogRGF5TW9kZWwsIGZyb206IERhdGUgfCBudW1iZXIgfCBzdHJpbmcsIHRvOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgY29uc3QgbWF0Y2hlc01pbkRhdGUgPSBkYXlqcyhuZXcgRGF0ZShmcm9tKSkuc3RhcnRPZignZGF0ZScpLnRvRGF0ZSgpIDw9IGRheS5kYXRlO1xuICAgIGNvbnN0IG1hdGNoZXNNYXhEYXRlID0gZGF5LmRhdGUgPCBkYXlqcyhuZXcgRGF0ZSh0bykpLmVuZE9mKCdkYXRlJykudG9EYXRlKCk7XG4gICAgcmV0dXJuIG1hdGNoZXNNaW5EYXRlICYmIG1hdGNoZXNNYXhEYXRlO1xuICB9XG5cbiAgaXNIb3ZlcmVkUmFuZ2UoZGF5OiBEYXlNb2RlbCkge1xuICAgIGlmICghdGhpcy5yYW5nZT8udG8gJiYgdGhpcy5yYW5nZT8uZnJvbSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5pc0luUmFuZ2UoZGF5LCB0aGlzLnJhbmdlLmZyb20sIHRoaXMuaG92ZXJlZERhdGUpIHx8IHRoaXMuaXNJblJhbmdlKGRheSwgdGhpcy5ob3ZlcmVkRGF0ZSwgdGhpcy5yYW5nZS5mcm9tKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNBY3RpdmVSYW5nZShkYXk6IERheU1vZGVsKSB7XG4gICAgaWYgKHRoaXMucmFuZ2U/LmZyb20gJiYgdGhpcy5yYW5nZT8udG8pIHtcbiAgICAgIHJldHVybiB0aGlzLmlzSW5SYW5nZShkYXksIHRoaXMucmFuZ2UuZnJvbSwgdGhpcy5yYW5nZS50byk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHBpY2tEYXRlKGRheTogRGF5TW9kZWwpIHtcbiAgICBpZiAoIWRheS5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWxlY3REYXRlLmVtaXQoZGF5LmRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJhbmdlQWN0aXZlQ2xhc3MoZDogRGF5TW9kZWwpIHtcbiAgICBpZiAodGhpcy5yYW5nZSAmJiBuZXcgRGF0ZSh0aGlzLnJhbmdlPy5mcm9tKS5nZXRUaW1lKCkgIT09IG5ldyBEYXRlKHRoaXMucmFuZ2U/LnRvKS5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICh0aGlzLnJhbmdlLnRvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzU3RhdGljSXRlbShkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmhvdmVyZWREYXRlLmdldFRpbWUoKSA9PT0gZC5kYXRlLmdldFRpbWUoKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzSG92ZXJlZEl0ZW0oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzc1NlbGVjdGVkSXRlbShkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBob3ZlcihkYXRlOiBEYXRlKSB7XG4gICAgaWYgKGRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5ob3ZlcmVkRGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLmhvdmVyZWREYXRlID0gZGF0ZTtcbiAgICAgIHRoaXMuaG92ZXJlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgICB9XG4gIH1cblxuICBnZXRDbGFzc1N0YXRpY0l0ZW0oZDogRGF5TW9kZWwpIHtcbiAgICBjb25zdCBmcm9tID0gZGF5anMobmV3IERhdGUodGhpcy5yYW5nZS5mcm9tKSkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG4gICAgY29uc3QgdG8gPSBkYXlqcyhuZXcgRGF0ZSh0aGlzLnJhbmdlLnRvKSkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG4gICAgY29uc3QgaXRlbURhdGUgPSBkYXlqcyhuZXcgRGF0ZShkLmRhdGUpKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTtcbiAgICBpZiAoZnJvbS5nZXRUaW1lKCkgPT09IGl0ZW1EYXRlLmdldFRpbWUoKSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLWZpcnN0JztcbiAgICB9XG4gICAgaWYgKHRvLmdldFRpbWUoKSA9PT0gaXRlbURhdGUuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4gJ2RhdGVwaWNrZXItZGF0ZV9hY3RpdmUtc2Vjb25kJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0Q2xhc3NIb3ZlcmVkSXRlbSgpIHtcbiAgICBpZiAobmV3IERhdGUodGhpcy5yYW5nZS5mcm9tKSA+IHRoaXMuaG92ZXJlZERhdGUpIHtcbiAgICAgIHJldHVybiAnZGF0ZXBpY2tlci1kYXRlX2FjdGl2ZS1maXJzdCc7XG4gICAgfVxuICAgIGlmIChuZXcgRGF0ZSh0aGlzLnJhbmdlLmZyb20pIDwgdGhpcy5ob3ZlcmVkRGF0ZSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLXNlY29uZCc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldENsYXNzU2VsZWN0ZWRJdGVtKGQ6IERheU1vZGVsKSB7XG4gICAgaWYgKGQuc2VsZWN0ZWQgJiYgZC5kYXRlIDwgdGhpcy5ob3ZlcmVkRGF0ZSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLWZpcnN0JztcbiAgICB9XG4gICAgaWYgKGQuc2VsZWN0ZWQgJiYgZC5kYXRlID4gdGhpcy5ob3ZlcmVkRGF0ZSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLXNlY29uZCc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBhcnIgPSBbLi4udGhpcy5sb2NhbGUuZGF5c1Nob3J0XTtcbiAgICBhcnIucHVzaChhcnIuc2hpZnQoKSk7XG4gICAgdGhpcy5kYXlPcmRlciA9IGFycjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItd2VlayBmb250LWNhcHRpb25cIj5cbiAgQGZvciAoZGF5IG9mIGRheU9yZGVyOyB0cmFjayBkYXkpIHtcbiAgPHAgY2xhc3M9XCJkYXRlcGlja2VyLWRheVwiPlxuICAgIHt7IGRheSB9fVxuICA8L3A+XG4gIH1cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItcGlja2VyIGNvbG9yLXRleHQtOTAgZm9udC1ib2R5LTNcIj5cbiAgQGZvciAoZGF5IG9mIGNhbGVuZGFyOyB0cmFjayBkYXkuZGF0ZS5nZXRUaW1lKCkpIHtcbiAgPGRpdlxuICAgIFtjbGFzc109XCJnZXRSYW5nZUFjdGl2ZUNsYXNzKGRheSkgKyAnIGRhdGVwaWNrZXItZGF0ZSBmb250LWJvZHktMyBkYXRlcGlja2VyXycgKyB2aWV3VHlwZVwiXG4gICAgKG1vdXNlZW50ZXIpPVwiaG92ZXIoZGF5LmRhdGUpXCJcbiAgICAoY2xpY2spPVwicGlja0RhdGUoZGF5KVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2RhdGVwaWNrZXItZGF0ZV9hY3RpdmUnOiBkYXkuc2VsZWN0ZWQgfHwgKGRheS5kYXRlID09PSBob3ZlcmVkRGF0ZSAmJiByYW5nZSAmJiAhcmFuZ2UudG8pLFxuICAgICAgJ2RhdGVwaWNrZXItZGF0ZS1yYW5nZV9ob3Zlcic6IHJhbmdlICYmIGlzSG92ZXJlZFJhbmdlKGRheSksXG4gICAgICAnZGF0ZXBpY2tlci1kYXRlX2Rpc2FibGVkJzogZGF5LmRpc2FibGVkLFxuICAgICAgJ2NvbG9yLXRleHQtMzAnOiBkYXkuZGlzYWJsZWQgfHwgKCFyYW5nZSAmJiAhZGF5LmlzQ3VycmVudE1vbnRoKSxcbiAgICAgICdkYXRlcGlja2VyLWRhdGUtcmFuZ2VfZGlzYWJsZWQnOiAhZGF5LmlzQ3VycmVudE1vbnRoICYmIHJhbmdlLFxuICAgICAgJ2RhdGVwaWNrZXItZGF0ZS1yYW5nZV9hY3RpdmUnOiBpc0FjdGl2ZVJhbmdlKGRheSlcbiAgICB9XCJcbiAgPlxuICAgIDx0ZXRhLWRheS1pdGVtIFtkYXldPVwiZGF5XCI+PC90ZXRhLWRheS1pdGVtPlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -1,58 +1,24 @@
1
- import { Component, EventEmitter, Input, Optional, Output, QueryList } from '@angular/core';
2
- import { ControlContainer, FormGroup, NgForm } from '@angular/forms';
3
- import { boolOrFuncCallback } from '../../../../util/bool-or-func';
1
+ import { Component, input, output } from '@angular/core';
4
2
  import { FormsUtil } from '../../../../util/forms-util';
5
- import { TableColumn } from '../../../table/contract/table-column';
6
3
  import { PropertyGridItemComponent } from '../property-grid-item/property-grid-item.component';
7
4
  import { ExpandItemComponent } from '../../../expand-card/expand-item/expand-item.component';
8
5
  import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
6
  export class PropertyGridGroupComponent {
11
- get formGroup() {
12
- if (this._formGroup instanceof FormGroup) {
13
- return this._formGroup;
14
- }
15
- if (this._formGroup instanceof NgForm) {
16
- return this._formGroup.form;
17
- }
18
- return null;
7
+ constructor() {
8
+ this.column = input();
9
+ this.hideNonEditable = input();
10
+ this.dict = input();
11
+ this.item = input();
12
+ this.horizontal = input();
13
+ this.controlValueChange = output();
14
+ this.decimalPart = input();
15
+ this.itemTemplates = input();
19
16
  }
20
- get editable() {
21
- return boolOrFuncCallback(this.column.editable)({
22
- column: this.column,
23
- row: this.formGroup?.getRawValue(),
24
- });
25
- }
26
- constructor(_formGroup) {
27
- this._formGroup = _formGroup;
28
- this.controlValueChange = new EventEmitter();
29
- }
30
- trackColumns(index, column) {
31
- return column.name;
32
- }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: PropertyGridGroupComponent, deps: [{ token: i1.ControlContainer, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: PropertyGridGroupComponent, isStandalone: true, selector: "teta-property-grid-group", inputs: { column: "column", hideNonEditable: "hideNonEditable", dict: "dict", item: "item", horizontal: "horizontal", decimalPart: "decimalPart", itemTemplates: "itemTemplates" }, outputs: { controlValueChange: "controlValueChange" }, ngImport: i0, template: "<teta-expand-item>\n <span ngProjectAs=\"head\">\n {{ column.caption }}\n </span>\n <div class=\"form-container\">\n @for (col of column.columns; track trackColumns($index, col)) { @if (col.columns?.length < 1) { @if (column.editable\n || !hideNonEditable) {\n <teta-property-grid-item\n [id]=\"col.name\"\n [dict]=\"dict\"\n [column]=\"col\"\n [item]=\"item\"\n [itemTemplates]=\"itemTemplates\"\n [decimalPart]=\"decimalPart\"\n [hideNonEditable]=\"hideNonEditable\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [horizontal]=\"horizontal\"\n ></teta-property-grid-item>\n } } @if (col.columns?.length > 0) {\n <teta-property-grid-group\n [id]=\"col.name\"\n [dict]=\"dict\"\n [column]=\"col\"\n [item]=\"item\"\n [itemTemplates]=\"itemTemplates\"\n [decimalPart]=\"decimalPart\"\n [hideNonEditable]=\"hideNonEditable\"\n [horizontal]=\"horizontal\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n ></teta-property-grid-group>\n } }\n </div>\n</teta-expand-item>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: PropertyGridGroupComponent, selector: "teta-property-grid-group", inputs: ["column", "hideNonEditable", "dict", "item", "horizontal", "decimalPart", "itemTemplates"], outputs: ["controlValueChange"] }, { kind: "component", type: ExpandItemComponent, selector: "teta-expand-item", inputs: ["open"], outputs: ["openChange"], exportAs: ["expand-item"] }, { kind: "component", type: PropertyGridItemComponent, selector: "teta-property-grid-item", inputs: ["column", "hideNonEditable", "dict", "decimalPart", "item", "itemTemplates", "horizontal"], outputs: ["controlValueChange"] }], viewProviders: [FormsUtil.formProvider] }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: PropertyGridGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: PropertyGridGroupComponent, isStandalone: true, selector: "teta-property-grid-group", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: false, transformFunction: null }, hideNonEditable: { classPropertyName: "hideNonEditable", publicName: "hideNonEditable", isSignal: true, isRequired: false, transformFunction: null }, dict: { classPropertyName: "dict", publicName: "dict", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, horizontal: { classPropertyName: "horizontal", publicName: "horizontal", isSignal: true, isRequired: false, transformFunction: null }, decimalPart: { classPropertyName: "decimalPart", publicName: "decimalPart", isSignal: true, isRequired: false, transformFunction: null }, itemTemplates: { classPropertyName: "itemTemplates", publicName: "itemTemplates", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { controlValueChange: "controlValueChange" }, ngImport: i0, template: "<teta-expand-item>\n <span ngProjectAs=\"head\">\n {{ column().caption }}\n </span>\n <div class=\"form-container\">\n @for (col of column().columns; track col.name) {\n @if (col.columns?.length < 1) {\n @if (column().editable || !hideNonEditable) {\n <teta-property-grid-item\n [id]=\"col.name\"\n [dict]=\"dict()\"\n [column]=\"col\"\n [item]=\"item\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [hideNonEditable]=\"hideNonEditable()\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [horizontal]=\"horizontal()\"\n ></teta-property-grid-item>\n }\n } @else {\n <teta-property-grid-group\n [id]=\"col.name\"\n [dict]=\"dict()\"\n [column]=\"col\"\n [item]=\"item()\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [hideNonEditable]=\"hideNonEditable()\"\n [horizontal]=\"horizontal()\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n ></teta-property-grid-group>\n }\n }\n </div>\n</teta-expand-item>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: PropertyGridGroupComponent, selector: "teta-property-grid-group", inputs: ["column", "hideNonEditable", "dict", "item", "horizontal", "decimalPart", "itemTemplates"], outputs: ["controlValueChange"] }, { kind: "component", type: ExpandItemComponent, selector: "teta-expand-item", inputs: ["open"], outputs: ["openChange"], exportAs: ["expand-item"] }, { kind: "component", type: PropertyGridItemComponent, selector: "teta-property-grid-item", inputs: ["column", "hideNonEditable", "dict", "decimalPart", "item", "itemTemplates", "horizontal"], outputs: ["controlValueChange"] }], viewProviders: [FormsUtil.formProvider] }); }
35
19
  }
36
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: PropertyGridGroupComponent, decorators: [{
37
21
  type: Component,
38
- args: [{ selector: 'teta-property-grid-group', viewProviders: [FormsUtil.formProvider], standalone: true, imports: [ExpandItemComponent, PropertyGridItemComponent], template: "<teta-expand-item>\n <span ngProjectAs=\"head\">\n {{ column.caption }}\n </span>\n <div class=\"form-container\">\n @for (col of column.columns; track trackColumns($index, col)) { @if (col.columns?.length < 1) { @if (column.editable\n || !hideNonEditable) {\n <teta-property-grid-item\n [id]=\"col.name\"\n [dict]=\"dict\"\n [column]=\"col\"\n [item]=\"item\"\n [itemTemplates]=\"itemTemplates\"\n [decimalPart]=\"decimalPart\"\n [hideNonEditable]=\"hideNonEditable\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [horizontal]=\"horizontal\"\n ></teta-property-grid-item>\n } } @if (col.columns?.length > 0) {\n <teta-property-grid-group\n [id]=\"col.name\"\n [dict]=\"dict\"\n [column]=\"col\"\n [item]=\"item\"\n [itemTemplates]=\"itemTemplates\"\n [decimalPart]=\"decimalPart\"\n [hideNonEditable]=\"hideNonEditable\"\n [horizontal]=\"horizontal\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n ></teta-property-grid-group>\n } }\n </div>\n</teta-expand-item>\n", styles: [":host{display:flex;flex-direction:column}\n"] }]
39
- }], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
40
- type: Optional
41
- }] }], propDecorators: { column: [{
42
- type: Input
43
- }], hideNonEditable: [{
44
- type: Input
45
- }], dict: [{
46
- type: Input
47
- }], item: [{
48
- type: Input
49
- }], horizontal: [{
50
- type: Input
51
- }], controlValueChange: [{
52
- type: Output
53
- }], decimalPart: [{
54
- type: Input
55
- }], itemTemplates: [{
56
- type: Input
57
- }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3Byb3BlcnR5LWdyaWQvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLWdyb3VwL3Byb3BlcnR5LWdyaWQtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQvcHJvcGVydHktZ3JpZC1ncm91cC9wcm9wZXJ0eS1ncmlkLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXJFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFbkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0RBQXdELENBQUM7OztBQVU3RixNQUFNLE9BQU8sMEJBQTBCO0lBVXJDLElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSxNQUFNLEVBQUUsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRTtTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBZ0MsVUFBNEI7UUFBNUIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFyQmxELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO0lBcUJELENBQUM7SUFFaEUsWUFBWSxDQUFDLEtBQWEsRUFBRSxNQUFtQjtRQUM3QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQzs4R0EvQlUsMEJBQTBCO2tHQUExQiwwQkFBMEIsK1RDcEJ2Qyw2bENBaUNBLHFHRGJhLDBCQUEwQiwyTUFGM0IsbUJBQW1CLG1JQUFFLHlCQUF5QiwrTEFGekMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDOzsyRkFJNUIsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNFLDBCQUEwQixpQkFHckIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQzNCLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHlCQUF5QixDQUFDOzswQkE2QjVDLFFBQVE7eUNBMUJaLE1BQU07c0JBQWQsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBJRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWRpY3Rpb25hcnknO1xuaW1wb3J0IHsgSUlkTmFtZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWlkLW5hbWUnO1xuaW1wb3J0IHsgYm9vbE9yRnVuY0NhbGxiYWNrIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9ib29sLW9yLWZ1bmMnO1xuaW1wb3J0IHsgRm9ybXNVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9mb3Jtcy11dGlsJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vdGFibGUvY29udHJhY3QvdGFibGUtY29sdW1uJztcbmltcG9ydCB7IFByb3BlcnR5R3JpZEl0ZW1EZXNjcmlwdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3Byb3BlcnR5LWdyaWQtaXRlbS1kZXNjcmlwdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3Byb3BlcnR5LWdyaWQtaXRlbS9wcm9wZXJ0eS1ncmlkLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEV4cGFuZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9leHBhbmQtY2FyZC9leHBhbmQtaXRlbS9leHBhbmQtaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLXByb3BlcnR5LWdyaWQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydHktZ3JpZC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb3BlcnR5LWdyaWQtZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgdmlld1Byb3ZpZGVyczogW0Zvcm1zVXRpbC5mb3JtUHJvdmlkZXJdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRXhwYW5kSXRlbUNvbXBvbmVudCwgUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFByb3BlcnR5R3JpZEdyb3VwQ29tcG9uZW50PFQ+IHtcbiAgQElucHV0KCkgY29sdW1uOiBUYWJsZUNvbHVtbjtcbiAgQElucHV0KCkgaGlkZU5vbkVkaXRhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBkaWN0OiBJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT47XG4gIEBJbnB1dCgpIGl0ZW06IFQ7XG4gIEBJbnB1dCgpIGhvcml6b250YWw6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBjb250cm9sVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElJZE5hbWU8YW55Pj4oKTtcbiAgQElucHV0KCkgZGVjaW1hbFBhcnQ6IG51bWJlcjtcbiAgQElucHV0KCkgaXRlbVRlbXBsYXRlczogUXVlcnlMaXN0PFByb3BlcnR5R3JpZEl0ZW1EZXNjcmlwdGlvbkRpcmVjdGl2ZT47XG5cbiAgZ2V0IGZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIGlmICh0aGlzLl9mb3JtR3JvdXAgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtR3JvdXA7XG4gICAgfVxuICAgIGlmICh0aGlzLl9mb3JtR3JvdXAgaW5zdGFuY2VvZiBOZ0Zvcm0pIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtR3JvdXAuZm9ybTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXQgZWRpdGFibGUoKSB7XG4gICAgcmV0dXJuIGJvb2xPckZ1bmNDYWxsYmFjayh0aGlzLmNvbHVtbi5lZGl0YWJsZSkoe1xuICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgIHJvdzogdGhpcy5mb3JtR3JvdXA/LmdldFJhd1ZhbHVlKCksXG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIF9mb3JtR3JvdXA6IENvbnRyb2xDb250YWluZXIpIHt9XG5cbiAgdHJhY2tDb2x1bW5zKGluZGV4OiBudW1iZXIsIGNvbHVtbjogVGFibGVDb2x1bW4pOiBhbnkge1xuICAgIHJldHVybiBjb2x1bW4ubmFtZTtcbiAgfVxufVxuIiwiPHRldGEtZXhwYW5kLWl0ZW0+XG4gIDxzcGFuIG5nUHJvamVjdEFzPVwiaGVhZFwiPlxuICAgIHt7IGNvbHVtbi5jYXB0aW9uIH19XG4gIDwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XG4gICAgQGZvciAoY29sIG9mIGNvbHVtbi5jb2x1bW5zOyB0cmFjayB0cmFja0NvbHVtbnMoJGluZGV4LCBjb2wpKSB7IEBpZiAoY29sLmNvbHVtbnM/Lmxlbmd0aCA8IDEpIHsgQGlmIChjb2x1bW4uZWRpdGFibGVcbiAgICB8fCAhaGlkZU5vbkVkaXRhYmxlKSB7XG4gICAgPHRldGEtcHJvcGVydHktZ3JpZC1pdGVtXG4gICAgICBbaWRdPVwiY29sLm5hbWVcIlxuICAgICAgW2RpY3RdPVwiZGljdFwiXG4gICAgICBbY29sdW1uXT1cImNvbFwiXG4gICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgIFtpdGVtVGVtcGxhdGVzXT1cIml0ZW1UZW1wbGF0ZXNcIlxuICAgICAgW2RlY2ltYWxQYXJ0XT1cImRlY2ltYWxQYXJ0XCJcbiAgICAgIFtoaWRlTm9uRWRpdGFibGVdPVwiaGlkZU5vbkVkaXRhYmxlXCJcbiAgICAgIChjb250cm9sVmFsdWVDaGFuZ2UpPVwiY29udHJvbFZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICBbaG9yaXpvbnRhbF09XCJob3Jpem9udGFsXCJcbiAgICA+PC90ZXRhLXByb3BlcnR5LWdyaWQtaXRlbT5cbiAgICB9IH0gQGlmIChjb2wuY29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgIDx0ZXRhLXByb3BlcnR5LWdyaWQtZ3JvdXBcbiAgICAgIFtpZF09XCJjb2wubmFtZVwiXG4gICAgICBbZGljdF09XCJkaWN0XCJcbiAgICAgIFtjb2x1bW5dPVwiY29sXCJcbiAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgW2l0ZW1UZW1wbGF0ZXNdPVwiaXRlbVRlbXBsYXRlc1wiXG4gICAgICBbZGVjaW1hbFBhcnRdPVwiZGVjaW1hbFBhcnRcIlxuICAgICAgW2hpZGVOb25FZGl0YWJsZV09XCJoaWRlTm9uRWRpdGFibGVcIlxuICAgICAgW2hvcml6b250YWxdPVwiaG9yaXpvbnRhbFwiXG4gICAgICAoY29udHJvbFZhbHVlQ2hhbmdlKT1cImNvbnRyb2xWYWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgID48L3RldGEtcHJvcGVydHktZ3JpZC1ncm91cD5cbiAgICB9IH1cbiAgPC9kaXY+XG48L3RldGEtZXhwYW5kLWl0ZW0+XG4iXX0=
22
+ args: [{ selector: 'teta-property-grid-group', viewProviders: [FormsUtil.formProvider], standalone: true, imports: [ExpandItemComponent, PropertyGridItemComponent], template: "<teta-expand-item>\n <span ngProjectAs=\"head\">\n {{ column().caption }}\n </span>\n <div class=\"form-container\">\n @for (col of column().columns; track col.name) {\n @if (col.columns?.length < 1) {\n @if (column().editable || !hideNonEditable) {\n <teta-property-grid-item\n [id]=\"col.name\"\n [dict]=\"dict()\"\n [column]=\"col\"\n [item]=\"item\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [hideNonEditable]=\"hideNonEditable()\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [horizontal]=\"horizontal()\"\n ></teta-property-grid-item>\n }\n } @else {\n <teta-property-grid-group\n [id]=\"col.name\"\n [dict]=\"dict()\"\n [column]=\"col\"\n [item]=\"item()\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [hideNonEditable]=\"hideNonEditable()\"\n [horizontal]=\"horizontal()\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n ></teta-property-grid-group>\n }\n }\n </div>\n</teta-expand-item>\n", styles: [":host{display:flex;flex-direction:column}\n"] }]
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3Byb3BlcnR5LWdyaWQvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLWdyb3VwL3Byb3BlcnR5LWdyaWQtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQvcHJvcGVydHktZ3JpZC1ncm91cC9wcm9wZXJ0eS1ncmlkLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUdsRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFHdEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDN0YsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0RBQXdELENBQUM7O0FBVTNGLE1BQU0sT0FBTywwQkFBMEI7SUFSdkM7UUFTRSxXQUFNLEdBQUcsS0FBSyxFQUFlLENBQUM7UUFDOUIsb0JBQWUsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUNuQyxTQUFJLEdBQUcsS0FBSyxFQUErQixDQUFDO1FBQzVDLFNBQUksR0FBRyxLQUFLLEVBQUssQ0FBQztRQUNsQixlQUFVLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFDOUIsdUJBQWtCLEdBQUcsTUFBTSxFQUFnQixDQUFDO1FBQzVDLGdCQUFXLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxLQUFLLEVBQW1ELENBQUM7S0FDMUU7OEdBVFksMEJBQTBCO2tHQUExQiwwQkFBMEIsbWpDQ2pCdkMsMnRDQW9DQSxxR0RuQmEsMEJBQTBCLDJNQUYzQixtQkFBbUIsbUlBQUUseUJBQXlCLCtMQUZ6QyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7OzJGQUk1QiwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0UsMEJBQTBCLGlCQUdyQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FDM0IsSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgaW5wdXQsIG91dHB1dCwgUXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SURpY3Rpb25hcnl9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWRpY3Rpb25hcnknO1xuaW1wb3J0IHtJSWROYW1lfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1pZC1uYW1lJztcbmltcG9ydCB7Rm9ybXNVdGlsfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL2Zvcm1zLXV0aWwnO1xuaW1wb3J0IHtUYWJsZUNvbHVtbn0gZnJvbSAnLi4vLi4vLi4vdGFibGUvY29udHJhY3QvdGFibGUtY29sdW1uJztcbmltcG9ydCB7UHJvcGVydHlHcmlkSXRlbURlc2NyaXB0aW9uRGlyZWN0aXZlfSBmcm9tICcuLi9wcm9wZXJ0eS1ncmlkLWl0ZW0tZGVzY3JpcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudH0gZnJvbSAnLi4vcHJvcGVydHktZ3JpZC1pdGVtL3Byb3BlcnR5LWdyaWQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHtFeHBhbmRJdGVtQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9leHBhbmQtY2FyZC9leHBhbmQtaXRlbS9leHBhbmQtaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLXByb3BlcnR5LWdyaWQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydHktZ3JpZC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb3BlcnR5LWdyaWQtZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgdmlld1Byb3ZpZGVyczogW0Zvcm1zVXRpbC5mb3JtUHJvdmlkZXJdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRXhwYW5kSXRlbUNvbXBvbmVudCwgUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFByb3BlcnR5R3JpZEdyb3VwQ29tcG9uZW50PFQ+IHtcbiAgY29sdW1uID0gaW5wdXQ8VGFibGVDb2x1bW4+KCk7XG4gIGhpZGVOb25FZGl0YWJsZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIGRpY3QgPSBpbnB1dDxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+KCk7XG4gIGl0ZW0gPSBpbnB1dDxUPigpO1xuICBob3Jpem9udGFsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgY29udHJvbFZhbHVlQ2hhbmdlID0gb3V0cHV0PElJZE5hbWU8YW55Pj4oKTtcbiAgZGVjaW1hbFBhcnQgPSBpbnB1dDxudW1iZXI+KCk7XG4gIGl0ZW1UZW1wbGF0ZXMgPSBpbnB1dDxRdWVyeUxpc3Q8UHJvcGVydHlHcmlkSXRlbURlc2NyaXB0aW9uRGlyZWN0aXZlPj4oKTtcbn1cbiIsIjx0ZXRhLWV4cGFuZC1pdGVtPlxuICA8c3BhbiBuZ1Byb2plY3RBcz1cImhlYWRcIj5cbiAgICB7eyBjb2x1bW4oKS5jYXB0aW9uIH19XG4gIDwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XG4gICAgQGZvciAoY29sIG9mIGNvbHVtbigpLmNvbHVtbnM7IHRyYWNrIGNvbC5uYW1lKSB7XG4gICAgICBAaWYgKGNvbC5jb2x1bW5zPy5sZW5ndGggPCAxKSB7XG4gICAgICAgIEBpZiAoY29sdW1uKCkuZWRpdGFibGUgfHwgIWhpZGVOb25FZGl0YWJsZSkge1xuICAgICAgICAgIDx0ZXRhLXByb3BlcnR5LWdyaWQtaXRlbVxuICAgICAgICAgICAgW2lkXT1cImNvbC5uYW1lXCJcbiAgICAgICAgICAgIFtkaWN0XT1cImRpY3QoKVwiXG4gICAgICAgICAgICBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgIFtpdGVtVGVtcGxhdGVzXT1cIml0ZW1UZW1wbGF0ZXMoKVwiXG4gICAgICAgICAgICBbZGVjaW1hbFBhcnRdPVwiZGVjaW1hbFBhcnQoKVwiXG4gICAgICAgICAgICBbaGlkZU5vbkVkaXRhYmxlXT1cImhpZGVOb25FZGl0YWJsZSgpXCJcbiAgICAgICAgICAgIChjb250cm9sVmFsdWVDaGFuZ2UpPVwiY29udHJvbFZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbaG9yaXpvbnRhbF09XCJob3Jpem9udGFsKClcIlxuICAgICAgICAgID48L3RldGEtcHJvcGVydHktZ3JpZC1pdGVtPlxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHRldGEtcHJvcGVydHktZ3JpZC1ncm91cFxuICAgICAgICAgIFtpZF09XCJjb2wubmFtZVwiXG4gICAgICAgICAgW2RpY3RdPVwiZGljdCgpXCJcbiAgICAgICAgICBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgICAgW2l0ZW1dPVwiaXRlbSgpXCJcbiAgICAgICAgICBbaXRlbVRlbXBsYXRlc109XCJpdGVtVGVtcGxhdGVzKClcIlxuICAgICAgICAgIFtkZWNpbWFsUGFydF09XCJkZWNpbWFsUGFydCgpXCJcbiAgICAgICAgICBbaGlkZU5vbkVkaXRhYmxlXT1cImhpZGVOb25FZGl0YWJsZSgpXCJcbiAgICAgICAgICBbaG9yaXpvbnRhbF09XCJob3Jpem9udGFsKClcIlxuICAgICAgICAgIChjb250cm9sVmFsdWVDaGFuZ2UpPVwiY29udHJvbFZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgID48L3RldGEtcHJvcGVydHktZ3JpZC1ncm91cD5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuPC90ZXRhLWV4cGFuZC1pdGVtPlxuIl19