@theseam/ui-common 0.4.22 → 0.4.24-beta.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/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
- package/datatable/datatable/datatable.component.d.ts +10 -1
- package/datatable/models/action-item-column-position.d.ts +13 -0
- package/datatable/services/columns-manager.service.d.ts +7 -0
- package/datatable/utils/create-action-menu-column.d.ts +1 -1
- package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
- package/esm2020/datatable/datatable/datatable.component.mjs +20 -4
- package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
- package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
- package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
- package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
- package/esm2020/datatable/services/columns-manager.service.mjs +27 -2
- package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
- package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
- package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
- package/esm2020/form-field/form-field-required-indicator.component.mjs +22 -7
- package/esm2020/form-field/input.directive.mjs +19 -16
- package/esm2020/form-field/testing/form-field.harness.mjs +45 -0
- package/esm2020/form-field/testing/index.mjs +2 -1
- package/esm2020/framework/base-layout/base-layout.component.mjs +14 -4
- package/esm2020/framework/base-layout/base-layout.module.mjs +6 -1
- package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +21 -5
- package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
- package/esm2020/framework/base-layout/index.mjs +2 -1
- package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
- package/esm2020/framework/nav/index.mjs +6 -0
- package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
- package/esm2020/framework/nav/nav-utils.mjs +107 -0
- package/esm2020/framework/nav/nav.models.mjs +2 -0
- package/esm2020/framework/nav/nav.module.mjs +67 -0
- package/esm2020/framework/nav/nav.service.mjs +204 -0
- package/esm2020/framework/public-api.mjs +2 -1
- package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +2 -2
- package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +28 -67
- package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +12 -5
- package/esm2020/framework/side-nav/side-nav.component.mjs +116 -38
- package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
- package/esm2020/framework/side-nav/side-nav.module.mjs +9 -39
- package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
- package/esm2020/framework/top-bar/index.mjs +3 -1
- package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
- package/esm2020/framework/top-bar/top-bar-item.directive.mjs +10 -4
- package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +6 -4
- package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
- package/esm2020/framework/top-bar/top-bar.component.mjs +55 -11
- package/esm2020/framework/top-bar/top-bar.module.mjs +15 -5
- package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
- package/esm2020/layout/layout.service.mjs +12 -2
- package/esm2020/menu/menu-toggle.directive.mjs +7 -2
- package/esm2020/story-helpers/story-modal-container.component.mjs +3 -3
- package/esm2020/tabbed/tabbed.component.mjs +25 -18
- package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +4 -2
- package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
- package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
- package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
- package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
- package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
- package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
- package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
- package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable.mjs +56 -10
- package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-form-field.mjs +92 -27
- package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-framework.mjs +905 -156
- package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
- package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-layout.mjs +11 -2
- package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-menu.mjs +6 -1
- package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-story-helpers.mjs +2 -2
- package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-tabbed.mjs +26 -19
- package/fesm2015/theseam-ui-common-tabbed.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-table-cell-types.mjs +3 -1
- package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
- package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable.mjs +56 -10
- package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-form-field.mjs +88 -27
- package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-framework.mjs +907 -156
- package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
- package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-layout.mjs +11 -2
- package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-menu.mjs +6 -1
- package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-story-helpers.mjs +2 -2
- package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-tabbed.mjs +24 -17
- package/fesm2020/theseam-ui-common-tabbed.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-table-cell-types.mjs +3 -1
- package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
- package/form-field/form-field-required-indicator.component.d.ts +6 -1
- package/form-field/input.directive.d.ts +9 -15
- package/form-field/testing/form-field.harness.d.ts +14 -0
- package/form-field/testing/index.d.ts +1 -0
- package/framework/base-layout/base-layout.component.d.ts +4 -2
- package/framework/base-layout/base-layout.component.scss +18 -10
- package/framework/base-layout/base-layout.module.d.ts +11 -10
- package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
- package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
- package/framework/base-layout/index.d.ts +1 -0
- package/framework/base-layout/styles/_variables.scss +21 -0
- package/framework/nav/_nav-theme.scss +4 -0
- package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
- package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
- package/framework/nav/index.d.ts +5 -0
- package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
- package/framework/nav/nav-item/nav-item.component.scss +203 -0
- package/framework/nav/nav-utils.d.ts +20 -0
- package/framework/nav/nav.models.d.ts +77 -0
- package/framework/nav/nav.module.d.ts +17 -0
- package/framework/nav/nav.service.d.ts +27 -0
- package/framework/nav/styles/_themes/light/_variables.scss +56 -0
- package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
- package/framework/nav/styles/_utilities.scss +3 -0
- package/framework/nav/styles/_variables.scss +2 -0
- package/framework/public-api.d.ts +1 -0
- package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
- package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
- package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
- package/framework/side-nav/side-nav.component.d.ts +13 -1
- package/framework/side-nav/side-nav.component.scss +0 -1
- package/framework/side-nav/side-nav.models.d.ts +7 -1
- package/framework/side-nav/side-nav.module.d.ts +1 -9
- package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
- package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
- package/framework/top-bar/index.d.ts +2 -0
- package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
- package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
- package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
- package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
- package/framework/top-bar/top-bar.component.d.ts +25 -3
- package/framework/top-bar/top-bar.component.scss +7 -2
- package/framework/top-bar/top-bar.module.d.ts +10 -8
- package/layout/layout.service.d.ts +9 -1
- package/menu/menu-toggle.directive.d.ts +2 -1
- package/package.json +2 -2
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +57 -14
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +33 -5
- package/tabbed/tabbed.component.d.ts +9 -4
|
@@ -88,7 +88,7 @@ export class DatatableExportButtonComponent {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
DatatableExportButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableExportButtonComponent, deps: [{ token: THESEAM_DATATABLE }, { token: i1.ToastrService }, { token: i2.TheSeamLoadingOverlayService }, { token: i3.DynamicValueHelperService }, { token: THESEAM_DYNAMIC_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
-
DatatableExportButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableExportButtonComponent, selector: "seam-datatable-export-button", inputs: { exporters: "exporters" }, ngImport: i0, template: "<seam-menu #menu>\n <button *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\">\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Export\"\n [disabled]=\"disabled\"\n >\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i5.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i5.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i5.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i6.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i7.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
91
|
+
DatatableExportButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableExportButtonComponent, selector: "seam-datatable-export-button", inputs: { exporters: "exporters" }, ngImport: i0, template: "<seam-menu #menu>\n <button *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\">\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Export\"\n [disabled]=\"disabled\"\n >\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i5.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i5.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i5.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i6.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i7.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
92
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableExportButtonComponent, decorators: [{
|
|
93
93
|
type: Component,
|
|
94
94
|
args: [{ selector: 'seam-datatable-export-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<seam-menu #menu>\n <button *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\">\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Export\"\n [disabled]=\"disabled\"\n >\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n", styles: [":host{display:inline-block}\n"] }]
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const ActionItemColumnPosition = ['frozenLeft', 'frozenRight', 'staticLeft', 'staticRight'];
|
|
2
|
+
export function isActionItemColumnPosition(input) {
|
|
3
|
+
return ActionItemColumnPosition.indexOf(input) != -1;
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWl0ZW0tY29sdW1uLXBvc2l0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvYWN0aW9uLWl0ZW0tY29sdW1uLXBvc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQVUsQ0FBQTtBQWFwRyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsS0FBYztJQUN2RCxPQUFPLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxLQUFpQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiA9IFsnZnJvemVuTGVmdCcsICdmcm96ZW5SaWdodCcsICdzdGF0aWNMZWZ0JywgJ3N0YXRpY1JpZ2h0J10gYXMgY29uc3RcblxuLyoqXG4gKiBJZiBgZnJvemVuTGVmdGAsIGFjdGlvbiBpdGVtIGNvbHVtbiB3aWxsIGJlIGZpeGVkIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHRhYmxlLlxuICpcbiAqIElmIGBmcm96ZW5SaWdodGAsIGFjdGlvbiBpdGVtIGNvbHVtbiB3aWxsIGJlIGZpeGVkIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSB0YWJsZS5cbiAqXG4gKiBJZiBgc3RhdGljTGVmdGAsIGFjdGlvbiBpdGVtIGNvbHVtbiB3aWxsIGJlIHRoZSBmaXJzdCBzdGF0aWMgY29sdW1uIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHRhYmxlLlxuICpcbiAqIElmIGBzdGF0aWNSaWdodGAsIGFjdGlvbiBpdGVtIGNvbHVtbiB3aWxsIGJlIHRoZSBsYXN0IHN0YXRpYyBjb2x1bW4gb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgdHlwZSBBY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24gPSB0eXBlb2YgQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uW251bWJlcl07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbihpbnB1dDogdW5rbm93bik6IGlucHV0IGlzIEFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiB7XG4gIHJldHVybiBBY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24uaW5kZXhPZihpbnB1dCBhcyBBY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24pICE9IC0xO1xufVxuIl19
|
|
@@ -78,6 +78,13 @@ export class ColumnsManagerService {
|
|
|
78
78
|
this._updateColumns.next(undefined);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
setActionItemColumnPosition(actionItemColumnPosition) {
|
|
82
|
+
const changed = this._actionItemColumnPosition !== actionItemColumnPosition;
|
|
83
|
+
this._actionItemColumnPosition = actionItemColumnPosition;
|
|
84
|
+
if (changed) {
|
|
85
|
+
this._updateColumns.next(undefined);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
81
88
|
setActionMenuCellTpl(actionMenuCellTpl) {
|
|
82
89
|
const changed = this._actionMenuCellTpl !== actionMenuCellTpl;
|
|
83
90
|
this._actionMenuCellTpl = actionMenuCellTpl;
|
|
@@ -156,7 +163,13 @@ export class ColumnsManagerService {
|
|
|
156
163
|
cols.push(_col);
|
|
157
164
|
}
|
|
158
165
|
if (this._shouldAddRowActionColumn()) {
|
|
159
|
-
|
|
166
|
+
const actionMenuColumn = createActionMenuColumn(this._actionMenuCellTpl, this._blankHeaderTpl, this._rowActionColumnIsFrozenLeft(), this._rowActionColumnIsFrozenRight());
|
|
167
|
+
if (this._rowActionColumnIsStaticLeft()) {
|
|
168
|
+
cols.unshift(actionMenuColumn);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
cols.push(actionMenuColumn);
|
|
172
|
+
}
|
|
160
173
|
}
|
|
161
174
|
// Make sure the default for any missing props are set.
|
|
162
175
|
// TODO: Determine if this should be done earlier, because I don't like
|
|
@@ -242,6 +255,18 @@ export class ColumnsManagerService {
|
|
|
242
255
|
_shouldAddRowActionColumn() {
|
|
243
256
|
return this._rowActionItem !== undefined;
|
|
244
257
|
}
|
|
258
|
+
_rowActionColumnIsFrozenLeft() {
|
|
259
|
+
return this._actionItemColumnPosition === 'frozenLeft';
|
|
260
|
+
}
|
|
261
|
+
_rowActionColumnIsFrozenRight() {
|
|
262
|
+
return this._actionItemColumnPosition === 'frozenRight';
|
|
263
|
+
}
|
|
264
|
+
_rowActionColumnIsStaticLeft() {
|
|
265
|
+
return this._actionItemColumnPosition === 'staticLeft';
|
|
266
|
+
}
|
|
267
|
+
_rowActionColumnIsStaticRight() {
|
|
268
|
+
return this._actionItemColumnPosition === 'staticRight';
|
|
269
|
+
}
|
|
245
270
|
_shouldAddTreeToggleColumn(column) {
|
|
246
271
|
return column.isTreeColumn !== undefined && column.isTreeColumn &&
|
|
247
272
|
(!hasProperty(column, 'treeToggleTemplate') || !notNullOrUndefined(column.treeToggleTemplate));
|
|
@@ -258,4 +283,4 @@ ColumnsManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0"
|
|
|
258
283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ColumnsManagerService, decorators: [{
|
|
259
284
|
type: Injectable
|
|
260
285
|
}], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }, { type: i1.DatatableColumnChangesService }]; } });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL3NlcnZpY2VzL2NvbHVtbnMtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWlFLE1BQU0sZUFBZSxDQUFBO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM1RixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxGLE9BQU8sRUFJTCxhQUFhLEdBR2QsTUFBTSx1QkFBdUIsQ0FBQTtBQUU5QixPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFLMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBOzs7QUFHdkUsSUFBSyxZQUlKO0FBSkQsV0FBSyxZQUFZO0lBQ2YsaURBQUssQ0FBQTtJQUNMLHVEQUFRLENBQUE7SUFDUixtREFBTSxDQUFBO0FBQ1IsQ0FBQyxFQUpJLFlBQVksS0FBWixZQUFZLFFBSWhCO0FBS0QsTUFBTSxPQUFPLHFCQUFxQjtJQXdCaEMsWUFDbUIsUUFBeUIsRUFDekIscUJBQW9EO1FBRHBELGFBQVEs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QUMsTUFBTSxDQUFDLENBQUE7WUFDM0QsSUFBSSxTQUFTLEVBQUU7Z0JBQ2Isb0VBQW9FO2dCQUNwRSxVQUFVLEdBQUcsSUFBSSxDQUFBO2FBQ2xCO1NBQ0Y7UUFDRCxPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxhQUFhLENBQUMsUUFBUSxDQUFBO0lBQ3ZELENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsQ0FBQTtJQUMxQyxDQUFDO0lBRU8sMEJBQTBCLENBQUMsTUFBOEI7UUFDL0QsT0FBTyxNQUFNLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsWUFBWTtZQUM3RCxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBRU8sd0JBQXdCLENBQUMsTUFBOEI7UUFDN0QsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRU8sNkJBQTZCLENBQUMsTUFBOEI7UUFDbEUsT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7O2tIQXJVVSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgS2V5VmFsdWVDaGFuZ2VzLCBLZXlWYWx1ZURpZmZlciwgS2V5VmFsdWVEaWZmZXJzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlZmVyLCBFTVBUWSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQge1xuICBEYXRhVGFibGVDb2x1bW5DZWxsVHJlZVRvZ2dsZSxcbiAgRGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlLFxuICBEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmUsXG4gIFNlbGVjdGlvblR5cGUsXG4gIFRhYmxlQ29sdW1uLFxuICBUYWJsZUNvbHVtblByb3AsXG59IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcblxuaW1wb3J0IHsgaGFzUHJvcGVydHksIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHsgRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXRhYmxlLWNvbHVtbi9kYXRhdGFibGUtY29sdW1uLmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2RhdGF0YWJsZS1yb3ctYWN0aW9uLWl0ZW0uZGlyZWN0aXZlJ1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gJy4uL21vZGVscy90YWJsZS1jb2x1bW4nXG5pbXBvcnQgeyBjcmVhdGVBY3Rpb25NZW51Q29sdW1uIH0gZnJvbSAnLi4vdXRpbHMvY3JlYXRlLWFjdGlvbi1tZW51LWNvbHVtbidcbmltcG9ydCB7IGNyZWF0ZUNoZWNrYm94Q29sdW1uIH0gZnJvbSAnLi4vdXRpbHMvY3JlYXRlLWNoZWNrYm94LWNvbHVtbidcbmltcG9ydCB7IGdldENvbHVtblByb3AgfSBmcm9tICcuLi91dGlscy9nZXQtY29sdW1uLXByb3AnXG5pbXBvcnQgeyBzZXRDb2x1bW5EZWZhdWx0cyB9IGZyb20gJy4uL3V0aWxzL3NldC1jb2x1bW4tZGVmYXVsdHMnXG5pbXBvcnQgeyB0cmFuc2xhdGVUZW1wbGF0ZUNvbHVtbnMgfSBmcm9tICcuLi91dGlscy90cmFuc2xhdGUtdGVtcGxhdGVzJ1xuaW1wb3J0IHsgRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UgfSBmcm9tICcuL2RhdGF0YWJsZS1jb2x1bW4tY2hhbmdlcy5zZXJ2aWNlJ1xuXG5lbnVtIENvbHVtbnNUeXBlcyB7XG4gIElucHV0LFxuICBUZW1wbGF0ZSxcbiAgUmVzdWx0LFxufVxuXG5leHBvcnQgdHlwZSBJbnRlcm5hbENvbHVtbnNHZXR0ZXIgPSAoKSA9PiBUYWJsZUNvbHVtbltdXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb2x1bW5zTWFuYWdlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVDb2x1bW5zID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0Q29sdW1ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGhlU2VhbURhdGF0YWJsZUNvbHVtbltdPihbXSlcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVtcGxhdGVDb2x1bW5zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhdGFibGVDb2x1bW5Db21wb25lbnRbXT4oW10pXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaW5wQ29sRGlmZmVyc01hcCA9IG5ldyBNYXA8VGFibGVDb2x1bW5Qcm9wLCBLZXlWYWx1ZURpZmZlcjxhbnksIGFueT4+KClcbiAgcHJpdmF0ZSByZWFkb25seSBfdHBsQ29sRGlmZmVyc01hcCA9IG5ldyBNYXA8VGFibGVDb2x1bW5Qcm9wLCBLZXlWYWx1ZURpZmZlcjxhbnksIGFueT4+KClcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzdWx0Q29sRGlmZmVyc01hcCA9IG5ldyBNYXA8VGFibGVDb2x1bW5Qcm9wLCBLZXlWYWx1ZURpZmZlcjxhbnksIGFueT4+KClcbiAgcHJpdmF0ZSBfY29sUHJvcHNEaWZmZXI/OiBLZXlWYWx1ZURpZmZlcjxhbnksIGFueT5cblxuICBwcml2YXRlIF9pbnRlcm5hbENvbHVtbnNHZXR0ZXI/OiBJbnRlcm5hbENvbHVtbnNHZXR0ZXJcblxuICBwcml2YXRlIF9zZWxlY3Rpb25UeXBlOiBTZWxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX3Jvd0FjdGlvbkl0ZW06IERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUgfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfYWN0aW9uTWVudUNlbGxUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfYmxhbmtIZWFkZXJUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfdHJlZVRvZ2dsZVRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGU+IHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX2hlYWRlclRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9jZWxsVHlwZVNlbGVjdG9yVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG5cbiAgLy8gVE9ETzogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSBjb2x1bW5zIGNoYW5nZWQgb2JlcnZhYmxlLCB0byBtYWtlIGNoYW5nZXMgbW9yZSBwcmVkaWN0YWJsZS5cbiAgcHVibGljIHJlYWRvbmx5IGNvbHVtbnMkOiBPYnNlcnZhYmxlPFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uQ2hhbmdlc1NlcnZpY2U6IERhdGF0YWJsZUNvbHVtbkNoYW5nZXNTZXJ2aWNlLFxuICApIHtcbiAgICBjb25zdCB0ZW1wbGF0ZUNvbHVtbnMkID0gdGhpcy5fY29sdW1uQ2hhbmdlc1NlcnZpY2UuY29sdW1uSW5wdXRDaGFuZ2VzJC5waXBlKFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVDb2x1bW5zLmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKHRyYW5zbGF0ZVRlbXBsYXRlQ29sdW1ucykpXG4gICAgICB9KVxuICAgIClcblxuICAgIHRoaXMuY29sdW1ucyQgPSBkZWZlcigoKSA9PiB7XG4gICAgICBsZXQgaXNGaXJzdCA9IHRydWVcbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5faW5wdXRDb2x1bW5zLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICB0ZW1wbGF0ZUNvbHVtbnMkLFxuICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5zLmFzT2JzZXJ2YWJsZSgpLnBpcGUoYXVkaXRUaW1lKDApLCBzdGFydFdpdGgodW5kZWZpbmVkKSlcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoWyBpbnB1dENvbHVtbnMsIHRlbXBsYXRlQ29sdW1ucyBdKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29scyA9IHRoaXMuX21lcmdlQ29sdW1ucyhpbnB1dENvbHVtbnMsIHRlbXBsYXRlQ29sdW1ucylcblxuICAgICAgICAgIGNvbnN0IGhhc0NvbHVtbnNDaGFuZ2VkID0gdGhpcy5faGFzQ29sdW1uc0NoYW5nZWQoY29scylcblxuICAgICAgICAgIC8vIFRPRE86IExvb2sgZm9yIGNvbHVtbnMgYWRkZWQvcmVtb3ZlZCBhbmQgcmVtb3ZlIHRoZSByZW1vdmVkIGNvbHVtbnNcbiAgICAgICAgICAvLyBkaWZmZXJzLCBub3QganVzdCBjaGFuZ2VzIHRvIGNvbHVtbnMuXG4gICAgICAgICAgY29uc3QgaGFzQWRkZWRPclJlbW92ZWRDb2x1bW5zID0gdGhpcy5faGFzQWRkZWRPclJlbW92ZWRDb2x1bW5zKGNvbHMpXG5cbiAgICAgICAgICAvLyBOT1RFOiBCb3RoIGNoZWNrcyBuZWVkIHRvIGJlIHJ1biwgZXZlbiB0aG91Z2ggb25seSBvbmUgbmVlZHMgdG8gYmVcbiAgICAgICAgICAvLyB0cnVlLCBiZWNhdXNlIHRoZWlyIGRpZmZlcnMgbmVlZCB0byBiZSBjYWxsZWQuXG4gICAgICAgICAgaWYgKGhhc0NvbHVtbnNDaGFuZ2VkIHx8IGhhc0FkZGVkT3JSZW1vdmVkQ29sdW1ucyB8fCBpc0ZpcnN0KSB7XG4gICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2VcbiAgICAgICAgICAgIHJldHVybiBvZihjb2xzKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBFTVBUWVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9KS5waXBlKFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KVxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbnB1dENvbHVtbnMoY29sdW1uczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdKTogdm9pZCB7XG4gICAgdGhpcy5faW5wdXRDb2x1bW5zLm5leHQoY29sdW1ucylcbiAgfVxuXG4gIHB1YmxpYyBzZXRUZW1wbGF0ZUNvbHVtbnMoY29sdW1uczogRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50W10pOiB2b2lkIHtcbiAgICB0aGlzLl90ZW1wbGF0ZUNvbHVtbnMubmV4dChjb2x1bW5zKVxuICB9XG5cbiAgcHVibGljIHNldEludGVybmFsQ29sdW1uc0dldHRlcihnZXR0ZXI6IEludGVybmFsQ29sdW1uc0dldHRlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnRlcm5hbENvbHVtbnNHZXR0ZXIgPSBnZXR0ZXIgfHwgdW5kZWZpbmVkXG4gICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5uZXh0KHVuZGVmaW5lZClcbiAgfVxuXG4gIHB1YmxpYyBzZXRTZWxlY3Rpb25UeXBlKHNlbGVjdGlvblR5cGU6IFNlbGVjdGlvblR5cGUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fc2VsZWN0aW9uVHlwZSAhPT0gc2VsZWN0aW9uVHlwZVxuICAgIHRoaXMuX3NlbGVjdGlvblR5cGUgPSBzZWxlY3Rpb25UeXBlXG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMubmV4dCh1bmRlZmluZWQpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGlvblR5cGUoKTogU2VsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGVcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dBY3Rpb25JdGVtKHJvd0FjdGlvbkl0ZW06IERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fcm93QWN0aW9uSXRlbSAhPT0gcm93QWN0aW9uSXRlbVxuICAgIHRoaXMuX3Jvd0FjdGlvbkl0ZW0gPSByb3dBY3Rpb25JdGVtXG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMubmV4dCh1bmRlZmluZWQpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEFjdGlvbk1lbnVDZWxsVHBsKGFjdGlvbk1lbnVDZWxsVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuX2FjdGlvbk1lbnVDZWxsVHBsICE9PSBhY3Rpb25NZW51Q2VsbFRwbFxuICAgIHRoaXMuX2FjdGlvbk1lbnVDZWxsVHBsID0gYWN0aW9uTWVudUNlbGxUcGxcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5uZXh0KHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0QmxhbmtIZWFkZXJUcGwoYmxhbmtIZWFkZXJUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fYmxhbmtIZWFkZXJUcGwgIT09IGJsYW5rSGVhZGVyVHBsXG4gICAgdGhpcy5fYmxhbmtIZWFkZXJUcGwgPSBibGFua0hlYWRlclRwbFxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVDb2x1bW5zLm5leHQodW5kZWZpbmVkKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRUcmVlVG9nZ2xlVHBsKHRyZWVUb2dnbGVUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkNlbGxUcmVlVG9nZ2xlPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl90cmVlVG9nZ2xlVHBsICE9PSB0cmVlVG9nZ2xlVHBsXG4gICAgdGhpcy5fdHJlZVRvZ2dsZVRwbCA9IHRyZWVUb2dnbGVUcGxcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5uZXh0KHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0SGVhZGVyVHBsKGhlYWRlclRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9oZWFkZXJUcGwgIT09IGhlYWRlclRwbFxuICAgIHRoaXMuX2hlYWRlclRwbCA9IGhlYWRlclRwbFxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVDb2x1bW5zLm5leHQodW5kZWZpbmVkKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRDZWxsVHlwZVNlbGVjdG9yVHBsKGNlbGxUeXBlU2VsZWN0b3JUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fY2VsbFR5cGVTZWxlY3RvclRwbCAhPT0gY2VsbFR5cGVTZWxlY3RvclRwbFxuICAgIHRoaXMuX2NlbGxUeXBlU2VsZWN0b3JUcGwgPSBjZWxsVHlwZVNlbGVjdG9yVHBsXG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMubmV4dCh1bmRlZmluZWQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbWVyZ2VDb2x1bW5zKFxuICAgIGlucHV0Q29sdW1uczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdLFxuICAgIHRlbXBsYXRlQ29sdW1uczogRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50W11cbiAgKTogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdIHtcbiAgICBjb25zdCBjb2xzOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10gPSBbXVxuXG4gICAgLy8gQWRkIHRoZSBmaXJzdCBjb2x1bW4gY2hlY2tib3ggaWYgJ2NoZWNrYm94JyBzZWxlY3Rpb24gaXMgZW5hYmxlZC5cbiAgICBpZiAodGhpcy5fc2hvdWxkQWRkQ2hlY2tib3hDb2x1bW4oKSkge1xuICAgICAgY29scy5wdXNoKGNyZWF0ZUNoZWNrYm94Q29sdW1uKCkpXG4gICAgfVxuXG4gICAgLy8gQ29sdW1uIG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIHRoZSBpbnB1dENvbHVtbnMsIHNvIGl0ZXJhdGUgdGhlXG4gICAgLy8gaW5wdXRDb2x1bW5zLlxuICAgIGZvciAoY29uc3QgaW5wQ29sIG9mIGlucHV0Q29sdW1ucykge1xuICAgICAgY29uc3QgcHJvcCA9IGdldENvbHVtblByb3AoaW5wQ29sKVxuICAgICAgaWYgKCFub3ROdWxsT3JVbmRlZmluZWQocHJvcCkpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYENvbHVtbiBtYXkgaGF2ZSAncHJvcCcgb3IgJ25hbWUnIGRlZmluZWQuYClcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW50ZXJuYWxDb2wgPSB0aGlzLl9nZXRJbnRlcm5hbENvbHVtbihwcm9wKVxuXG4gICAgICBjb25zdCBpbnBDb2xEaWYgPSB0aGlzLl9nZXRDb2xEaWYoaW5wQ29sLCBDb2x1bW5zVHlwZXMuSW5wdXQpXG4gICAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKGlucENvbERpZikpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ29sRGlmKGlucENvbERpZiwgaW50ZXJuYWxDb2wsIGlucENvbClcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHBsQ29sID0gdGhpcy5fZmluZENvbHVtbkJ5UHJvcChwcm9wLCB0ZW1wbGF0ZUNvbHVtbnMpXG4gICAgICBpZiAodHBsQ29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdHBsQ29sRGlmID0gdGhpcy5fZ2V0Q29sRGlmKHRwbENvbCwgQ29sdW1uc1R5cGVzLlRlbXBsYXRlKVxuICAgICAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRwbENvbERpZikpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVDb2xEaWYodHBsQ29sRGlmLCBpbnRlcm5hbENvbCwgdHBsQ29sKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9jb2w6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gPSB7XG4gICAgICAgIC4uLihpbnRlcm5hbENvbCB8fCB7fSksXG4gICAgICAgIC4uLmlucENvbCxcbiAgICAgICAgLy8gVE9ETzogUmV0aGluayB0aGlzLCBiZWNhdXNlIEkgZG9uJ3Qga25vdyBpZiB0aGlzIGlzIGNvcnJlY3QuXG4gICAgICAgIC4uLih0cGxDb2wgYXMgYW55IHx8IHt9KVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fc2hvdWxkQWRkVHJlZVRvZ2dsZUNvbHVtbihfY29sKSkge1xuICAgICAgICBfY29sLnRyZWVUb2dnbGVUZW1wbGF0ZSA9IHRoaXMuX3RyZWVUb2dnbGVUcGxcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3Nob3VsZEFkZEhlYWRlclRlbXBsYXRlKF9jb2wpKSB7XG4gICAgICAgIF9jb2wuaGVhZGVyVGVtcGxhdGUgPSB0aGlzLl9oZWFkZXJUcGxcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3Nob3VsZEFkZENlbGxUeXBlU2VsZWN0b3JUcGwoX2NvbCkpIHtcbiAgICAgICAgX2NvbC5jZWxsVGVtcGxhdGUgPSB0aGlzLl9jZWxsVHlwZVNlbGVjdG9yVHBsXG4gICAgICB9XG5cbiAgICAgIGNvbHMucHVzaChfY29sKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zaG91bGRBZGRSb3dBY3Rpb25Db2x1bW4oKSkge1xuICAgICAgY29scy5wdXNoKGNyZWF0ZUFjdGlvbk1lbnVDb2x1bW4odGhpcy5fYWN0aW9uTWVudUNlbGxUcGwsIHRoaXMuX2JsYW5rSGVhZGVyVHBsKSlcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGRlZmF1bHQgZm9yIGFueSBtaXNzaW5nIHByb3BzIGFyZSBzZXQuXG4gICAgLy8gVE9ETzogRGV0ZXJtaW5lIGlmIHRoaXMgc2hvdWxkIGJlIGRvbmUgZWFybGllciwgYmVjYXVzZSBJIGRvbid0IGxpa2VcbiAgICAvLyBob3cgdGhpcyBpcyBkb25lIGFmdGVyIGRpZiBjaGVja3MuXG4gICAgc2V0Q29sdW1uRGVmYXVsdHMoY29scylcblxuICAgIHJldHVybiBjb2xzXG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnRlcm5hbENvbHVtbnMoKTogVGFibGVDb2x1bW5bXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX2ludGVybmFsQ29sdW1uc0dldHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ludGVybmFsQ29sdW1uc0dldHRlcigpXG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnRlcm5hbENvbHVtbihwcm9wOiBUYWJsZUNvbHVtblByb3ApOiBUYWJsZUNvbHVtbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaW50ZXJuYWxDb2xzID0gdGhpcy5fZ2V0SW50ZXJuYWxDb2x1bW5zKClcblxuICAgIGlmIChpbnRlcm5hbENvbHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBpbnRlcm5hbENvbHMuZmluZChjID0+IGdldENvbHVtblByb3AoYykgPT09IHByb3ApXG4gIH1cblxuICBwcml2YXRlIF9maW5kQ29sdW1uQnlQcm9wPFQgZXh0ZW5kcyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIHwgRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50PihcbiAgICBwcm9wOiBUYWJsZUNvbHVtblByb3AsXG4gICAgY29sdW1uczogVFtdXG4gICk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbmQoYyA9PiBnZXRDb2x1bW5Qcm9wKGMpID09PSBwcm9wKVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGlmTWFwRm9yQ29sdW1uc1R5cGUoY29sdW1uc1R5cGU6IENvbHVtbnNUeXBlcyk6IE1hcDxUYWJsZUNvbHVtblByb3AsIEtleVZhbHVlRGlmZmVyPGFueSwgYW55Pj4ge1xuICAgIHN3aXRjaCAoY29sdW1uc1R5cGUpIHtcbiAgICAgIGNhc2UgQ29sdW1uc1R5cGVzLklucHV0OiByZXR1cm4gdGhpcy5faW5wQ29sRGlmZmVyc01hcFxuICAgICAgY2FzZSBDb2x1bW5zVHlwZXMuVGVtcGxhdGU6IHJldHVybiB0aGlzLl90cGxDb2xEaWZmZXJzTWFwXG4gICAgICBjYXNlIENvbHVtbnNUeXBlcy5SZXN1bHQ6IHJldHVybiB0aGlzLl9yZXN1bHRDb2xEaWZmZXJzTWFwXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29sdW1uRGlmZmVyKHByb3A6IFRhYmxlQ29sdW1uUHJvcCwgY29sc1R5cGU6IENvbHVtbnNUeXBlcyk6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgYW55PiB7XG4gICAgY29uc3QgZGlmTWFwID0gdGhpcy5fZ2V0RGlmTWFwRm9yQ29sdW1uc1R5cGUoY29sc1R5cGUpXG4gICAgaWYgKGRpZk1hcCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgY29sdW1ucyB0eXBlLmApXG4gICAgfVxuXG4gICAgaWYgKCFkaWZNYXAuaGFzKHByb3ApKSB7XG4gICAgICBkaWZNYXAuc2V0KHByb3AsIHRoaXMuX2RpZmZlcnMuZmluZCh7fSkuY3JlYXRlKCkpXG4gICAgfVxuXG4gICAgY29uc3QgZGlmZmVyID0gZGlmTWFwLmdldChwcm9wKVxuICAgIGlmIChkaWZmZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoYERpZmZlciBub3QgZm91bmQuIE5ldyBkaWZmZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkLmApXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZlclxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29sRGlmKFxuICAgIGNvbDogVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB8IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICBjb2xzVHlwZTogQ29sdW1uc1R5cGVzXG4gICk6IEtleVZhbHVlQ2hhbmdlczxzdHJpbmcsIGFueT4gfCBudWxsIHtcbiAgICBjb25zdCBwcm9wID0gZ2V0Q29sdW1uUHJvcChjb2wpXG4gICAgaWYgKHByb3AgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoYENvbHVtbiBwcm9wIG5vdCBmb3VuZC5gKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9nZXRDb2x1bW5EaWZmZXIocHJvcCwgY29sc1R5cGUpLmRpZmYoY29sKVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ29sRGlmKFxuICAgIGNvbERpZjogS2V5VmFsdWVDaGFuZ2VzPHN0cmluZywgYW55PixcbiAgICBpbnRlcm5hbENvbHVtbjogVGFibGVDb2x1bW4gfCB1bmRlZmluZWQsXG4gICAgY29sOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIHwgRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50XG4gICk6IHZvaWQge1xuICAgIGNvbERpZi5mb3JFYWNoUmVtb3ZlZEl0ZW0ociA9PiB7XG4gICAgICBpZiAoaW50ZXJuYWxDb2x1bW4gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGludGVybmFsQ29sdW1uLCByLmtleSkpIHtcbiAgICAgICAgY29uc3QgayA9IHIua2V5IGFzIGtleW9mIFRhYmxlQ29sdW1uXG4gICAgICAgIGRlbGV0ZSBpbnRlcm5hbENvbHVtbltrXVxuICAgICAgfVxuICAgIH0pXG4gICAgY29sRGlmLmZvckVhY2hBZGRlZEl0ZW0ociA9PiAoY29sIGFzIGFueSlbci5rZXldID0gci5jdXJyZW50VmFsdWUpXG4gICAgY29sRGlmLmZvckVhY2hDaGFuZ2VkSXRlbShyID0+IChjb2wgYXMgYW55KVtyLmtleV0gPSByLmN1cnJlbnRWYWx1ZSlcbiAgfVxuXG4gIHByaXZhdGUgX2hhc0FkZGVkT3JSZW1vdmVkQ29sdW1ucyhjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2NvbFByb3BzRGlmZmVyKSB7XG4gICAgICB0aGlzLl9jb2xQcm9wc0RpZmZlciA9IHRoaXMuX2RpZmZlcnMuZmluZChbXSkuY3JlYXRlKClcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wcyA9IGNvbHVtbnMubWFwKGMgPT4gZ2V0Q29sdW1uUHJvcChjKSlcbiAgICByZXR1cm4gdGhpcy5fY29sUHJvcHNEaWZmZXIuZGlmZihwcm9wcykgIT09IG51bGxcbiAgfVxuXG4gIHByaXZhdGUgX2hhc0NvbHVtbnNDaGFuZ2VkKGNvbHVtbnM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSk6IGJvb2xlYW4ge1xuICAgIGxldCBjb2xDaGFuZ2VkID0gZmFsc2VcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCByZXN1bHREaWYgPSB0aGlzLl9nZXRDb2xEaWYoY29sLCBDb2x1bW5zVHlwZXMuUmVzdWx0KVxuICAgICAgaWYgKHJlc3VsdERpZikge1xuICAgICAgICAvLyBOT1RFOiBDYW4ndCByZXR1cm4gZWFybHksIGJlY2F1c2UgdGhlIGRpZmZlcnMgbmVlZCB0byBiZSB1cGRhdGVkLlxuICAgICAgICBjb2xDaGFuZ2VkID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sQ2hhbmdlZFxuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkQWRkQ2hlY2tib3hDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGUgPT09IFNlbGVjdGlvblR5cGUuY2hlY2tib3hcbiAgfVxuXG4gIHByaXZhdGUgX3Nob3VsZEFkZFJvd0FjdGlvbkNvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcm93QWN0aW9uSXRlbSAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICBwcml2YXRlIF9zaG91bGRBZGRUcmVlVG9nZ2xlQ29sdW1uKGNvbHVtbjogVGhlU2VhbURhdGF0YWJsZUNvbHVtbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2x1bW4uaXNUcmVlQ29sdW1uICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLmlzVHJlZUNvbHVtbiAmJlxuICAgICAgKCFoYXNQcm9wZXJ0eShjb2x1bW4sICd0cmVlVG9nZ2xlVGVtcGxhdGUnKSB8fCAhbm90TnVsbE9yVW5kZWZpbmVkKGNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGUpKVxuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkQWRkSGVhZGVyVGVtcGxhdGUoY29sdW1uOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFoYXNQcm9wZXJ0eShjb2x1bW4sICdoZWFkZXJUZW1wbGF0ZScpXG4gIH1cblxuICBwcml2YXRlIF9zaG91bGRBZGRDZWxsVHlwZVNlbGVjdG9yVHBsKGNvbHVtbjogVGhlU2VhbURhdGF0YWJsZUNvbHVtbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXNQcm9wZXJ0eShjb2x1bW4sICdjZWxsVHlwZScpXG4gIH1cblxufVxuIl19
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL3NlcnZpY2VzL2NvbHVtbnMtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWlFLE1BQU0sZUFBZSxDQUFBO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM1RixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxGLE9BQU8sRUFJTCxhQUFhLEdBR2QsTUFBTSx1QkFBdUIsQ0FBQTtBQUU5QixPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFLMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBOzs7QUFJdkUsSUFBSyxZQUlKO0FBSkQsV0FBSyxZQUFZO0lBQ2YsaURBQUssQ0FBQTtJQUNMLHVEQUFRLENBQUE7SUFDUixtREFBTSxDQUFBO0FBQ1IsQ0FBQyxFQUpJLFlBQVksS0FBWixZQUFZLFFBSWhCO0FBS0QsTUFBTSxPQUFPLHFCQUFxQjtJQXlCaEMsWUFDbUIsUUFBeUIsRUFDekIscUJBQW9EO1FBRHBELGFBQVEs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LENBQUE7SUFDekQsQ0FBQztJQUVPLDBCQUEwQixDQUFDLE1BQThCO1FBQy9ELE9BQU8sTUFBTSxDQUFDLFlBQVksS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFlBQVk7WUFDN0QsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUE7SUFDbEcsQ0FBQztJQUVPLHdCQUF3QixDQUFDLE1BQThCO1FBQzdELE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVPLDZCQUE2QixDQUFDLE1BQThCO1FBQ2xFLE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUN4QyxDQUFDOztrSEFwV1UscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEtleVZhbHVlQ2hhbmdlcywgS2V5VmFsdWVEaWZmZXIsIEtleVZhbHVlRGlmZmVycywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWZlciwgRU1QVFksIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGF1ZGl0VGltZSwgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHtcbiAgRGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGUsXG4gIERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZSxcbiAgRGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlLFxuICBTZWxlY3Rpb25UeXBlLFxuICBUYWJsZUNvbHVtbixcbiAgVGFibGVDb2x1bW5Qcm9wLFxufSBmcm9tICdAbWFya2xiL25neC1kYXRhdGFibGUnXG5cbmltcG9ydCB7IGhhc1Byb3BlcnR5LCBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbmltcG9ydCB7IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGF0YWJsZS1jb2x1bW4vZGF0YXRhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRhdGFibGUtcm93LWFjdGlvbi1pdGVtLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtY29sdW1uJ1xuaW1wb3J0IHsgY3JlYXRlQWN0aW9uTWVudUNvbHVtbiB9IGZyb20gJy4uL3V0aWxzL2NyZWF0ZS1hY3Rpb24tbWVudS1jb2x1bW4nXG5pbXBvcnQgeyBjcmVhdGVDaGVja2JveENvbHVtbiB9IGZyb20gJy4uL3V0aWxzL2NyZWF0ZS1jaGVja2JveC1jb2x1bW4nXG5pbXBvcnQgeyBnZXRDb2x1bW5Qcm9wIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LWNvbHVtbi1wcm9wJ1xuaW1wb3J0IHsgc2V0Q29sdW1uRGVmYXVsdHMgfSBmcm9tICcuLi91dGlscy9zZXQtY29sdW1uLWRlZmF1bHRzJ1xuaW1wb3J0IHsgdHJhbnNsYXRlVGVtcGxhdGVDb2x1bW5zIH0gZnJvbSAnLi4vdXRpbHMvdHJhbnNsYXRlLXRlbXBsYXRlcydcbmltcG9ydCB7IERhdGF0YWJsZUNvbHVtbkNoYW5nZXNTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhdGFibGUtY29sdW1uLWNoYW5nZXMuc2VydmljZSdcbmltcG9ydCB7IEFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9hY3Rpb24taXRlbS1jb2x1bW4tcG9zaXRpb24nXG5cbmVudW0gQ29sdW1uc1R5cGVzIHtcbiAgSW5wdXQsXG4gIFRlbXBsYXRlLFxuICBSZXN1bHQsXG59XG5cbmV4cG9ydCB0eXBlIEludGVybmFsQ29sdW1uc0dldHRlciA9ICgpID0+IFRhYmxlQ29sdW1uW11cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbHVtbnNNYW5hZ2VyU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VwZGF0ZUNvbHVtbnMgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaW5wdXRDb2x1bW5zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10+KFtdKVxuICBwcml2YXRlIHJlYWRvbmx5IF90ZW1wbGF0ZUNvbHVtbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudFtdPihbXSlcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnBDb2xEaWZmZXJzTWFwID0gbmV3IE1hcDxUYWJsZUNvbHVtblByb3AsIEtleVZhbHVlRGlmZmVyPGFueSwgYW55Pj4oKVxuICBwcml2YXRlIHJlYWRvbmx5IF90cGxDb2xEaWZmZXJzTWFwID0gbmV3IE1hcDxUYWJsZUNvbHVtblByb3AsIEtleVZhbHVlRGlmZmVyPGFueSwgYW55Pj4oKVxuICBwcml2YXRlIHJlYWRvbmx5IF9yZXN1bHRDb2xEaWZmZXJzTWFwID0gbmV3IE1hcDxUYWJsZUNvbHVtblByb3AsIEtleVZhbHVlRGlmZmVyPGFueSwgYW55Pj4oKVxuICBwcml2YXRlIF9jb2xQcm9wc0RpZmZlcj86IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PlxuXG4gIHByaXZhdGUgX2ludGVybmFsQ29sdW1uc0dldHRlcj86IEludGVybmFsQ29sdW1uc0dldHRlclxuXG4gIHByaXZhdGUgX3NlbGVjdGlvblR5cGU6IFNlbGVjdGlvblR5cGUgfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfcm93QWN0aW9uSXRlbTogRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9hY3Rpb25NZW51Q2VsbFRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9hY3Rpb25JdGVtQ29sdW1uUG9zaXRpb246IEFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9ibGFua0hlYWRlclRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF90cmVlVG9nZ2xlVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5DZWxsVHJlZVRvZ2dsZT4gfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfaGVhZGVyVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX2NlbGxUeXBlU2VsZWN0b3JUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcblxuICAvLyBUT0RPOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIGNvbHVtbnMgY2hhbmdlZCBvYmVydmFibGUsIHRvIG1ha2UgY2hhbmdlcyBtb3JlIHByZWRpY3RhYmxlLlxuICBwdWJsaWMgcmVhZG9ubHkgY29sdW1ucyQ6IE9ic2VydmFibGU8VGhlU2VhbURhdGF0YWJsZUNvbHVtbltdPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5DaGFuZ2VzU2VydmljZTogRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UsXG4gICkge1xuICAgIGNvbnN0IHRlbXBsYXRlQ29sdW1ucyQgPSB0aGlzLl9jb2x1bW5DaGFuZ2VzU2VydmljZS5jb2x1bW5JbnB1dENoYW5nZXMkLnBpcGUoXG4gICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZUNvbHVtbnMuYXNPYnNlcnZhYmxlKCkucGlwZShtYXAodHJhbnNsYXRlVGVtcGxhdGVDb2x1bW5zKSlcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5jb2x1bW5zJCA9IGRlZmVyKCgpID0+IHtcbiAgICAgIGxldCBpc0ZpcnN0ID0gdHJ1ZVxuICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLl9pbnB1dENvbHVtbnMuYXNPYnNlcnZhYmxlKCksXG4gICAgICAgIHRlbXBsYXRlQ29sdW1ucyQsXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMuYXNPYnNlcnZhYmxlKCkucGlwZShhdWRpdFRpbWUoMCksIHN0YXJ0V2l0aCh1bmRlZmluZWQpKVxuICAgICAgXSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChbIGlucHV0Q29sdW1ucywgdGVtcGxhdGVDb2x1bW5zIF0pID0+IHtcbiAgICAgICAgICBjb25zdCBjb2xzID0gdGhpcy5fbWVyZ2VDb2x1bW5zKGlucHV0Q29sdW1ucywgdGVtcGxhdGVDb2x1bW5zKVxuXG4gICAgICAgICAgY29uc3QgaGFzQ29sdW1uc0NoYW5nZWQgPSB0aGlzLl9oYXNDb2x1bW5zQ2hhbmdlZChjb2xzKVxuXG4gICAgICAgICAgLy8gVE9ETzogTG9vayBmb3IgY29sdW1ucyBhZGRlZC9yZW1vdmVkIGFuZCByZW1vdmUgdGhlIHJlbW92ZWQgY29sdW1uc1xuICAgICAgICAgIC8vIGRpZmZlcnMsIG5vdCBqdXN0IGNoYW5nZXMgdG8gY29sdW1ucy5cbiAgICAgICAgICBjb25zdCBoYXNBZGRlZE9yUmVtb3ZlZENvbHVtbnMgPSB0aGlzLl9oYXNBZGRlZE9yUmVtb3ZlZENvbHVtbnMoY29scylcblxuICAgICAgICAgIC8vIE5PVEU6IEJvdGggY2hlY2tzIG5lZWQgdG8gYmUgcnVuLCBldmVuIHRob3VnaCBvbmx5IG9uZSBuZWVkcyB0byBiZVxuICAgICAgICAgIC8vIHRydWUsIGJlY2F1c2UgdGhlaXIgZGlmZmVycyBuZWVkIHRvIGJlIGNhbGxlZC5cbiAgICAgICAgICBpZiAoaGFzQ29sdW1uc0NoYW5nZWQgfHwgaGFzQWRkZWRPclJlbW92ZWRDb2x1bW5zIHx8IGlzRmlyc3QpIHtcbiAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZVxuICAgICAgICAgICAgcmV0dXJuIG9mKGNvbHMpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIEVNUFRZXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH0pLnBpcGUoXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKVxuICB9XG5cbiAgcHVibGljIHNldElucHV0Q29sdW1ucyhjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dENvbHVtbnMubmV4dChjb2x1bW5zKVxuICB9XG5cbiAgcHVibGljIHNldFRlbXBsYXRlQ29sdW1ucyhjb2x1bW5zOiBEYXRhdGFibGVDb2x1bW5Db21wb25lbnRbXSk6IHZvaWQge1xuICAgIHRoaXMuX3RlbXBsYXRlQ29sdW1ucy5uZXh0KGNvbHVtbnMpXG4gIH1cblxuICBwdWJsaWMgc2V0SW50ZXJuYWxDb2x1bW5zR2V0dGVyKGdldHRlcjogSW50ZXJuYWxDb2x1bW5zR2V0dGVyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuX2ludGVybmFsQ29sdW1uc0dldHRlciA9IGdldHRlciB8fCB1bmRlZmluZWRcbiAgICB0aGlzLl91cGRhdGVDb2x1bW5zLm5leHQodW5kZWZpbmVkKVxuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGlvblR5cGUoc2VsZWN0aW9uVHlwZTogU2VsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9zZWxlY3Rpb25UeXBlICE9PSBzZWxlY3Rpb25UeXBlXG4gICAgdGhpcy5fc2VsZWN0aW9uVHlwZSA9IHNlbGVjdGlvblR5cGVcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5uZXh0KHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VsZWN0aW9uVHlwZSgpOiBTZWxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uVHlwZVxuICB9XG5cbiAgcHVibGljIHNldFJvd0FjdGlvbkl0ZW0ocm93QWN0aW9uSXRlbTogRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9yb3dBY3Rpb25JdGVtICE9PSByb3dBY3Rpb25JdGVtXG4gICAgdGhpcy5fcm93QWN0aW9uSXRlbSA9IHJvd0FjdGlvbkl0ZW1cbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5uZXh0KHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uKGFjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbjogQWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuX2FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiAhPT0gYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uXG4gICAgdGhpcy5fYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uID0gYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uXG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMubmV4dCh1bmRlZmluZWQpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEFjdGlvbk1lbnVDZWxsVHBsKGFjdGlvbk1lbnVDZWxsVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuX2FjdGlvbk1lbnVDZWxsVHBsICE9PSBhY3Rpb25NZW51Q2VsbFRwbFxuICAgIHRoaXMuX2FjdGlvbk1lbnVDZWxsVHBsID0gYWN0aW9uTWVudUNlbGxUcGxcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5uZXh0KHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0QmxhbmtIZWFkZXJUcGwoYmxhbmtIZWFkZXJUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fYmxhbmtIZWFkZXJUcGwgIT09IGJsYW5rSGVhZGVyVHBsXG4gICAgdGhpcy5fYmxhbmtIZWFkZXJUcGwgPSBibGFua0hlYWRlclRwbFxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVDb2x1bW5zLm5leHQodW5kZWZpbmVkKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRUcmVlVG9nZ2xlVHBsKHRyZWVUb2dnbGVUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkNlbGxUcmVlVG9nZ2xlPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl90cmVlVG9nZ2xlVHBsICE9PSB0cmVlVG9nZ2xlVHBsXG4gICAgdGhpcy5fdHJlZVRvZ2dsZVRwbCA9IHRyZWVUb2dnbGVUcGxcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5uZXh0KHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0SGVhZGVyVHBsKGhlYWRlclRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9oZWFkZXJUcGwgIT09IGhlYWRlclRwbFxuICAgIHRoaXMuX2hlYWRlclRwbCA9IGhlYWRlclRwbFxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVDb2x1bW5zLm5leHQodW5kZWZpbmVkKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRDZWxsVHlwZVNlbGVjdG9yVHBsKGNlbGxUeXBlU2VsZWN0b3JUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fY2VsbFR5cGVTZWxlY3RvclRwbCAhPT0gY2VsbFR5cGVTZWxlY3RvclRwbFxuICAgIHRoaXMuX2NlbGxUeXBlU2VsZWN0b3JUcGwgPSBjZWxsVHlwZVNlbGVjdG9yVHBsXG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMubmV4dCh1bmRlZmluZWQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbWVyZ2VDb2x1bW5zKFxuICAgIGlucHV0Q29sdW1uczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdLFxuICAgIHRlbXBsYXRlQ29sdW1uczogRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50W11cbiAgKTogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdIHtcbiAgICBjb25zdCBjb2xzOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10gPSBbXVxuXG4gICAgLy8gQWRkIHRoZSBmaXJzdCBjb2x1bW4gY2hlY2tib3ggaWYgJ2NoZWNrYm94JyBzZWxlY3Rpb24gaXMgZW5hYmxlZC5cbiAgICBpZiAodGhpcy5fc2hvdWxkQWRkQ2hlY2tib3hDb2x1bW4oKSkge1xuICAgICAgY29scy5wdXNoKGNyZWF0ZUNoZWNrYm94Q29sdW1uKCkpXG4gICAgfVxuXG4gICAgLy8gQ29sdW1uIG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIHRoZSBpbnB1dENvbHVtbnMsIHNvIGl0ZXJhdGUgdGhlXG4gICAgLy8gaW5wdXRDb2x1bW5zLlxuICAgIGZvciAoY29uc3QgaW5wQ29sIG9mIGlucHV0Q29sdW1ucykge1xuICAgICAgY29uc3QgcHJvcCA9IGdldENvbHVtblByb3AoaW5wQ29sKVxuICAgICAgaWYgKCFub3ROdWxsT3JVbmRlZmluZWQocHJvcCkpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYENvbHVtbiBtYXkgaGF2ZSAncHJvcCcgb3IgJ25hbWUnIGRlZmluZWQuYClcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW50ZXJuYWxDb2wgPSB0aGlzLl9nZXRJbnRlcm5hbENvbHVtbihwcm9wKVxuXG4gICAgICBjb25zdCBpbnBDb2xEaWYgPSB0aGlzLl9nZXRDb2xEaWYoaW5wQ29sLCBDb2x1bW5zVHlwZXMuSW5wdXQpXG4gICAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKGlucENvbERpZikpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ29sRGlmKGlucENvbERpZiwgaW50ZXJuYWxDb2wsIGlucENvbClcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHBsQ29sID0gdGhpcy5fZmluZENvbHVtbkJ5UHJvcChwcm9wLCB0ZW1wbGF0ZUNvbHVtbnMpXG4gICAgICBpZiAodHBsQ29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdHBsQ29sRGlmID0gdGhpcy5fZ2V0Q29sRGlmKHRwbENvbCwgQ29sdW1uc1R5cGVzLlRlbXBsYXRlKVxuICAgICAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRwbENvbERpZikpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVDb2xEaWYodHBsQ29sRGlmLCBpbnRlcm5hbENvbCwgdHBsQ29sKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9jb2w6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gPSB7XG4gICAgICAgIC4uLihpbnRlcm5hbENvbCB8fCB7fSksXG4gICAgICAgIC4uLmlucENvbCxcbiAgICAgICAgLy8gVE9ETzogUmV0aGluayB0aGlzLCBiZWNhdXNlIEkgZG9uJ3Qga25vdyBpZiB0aGlzIGlzIGNvcnJlY3QuXG4gICAgICAgIC4uLih0cGxDb2wgYXMgYW55IHx8IHt9KVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fc2hvdWxkQWRkVHJlZVRvZ2dsZUNvbHVtbihfY29sKSkge1xuICAgICAgICBfY29sLnRyZWVUb2dnbGVUZW1wbGF0ZSA9IHRoaXMuX3RyZWVUb2dnbGVUcGxcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3Nob3VsZEFkZEhlYWRlclRlbXBsYXRlKF9jb2wpKSB7XG4gICAgICAgIF9jb2wuaGVhZGVyVGVtcGxhdGUgPSB0aGlzLl9oZWFkZXJUcGxcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3Nob3VsZEFkZENlbGxUeXBlU2VsZWN0b3JUcGwoX2NvbCkpIHtcbiAgICAgICAgX2NvbC5jZWxsVGVtcGxhdGUgPSB0aGlzLl9jZWxsVHlwZVNlbGVjdG9yVHBsXG4gICAgICB9XG5cbiAgICAgIGNvbHMucHVzaChfY29sKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zaG91bGRBZGRSb3dBY3Rpb25Db2x1bW4oKSkge1xuICAgICAgY29uc3QgYWN0aW9uTWVudUNvbHVtbiA9IGNyZWF0ZUFjdGlvbk1lbnVDb2x1bW4odGhpcy5fYWN0aW9uTWVudUNlbGxUcGwsIHRoaXMuX2JsYW5rSGVhZGVyVHBsLCB0aGlzLl9yb3dBY3Rpb25Db2x1bW5Jc0Zyb3plbkxlZnQoKSwgdGhpcy5fcm93QWN0aW9uQ29sdW1uSXNGcm96ZW5SaWdodCgpKVxuXG4gICAgICBpZiAodGhpcy5fcm93QWN0aW9uQ29sdW1uSXNTdGF0aWNMZWZ0KCkpIHtcbiAgICAgICAgY29scy51bnNoaWZ0KGFjdGlvbk1lbnVDb2x1bW4pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xzLnB1c2goYWN0aW9uTWVudUNvbHVtbilcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGRlZmF1bHQgZm9yIGFueSBtaXNzaW5nIHByb3BzIGFyZSBzZXQuXG4gICAgLy8gVE9ETzogRGV0ZXJtaW5lIGlmIHRoaXMgc2hvdWxkIGJlIGRvbmUgZWFybGllciwgYmVjYXVzZSBJIGRvbid0IGxpa2VcbiAgICAvLyBob3cgdGhpcyBpcyBkb25lIGFmdGVyIGRpZiBjaGVja3MuXG4gICAgc2V0Q29sdW1uRGVmYXVsdHMoY29scylcblxuICAgIHJldHVybiBjb2xzXG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnRlcm5hbENvbHVtbnMoKTogVGFibGVDb2x1bW5bXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX2ludGVybmFsQ29sdW1uc0dldHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ludGVybmFsQ29sdW1uc0dldHRlcigpXG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnRlcm5hbENvbHVtbihwcm9wOiBUYWJsZUNvbHVtblByb3ApOiBUYWJsZUNvbHVtbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaW50ZXJuYWxDb2xzID0gdGhpcy5fZ2V0SW50ZXJuYWxDb2x1bW5zKClcblxuICAgIGlmIChpbnRlcm5hbENvbHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBpbnRlcm5hbENvbHMuZmluZChjID0+IGdldENvbHVtblByb3AoYykgPT09IHByb3ApXG4gIH1cblxuICBwcml2YXRlIF9maW5kQ29sdW1uQnlQcm9wPFQgZXh0ZW5kcyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIHwgRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50PihcbiAgICBwcm9wOiBUYWJsZUNvbHVtblByb3AsXG4gICAgY29sdW1uczogVFtdXG4gICk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbmQoYyA9PiBnZXRDb2x1bW5Qcm9wKGMpID09PSBwcm9wKVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGlmTWFwRm9yQ29sdW1uc1R5cGUoY29sdW1uc1R5cGU6IENvbHVtbnNUeXBlcyk6IE1hcDxUYWJsZUNvbHVtblByb3AsIEtleVZhbHVlRGlmZmVyPGFueSwgYW55Pj4ge1xuICAgIHN3aXRjaCAoY29sdW1uc1R5cGUpIHtcbiAgICAgIGNhc2UgQ29sdW1uc1R5cGVzLklucHV0OiByZXR1cm4gdGhpcy5faW5wQ29sRGlmZmVyc01hcFxuICAgICAgY2FzZSBDb2x1bW5zVHlwZXMuVGVtcGxhdGU6IHJldHVybiB0aGlzLl90cGxDb2xEaWZmZXJzTWFwXG4gICAgICBjYXNlIENvbHVtbnNUeXBlcy5SZXN1bHQ6IHJldHVybiB0aGlzLl9yZXN1bHRDb2xEaWZmZXJzTWFwXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29sdW1uRGlmZmVyKHByb3A6IFRhYmxlQ29sdW1uUHJvcCwgY29sc1R5cGU6IENvbHVtbnNUeXBlcyk6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgYW55PiB7XG4gICAgY29uc3QgZGlmTWFwID0gdGhpcy5fZ2V0RGlmTWFwRm9yQ29sdW1uc1R5cGUoY29sc1R5cGUpXG4gICAgaWYgKGRpZk1hcCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgY29sdW1ucyB0eXBlLmApXG4gICAgfVxuXG4gICAgaWYgKCFkaWZNYXAuaGFzKHByb3ApKSB7XG4gICAgICBkaWZNYXAuc2V0KHByb3AsIHRoaXMuX2RpZmZlcnMuZmluZCh7fSkuY3JlYXRlKCkpXG4gICAgfVxuXG4gICAgY29uc3QgZGlmZmVyID0gZGlmTWFwLmdldChwcm9wKVxuICAgIGlmIChkaWZmZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoYERpZmZlciBub3QgZm91bmQuIE5ldyBkaWZmZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkLmApXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZlclxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29sRGlmKFxuICAgIGNvbDogVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB8IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICBjb2xzVHlwZTogQ29sdW1uc1R5cGVzXG4gICk6IEtleVZhbHVlQ2hhbmdlczxzdHJpbmcsIGFueT4gfCBudWxsIHtcbiAgICBjb25zdCBwcm9wID0gZ2V0Q29sdW1uUHJvcChjb2wpXG4gICAgaWYgKHByb3AgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoYENvbHVtbiBwcm9wIG5vdCBmb3VuZC5gKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9nZXRDb2x1bW5EaWZmZXIocHJvcCwgY29sc1R5cGUpLmRpZmYoY29sKVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ29sRGlmKFxuICAgIGNvbERpZjogS2V5VmFsdWVDaGFuZ2VzPHN0cmluZywgYW55PixcbiAgICBpbnRlcm5hbENvbHVtbjogVGFibGVDb2x1bW4gfCB1bmRlZmluZWQsXG4gICAgY29sOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIHwgRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50XG4gICk6IHZvaWQge1xuICAgIGNvbERpZi5mb3JFYWNoUmVtb3ZlZEl0ZW0ociA9PiB7XG4gICAgICBpZiAoaW50ZXJuYWxDb2x1bW4gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGludGVybmFsQ29sdW1uLCByLmtleSkpIHtcbiAgICAgICAgY29uc3QgayA9IHIua2V5IGFzIGtleW9mIFRhYmxlQ29sdW1uXG4gICAgICAgIGRlbGV0ZSBpbnRlcm5hbENvbHVtbltrXVxuICAgICAgfVxuICAgIH0pXG4gICAgY29sRGlmLmZvckVhY2hBZGRlZEl0ZW0ociA9PiAoY29sIGFzIGFueSlbci5rZXldID0gci5jdXJyZW50VmFsdWUpXG4gICAgY29sRGlmLmZvckVhY2hDaGFuZ2VkSXRlbShyID0+IChjb2wgYXMgYW55KVtyLmtleV0gPSByLmN1cnJlbnRWYWx1ZSlcbiAgfVxuXG4gIHByaXZhdGUgX2hhc0FkZGVkT3JSZW1vdmVkQ29sdW1ucyhjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2NvbFByb3BzRGlmZmVyKSB7XG4gICAgICB0aGlzLl9jb2xQcm9wc0RpZmZlciA9IHRoaXMuX2RpZmZlcnMuZmluZChbXSkuY3JlYXRlKClcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wcyA9IGNvbHVtbnMubWFwKGMgPT4gZ2V0Q29sdW1uUHJvcChjKSlcbiAgICByZXR1cm4gdGhpcy5fY29sUHJvcHNEaWZmZXIuZGlmZihwcm9wcykgIT09IG51bGxcbiAgfVxuXG4gIHByaXZhdGUgX2hhc0NvbHVtbnNDaGFuZ2VkKGNvbHVtbnM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSk6IGJvb2xlYW4ge1xuICAgIGxldCBjb2xDaGFuZ2VkID0gZmFsc2VcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCByZXN1bHREaWYgPSB0aGlzLl9nZXRDb2xEaWYoY29sLCBDb2x1bW5zVHlwZXMuUmVzdWx0KVxuICAgICAgaWYgKHJlc3VsdERpZikge1xuICAgICAgICAvLyBOT1RFOiBDYW4ndCByZXR1cm4gZWFybHksIGJlY2F1c2UgdGhlIGRpZmZlcnMgbmVlZCB0byBiZSB1cGRhdGVkLlxuICAgICAgICBjb2xDaGFuZ2VkID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sQ2hhbmdlZFxuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkQWRkQ2hlY2tib3hDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGUgPT09IFNlbGVjdGlvblR5cGUuY2hlY2tib3hcbiAgfVxuXG4gIHByaXZhdGUgX3Nob3VsZEFkZFJvd0FjdGlvbkNvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcm93QWN0aW9uSXRlbSAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICBwcml2YXRlIF9yb3dBY3Rpb25Db2x1bW5Jc0Zyb3plbkxlZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiA9PT0gJ2Zyb3plbkxlZnQnXG4gIH1cblxuICBwcml2YXRlIF9yb3dBY3Rpb25Db2x1bW5Jc0Zyb3plblJpZ2h0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25JdGVtQ29sdW1uUG9zaXRpb24gPT09ICdmcm96ZW5SaWdodCdcbiAgfVxuXG4gIHByaXZhdGUgX3Jvd0FjdGlvbkNvbHVtbklzU3RhdGljTGVmdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uSXRlbUNvbHVtblBvc2l0aW9uID09PSAnc3RhdGljTGVmdCdcbiAgfVxuXG4gIHByaXZhdGUgX3Jvd0FjdGlvbkNvbHVtbklzU3RhdGljUmlnaHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbkl0ZW1Db2x1bW5Qb3NpdGlvbiA9PT0gJ3N0YXRpY1JpZ2h0J1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkQWRkVHJlZVRvZ2dsZUNvbHVtbihjb2x1bW46IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sdW1uLmlzVHJlZUNvbHVtbiAhPT0gdW5kZWZpbmVkICYmIGNvbHVtbi5pc1RyZWVDb2x1bW4gJiZcbiAgICAgICghaGFzUHJvcGVydHkoY29sdW1uLCAndHJlZVRvZ2dsZVRlbXBsYXRlJykgfHwgIW5vdE51bGxPclVuZGVmaW5lZChjb2x1bW4udHJlZVRvZ2dsZVRlbXBsYXRlKSlcbiAgfVxuXG4gIHByaXZhdGUgX3Nob3VsZEFkZEhlYWRlclRlbXBsYXRlKGNvbHVtbjogVGhlU2VhbURhdGF0YWJsZUNvbHVtbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhaGFzUHJvcGVydHkoY29sdW1uLCAnaGVhZGVyVGVtcGxhdGUnKVxuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkQWRkQ2VsbFR5cGVTZWxlY3RvclRwbChjb2x1bW46IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzUHJvcGVydHkoY29sdW1uLCAnY2VsbFR5cGUnKVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const ACTION_MENU_COLUMN_PROP = '$$__actionMenu__';
|
|
2
|
-
export function createActionMenuColumn(cellTemplate, headerTemplate) {
|
|
2
|
+
export function createActionMenuColumn(cellTemplate, headerTemplate, frozenLeft, frozenRight) {
|
|
3
3
|
return {
|
|
4
4
|
prop: ACTION_MENU_COLUMN_PROP,
|
|
5
5
|
name: '',
|
|
@@ -10,9 +10,10 @@ export function createActionMenuColumn(cellTemplate, headerTemplate) {
|
|
|
10
10
|
sortable: false,
|
|
11
11
|
draggable: false,
|
|
12
12
|
// TODO: Fix column auto sizing with fixed column and cell overlay before enabling.
|
|
13
|
-
|
|
13
|
+
frozenLeft: frozenLeft,
|
|
14
|
+
frozenRight: frozenRight,
|
|
14
15
|
cellTemplate,
|
|
15
16
|
headerTemplate,
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFjdGlvbi1tZW51LWNvbHVtbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvdXRpbHMvY3JlYXRlLWFjdGlvbi1tZW51LWNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FBQTtBQUV6RCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLFlBQWlCLEVBQ2pCLGNBQW1CLEVBQ25CLFVBQW9CLEVBQ3BCLFdBQXFCO0lBRXJCLE9BQU87UUFDTCxJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLElBQUksRUFBRSxFQUFFO1FBQ1IsS0FBSyxFQUFFLEVBQUU7UUFDVCxRQUFRLEVBQUUsRUFBRTtRQUNaLFFBQVEsRUFBRSxFQUFFO1FBQ1osVUFBVSxFQUFFLEtBQUs7UUFDakIsUUFBUSxFQUFFLEtBQUs7UUFDZixTQUFTLEVBQUUsS0FBSztRQUNoQixtRkFBbUY7UUFDbkYsVUFBVSxFQUFFLFVBQVU7UUFDdEIsV0FBVyxFQUFFLFdBQVc7UUFDeEIsWUFBWTtRQUNaLGNBQWM7S0FDZixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtY29sdW1uJ1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX01FTlVfQ09MVU1OX1BST1AgPSAnJCRfX2FjdGlvbk1lbnVfXydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFjdGlvbk1lbnVDb2x1bW4oXG4gIGNlbGxUZW1wbGF0ZTogYW55LFxuICBoZWFkZXJUZW1wbGF0ZTogYW55LFxuICBmcm96ZW5MZWZ0PzogYm9vbGVhbixcbiAgZnJvemVuUmlnaHQ/OiBib29sZWFuXG4pOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIHtcbiAgcmV0dXJuIHtcbiAgICBwcm9wOiBBQ1RJT05fTUVOVV9DT0xVTU5fUFJPUCxcbiAgICBuYW1lOiAnJyxcbiAgICB3aWR0aDogNTAsXG4gICAgbWluV2lkdGg6IDUwLFxuICAgIG1heFdpZHRoOiA1MCxcbiAgICByZXNpemVhYmxlOiBmYWxzZSxcbiAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgZHJhZ2dhYmxlOiBmYWxzZSxcbiAgICAvLyBUT0RPOiBGaXggY29sdW1uIGF1dG8gc2l6aW5nIHdpdGggZml4ZWQgY29sdW1uIGFuZCBjZWxsIG92ZXJsYXkgYmVmb3JlIGVuYWJsaW5nLlxuICAgIGZyb3plbkxlZnQ6IGZyb3plbkxlZnQsXG4gICAgZnJvemVuUmlnaHQ6IGZyb3plblJpZ2h0LFxuICAgIGNlbGxUZW1wbGF0ZSxcbiAgICBoZWFkZXJUZW1wbGF0ZSxcbiAgfVxufVxuIl19
|
|
@@ -106,7 +106,7 @@ export class DatatableDynamicActionMenuComponent {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
DatatableDynamicActionMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableDynamicActionMenuComponent, deps: [{ token: i1.DynamicValueHelperService }, { token: i2.DynamicDatatableRowActionsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
-
DatatableDynamicActionMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableDynamicActionMenuComponent, selector: "seam-datatable-dynamic-action-menu", inputs: { row: "row", actionDefs: "actionDefs" }, ngImport: i0, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let record of _menuRecords$ | async\">\n\n <a *ngIf=\"record.elementType === 'a'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</a>\n\n <button *ngIf=\"record.elementType === 'button'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</button>\n\n </ng-container>\n\n <!-- <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [routerLink]=\"item.routerLink\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-container> -->\n</seam-menu>\n\n<button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"$any(_actionMenuPositions)\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n", styles: [":host{display:block;position:relative}.datatable-action-button{font-size:20px;line-height:20px;width:30px;height:30px;padding:0;border-radius:15px;text-align:center}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i5.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i5.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i5.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "directive", type: i6.DatatableDynamicActionMenuItemDirective, selector: "[seamDatatableDynamicActionMenuItem]", inputs: ["seamDatatableDynamicActionMenuItem"], exportAs: ["seamDatatableDynamicActionMenuItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
109
|
+
DatatableDynamicActionMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableDynamicActionMenuComponent, selector: "seam-datatable-dynamic-action-menu", inputs: { row: "row", actionDefs: "actionDefs" }, ngImport: i0, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let record of _menuRecords$ | async\">\n\n <a *ngIf=\"record.elementType === 'a'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</a>\n\n <button *ngIf=\"record.elementType === 'button'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</button>\n\n </ng-container>\n\n <!-- <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [routerLink]=\"item.routerLink\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-container> -->\n</seam-menu>\n\n<button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"$any(_actionMenuPositions)\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n", styles: [":host{display:block;position:relative}.datatable-action-button{font-size:20px;line-height:20px;width:30px;height:30px;padding:0;border-radius:15px;text-align:center}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i5.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i5.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i5.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "directive", type: i6.DatatableDynamicActionMenuItemDirective, selector: "[seamDatatableDynamicActionMenuItem]", inputs: ["seamDatatableDynamicActionMenuItem"], exportAs: ["seamDatatableDynamicActionMenuItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
110
110
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableDynamicActionMenuComponent, decorators: [{
|
|
111
111
|
type: Component,
|
|
112
112
|
args: [{ selector: 'seam-datatable-dynamic-action-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let record of _menuRecords$ | async\">\n\n <a *ngIf=\"record.elementType === 'a'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</a>\n\n <button *ngIf=\"record.elementType === 'button'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</button>\n\n </ng-container>\n\n <!-- <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [routerLink]=\"item.routerLink\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-container> -->\n</seam-menu>\n\n<button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"$any(_actionMenuPositions)\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n", styles: [":host{display:block;position:relative}.datatable-action-button{font-size:20px;line-height:20px;width:30px;height:30px;padding:0;border-radius:15px;text-align:center}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
|
|
@@ -62,7 +62,7 @@ DatatableDynamicComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0"
|
|
|
62
62
|
DatatableDynamicComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableDynamicComponent, selector: "seam-datatable-dynamic", inputs: { def: "def" }, providers: [
|
|
63
63
|
DynamicDatatableDefService,
|
|
64
64
|
DynamicDatatableRowActionsService
|
|
65
|
-
], ngImport: i0, template: "<ng-container *ngIf=\"_hasDef$ | async\">\n <seam-datatable *ngIf=\"_options$ | async as opts\"\n class=\"w-100 h-100\"\n [columns]=\"_tmp_columns$ | async\"\n [rows]=\"_tmp_rows$ | async\"\n [virtualization]=\"opts.virtualization\">\n\n <seam-datatable-menu-bar *ngIf=\"menuBar$ | async as menuBar\">\n <seam-datatable-dynamic-menu-bar-content [def]=\"menuBar\"></seam-datatable-dynamic-menu-bar-content>\n </seam-datatable-menu-bar>\n <!-- <seam-datatable-menu-bar *ngIf=\"_hasFilterMenu$ | async\">\n <div class=\"d-flex flex-row pb-2\">\n <div class=\"d-flex flex-row justify-content-end flex-grow-1\">\n <seam-data-filter-search seamDatatableFilter *ngIf=\"_hasFullSearch$\"></seam-data-filter-search>\n </div>\n </div>\n <div class=\"d-flex flex-row\">\n <div class=\"d-flex justify-content-center flex-grow-1\">\n <ng-container *ngFor=\"let r of _commonFilterMenuItems$ | async; let isFirst = first\">\n <seam-datatable-dynamic-filter-container\n [class.ml-1]=\"!isFirst\"\n [filterComponent]=\"r.component\"\n [options]=\"r.options\">\n </seam-datatable-dynamic-filter-container>\n </ng-container>\n </div>\n <seam-datatable-export-button *ngIf=\"_exporters$ | async as exporters\"\n [exporters]=\"exporters\">\n </seam-datatable-export-button>\n </div>\n </seam-datatable-menu-bar> -->\n\n <ng-template seamDatatableRowActionItem let-row>\n <seam-datatable-dynamic-action-menu [row]=\"row\"></seam-datatable-dynamic-action-menu>\n </ng-template>\n\n </seam-datatable>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DatatableComponent, selector: "seam-datatable", inputs: ["preferencesKey", "targetMarkerTemplate", "columns", "rows", "columnMode", "groupRowsBy", "groupedRows", "selected", "externalPaging", "externalSorting", "externalFiltering", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowIdentity", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "virtualization", "headerHeight", "rowHeight", "footerHeight", "scrollbarV", "scrollbarH", "dataSource"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction", "actionRefreshRequest", "hiddenColumnsChange"] }, { kind: "component", type: i3.DatatableMenuBarComponent, selector: "seam-datatable-menu-bar" }, { kind: "directive", type: i3.DatatableRowActionItemDirective, selector: "[seamDatatableRowActionItem]" }, { kind: "component", type: i4.DatatableDynamicActionMenuComponent, selector: "seam-datatable-dynamic-action-menu", inputs: ["row", "actionDefs"] }, { kind: "component", type: i5.DatatableDynamicMenuBarContentComponent, selector: "seam-datatable-dynamic-menu-bar-content", inputs: ["def"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
65
|
+
], ngImport: i0, template: "<ng-container *ngIf=\"_hasDef$ | async\">\n <seam-datatable *ngIf=\"_options$ | async as opts\"\n class=\"w-100 h-100\"\n [columns]=\"_tmp_columns$ | async\"\n [rows]=\"_tmp_rows$ | async\"\n [virtualization]=\"opts.virtualization\">\n\n <seam-datatable-menu-bar *ngIf=\"menuBar$ | async as menuBar\">\n <seam-datatable-dynamic-menu-bar-content [def]=\"menuBar\"></seam-datatable-dynamic-menu-bar-content>\n </seam-datatable-menu-bar>\n <!-- <seam-datatable-menu-bar *ngIf=\"_hasFilterMenu$ | async\">\n <div class=\"d-flex flex-row pb-2\">\n <div class=\"d-flex flex-row justify-content-end flex-grow-1\">\n <seam-data-filter-search seamDatatableFilter *ngIf=\"_hasFullSearch$\"></seam-data-filter-search>\n </div>\n </div>\n <div class=\"d-flex flex-row\">\n <div class=\"d-flex justify-content-center flex-grow-1\">\n <ng-container *ngFor=\"let r of _commonFilterMenuItems$ | async; let isFirst = first\">\n <seam-datatable-dynamic-filter-container\n [class.ml-1]=\"!isFirst\"\n [filterComponent]=\"r.component\"\n [options]=\"r.options\">\n </seam-datatable-dynamic-filter-container>\n </ng-container>\n </div>\n <seam-datatable-export-button *ngIf=\"_exporters$ | async as exporters\"\n [exporters]=\"exporters\">\n </seam-datatable-export-button>\n </div>\n </seam-datatable-menu-bar> -->\n\n <ng-template seamDatatableRowActionItem let-row>\n <seam-datatable-dynamic-action-menu [row]=\"row\"></seam-datatable-dynamic-action-menu>\n </ng-template>\n\n </seam-datatable>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DatatableComponent, selector: "seam-datatable", inputs: ["preferencesKey", "targetMarkerTemplate", "columns", "rows", "columnMode", "groupRowsBy", "groupedRows", "selected", "externalPaging", "externalSorting", "externalFiltering", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowIdentity", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "virtualization", "headerHeight", "rowHeight", "footerHeight", "scrollbarV", "scrollbarH", "dataSource", "actionItemColumnPosition"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction", "actionRefreshRequest", "hiddenColumnsChange"] }, { kind: "component", type: i3.DatatableMenuBarComponent, selector: "seam-datatable-menu-bar" }, { kind: "directive", type: i3.DatatableRowActionItemDirective, selector: "[seamDatatableRowActionItem]" }, { kind: "component", type: i4.DatatableDynamicActionMenuComponent, selector: "seam-datatable-dynamic-action-menu", inputs: ["row", "actionDefs"] }, { kind: "component", type: i5.DatatableDynamicMenuBarContentComponent, selector: "seam-datatable-dynamic-menu-bar-content", inputs: ["def"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
66
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableDynamicComponent, decorators: [{
|
|
67
67
|
type: Component,
|
|
68
68
|
args: [{ selector: 'seam-datatable-dynamic', providers: [
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';
|
|
3
|
+
import { shareReplay, startWith, Subject, switchMap } from 'rxjs';
|
|
3
4
|
import { InputBoolean } from '@theseam/ui-common/core';
|
|
4
5
|
import { FORM_FIELD_COMPONENT } from './form-field-tokens';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
@@ -7,27 +8,41 @@ import * as i1 from "@angular/common";
|
|
|
7
8
|
export class FormFieldRequiredIndicatorComponent {
|
|
8
9
|
constructor(_formField) {
|
|
9
10
|
this._formField = _formField;
|
|
11
|
+
this._requiredChange = new Subject();
|
|
10
12
|
/** Used if a form control is not found. */
|
|
11
13
|
this.required = false;
|
|
14
|
+
if (_formField) {
|
|
15
|
+
this._controlRequired$ = _formField._contentInputSubject.pipe(switchMap((contentInput) => {
|
|
16
|
+
if (!contentInput) {
|
|
17
|
+
return this._requiredChange.pipe(startWith(this.required));
|
|
18
|
+
}
|
|
19
|
+
return contentInput.requiredChange.pipe(startWith(contentInput.required));
|
|
20
|
+
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngOnChanges(changes) {
|
|
24
|
+
if (changes.required) {
|
|
25
|
+
this._requiredChange.next(this.required);
|
|
26
|
+
}
|
|
12
27
|
}
|
|
13
28
|
}
|
|
14
29
|
FormFieldRequiredIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormFieldRequiredIndicatorComponent, deps: [{ token: FORM_FIELD_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
-
FormFieldRequiredIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: { required: "required" }, host: { classAttribute: "text-danger" }, ngImport: i0, template: `
|
|
16
|
-
<ng-container *ngIf="
|
|
17
|
-
<ng-container *ngIf="
|
|
30
|
+
FormFieldRequiredIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: { required: "required" }, host: { classAttribute: "text-danger" }, usesOnChanges: true, ngImport: i0, template: `
|
|
31
|
+
<ng-container *ngIf="_controlRequired$; else noControl">
|
|
32
|
+
<ng-container *ngIf="_controlRequired$ | async">*</ng-container>
|
|
18
33
|
</ng-container>
|
|
19
34
|
<ng-template #noControl>
|
|
20
35
|
<ng-container *ngIf="required">*</ng-container>
|
|
21
36
|
</ng-template>
|
|
22
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
37
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
23
38
|
__decorate([
|
|
24
39
|
InputBoolean()
|
|
25
40
|
], FormFieldRequiredIndicatorComponent.prototype, "required", void 0);
|
|
26
41
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormFieldRequiredIndicatorComponent, decorators: [{
|
|
27
42
|
type: Component,
|
|
28
43
|
args: [{ selector: 'seam-form-field-required-indicator', template: `
|
|
29
|
-
<ng-container *ngIf="
|
|
30
|
-
<ng-container *ngIf="
|
|
44
|
+
<ng-container *ngIf="_controlRequired$; else noControl">
|
|
45
|
+
<ng-container *ngIf="_controlRequired$ | async">*</ng-container>
|
|
31
46
|
</ng-container>
|
|
32
47
|
<ng-template #noControl>
|
|
33
48
|
<ng-container *ngIf="required">*</ng-container>
|
|
@@ -43,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
43
58
|
}] }]; }, propDecorators: { required: [{
|
|
44
59
|
type: Input
|
|
45
60
|
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1yZXF1aXJlZC1pbmRpY2F0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC1yZXF1aXJlZC1pbmRpY2F0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsUUFBUSxFQUFpQixNQUFNLGVBQWUsQ0FBQTtBQUNySCxPQUFPLEVBQWMsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRTdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7O0FBa0IxRCxNQUFNLE9BQU8sbUNBQW1DO0lBVTlDLFlBQzRELFVBQWU7UUFBZixlQUFVLEdBQVYsVUFBVSxDQUFLO1FBUjFELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQTtRQUV6RCwyQ0FBMkM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQU92QyxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUMzRCxTQUFTLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ2pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCLENBQUE7aUJBQ0Y7Z0JBRUQsT0FBTyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDckMsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FDakMsQ0FBQTtZQUNILENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUE7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUN6QztJQUNILENBQUM7O2dJQW5DVSxtQ0FBbUMsa0JBV3hCLG9CQUFvQjtvSEFYL0IsbUNBQW1DLDBLQWRwQzs7Ozs7OztHQU9UO0FBYXdCO0lBQWYsWUFBWSxFQUFFO3FFQUFpQjsyRkFOOUIsbUNBQW1DO2tCQWhCL0MsU0FBUzsrQkFDRSxvQ0FBb0MsWUFDcEM7Ozs7Ozs7R0FPVCxRQUVLO3dCQUNKLE9BQU8sRUFBRSxhQUFhO3FCQUN2QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBYTVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9COzRDQUxqQixRQUFRO3NCQUFoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPcHRpb25hbCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vY29yZSdcblxuaW1wb3J0IHsgRk9STV9GSUVMRF9DT01QT05FTlQgfSBmcm9tICcuL2Zvcm0tZmllbGQtdG9rZW5zJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWZvcm0tZmllbGQtcmVxdWlyZWQtaW5kaWNhdG9yJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2NvbnRyb2xSZXF1aXJlZCQ7IGVsc2Ugbm9Db250cm9sXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2NvbnRyb2xSZXF1aXJlZCQgfCBhc3luY1wiPio8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vQ29udHJvbD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXF1aXJlZFwiPio8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZXM6IFtdLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ3RleHQtZGFuZ2VyJ1xuICB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRSZXF1aXJlZEluZGljYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZXF1aXJlZDogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVxdWlyZWRDaGFuZ2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpXG5cbiAgLyoqIFVzZWQgaWYgYSBmb3JtIGNvbnRyb2wgaXMgbm90IGZvdW5kLiAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgcmVxdWlyZWQgPSBmYWxzZVxuXG4gIHJlYWRvbmx5IF9jb250cm9sUmVxdWlyZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGT1JNX0ZJRUxEX0NPTVBPTkVOVCkgcHVibGljIHJlYWRvbmx5IF9mb3JtRmllbGQ6IGFueVxuICApIHtcbiAgICBpZiAoX2Zvcm1GaWVsZCkge1xuICAgICAgdGhpcy5fY29udHJvbFJlcXVpcmVkJCA9IF9mb3JtRmllbGQuX2NvbnRlbnRJbnB1dFN1YmplY3QucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChjb250ZW50SW5wdXQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICghY29udGVudElucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWRDaGFuZ2UucGlwZShcbiAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMucmVxdWlyZWQpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250ZW50SW5wdXQucmVxdWlyZWRDaGFuZ2UucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aChjb250ZW50SW5wdXQucmVxdWlyZWQpLFxuICAgICAgICAgIClcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLl9yZXF1aXJlZENoYW5nZS5uZXh0KHRoaXMucmVxdWlyZWQpXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -32,10 +32,6 @@ export class InputDirective {
|
|
|
32
32
|
this._elementRef.nativeElement.type = this._type;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Implemented as part of MatFormFieldControl.
|
|
37
|
-
* @docs-private
|
|
38
|
-
*/
|
|
39
35
|
get disabled() {
|
|
40
36
|
if (this.ngControl && this.ngControl.disabled !== null) {
|
|
41
37
|
return this.ngControl.disabled;
|
|
@@ -66,10 +62,6 @@ export class InputDirective {
|
|
|
66
62
|
this._isFormControl = true;
|
|
67
63
|
this.seamInputSize = 'normal';
|
|
68
64
|
this._type = 'text';
|
|
69
|
-
/**
|
|
70
|
-
* Implemented as part of MatFormFieldControl.
|
|
71
|
-
* @docs-private
|
|
72
|
-
*/
|
|
73
65
|
this.required = false;
|
|
74
66
|
this._disabled = false;
|
|
75
67
|
this.focused = false;
|
|
@@ -84,6 +76,12 @@ export class InputDirective {
|
|
|
84
76
|
// }
|
|
85
77
|
/** Whether the element is readonly. */
|
|
86
78
|
this.readonly = false;
|
|
79
|
+
this._requiredChange = new Subject();
|
|
80
|
+
this._disabledChange = new Subject();
|
|
81
|
+
this._readonlyChange = new Subject();
|
|
82
|
+
this.requiredChange = this._requiredChange.asObservable();
|
|
83
|
+
this.disabledChange = this._disabledChange.asObservable();
|
|
84
|
+
this.readonlyChange = this._readonlyChange.asObservable;
|
|
87
85
|
// Force setter to be called in case id was not specified.
|
|
88
86
|
// eslint-disable-next-line no-self-assign
|
|
89
87
|
this.id = this.id;
|
|
@@ -91,6 +89,17 @@ export class InputDirective {
|
|
|
91
89
|
this._isFormControl = false;
|
|
92
90
|
}
|
|
93
91
|
}
|
|
92
|
+
ngOnChanges(changes) {
|
|
93
|
+
if (changes.required) {
|
|
94
|
+
this._requiredChange.next(this.required);
|
|
95
|
+
}
|
|
96
|
+
if (changes.disabled) {
|
|
97
|
+
this._disabledChange.next(this.disabled);
|
|
98
|
+
}
|
|
99
|
+
if (changes.readonly) {
|
|
100
|
+
this._readonlyChange.next(this.readonly);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
94
103
|
ngDoCheck() {
|
|
95
104
|
if (this._isNgSelect()) {
|
|
96
105
|
this._ngSelect.labelForId = this.id;
|
|
@@ -135,12 +144,6 @@ export class InputDirective {
|
|
|
135
144
|
_isQuillEditor() {
|
|
136
145
|
return this._elementRef.nativeElement.nodeName.toLowerCase() === 'quill-editor';
|
|
137
146
|
}
|
|
138
|
-
/** Make sure the input is a supported type. */
|
|
139
|
-
// protected _validateType() {
|
|
140
|
-
// if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {
|
|
141
|
-
// throw getMatInputUnsupportedTypeError(this._type)
|
|
142
|
-
// }
|
|
143
|
-
// }
|
|
144
147
|
/** Focuses the input. */
|
|
145
148
|
focus() {
|
|
146
149
|
this._elementRef.nativeElement.focus();
|
|
@@ -159,7 +162,7 @@ export class InputDirective {
|
|
|
159
162
|
}
|
|
160
163
|
}
|
|
161
164
|
InputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: InputDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.NgSelectComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
162
|
-
InputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: { seamInputSize: "seamInputSize", id: "id", type: "type", placeholder: "placeholder", required: "required", disabled: "disabled", readonly: "readonly" }, host: { properties: { "class.form-control": "this._isFormControl", "class.form-control-sm": "this._isFormControlSmall", "class.is-invalid": "this._isInvalid", "attr.id": "this._attrId", "attr.placeholder": "this._attrPlaceholder", "attr.aria-describedby": "this.ariaDescribedBy" } }, exportAs: ["seamInput"], ngImport: i0 });
|
|
165
|
+
InputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: { seamInputSize: "seamInputSize", id: "id", type: "type", placeholder: "placeholder", required: "required", disabled: "disabled", readonly: "readonly" }, host: { properties: { "class.form-control": "this._isFormControl", "class.form-control-sm": "this._isFormControlSmall", "class.is-invalid": "this._isInvalid", "attr.id": "this._attrId", "attr.placeholder": "this._attrPlaceholder", "attr.aria-describedby": "this.ariaDescribedBy" } }, exportAs: ["seamInput"], usesOnChanges: true, ngImport: i0 });
|
|
163
166
|
__decorate([
|
|
164
167
|
InputBoolean()
|
|
165
168
|
], InputDirective.prototype, "required", void 0);
|
|
@@ -217,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
217
220
|
}], readonly: [{
|
|
218
221
|
type: Input
|
|
219
222
|
}] } });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2Zvcm0tZmllbGQvaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBdUIsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWxHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFJOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7OztBQUUxRCw4R0FBOEc7QUFFOUcsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBUXBCLE1BQU0sT0FBTyxjQUFjO0lBV3pCLElBQTBDLG1CQUFtQjtRQUMzRCxPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUE7SUFDM0QsQ0FBQztJQUNELElBQXFDLFVBQVU7UUFDN0MsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBRUQsSUFBNEIsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQ3pGLElBQXFDLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQSxDQUFDLENBQUM7SUFL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aUI7MkZBOUY5QixjQUFjO2tCQU4xQixTQUFTO21CQUFDO29CQUNULDhFQUE4RTtvQkFDOUUsdURBQXVEO29CQUN2RCxRQUFRLEVBQUUsd0xBQXdMO29CQUNsTSxRQUFRLEVBQUUsV0FBVztpQkFDdEI7OzBCQW1HSSxRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBRVIsUUFBUTs0Q0E1RndCLGNBQWM7c0JBQWhELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNTLG1CQUFtQjtzQkFBNUQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBR0MsVUFBVTtzQkFBOUMsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBSUgsT0FBTztzQkFBbEMsV0FBVzt1QkFBQyxTQUFTO2dCQUNlLGdCQUFnQjtzQkFBcEQsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ08sZUFBZTtzQkFBcEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBRTNCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0YsRUFBRTtzQkFETCxLQUFLO2dCQU9GLElBQUk7c0JBRFAsS0FBSztnQkFtQkcsV0FBVztzQkFBbkIsS0FBSztnQkFNbUIsUUFBUTtzQkFBaEMsS0FBSztnQkFPRixRQUFRO3NCQURYLEtBQUs7Z0JBaUNtQixRQUFRO3NCQUFoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBEaXJlY3RpdmUsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3B0aW9uYWwsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5cbmltcG9ydCB7IE5nU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnXG5cbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgdG9nZ2xlQXR0cmlidXRlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG4vLyBOT1RFOiBQYXJ0aWFsbHkgYmFzZWQgb24gbWF0LWlucHV0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9tYXRlcmlhbDIvYmxvYi9tYXN0ZXIvc3JjL2xpYi9pbnB1dC9pbnB1dC50c1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMFxuXG5ARGlyZWN0aXZlKHtcbiAgLy8gVE9ETzogQ29uc2lkZXIgcmVtb3ZpbmcgcmVzdHJpY3Rpb24gYW5kIGluc3RlYWQgYWRkaW5nIGEgZGV2IHdhcm5pbmcuIEEgZmV3XG4gIC8vIGlucHV0cyBpbiB0aGUgYXBwIG5lZWQgdG8gYmUgY2hhbmdlZCBmb3IgdGhpcyBmaXJzdC5cbiAgc2VsZWN0b3I6ICdpbnB1dFtzZWFtSW5wdXRdLCB0ZXh0YXJlYVtzZWFtSW5wdXRdLCBuZy1zZWxlY3Rbc2VhbUlucHV0XSwgc2VhbS1jaGVja2JveFtzZWFtSW5wdXRdIFtuZ2JSYWRpb0dyb3VwXSwgc2VhbS10ZWwtaW5wdXRbc2VhbUlucHV0XSwgcXVpbGwtZWRpdG9yW3NlYW1JbnB1dF0sIHNlYW0tZ29vZ2xlLW1hcHNbc2VhbUlucHV0XScsXG4gIGV4cG9ydEFzOiAnc2VhbUlucHV0Jyxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBEb0NoZWNrIHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JlcXVpcmVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JlYWRvbmx5OiBCb29sZWFuSW5wdXRcblxuICBwcm90ZWN0ZWQgX3VpZCA9IGBsaWItaW5wdXQtJHtuZXh0VW5pcXVlSWQrK31gXG5cbiAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgYmVpbmcgYWRkZWQgdG8gYWxsIHNlYW1JbnB1dCBlbGVtZW50cyBvciBicmVhayB0aGlzXG4gIC8vIGRpcmVjdGl2ZSB1cC4gU29tZSBlbGVtZW50cyBpbiBvdXIgYXBwIGFscmVhZHkgaGF2ZSB3b3JrZWQgYXJvdW5kIHRoaXNcbiAgLy8gY2xhc3MgYmVpbmcgdGhlcmUsIHNvIHNvbWUgcmVmYWN0b3Jpbmcgd2lsbCBiZSByZXF1aXJlZCBiZWZvcmUgcmVtb3ZhbC5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3JtLWNvbnRyb2wnKSBfaXNGb3JtQ29udHJvbCA9IHRydWVcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3JtLWNvbnRyb2wtc20nKSBnZXQgX2lzRm9ybUNvbnRyb2xTbWFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNGb3JtQ29udHJvbCAmJiB0aGlzLnNlYW1JbnB1dFNpemUgPT09ICdzbSdcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWludmFsaWQnKSBnZXQgX2lzSW52YWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5uZ0NvbnRyb2wuZGlydHkgfHwgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZClcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpIGdldCBfYXR0cklkKCkgeyByZXR1cm4gdGhpcy5faXNOZ1NlbGVjdCgpID8gdW5kZWZpbmVkIDogdGhpcy5pZCB9XG4gIEBIb3N0QmluZGluZygnYXR0ci5wbGFjZWhvbGRlcicpIGdldCBfYXR0clBsYWNlaG9sZGVyKCkgeyByZXR1cm4gdGhpcy5wbGFjZWhvbGRlciB9XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgYXJpYURlc2NyaWJlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKSBzZWFtSW5wdXRTaXplOiAnc20nIHwgJ25vcm1hbCcgPSAnbm9ybWFsJ1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHsgcmV0dXJuIHRoaXMuX2lkIH1cbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7IHRoaXMuX2lkID0gdmFsdWUgfHwgdGhpcy5fdWlkIH1cbiAgcHJvdGVjdGVkIF9pZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKiBJbnB1dCB0eXBlIG9mIHRoZSBlbGVtZW50LiAqL1xuICBASW5wdXQoKVxuICBnZXQgdHlwZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3R5cGUgfVxuICBzZXQgdHlwZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX3R5cGUgPSB2YWx1ZSB8fCAndGV4dCdcbiAgICAvLyB0aGlzLl92YWxpZGF0ZVR5cGUoKVxuXG4gICAgLy8gV2hlbiB1c2luZyBBbmd1bGFyIGlucHV0cywgZGV2ZWxvcGVycyBhcmUgbm8gbG9uZ2VyIGFibGUgdG8gc2V0IHRoZSBwcm9wZXJ0aWVzIG9uIHRoZSBuYXRpdmVcbiAgICAvLyBpbnB1dCBlbGVtZW50LiBUbyBlbnN1cmUgdGhhdCBiaW5kaW5ncyBmb3IgYHR5cGVgIHdvcmssIHdlIG5lZWQgdG8gc3luYyB0aGUgc2V0dGVyXG4gICAgLy8gd2l0aCB0aGUgbmF0aXZlIHByb3BlcnR5LiBUZXh0YXJlYSBlbGVtZW50cyBkb24ndCBzdXBwb3J0IHRoZSB0eXBlIHByb3BlcnR5IG9yIGF0dHJpYnV0ZS5cbiAgICBpZiAoKCF0aGlzLl9pc1RleHRhcmVhKCkgJiYgIXRoaXMuX2lzTmdTZWxlY3QoKSkgLyogJiYgZ2V0U3VwcG9ydGVkSW5wdXRUeXBlcygpLmhhcyh0aGlzLl90eXBlKSAqLykge1xuICAgICAgKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS50eXBlID0gdGhpcy5fdHlwZVxuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX3R5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgPSAndGV4dCdcblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSByZXF1aXJlZCA9IGZhbHNlXG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZFxuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKVxuXG4gICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cbiAgICAvLyBSZXNldCBmcm9tIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgZG9lc24ndCBiZWNvbWUgc3R1Y2suXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2VcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKVxuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX2Rpc2FibGVkID0gZmFsc2VcblxuICBmb2N1c2VkID0gZmFsc2VcblxuICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgLy8gQElucHV0KClcbiAgLy8gZ2V0IHZhbHVlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWU7IH1cbiAgLy8gc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgLy8gICBpZiAodmFsdWUgIT09IHRoaXMudmFsdWUpIHtcbiAgLy8gICAgIHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZSA9IHZhbHVlO1xuICAvLyAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIHJlYWRvbmx5LiAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgcmVhZG9ubHkgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9wYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgLy8gM3JkIHBhcnR5IHN1cHBvcnRcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9uZ1NlbGVjdDogTmdTZWxlY3RDb21wb25lbnRcbiAgKSB7XG4gICAgLy8gRm9yY2Ugc2V0dGVyIHRvIGJlIGNhbGxlZCBpbiBjYXNlIGlkIHdhcyBub3Qgc3BlY2lmaWVkLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWFzc2lnblxuICAgIHRoaXMuaWQgPSB0aGlzLmlkXG5cbiAgICBpZiAoIXRoaXMuX3Nob3VsZEhhdmVGb3JtQ29udHJvbENzc0NsYXNzKCkpIHtcbiAgICAgIHRoaXMuX2lzRm9ybUNvbnRyb2wgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5faXNOZ1NlbGVjdCgpKSB7XG4gICAgICB0aGlzLl9uZ1NlbGVjdC5sYWJlbEZvcklkID0gdGhpcy5pZFxuICAgICAgdGhpcy5fbmdTZWxlY3Quc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmRpc2FibGVkKVxuICAgIH0gZWxzZSB7XG4gICAgICB0b2dnbGVBdHRyaWJ1dGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncmVxdWlyZWQnLCB0aGlzLnJlcXVpcmVkKVxuICAgICAgdG9nZ2xlQXR0cmlidXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgdGhpcy5kaXNhYmxlZClcbiAgICB9XG4gIH1cblxuICAvKiogU2hvdWxkIG9ubHkgYmUgdGV4dHVhbCBpbnB1dHMsIGJ1dCBpbml0aWFsbHkgb3VyIGFwcCBhZGRlZCB0byBhbGwgZm9ybSBjb250cm9scy4gKi9cbiAgcHJvdGVjdGVkIF9zaG91bGRIYXZlRm9ybUNvbnRyb2xDc3NDbGFzcygpIHtcbiAgICByZXR1cm4gIXRoaXMuX2lzU2VhbUNoZWNrYm94KCkgJiZcbiAgICAgICF0aGlzLl9pc1JhZGlvSW5wdXQoKSAmJlxuICAgICAgIXRoaXMuX2lzTmdiUmFkaW9Hcm91cCgpICYmXG4gICAgICAhdGhpcy5faXNUZWxJbnB1dCgpICYmXG4gICAgICAhdGhpcy5faXNRdWlsbEVkaXRvcigpXG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgY29tcG9uZW50IGhvc3QgaXMgYSB0ZXh0YXJlYS4gKi9cbiAgcHJvdGVjdGVkIF9pc1RleHRhcmVhKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RleHRhcmVhJ1xuICB9XG5cbiAgLyoqIERldGVybWluZXMgaWYgdGhlIGNvbXBvbmVudCBob3N0IGlzIGEgbmctc2VsZWN0LiAqL1xuICBwcm90ZWN0ZWQgX2lzTmdTZWxlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnbmctc2VsZWN0J1xuICB9XG5cbiAgLyoqIERldGVybWluZXMgaWYgdGhlIGNvbXBvbmVudCBob3N0IGlzIGEgc2VhbS1jaGVja2JveC4gKi9cbiAgcHJvdGVjdGVkIF9pc1NlYW1DaGVja2JveCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzZWFtLWNoZWNrYm94J1xuICB9XG5cbiAgLyoqIERldGVybWluZXMgaWYgdGhlIGNvbXBvbmVudCBob3N0IGlzIGEgcmFkaW8gaW5wdXQuICovXG4gIHByb3RlY3RlZCBfaXNSYWRpb0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJlxuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ3JhZGlvJ1xuICB9XG5cbiAgcHJvdGVjdGVkIF9pc05nYlJhZGlvR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25nYlJhZGlvR3JvdXAnKSAhPT0gbnVsbFxuICB9XG5cbiAgcHJvdGVjdGVkIF9pc1RlbElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NlYW0tdGVsLWlucHV0J1xuICB9XG5cbiAgcHJvdGVjdGVkIF9pc1F1aWxsRWRpdG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3F1aWxsLWVkaXRvcidcbiAgfVxuXG4gIC8qKiBNYWtlIHN1cmUgdGhlIGlucHV0IGlzIGEgc3VwcG9ydGVkIHR5cGUuICovXG4gIC8vIHByb3RlY3RlZCBfdmFsaWRhdGVUeXBlKCkge1xuICAvLyAgIGlmIChNQVRfSU5QVVRfSU5WQUxJRF9UWVBFUy5pbmRleE9mKHRoaXMuX3R5cGUpID4gLTEpIHtcbiAgLy8gICAgIHRocm93IGdldE1hdElucHV0VW5zdXBwb3J0ZWRUeXBlRXJyb3IodGhpcy5fdHlwZSlcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvKiogRm9jdXNlcyB0aGUgaW5wdXQuICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICAvKiogVW5mb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgYmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpXG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbFxuICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2Zvcm0tZmllbGQvaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBdUIsV0FBVyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQTtBQUU1SCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBSTlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7Ozs7QUFFMUQsOEdBQThHO0FBRTlHLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQTtBQVFwQixNQUFNLE9BQU8sY0FBYztJQVd6QixJQUEwQyxtQkFBbUI7UUFDM0QsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFBO0lBQzNELENBQUM7SUFDRCxJQUFxQyxVQUFVO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckcsQ0FBQztJQUVELElBQTRCLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUN6RixJQUFxQyxnQkFBZ0IsS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUEsQ0FBQyxDQUFDO0lB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QXJCLEtBQUs7Z0JBR0YsRUFBRTtzQkFETCxLQUFLO2dCQU9GLElBQUk7c0JBRFAsS0FBSztnQkFlRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVtQixRQUFRO3NCQUFoQyxLQUFLO2dCQUdGLFFBQVE7c0JBRFgsS0FBSztnQkFpQ21CLFFBQVE7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBTZWxmLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBOZ1NlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0J1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vY29yZSdcbmltcG9ydCB7IHRvZ2dsZUF0dHJpYnV0ZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuLy8gTk9URTogUGFydGlhbGx5IGJhc2VkIG9uIG1hdC1pbnB1dDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvbWF0ZXJpYWwyL2Jsb2IvbWFzdGVyL3NyYy9saWIvaW5wdXQvaW5wdXQudHNcblxubGV0IG5leHRVbmlxdWVJZCA9IDBcblxuQERpcmVjdGl2ZSh7XG4gIC8vIFRPRE86IENvbnNpZGVyIHJlbW92aW5nIHJlc3RyaWN0aW9uIGFuZCBpbnN0ZWFkIGFkZGluZyBhIGRldiB3YXJuaW5nLiBBIGZld1xuICAvLyBpbnB1dHMgaW4gdGhlIGFwcCBuZWVkIHRvIGJlIGNoYW5nZWQgZm9yIHRoaXMgZmlyc3QuXG4gIHNlbGVjdG9yOiAnaW5wdXRbc2VhbUlucHV0XSwgdGV4dGFyZWFbc2VhbUlucHV0XSwgbmctc2VsZWN0W3NlYW1JbnB1dF0sIHNlYW0tY2hlY2tib3hbc2VhbUlucHV0XSBbbmdiUmFkaW9Hcm91cF0sIHNlYW0tdGVsLWlucHV0W3NlYW1JbnB1dF0sIHF1aWxsLWVkaXRvcltzZWFtSW5wdXRdLCBzZWFtLWdvb2dsZS1tYXBzW3NlYW1JbnB1dF0nLFxuICBleHBvcnRBczogJ3NlYW1JbnB1dCcsXG59KVxuZXhwb3J0IGNsYXNzIElucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgRG9DaGVjaywgT25DaGFuZ2VzIHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JlcXVpcmVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JlYWRvbmx5OiBCb29sZWFuSW5wdXRcblxuICBwcm90ZWN0ZWQgX3VpZCA9IGBsaWItaW5wdXQtJHtuZXh0VW5pcXVlSWQrK31gXG5cbiAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgYmVpbmcgYWRkZWQgdG8gYWxsIHNlYW1JbnB1dCBlbGVtZW50cyBvciBicmVhayB0aGlzXG4gIC8vIGRpcmVjdGl2ZSB1cC4gU29tZSBlbGVtZW50cyBpbiBvdXIgYXBwIGFscmVhZHkgaGF2ZSB3b3JrZWQgYXJvdW5kIHRoaXNcbiAgLy8gY2xhc3MgYmVpbmcgdGhlcmUsIHNvIHNvbWUgcmVmYWN0b3Jpbmcgd2lsbCBiZSByZXF1aXJlZCBiZWZvcmUgcmVtb3ZhbC5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3JtLWNvbnRyb2wnKSBfaXNGb3JtQ29udHJvbCA9IHRydWVcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3JtLWNvbnRyb2wtc20nKSBnZXQgX2lzRm9ybUNvbnRyb2xTbWFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNGb3JtQ29udHJvbCAmJiB0aGlzLnNlYW1JbnB1dFNpemUgPT09ICdzbSdcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWludmFsaWQnKSBnZXQgX2lzSW52YWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5uZ0NvbnRyb2wuZGlydHkgfHwgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZClcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpIGdldCBfYXR0cklkKCkgeyByZXR1cm4gdGhpcy5faXNOZ1NlbGVjdCgpID8gdW5kZWZpbmVkIDogdGhpcy5pZCB9XG4gIEBIb3N0QmluZGluZygnYXR0ci5wbGFjZWhvbGRlcicpIGdldCBfYXR0clBsYWNlaG9sZGVyKCkgeyByZXR1cm4gdGhpcy5wbGFjZWhvbGRlciB9XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgYXJpYURlc2NyaWJlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKSBzZWFtSW5wdXRTaXplOiAnc20nIHwgJ25vcm1hbCcgPSAnbm9ybWFsJ1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHsgcmV0dXJuIHRoaXMuX2lkIH1cbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7IHRoaXMuX2lkID0gdmFsdWUgfHwgdGhpcy5fdWlkIH1cbiAgcHJvdGVjdGVkIF9pZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKiBJbnB1dCB0eXBlIG9mIHRoZSBlbGVtZW50LiAqL1xuICBASW5wdXQoKVxuICBnZXQgdHlwZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3R5cGUgfVxuICBzZXQgdHlwZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX3R5cGUgPSB2YWx1ZSB8fCAndGV4dCdcbiAgICAvLyB0aGlzLl92YWxpZGF0ZVR5cGUoKVxuXG4gICAgLy8gV2hlbiB1c2luZyBBbmd1bGFyIGlucHV0cywgZGV2ZWxvcGVycyBhcmUgbm8gbG9uZ2VyIGFibGUgdG8gc2V0IHRoZSBwcm9wZXJ0aWVzIG9uIHRoZSBuYXRpdmVcbiAgICAvLyBpbnB1dCBlbGVtZW50LiBUbyBlbnN1cmUgdGhhdCBiaW5kaW5ncyBmb3IgYHR5cGVgIHdvcmssIHdlIG5lZWQgdG8gc3luYyB0aGUgc2V0dGVyXG4gICAgLy8gd2l0aCB0aGUgbmF0aXZlIHByb3BlcnR5LiBUZXh0YXJlYSBlbGVtZW50cyBkb24ndCBzdXBwb3J0IHRoZSB0eXBlIHByb3BlcnR5IG9yIGF0dHJpYnV0ZS5cbiAgICBpZiAoKCF0aGlzLl9pc1RleHRhcmVhKCkgJiYgIXRoaXMuX2lzTmdTZWxlY3QoKSkgLyogJiYgZ2V0U3VwcG9ydGVkSW5wdXRUeXBlcygpLmhhcyh0aGlzLl90eXBlKSAqLykge1xuICAgICAgKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS50eXBlID0gdGhpcy5fdHlwZVxuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX3R5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgPSAndGV4dCdcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSByZXF1aXJlZCA9IGZhbHNlXG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZFxuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKVxuXG4gICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cbiAgICAvLyBSZXNldCBmcm9tIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgZG9lc24ndCBiZWNvbWUgc3R1Y2suXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2VcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKVxuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX2Rpc2FibGVkID0gZmFsc2VcblxuICBmb2N1c2VkID0gZmFsc2VcblxuICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgLy8gQElucHV0KClcbiAgLy8gZ2V0IHZhbHVlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWU7IH1cbiAgLy8gc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgLy8gICBpZiAodmFsdWUgIT09IHRoaXMudmFsdWUpIHtcbiAgLy8gICAgIHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZSA9IHZhbHVlO1xuICAvLyAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIHJlYWRvbmx5LiAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgcmVhZG9ubHkgPSBmYWxzZVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlcXVpcmVkQ2hhbmdlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKVxuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNhYmxlZENoYW5nZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KClcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZG9ubHlDaGFuZ2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpXG5cbiAgcHVibGljIHJlYWRvbmx5IHJlcXVpcmVkQ2hhbmdlID0gdGhpcy5fcmVxdWlyZWRDaGFuZ2UuYXNPYnNlcnZhYmxlKClcbiAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVkQ2hhbmdlID0gdGhpcy5fZGlzYWJsZWRDaGFuZ2UuYXNPYnNlcnZhYmxlKClcbiAgcHVibGljIHJlYWRvbmx5IHJlYWRvbmx5Q2hhbmdlID0gdGhpcy5fcmVhZG9ubHlDaGFuZ2UuYXNPYnNlcnZhYmxlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MU2VsZWN0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAvLyAzcmQgcGFydHkgc3VwcG9ydFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX25nU2VsZWN0OiBOZ1NlbGVjdENvbXBvbmVudFxuICApIHtcbiAgICAvLyBGb3JjZSBzZXR0ZXIgdG8gYmUgY2FsbGVkIGluIGNhc2UgaWQgd2FzIG5vdCBzcGVjaWZpZWQuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtYXNzaWduXG4gICAgdGhpcy5pZCA9IHRoaXMuaWRcblxuICAgIGlmICghdGhpcy5fc2hvdWxkSGF2ZUZvcm1Db250cm9sQ3NzQ2xhc3MoKSkge1xuICAgICAgdGhpcy5faXNGb3JtQ29udHJvbCA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLl9yZXF1aXJlZENoYW5nZS5uZXh0KHRoaXMucmVxdWlyZWQpXG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZENoYW5nZS5uZXh0KHRoaXMuZGlzYWJsZWQpXG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnJlYWRvbmx5KSB7XG4gICAgICB0aGlzLl9yZWFkb25seUNoYW5nZS5uZXh0KHRoaXMucmVhZG9ubHkpXG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLl9pc05nU2VsZWN0KCkpIHtcbiAgICAgIHRoaXMuX25nU2VsZWN0LmxhYmVsRm9ySWQgPSB0aGlzLmlkXG4gICAgICB0aGlzLl9uZ1NlbGVjdC5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGlzYWJsZWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRvZ2dsZUF0dHJpYnV0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdyZXF1aXJlZCcsIHRoaXMucmVxdWlyZWQpXG4gICAgICB0b2dnbGVBdHRyaWJ1dGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCB0aGlzLmRpc2FibGVkKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBTaG91bGQgb25seSBiZSB0ZXh0dWFsIGlucHV0cywgYnV0IGluaXRpYWxseSBvdXIgYXBwIGFkZGVkIHRvIGFsbCBmb3JtIGNvbnRyb2xzLiAqL1xuICBwcm90ZWN0ZWQgX3Nob3VsZEhhdmVGb3JtQ29udHJvbENzc0NsYXNzKCkge1xuICAgIHJldHVybiAhdGhpcy5faXNTZWFtQ2hlY2tib3goKSAmJlxuICAgICAgIXRoaXMuX2lzUmFkaW9JbnB1dCgpICYmXG4gICAgICAhdGhpcy5faXNOZ2JSYWRpb0dyb3VwKCkgJiZcbiAgICAgICF0aGlzLl9pc1RlbElucHV0KCkgJiZcbiAgICAgICF0aGlzLl9pc1F1aWxsRWRpdG9yKClcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgaG9zdCBpcyBhIHRleHRhcmVhLiAqL1xuICBwcm90ZWN0ZWQgX2lzVGV4dGFyZWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndGV4dGFyZWEnXG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgY29tcG9uZW50IGhvc3QgaXMgYSBuZy1zZWxlY3QuICovXG4gIHByb3RlY3RlZCBfaXNOZ1NlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICduZy1zZWxlY3QnXG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgY29tcG9uZW50IGhvc3QgaXMgYSBzZWFtLWNoZWNrYm94LiAqL1xuICBwcm90ZWN0ZWQgX2lzU2VhbUNoZWNrYm94KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NlYW0tY2hlY2tib3gnXG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgY29tcG9uZW50IGhvc3QgaXMgYSByYWRpbyBpbnB1dC4gKi9cbiAgcHJvdGVjdGVkIF9pc1JhZGlvSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudHlwZS50b0xvd2VyQ2FzZSgpID09PSAncmFkaW8nXG4gIH1cblxuICBwcm90ZWN0ZWQgX2lzTmdiUmFkaW9Hcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmdiUmFkaW9Hcm91cCcpICE9PSBudWxsXG4gIH1cblxuICBwcm90ZWN0ZWQgX2lzVGVsSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc2VhbS10ZWwtaW5wdXQnXG4gIH1cblxuICBwcm90ZWN0ZWQgX2lzUXVpbGxFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAncXVpbGwtZWRpdG9yJ1xuICB9XG5cbiAgLyoqIEZvY3VzZXMgdGhlIGlucHV0LiAqL1xuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxuICB9XG5cbiAgLyoqIFVuZm9jdXNlcyB0aGUgaW5wdXQuICovXG4gIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKVxuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2xcbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|