@sumaris-net/ngx-components 2.7.6 → 2.8.0-rc2
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/doc/changelog.md +8 -0
- package/esm2022/public_api.mjs +7 -3
- package/esm2022/src/app/admin/users/users.mjs +5 -3
- package/esm2022/src/app/core/account/new-token.modal.mjs +4 -4
- package/esm2022/src/app/core/auth/auth.form.mjs +2 -2
- package/esm2022/src/app/core/core.testing.module.mjs +2 -2
- package/esm2022/src/app/core/form/entity/editor.class.mjs +33 -487
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +14 -26
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +5 -4
- package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +194 -0
- package/esm2022/src/app/core/form/form-container.class.mjs +312 -0
- package/esm2022/src/app/core/form/form.class.mjs +27 -36
- package/esm2022/src/app/core/form/form.utils.mjs +1 -1
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +2 -2
- package/esm2022/src/app/core/services/model/settings.model.mjs +2 -1
- package/esm2022/src/app/core/settings/settings.page.mjs +5 -9
- package/esm2022/src/app/core/table/table.class.mjs +9 -5
- package/esm2022/src/app/core/table/table.module.mjs +16 -3
- package/esm2022/src/app/core/table/table.pipes.mjs +74 -0
- package/esm2022/src/app/core/table/testing/table.testing.mjs +39 -17
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +40 -22
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +3 -3
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +10 -10
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +28 -3
- package/esm2022/src/app/shared/pipes/selection.pipes.mjs +176 -0
- package/esm2022/src/app/shared/validator/validators.mjs +3 -2
- package/fesm2022/sumaris-net.ngx-components.mjs +655 -321
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +6 -2
- package/src/app/core/account/new-token.modal.d.ts +1 -1
- package/src/app/core/form/entity/editor.class.d.ts +18 -177
- package/src/app/core/form/entity/entity-editor-modal.class.d.ts +9 -12
- package/src/app/core/form/entity/entity-editor.class.d.ts +10 -6
- package/src/app/core/form/entity/tab-editor.class.d.ts +70 -0
- package/src/app/core/form/form-container.class.d.ts +123 -0
- package/src/app/core/form/form.class.d.ts +11 -21
- package/src/app/core/form/form.utils.d.ts +38 -23
- package/src/app/core/menu/testing/menu.testing.d.ts +1 -1
- package/src/app/core/services/model/settings.model.d.ts +1 -0
- package/src/app/core/settings/settings.page.d.ts +1 -2
- package/src/app/core/table/table.module.d.ts +4 -3
- package/src/app/core/table/table.pipes.d.ts +28 -0
- package/src/app/core/table/testing/table.testing.d.ts +9 -5
- package/src/app/core/table/testing/table2.testing.d.ts +10 -5
- package/src/app/shared/pipes/form.pipes.d.ts +1 -1
- package/src/app/shared/pipes/pipes.module.d.ts +5 -4
- package/src/app/shared/pipes/selection.pipes.d.ts +62 -0
- package/src/app/shared/validator/validators.d.ts +1 -0
- package/src/assets/manifest.json +1 -1
- package/src/theme/_ngx-components.scss +4 -0
- package/src/theme/_ngx-components.table.scss +4 -14
|
@@ -3,6 +3,7 @@ import { SharedModule } from '../../shared/shared.module';
|
|
|
3
3
|
import { TableSelectColumnsComponent } from './table-select-columns.component';
|
|
4
4
|
import { ActionsColumnComponent } from './actions-column.component';
|
|
5
5
|
import { TranslateModule } from '@ngx-translate/core';
|
|
6
|
+
import { IsAllSelectedPipe, IsNotAllSelectedPipe } from './table.pipes';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@ngx-translate/core";
|
|
8
9
|
export class AppTableModule {
|
|
@@ -10,10 +11,16 @@ export class AppTableModule {
|
|
|
10
11
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: AppTableModule, declarations: [
|
|
11
12
|
// Components
|
|
12
13
|
TableSelectColumnsComponent,
|
|
13
|
-
ActionsColumnComponent
|
|
14
|
+
ActionsColumnComponent,
|
|
15
|
+
// Pipes
|
|
16
|
+
IsAllSelectedPipe,
|
|
17
|
+
IsNotAllSelectedPipe], imports: [SharedModule, i1.TranslateModule], exports: [TranslateModule,
|
|
14
18
|
// Components
|
|
15
19
|
TableSelectColumnsComponent,
|
|
16
|
-
ActionsColumnComponent
|
|
20
|
+
ActionsColumnComponent,
|
|
21
|
+
// Pipes
|
|
22
|
+
IsAllSelectedPipe,
|
|
23
|
+
IsNotAllSelectedPipe] });
|
|
17
24
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppTableModule, imports: [SharedModule, TranslateModule.forChild(), TranslateModule] });
|
|
18
25
|
}
|
|
19
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppTableModule, decorators: [{
|
|
@@ -24,13 +31,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
24
31
|
// Components
|
|
25
32
|
TableSelectColumnsComponent,
|
|
26
33
|
ActionsColumnComponent,
|
|
34
|
+
// Pipes
|
|
35
|
+
IsAllSelectedPipe,
|
|
36
|
+
IsNotAllSelectedPipe,
|
|
27
37
|
],
|
|
28
38
|
exports: [
|
|
29
39
|
TranslateModule,
|
|
30
40
|
// Components
|
|
31
41
|
TableSelectColumnsComponent,
|
|
32
42
|
ActionsColumnComponent,
|
|
43
|
+
// Pipes
|
|
44
|
+
IsAllSelectedPipe,
|
|
45
|
+
IsNotAllSelectedPipe,
|
|
33
46
|
],
|
|
34
47
|
}]
|
|
35
48
|
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL3RhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUF1QnhFLE1BQU0sT0FBTyxjQUFjO3VHQUFkLGNBQWM7d0dBQWQsY0FBYztZQWpCdkIsYUFBYTtZQUNiLDJCQUEyQjtZQUMzQixzQkFBc0I7WUFDdEIsUUFBUTtZQUNSLGlCQUFpQjtZQUNqQixvQkFBb0IsYUFSWixZQUFZLGlDQVdwQixlQUFlO1lBQ2YsYUFBYTtZQUNiLDJCQUEyQjtZQUMzQixzQkFBc0I7WUFDdEIsUUFBUTtZQUNSLGlCQUFpQjtZQUNqQixvQkFBb0I7d0dBR1gsY0FBYyxZQXBCZixZQUFZLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxFQVdoRCxlQUFlOzsyRkFTTixjQUFjO2tCQXJCMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUVuRCxZQUFZLEVBQUU7d0JBQ1osYUFBYTt3QkFDYiwyQkFBMkI7d0JBQzNCLHNCQUFzQjt3QkFDdEIsUUFBUTt3QkFDUixpQkFBaUI7d0JBQ2pCLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYiwyQkFBMkI7d0JBQzNCLHNCQUFzQjt3QkFDdEIsUUFBUTt3QkFDUixpQkFBaUI7d0JBQ2pCLG9CQUFvQjtxQkFDckI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgVGFibGVTZWxlY3RDb2x1bW5zQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1zZWxlY3QtY29sdW1ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWN0aW9uc0NvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vYWN0aW9ucy1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSXNBbGxTZWxlY3RlZFBpcGUsIElzTm90QWxsU2VsZWN0ZWRQaXBlIH0gZnJvbSAnLi90YWJsZS5waXBlcyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtTaGFyZWRNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpXSxcblxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICAvLyBDb21wb25lbnRzXG4gICAgVGFibGVTZWxlY3RDb2x1bW5zQ29tcG9uZW50LFxuICAgIEFjdGlvbnNDb2x1bW5Db21wb25lbnQsXG4gICAgLy8gUGlwZXNcbiAgICBJc0FsbFNlbGVjdGVkUGlwZSxcbiAgICBJc05vdEFsbFNlbGVjdGVkUGlwZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAvLyBDb21wb25lbnRzXG4gICAgVGFibGVTZWxlY3RDb2x1bW5zQ29tcG9uZW50LFxuICAgIEFjdGlvbnNDb2x1bW5Db21wb25lbnQsXG4gICAgLy8gUGlwZXNcbiAgICBJc0FsbFNlbGVjdGVkUGlwZSxcbiAgICBJc05vdEFsbFNlbGVjdGVkUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwVGFibGVNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Directive, Pipe } from '@angular/core';
|
|
2
|
+
import { AbstractSelectionModelPipe } from '../../shared/pipes/selection.pipes';
|
|
3
|
+
import { AppTable } from './table.class';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class AbstractTableSelectionPipe extends AbstractSelectionModelPipe {
|
|
6
|
+
_onRowsChanges;
|
|
7
|
+
constructor(_ref) {
|
|
8
|
+
super(_ref);
|
|
9
|
+
}
|
|
10
|
+
transform(selectionOrTable, tableOrOpts, opts) {
|
|
11
|
+
// @ts-ignore
|
|
12
|
+
const _table = tableOrOpts instanceof (AppTable) ? tableOrOpts : selectionOrTable instanceof (AppTable) ? selectionOrTable : undefined;
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
const _selection = _table?.selection || selectionOrTable;
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
const _opts = opts || !(tableOrOpts instanceof (AppTable) && tableOrOpts);
|
|
17
|
+
return super.transform(_selection, _table, _opts);
|
|
18
|
+
}
|
|
19
|
+
_subscribe(selection, table, opts) {
|
|
20
|
+
this._onRowsChanges = table?.dataSource?.rowsSubject.subscribe((_) => {
|
|
21
|
+
const result = this._transform(selection, table, opts);
|
|
22
|
+
if (result !== this._result) {
|
|
23
|
+
this._result = result;
|
|
24
|
+
this._ref.markForCheck();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return super._subscribe(selection, table);
|
|
28
|
+
}
|
|
29
|
+
_dispose() {
|
|
30
|
+
super._dispose();
|
|
31
|
+
this._onRowsChanges?.unsubscribe();
|
|
32
|
+
this._onRowsChanges = null;
|
|
33
|
+
}
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AbstractTableSelectionPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
35
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: AbstractTableSelectionPipe, usesInheritance: true, ngImport: i0 });
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AbstractTableSelectionPipe, decorators: [{
|
|
38
|
+
type: Directive
|
|
39
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
40
|
+
export class IsAllSelectedPipe extends AbstractTableSelectionPipe {
|
|
41
|
+
constructor(_ref) {
|
|
42
|
+
super(_ref);
|
|
43
|
+
}
|
|
44
|
+
_transform(selection, table, countPropertyName = 'visibleRowCount') {
|
|
45
|
+
return selection.selected.length === table?.[countPropertyName];
|
|
46
|
+
}
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsAllSelectedPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
48
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IsAllSelectedPipe, name: "isAllSelected", pure: false });
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsAllSelectedPipe, decorators: [{
|
|
51
|
+
type: Pipe,
|
|
52
|
+
args: [{
|
|
53
|
+
name: 'isAllSelected',
|
|
54
|
+
pure: false,
|
|
55
|
+
}]
|
|
56
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
57
|
+
export class IsNotAllSelectedPipe extends IsAllSelectedPipe {
|
|
58
|
+
constructor(_ref) {
|
|
59
|
+
super(_ref);
|
|
60
|
+
}
|
|
61
|
+
_transform(selection, table, countPropertyName = 'visibleRowCount') {
|
|
62
|
+
return selection.hasValue() && selection.selected.length !== table?.[countPropertyName];
|
|
63
|
+
}
|
|
64
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsNotAllSelectedPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
65
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IsNotAllSelectedPipe, name: "isNotAllSelected", pure: false });
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsNotAllSelectedPipe, decorators: [{
|
|
68
|
+
type: Pipe,
|
|
69
|
+
args: [{
|
|
70
|
+
name: 'isNotAllSelected',
|
|
71
|
+
pure: false,
|
|
72
|
+
}]
|
|
73
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUucGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvdGFibGUvdGFibGUucGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXpDLE1BQU0sT0FBZ0IsMEJBQTBFLFNBQVEsMEJBQXFDO0lBQ25JLGNBQWMsQ0FBZTtJQUVyQyxZQUFzQixJQUF1QjtRQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxDQUFDLGdCQUF5QyxFQUFFLFdBQW1CLEVBQUUsSUFBUTtRQUNoRixhQUFhO1FBQ2IsTUFBTSxNQUFNLEdBQU0sV0FBVyxhQUFZLFFBQWEsQ0FBQSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixhQUFZLFFBQWEsQ0FBQSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hKLGFBQWE7UUFDYixNQUFNLFVBQVUsR0FBd0IsTUFBTSxFQUFFLFNBQVMsSUFBSSxnQkFBZ0IsQ0FBQztRQUM5RSxhQUFhO1FBQ2IsTUFBTSxLQUFLLEdBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxXQUFXLGFBQVksUUFBYSxDQUFBLElBQUssV0FBaUIsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFUyxVQUFVLENBQUMsU0FBOEIsRUFBRSxLQUFTLEVBQUUsSUFBUTtRQUN0RSxJQUFJLENBQUMsY0FBYyxHQUFJLEtBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzFFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2RCxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO2dCQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVTLFFBQVE7UUFDaEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQzt1R0FqQ21CLDBCQUEwQjsyRkFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUQvQyxTQUFTOztBQXlDVixNQUFNLE9BQU8saUJBQWtCLFNBQVEsMEJBQTZEO0lBQ2xHLFlBQVksSUFBdUI7UUFDakMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVTLFVBQVUsQ0FDbEIsU0FBOEIsRUFDOUIsS0FBb0IsRUFDcEIsb0JBQThDLGlCQUFpQjtRQUUvRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEUsQ0FBQzt1R0FYVSxpQkFBaUI7cUdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtvQkFDckIsSUFBSSxFQUFFLEtBQUs7aUJBQ1o7O0FBbUJELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxpQkFBaUI7SUFDekQsWUFBWSxJQUF1QjtRQUNqQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRVMsVUFBVSxDQUNsQixTQUE4QixFQUM5QixLQUFvQixFQUNwQixvQkFBOEMsaUJBQWlCO1FBRS9ELE9BQU8sU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUYsQ0FBQzt1R0FYVSxvQkFBb0I7cUdBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFKaEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsa0JBQWtCO29CQUN4QixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEFic3RyYWN0U2VsZWN0aW9uTW9kZWxQaXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3BpcGVzL3NlbGVjdGlvbi5waXBlcyc7XG5pbXBvcnQgeyBBcHBUYWJsZSB9IGZyb20gJy4vdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIEFwcFRhYmxlUm93Q291bnRQcm9wZXJ0eSA9ICd2aXNpYmxlUm93Q291bnQnIHwgJ3RvdGFsUm93Q291bnQnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRhYmxlU2VsZWN0aW9uUGlwZTxSLCBPLCBUIGV4dGVuZHMgQXBwVGFibGU8YW55PiA9IEFwcFRhYmxlPGFueT4+IGV4dGVuZHMgQWJzdHJhY3RTZWxlY3Rpb25Nb2RlbFBpcGU8YW55LCBSLCBPPiB7XG4gIHByaXZhdGUgX29uUm93c0NoYW5nZXM6IFN1YnNjcmlwdGlvbjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoX3JlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihfcmVmKTtcbiAgfVxuXG4gIHRyYW5zZm9ybShzZWxlY3Rpb25PclRhYmxlOiBTZWxlY3Rpb25Nb2RlbDxhbnk+IHwgVCwgdGFibGVPck9wdHM/OiBUIHwgTywgb3B0cz86IE8pOiBSIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgX3RhYmxlOiBUID0gdGFibGVPck9wdHMgaW5zdGFuY2VvZiBBcHBUYWJsZTxhbnk+ID8gdGFibGVPck9wdHMgOiBzZWxlY3Rpb25PclRhYmxlIGluc3RhbmNlb2YgQXBwVGFibGU8YW55PiA/IHNlbGVjdGlvbk9yVGFibGUgOiB1bmRlZmluZWQ7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IF9zZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPGFueT4gPSBfdGFibGU/LnNlbGVjdGlvbiB8fCBzZWxlY3Rpb25PclRhYmxlO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBfb3B0czogTyA9IG9wdHMgfHwgISh0YWJsZU9yT3B0cyBpbnN0YW5jZW9mIEFwcFRhYmxlPGFueT4gJiYgKHRhYmxlT3JPcHRzIGFzIE8pKTtcbiAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtKF9zZWxlY3Rpb24sIF90YWJsZSwgX29wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9zdWJzY3JpYmUoc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxhbnk+LCB0YWJsZT86IFQsIG9wdHM/OiBPKTogU3Vic2NyaXB0aW9uIHtcbiAgICB0aGlzLl9vblJvd3NDaGFuZ2VzID0gKHRhYmxlIGFzIFQpPy5kYXRhU291cmNlPy5yb3dzU3ViamVjdC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3RyYW5zZm9ybShzZWxlY3Rpb24sIHRhYmxlLCBvcHRzKTtcbiAgICAgIGlmIChyZXN1bHQgIT09IHRoaXMuX3Jlc3VsdCkge1xuICAgICAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgIHRoaXMuX3JlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdXBlci5fc3Vic2NyaWJlKHNlbGVjdGlvbiwgdGFibGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9kaXNwb3NlKCkge1xuICAgIHN1cGVyLl9kaXNwb3NlKCk7XG4gICAgdGhpcy5fb25Sb3dzQ2hhbmdlcz8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9vblJvd3NDaGFuZ2VzID0gbnVsbDtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdpc0FsbFNlbGVjdGVkJyxcbiAgcHVyZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIElzQWxsU2VsZWN0ZWRQaXBlIGV4dGVuZHMgQWJzdHJhY3RUYWJsZVNlbGVjdGlvblBpcGU8Ym9vbGVhbiwgQXBwVGFibGVSb3dDb3VudFByb3BlcnR5PiB7XG4gIGNvbnN0cnVjdG9yKF9yZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoX3JlZik7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3RyYW5zZm9ybShcbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPGFueT4sXG4gICAgdGFibGU6IEFwcFRhYmxlPGFueT4sXG4gICAgY291bnRQcm9wZXJ0eU5hbWU6IEFwcFRhYmxlUm93Q291bnRQcm9wZXJ0eSA9ICd2aXNpYmxlUm93Q291bnQnXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID09PSB0YWJsZT8uW2NvdW50UHJvcGVydHlOYW1lXTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdpc05vdEFsbFNlbGVjdGVkJyxcbiAgcHVyZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIElzTm90QWxsU2VsZWN0ZWRQaXBlIGV4dGVuZHMgSXNBbGxTZWxlY3RlZFBpcGUge1xuICBjb25zdHJ1Y3RvcihfcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKF9yZWYpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF90cmFuc2Zvcm0oXG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxhbnk+LFxuICAgIHRhYmxlOiBBcHBUYWJsZTxhbnk+LFxuICAgIGNvdW50UHJvcGVydHlOYW1lOiBBcHBUYWJsZVJvd0NvdW50UHJvcGVydHkgPSAndmlzaWJsZVJvd0NvdW50J1xuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCAhPT0gdGFibGU/Lltjb3VudFByb3BlcnR5TmFtZV07XG4gIH1cbn1cbiJdfQ==
|