ngx-tethys 16.1.21 → 16.1.22

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/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [16.1.22](https://github.com/atinc/ngx-tethys/compare/16.1.21...16.1.22) (2023-12-14)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **select:** remove focus() when close panel #INFR-10914 ([#2968](https://github.com/atinc/ngx-tethys/issues/2968)) ([c3d17aa](https://github.com/atinc/ngx-tethys/commit/c3d17aa88a26b8c8bfeb52c9bb632f75d05a4f22)), closes [#INFR-10914](https://github.com/atinc/ngx-tethys/issues/INFR-10914)
11
+
12
+
13
+ ### Features
14
+
15
+ * **property:** property-item add thyEditingChange #INFR-10910 ([#2969](https://github.com/atinc/ngx-tethys/issues/2969)) ([e2631cc](https://github.com/atinc/ngx-tethys/commit/e2631cc7a23d2550f7aa9f37ade0f334657709ff)), closes [#INFR-10910](https://github.com/atinc/ngx-tethys/issues/INFR-10910)
16
+
17
+
18
+
5
19
  ## [16.1.21](https://github.com/atinc/ngx-tethys/compare/16.1.20...16.1.21) (2023-12-11)
6
20
 
7
21
 
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { InputNumber } from 'ngx-tethys/core';
3
- import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
4
3
  import { BehaviorSubject } from 'rxjs';
4
+ import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
5
5
  import * as i0 from "@angular/core";
6
6
  /**
7
7
  * 属性列表组件
@@ -36,7 +36,7 @@ export class ThyPropertiesComponent {
36
36
  }
37
37
  ngOnInit() { }
38
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: ThyPropertiesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ThyPropertiesComponent, isStandalone: true, selector: "thy-properties", inputs: { thyLayout: "thyLayout", thyColumn: "thyColumn", thyEditTrigger: "thyEditTrigger" }, host: { properties: { "class.thy-properties-vertical": "layout === \"vertical\"", "class.thy-properties-horizontal": "layout === \"horizontal\"", "class.thy-properties-edit-trigger-hover": "thyEditTrigger === \"hover\"", "style.grid-template-columns": "this.gridTemplateColumns" }, classAttribute: "thy-properties" }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ThyPropertiesComponent, isStandalone: true, selector: "thy-properties", inputs: { thyLayout: "thyLayout", thyColumn: "thyColumn", thyEditTrigger: "thyEditTrigger" }, host: { properties: { "class.thy-properties-vertical": "layout === \"vertical\"", "class.thy-properties-horizontal": "layout === \"horizontal\"", "class.thy-properties-edit-trigger-hover": "thyEditTrigger === \"hover\"", "class.thy-properties-edit-trigger-click": "thyEditTrigger === \"click\"", "style.grid-template-columns": "this.gridTemplateColumns" }, classAttribute: "thy-properties" }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40
40
  }
41
41
  __decorate([
42
42
  InputNumber(),
@@ -48,7 +48,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
48
48
  class: 'thy-properties',
49
49
  '[class.thy-properties-vertical]': 'layout === "vertical"',
50
50
  '[class.thy-properties-horizontal]': 'layout === "horizontal"',
51
- '[class.thy-properties-edit-trigger-hover]': 'thyEditTrigger === "hover"'
51
+ '[class.thy-properties-edit-trigger-hover]': 'thyEditTrigger === "hover"',
52
+ '[class.thy-properties-edit-trigger-click]': 'thyEditTrigger === "click"'
52
53
  }, standalone: true, template: "<ng-content></ng-content>\n" }]
53
54
  }], ctorParameters: function () { return []; }, propDecorators: { thyLayout: [{
54
55
  type: Input
@@ -60,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
60
61
  type: HostBinding,
61
62
  args: ['style.grid-template-columns']
62
63
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydGllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUl2Qzs7O0dBR0c7QUFhSCxNQUFNLE9BQU8sc0JBQXNCO0lBSy9COzs7O09BSUc7SUFDSCxJQUFhLFNBQVMsQ0FBQyxNQUEyQjtRQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBY0QsSUFDSSxtQkFBbUI7UUFDbkIsT0FBTyxVQUFVLElBQUksQ0FBQyxTQUFTLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7UUEvQkEsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFzQixZQUFZLENBQUMsQ0FBQztRQUVqRSxXQUFNLEdBQXdCLFlBQVksQ0FBQztRQVkzQzs7O1dBR0c7UUFDcUIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUU5Qzs7O1dBR0c7UUFDTSxtQkFBYyxHQUFzQixPQUFPLENBQUM7SUFPdEMsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQzs4R0FsQ0osc0JBQXNCO2tHQUF0QixzQkFBc0Isc2VDdEJuQyw2QkFDQTs7QUR3Q0k7SUFBVSxXQUFXLEVBQUU7O3lEQUF1QjsyRkFuQnJDLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDSSxnQkFBZ0IsbUJBRVQsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsZ0JBQWdCO3dCQUN2QixpQ0FBaUMsRUFBRSx1QkFBdUI7d0JBQzFELG1DQUFtQyxFQUFFLHlCQUF5Qjt3QkFDOUQsMkNBQTJDLEVBQUUsNEJBQTRCO3FCQUM1RSxjQUNXLElBQUk7MEVBWUgsU0FBUztzQkFBckIsS0FBSztnQkFTa0IsU0FBUztzQkFBaEMsS0FBSztnQkFNRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdGLG1CQUFtQjtzQkFEdEIsV0FBVzt1QkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dE51bWJlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIFRoeVByb3BlcnRpZXNMYXlvdXQgPSAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnO1xuXG4vKipcbiAqIOWxnuaAp+WIl+ihqOe7hOS7tlxuICogQG5hbWUgdGh5LXByb3BlcnRpZXNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktcHJvcGVydGllcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktcHJvcGVydGllcycsXG4gICAgICAgICdbY2xhc3MudGh5LXByb3BlcnRpZXMtdmVydGljYWxdJzogJ2xheW91dCA9PT0gXCJ2ZXJ0aWNhbFwiJyxcbiAgICAgICAgJ1tjbGFzcy50aHktcHJvcGVydGllcy1ob3Jpem9udGFsXSc6ICdsYXlvdXQgPT09IFwiaG9yaXpvbnRhbFwiJyxcbiAgICAgICAgJ1tjbGFzcy50aHktcHJvcGVydGllcy1lZGl0LXRyaWdnZXItaG92ZXJdJzogJ3RoeUVkaXRUcmlnZ2VyID09PSBcImhvdmVyXCInXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeVByb3BlcnRpZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGxheW91dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRoeVByb3BlcnRpZXNMYXlvdXQ+KCdob3Jpem9udGFsJyk7XG5cbiAgICBsYXlvdXQ6IFRoeVByb3BlcnRpZXNMYXlvdXQgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICAvKipcbiAgICAgKiDlsZXnpLrluIPlsYBcbiAgICAgKiBAdHlwZSBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIlxuICAgICAqIEBkZWZhdWx0IGhvcml6b250YWxcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5TGF5b3V0KGxheW91dDogVGh5UHJvcGVydGllc0xheW91dCkge1xuICAgICAgICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgICAgICAgdGhpcy5sYXlvdXQkLm5leHQobGF5b3V0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7kuIDooYznmoTlj6/ku6UgcHJvcGVydHktaXRlbSDnmoTmlbDph49cbiAgICAgKiBAdHlwZSAgbnVtYmVyXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgdGh5Q29sdW1uOiBudW1iZXIgPSAxO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u57yW6L6R54q25oCB6Kem5Y+R5pa55rOVXG4gICAgICogQHR5cGUgJ2hvdmVyJyB8ICdjbGljaydcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlFZGl0VHJpZ2dlcjogJ2hvdmVyJyB8ICdjbGljaycgPSAnaG92ZXInO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKVxuICAgIGdldCBncmlkVGVtcGxhdGVDb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gYHJlcGVhdCgke3RoaXMudGh5Q29sdW1ufSwgMWZyKWA7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7fVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydGllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQUkvRjs7O0dBR0c7QUFjSCxNQUFNLE9BQU8sc0JBQXNCO0lBSy9COzs7O09BSUc7SUFDSCxJQUFhLFNBQVMsQ0FBQyxNQUEyQjtRQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBY0QsSUFDSSxtQkFBbUI7UUFDbkIsT0FBTyxVQUFVLElBQUksQ0FBQyxTQUFTLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7UUEvQkEsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFzQixZQUFZLENBQUMsQ0FBQztRQUVqRSxXQUFNLEdBQXdCLFlBQVksQ0FBQztRQVkzQzs7O1dBR0c7UUFDcUIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUU5Qzs7O1dBR0c7UUFDTSxtQkFBYyxHQUFzQixPQUFPLENBQUM7SUFPdEMsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQzs4R0FsQ0osc0JBQXNCO2tHQUF0QixzQkFBc0IsaWpCQ3hCbkMsNkJBQ0E7O0FEMENJO0lBQVUsV0FBVyxFQUFFOzt5REFBdUI7MkZBbkJyQyxzQkFBc0I7a0JBYmxDLFNBQVM7K0JBQ0ksZ0JBQWdCLG1CQUVULHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLGdCQUFnQjt3QkFDdkIsaUNBQWlDLEVBQUUsdUJBQXVCO3dCQUMxRCxtQ0FBbUMsRUFBRSx5QkFBeUI7d0JBQzlELDJDQUEyQyxFQUFFLDRCQUE0Qjt3QkFDekUsMkNBQTJDLEVBQUUsNEJBQTRCO3FCQUM1RSxjQUNXLElBQUk7MEVBWUgsU0FBUztzQkFBckIsS0FBSztnQkFTa0IsU0FBUztzQkFBaEMsS0FBSztnQkFNRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdGLG1CQUFtQjtzQkFEdEIsV0FBVzt1QkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dE51bWJlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgVGh5UHJvcGVydGllc0xheW91dCA9ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc7XG5cbi8qKlxuICog5bGe5oCn5YiX6KGo57uE5Lu2XG4gKiBAbmFtZSB0aHktcHJvcGVydGllc1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1wcm9wZXJ0aWVzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS1wcm9wZXJ0aWVzJyxcbiAgICAgICAgJ1tjbGFzcy50aHktcHJvcGVydGllcy12ZXJ0aWNhbF0nOiAnbGF5b3V0ID09PSBcInZlcnRpY2FsXCInLFxuICAgICAgICAnW2NsYXNzLnRoeS1wcm9wZXJ0aWVzLWhvcml6b250YWxdJzogJ2xheW91dCA9PT0gXCJob3Jpem9udGFsXCInLFxuICAgICAgICAnW2NsYXNzLnRoeS1wcm9wZXJ0aWVzLWVkaXQtdHJpZ2dlci1ob3Zlcl0nOiAndGh5RWRpdFRyaWdnZXIgPT09IFwiaG92ZXJcIicsXG4gICAgICAgICdbY2xhc3MudGh5LXByb3BlcnRpZXMtZWRpdC10cmlnZ2VyLWNsaWNrXSc6ICd0aHlFZGl0VHJpZ2dlciA9PT0gXCJjbGlja1wiJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUaHlQcm9wZXJ0aWVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBsYXlvdXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaHlQcm9wZXJ0aWVzTGF5b3V0PignaG9yaXpvbnRhbCcpO1xuXG4gICAgbGF5b3V0OiBUaHlQcm9wZXJ0aWVzTGF5b3V0ID0gJ2hvcml6b250YWwnO1xuXG4gICAgLyoqXG4gICAgICog5bGV56S65biD5bGAXG4gICAgICogQHR5cGUgXCJob3Jpem9udGFsXCIgfCBcInZlcnRpY2FsXCJcbiAgICAgKiBAZGVmYXVsdCBob3Jpem9udGFsXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHRoeUxheW91dChsYXlvdXQ6IFRoeVByb3BlcnRpZXNMYXlvdXQpIHtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIHRoaXMubGF5b3V0JC5uZXh0KGxheW91dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5LiA6KGM55qE5Y+v5LulIHByb3BlcnR5LWl0ZW0g55qE5pWw6YePXG4gICAgICogQHR5cGUgIG51bWJlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIHRoeUNvbHVtbjogbnVtYmVyID0gMTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9rue8lui+keeKtuaAgeinpuWPkeaWueazlVxuICAgICAqIEB0eXBlICdob3ZlcicgfCAnY2xpY2snXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RWRpdFRyaWdnZXI6ICdob3ZlcicgfCAnY2xpY2snID0gJ2hvdmVyJztcblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJylcbiAgICBnZXQgZ3JpZFRlbXBsYXRlQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIGByZXBlYXQoJHt0aGlzLnRoeUNvbHVtbn0sIDFmcilgO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIG5nT25Jbml0KCkge31cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
@@ -1,12 +1,12 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { InputBoolean, InputNumber, ThyClickDispatcher } from 'ngx-tethys/core';
3
- import { combineLatest, fromEvent, Subject } from 'rxjs';
3
+ import { ThyFlexibleTextComponent } from 'ngx-tethys/flexible-text';
4
+ import { combineLatest, fromEvent, Subject, timer } from 'rxjs';
4
5
  import { delay, filter, take, takeUntil } from 'rxjs/operators';
5
6
  import { OverlayOutsideClickDispatcher } from '@angular/cdk/overlay';
6
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, HostBinding, Input, NgZone, TemplateRef, ViewChild } from '@angular/core';
7
- import { ThyPropertiesComponent } from './properties.component';
8
- import { ThyFlexibleTextComponent } from 'ngx-tethys/flexible-text';
9
7
  import { NgIf, NgTemplateOutlet } from '@angular/common';
8
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, TemplateRef, ViewChild } from '@angular/core';
9
+ import { ThyPropertiesComponent } from './properties.component';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "ngx-tethys/core";
12
12
  import * as i2 from "@angular/cdk/overlay";
@@ -35,6 +35,7 @@ export class ThyPropertyItemComponent {
35
35
  * @type 'hover' | 'always'
36
36
  */
37
37
  this.thyOperationTrigger = 'always';
38
+ this.thyEditingChange = new EventEmitter();
38
39
  this.changes$ = new Subject();
39
40
  this.destroy$ = new Subject();
40
41
  this.eventDestroy$ = new Subject();
@@ -65,6 +66,9 @@ export class ThyPropertyItemComponent {
65
66
  }
66
67
  setEditing(editing) {
67
68
  this.ngZone.run(() => {
69
+ if (!!this.editing !== !!editing) {
70
+ this.thyEditingChange.emit(editing);
71
+ }
68
72
  this.editing = editing;
69
73
  this.cdr.markForCheck();
70
74
  });
@@ -115,12 +119,14 @@ export class ThyPropertyItemComponent {
115
119
  });
116
120
  }
117
121
  bindEditorBlurEvent(editorElement) {
118
- if (this.hasOverlay()) {
119
- this.subscribeOverlayDetach();
120
- }
121
- else {
122
- this.subscribeDocumentClick(editorElement);
123
- }
122
+ timer(0).subscribe(() => {
123
+ if (this.hasOverlay()) {
124
+ this.subscribeOverlayDetach();
125
+ }
126
+ else {
127
+ this.subscribeDocumentClick(editorElement);
128
+ }
129
+ });
124
130
  }
125
131
  ngOnDestroy() {
126
132
  this.destroy$.next();
@@ -129,7 +135,7 @@ export class ThyPropertyItemComponent {
129
135
  this.eventDestroy$.complete();
130
136
  }
131
137
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: ThyPropertyItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ThyClickDispatcher }, { token: i0.NgZone }, { token: i2.OverlayOutsideClickDispatcher }, { token: i3.ThyPropertiesComponent }], target: i0.ɵɵFactoryTarget.Component }); }
132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ThyPropertyItemComponent, isStandalone: true, selector: "thy-property-item", inputs: { thyLabelText: "thyLabelText", thyEditable: "thyEditable", thySpan: "thySpan", thyOperationTrigger: "thyOperationTrigger" }, host: { properties: { "class.thy-property-item-operational": "!!operation", "class.thy-property-item-operational-hover": "thyOperationTrigger === 'hover'", "style.grid-column": "this.gridColumn" }, classAttribute: "thy-property-item" }, queries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, static: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true, static: true }, { propertyName: "operation", first: true, predicate: ["operation"], descendants: true, static: true }], viewQueries: [{ propertyName: "content", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "itemContent", first: true, predicate: ["item"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n<div class=\"thy-property-item-label\">\n <span *ngIf=\"thyLabelText\" thyFlexibleText [thyTooltipContent]=\"thyLabelText\">{{ thyLabelText }}</span>\n <ng-container *ngIf=\"label\">\n <span> <ng-template [ngTemplateOutlet]=\"label\"></ng-template></span>\n </ng-container>\n</div>\n<div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable\"\n [class.thy-property-item-content-editing]=\"editing\">\n <div class=\"thy-property-item-content-text\">\n <ng-template *ngIf=\"content\" [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n <div class=\"thy-property-item-content-editor\" *ngIf=\"thyEditable\">\n <ng-template *ngIf=\"editor\" [ngTemplateOutlet]=\"editor\"></ng-template>\n </div>\n <div class=\"thy-property-item-operation\" *ngIf=\"operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyFlexibleTextComponent, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
138
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ThyPropertyItemComponent, isStandalone: true, selector: "thy-property-item", inputs: { thyLabelText: "thyLabelText", thyEditable: "thyEditable", thySpan: "thySpan", thyOperationTrigger: "thyOperationTrigger" }, outputs: { thyEditingChange: "thyEditingChange" }, host: { properties: { "class.thy-property-item-operational": "!!operation", "class.thy-property-item-operational-hover": "thyOperationTrigger === 'hover'", "style.grid-column": "this.gridColumn" }, classAttribute: "thy-property-item" }, queries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, static: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true, static: true }, { propertyName: "operation", first: true, predicate: ["operation"], descendants: true, static: true }], viewQueries: [{ propertyName: "content", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "itemContent", first: true, predicate: ["item"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n<div class=\"thy-property-item-label\">\n <span *ngIf=\"thyLabelText\" thyFlexibleText [thyTooltipContent]=\"thyLabelText\">{{ thyLabelText }}</span>\n <ng-container *ngIf=\"label\">\n <span> <ng-template [ngTemplateOutlet]=\"label\"></ng-template></span>\n </ng-container>\n</div>\n<div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable\"\n [class.thy-property-item-content-editing]=\"editing\">\n <div class=\"thy-property-item-content-text\">\n <ng-template *ngIf=\"content\" [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n <div class=\"thy-property-item-content-editor\" *ngIf=\"thyEditable\">\n <ng-template *ngIf=\"editor\" [ngTemplateOutlet]=\"editor\"></ng-template>\n </div>\n <div class=\"thy-property-item-operation\" *ngIf=\"operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyFlexibleTextComponent, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
133
139
  }
134
140
  __decorate([
135
141
  InputBoolean(),
@@ -154,6 +160,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
154
160
  type: Input
155
161
  }], thyOperationTrigger: [{
156
162
  type: Input
163
+ }], thyEditingChange: [{
164
+ type: Output
157
165
  }], label: [{
158
166
  type: ContentChild,
159
167
  args: ['label', { static: true }]
@@ -173,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
173
181
  type: HostBinding,
174
182
  args: ['style.grid-column']
175
183
  }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydHktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydHktaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsNkJBQTZCLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRixPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFLTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFJekQ7OztHQUdHO0FBYUgsTUFBTSxPQUFPLHdCQUF3QjtJQW1FakMsSUFDSSxVQUFVO1FBQ1YsT0FBTyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDbkUsQ0FBQztJ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SztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTW1DLEtBQUs7c0JBQTdDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFNRyxNQUFNO3NCQUEvQyxZQUFZO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBTUssU0FBUztzQkFBckQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUtLLE9BQU87c0JBQXRELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUtULFdBQVc7c0JBQS9DLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFlL0IsVUFBVTtzQkFEYixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0Qm9vbGVhbiwgSW5wdXROdW1iZXIsIFRoeUNsaWNrRGlzcGF0Y2hlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIGZpbHRlciwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQcm9wZXJ0aWVzQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlGbGV4aWJsZVRleHRDb21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2ZsZXhpYmxlLXRleHQnO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCB0eXBlIFRoeVByb3BlcnR5SXRlbU9wZXJhdGlvblRyaWdnZXIgPSAnaG92ZXInIHwgJ2Fsd2F5cyc7XG5cbi8qKlxuICog5bGe5oCn57uE5Lu2XG4gKiBAbmFtZSB0aHktcHJvcGVydHktaXRlbVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1wcm9wZXJ0eS1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydHktaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS1wcm9wZXJ0eS1pdGVtJyxcbiAgICAgICAgJ1tjbGFzcy50aHktcHJvcGVydHktaXRlbS1vcGVyYXRpb25hbF0nOiAnISFvcGVyYXRpb24nLFxuICAgICAgICAnW2NsYXNzLnRoeS1wcm9wZXJ0eS1pdGVtLW9wZXJhdGlvbmFsLWhvdmVyXSc6IFwidGh5T3BlcmF0aW9uVHJpZ2dlciA9PT0gJ2hvdmVyJ1wiXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBUaHlGbGV4aWJsZVRleHRDb21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFRoeVByb3BlcnR5SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIOWxnuaAp+WQjeensFxuICAgICAqIEB0eXBlIHN0aW5nXG4gICAgICogQGRlZmF1bHQgdGh5TGFiZWxUZXh0XG4gICAgICovXG4gICAgQElucHV0KCkgdGh5TGFiZWxUZXh0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7lsZ7mgKfmmK/lkKbmmK/lj6/nvJbovpHnmoRcbiAgICAgKiBAdHlwZSBzdGluZ1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUVkaXRhYmxlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u6Leo5YiX55qE5pWw6YePXG4gICAgICogQHR5cGUgbnVtYmVyXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgdGh5U3BhbjogbnVtYmVyID0gMTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWxnuaAp+aTjeS9nOeOsOWunuinpuWPkeaWueW8j++8jOm7mOiupCBhbHdheXMg5LiA55u05pi+56S6XG4gICAgICogQHR5cGUgJ2hvdmVyJyB8ICdhbHdheXMnXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5T3BlcmF0aW9uVHJpZ2dlcjogVGh5UHJvcGVydHlJdGVtT3BlcmF0aW9uVHJpZ2dlciA9ICdhbHdheXMnO1xuXG4gICAgLyoqXG4gICAgICog5bGe5oCn5ZCN56ew6Ieq5a6a5LmJ5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdsYWJlbCcsIHsgc3RhdGljOiB0cnVlIH0pIGxhYmVsITogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiDlsZ7mgKflhoXlrrnnvJbovpHmqKHmnb/vvIzlj6rmnInlnKggdGh5RWRpdGFibGUg5Li6IHRydWUg5pe255Sf5pWIXG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlZGl0b3InLCB7IHN0YXRpYzogdHJ1ZSB9KSBlZGl0b3IhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAgIC8qKlxuICAgICAqIOaTjeS9nOWMuuaooeadv1xuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnb3BlcmF0aW9uJywgeyBzdGF0aWM6IHRydWUgfSkgb3BlcmF0aW9uITogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnRUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnaXRlbScsIHsgc3RhdGljOiB0cnVlIH0pIGl0ZW1Db250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIGVkaXRpbmc6IGJvb2xlYW47XG5cbiAgICBjaGFuZ2VzJCA9IG5ldyBTdWJqZWN0PFNpbXBsZUNoYW5nZXM+KCk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByaXZhdGUgZXZlbnREZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcml2YXRlIG9yaWdpbk92ZXJsYXlzOiBPdmVybGF5UmVmW10gPSBbXTtcblxuICAgIHByaXZhdGUgY2xpY2tFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5ncmlkLWNvbHVtbicpXG4gICAgZ2V0IGdyaWRDb2x1bW4oKSB7XG4gICAgICAgIHJldHVybiBgc3BhbiAke01hdGgubWluKHRoaXMudGh5U3BhbiwgdGhpcy5wYXJlbnQudGh5Q29sdW1uKX1gO1xuICAgIH1cblxuICAgIGlzVmVydGljYWwgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgY2xpY2tEaXNwYXRjaGVyOiBUaHlDbGlja0Rpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXI6IE92ZXJsYXlPdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIHBhcmVudDogVGh5UHJvcGVydGllc0NvbXBvbmVudFxuICAgICkge1xuICAgICAgICB0aGlzLm9yaWdpbk92ZXJsYXlzID0gWy4uLnRoaXMub3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIuX2F0dGFjaGVkT3ZlcmxheXNdIGFzIE92ZXJsYXlSZWZbXTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVDbGljaygpO1xuICAgICAgICB0aGlzLnBhcmVudC5sYXlvdXQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUobGF5b3V0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNWZXJ0aWNhbCA9IGxheW91dCA9PT0gJ3ZlcnRpY2FsJztcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRoeUVkaXRhYmxlICYmIGNoYW5nZXMudGh5RWRpdGFibGUuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZUNsaWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldEVkaXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5ldmVudERlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuZXZlbnREZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jbGlja0V2ZW50U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGlja0V2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGlja0V2ZW50U3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEVkaXRpbmcoZWRpdGluZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gZWRpdGluZztcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIHNldEVkaXRpbmcoZWRpdGluZzogYm9vbGVhbilcbiAgICAgKi9cbiAgICBzZXRLZWVwRWRpdGluZyhrZWVwOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0RWRpdGluZyhrZWVwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc092ZXJsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlPdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLl9hdHRhY2hlZE92ZXJsYXlzLmxlbmd0aCA+IHRoaXMub3JpZ2luT3ZlcmxheXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeUVkaXRhYmxlID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh0aGlzLml0ZW1Db250ZW50Lm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmV2ZW50RGVzdHJveSQpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RWRpdGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZEVkaXRvckJsdXJFdmVudCh0aGlzLml0ZW1Db250ZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVPdmVybGF5RGV0YWNoKCkge1xuICAgICAgICBjb25zdCBvcGVuZWRPdmVybGF5cyA9IHRoaXMub3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIuX2F0dGFjaGVkT3ZlcmxheXMuc2xpY2UodGhpcy5vcmlnaW5PdmVybGF5cy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBvdmVybGF5c0RldGFjaG1lbnRzJCA9IG9wZW5lZE92ZXJsYXlzLm1hcChvdmVybGF5ID0+IG92ZXJsYXkuZGV0YWNobWVudHMoKSk7XG4gICAgICAgIGlmIChvdmVybGF5c0RldGFjaG1lbnRzJC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3Qob3ZlcmxheXNEZXRhY2htZW50cyQpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVsYXkoNTApLCB0YWtlKDEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RWRpdGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZURvY3VtZW50Q2xpY2soZWRpdG9yRWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jbGlja0Rpc3BhdGNoZXJcbiAgICAgICAgICAgIC5jbGlja2VkKDApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWVkaXRvckVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRFZGl0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZEVkaXRvckJsdXJFdmVudChlZGl0b3JFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBpZiAodGhpcy5oYXNPdmVybGF5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlT3ZlcmxheURldGFjaCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVEb2N1bWVudENsaWNrKGVkaXRvckVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgdGhpcy5ldmVudERlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5ldmVudERlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNjb250ZW50VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0tbGFiZWxcIj5cbiAgPHNwYW4gKm5nSWY9XCJ0aHlMYWJlbFRleHRcIiB0aHlGbGV4aWJsZVRleHQgW3RoeVRvb2x0aXBDb250ZW50XT1cInRoeUxhYmVsVGV4dFwiPnt7IHRoeUxhYmVsVGV4dCB9fTwvc3Bhbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+XG4gICAgPHNwYW4+IDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGRpdlxuICAjaXRlbVxuICBjbGFzcz1cInRoeS1wcm9wZXJ0eS1pdGVtLWNvbnRlbnRcIlxuICBbY2xhc3MudGh5LXByb3BlcnR5LWl0ZW0tY29udGVudC1lZGl0YWJsZV09XCJ0aHlFZGl0YWJsZVwiXG4gIFtjbGFzcy50aHktcHJvcGVydHktaXRlbS1jb250ZW50LWVkaXRpbmddPVwiZWRpdGluZ1wiPlxuICA8ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0tY29udGVudC10ZXh0XCI+XG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRoeS1wcm9wZXJ0eS1pdGVtLWNvbnRlbnQtZWRpdG9yXCIgKm5nSWY9XCJ0aHlFZGl0YWJsZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImVkaXRvclwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkaXRvclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0tb3BlcmF0aW9uXCIgKm5nSWY9XCJvcGVyYXRpb25cIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwib3BlcmF0aW9uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydHktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydHktaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLDZCQUE2QixFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFJTixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFJaEU7OztHQUdHO0FBYUgsTUFBTSxPQUFPLHdCQUF3QjtJQXFFakMsSUFDSSxVQUFVO1FBQ1YsT0FBTyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNB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d0I7a0JBWnBDLFNBQVM7K0JBQ0ksbUJBQW1CLFFBRXZCO3dCQUNGLEtBQUssRUFBRSxtQkFBbUI7d0JBQzFCLHVDQUF1QyxFQUFFLGFBQWE7d0JBQ3RELDZDQUE2QyxFQUFFLGlDQUFpQztxQkFDbkYsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDOytPQVFsRCxZQUFZO3NCQUFwQixLQUFLO2dCQU9tQixXQUFXO3NCQUFuQyxLQUFLO2dCQU1rQixPQUFPO3NCQUE5QixLQUFLO2dCQU1HLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBTWtDLEtBQUs7c0JBQTdDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFNRyxNQUFNO3NCQUEvQyxZQUFZO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBTUssU0FBUztzQkFBckQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUtLLE9BQU87c0JBQXRELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUtULFdBQVc7c0JBQS9DLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFlL0IsVUFBVTtzQkFEYixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0Qm9vbGVhbiwgSW5wdXROdW1iZXIsIFRoeUNsaWNrRGlzcGF0Y2hlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlGbGV4aWJsZVRleHRDb21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2ZsZXhpYmxlLXRleHQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE92ZXJsYXlPdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVGh5UHJvcGVydGllc0NvbXBvbmVudCB9IGZyb20gJy4vcHJvcGVydGllcy5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBUaHlQcm9wZXJ0eUl0ZW1PcGVyYXRpb25UcmlnZ2VyID0gJ2hvdmVyJyB8ICdhbHdheXMnO1xuXG4vKipcbiAqIOWxnuaAp+e7hOS7tlxuICogQG5hbWUgdGh5LXByb3BlcnR5LWl0ZW1cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktcHJvcGVydHktaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktcHJvcGVydHktaXRlbScsXG4gICAgICAgICdbY2xhc3MudGh5LXByb3BlcnR5LWl0ZW0tb3BlcmF0aW9uYWxdJzogJyEhb3BlcmF0aW9uJyxcbiAgICAgICAgJ1tjbGFzcy50aHktcHJvcGVydHktaXRlbS1vcGVyYXRpb25hbC1ob3Zlcl0nOiBcInRoeU9wZXJhdGlvblRyaWdnZXIgPT09ICdob3ZlcidcIlxuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVGh5RmxleGlibGVUZXh0Q29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlQcm9wZXJ0eUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiDlsZ7mgKflkI3np7BcbiAgICAgKiBAdHlwZSBzdGluZ1xuICAgICAqIEBkZWZhdWx0IHRoeUxhYmVsVGV4dFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUxhYmVsVGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5bGe5oCn5piv5ZCm5piv5Y+v57yW6L6R55qEXG4gICAgICogQHR5cGUgc3RpbmdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlFZGl0YWJsZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9rui3qOWIl+eahOaVsOmHj1xuICAgICAqIEB0eXBlIG51bWJlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIHRoeVNwYW46IG51bWJlciA9IDE7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7lsZ7mgKfmk43kvZznjrDlrp7op6blj5HmlrnlvI/vvIzpu5jorqQgYWx3YXlzIOS4gOebtOaYvuekulxuICAgICAqIEB0eXBlICdob3ZlcicgfCAnYWx3YXlzJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeU9wZXJhdGlvblRyaWdnZXI6IFRoeVByb3BlcnR5SXRlbU9wZXJhdGlvblRyaWdnZXIgPSAnYWx3YXlzJztcblxuICAgIEBPdXRwdXQoKSB0aHlFZGl0aW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlsZ7mgKflkI3np7Doh6rlrprkuYnmqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2xhYmVsJywgeyBzdGF0aWM6IHRydWUgfSkgbGFiZWwhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAgIC8qKlxuICAgICAqIOWxnuaAp+WGheWuuee8lui+keaooeadv++8jOWPquacieWcqCB0aHlFZGl0YWJsZSDkuLogdHJ1ZSDml7bnlJ/mlYhcbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VkaXRvcicsIHsgc3RhdGljOiB0cnVlIH0pIGVkaXRvciE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gICAgLyoqXG4gICAgICog5pON5L2c5Yy65qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdvcGVyYXRpb24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBvcGVyYXRpb24hOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnY29udGVudFRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudCE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdpdGVtJywgeyBzdGF0aWM6IHRydWUgfSkgaXRlbUNvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgZWRpdGluZzogYm9vbGVhbjtcblxuICAgIGNoYW5nZXMkID0gbmV3IFN1YmplY3Q8U2ltcGxlQ2hhbmdlcz4oKTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSBldmVudERlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByaXZhdGUgb3JpZ2luT3ZlcmxheXM6IE92ZXJsYXlSZWZbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBjbGlja0V2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmdyaWQtY29sdW1uJylcbiAgICBnZXQgZ3JpZENvbHVtbigpIHtcbiAgICAgICAgcmV0dXJuIGBzcGFuICR7TWF0aC5taW4odGhpcy50aHlTcGFuLCB0aGlzLnBhcmVudC50aHlDb2x1bW4pfWA7XG4gICAgfVxuXG4gICAgaXNWZXJ0aWNhbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBjbGlja0Rpc3BhdGNoZXI6IFRoeUNsaWNrRGlzcGF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcjogT3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgcGFyZW50OiBUaHlQcm9wZXJ0aWVzQ29tcG9uZW50XG4gICAgKSB7XG4gICAgICAgIHRoaXMub3JpZ2luT3ZlcmxheXMgPSBbLi4udGhpcy5vdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5fYXR0YWNoZWRPdmVybGF5c10gYXMgT3ZlcmxheVJlZltdO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmliZUNsaWNrKCk7XG4gICAgICAgIHRoaXMucGFyZW50LmxheW91dCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShsYXlvdXQgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1ZlcnRpY2FsID0gbGF5b3V0ID09PSAndmVydGljYWwnO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMudGh5RWRpdGFibGUgJiYgY2hhbmdlcy50aHlFZGl0YWJsZS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlQ2xpY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RWRpdGluZyhmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmV2ZW50RGVzdHJveSQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5ldmVudERlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNsaWNrRXZlbnRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsaWNrRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsaWNrRXZlbnRTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RWRpdGluZyhlZGl0aW5nOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmVkaXRpbmcgIT09ICEhZWRpdGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMudGh5RWRpdGluZ0NoYW5nZS5lbWl0KGVkaXRpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gZWRpdGluZztcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIHNldEVkaXRpbmcoZWRpdGluZzogYm9vbGVhbilcbiAgICAgKi9cbiAgICBzZXRLZWVwRWRpdGluZyhrZWVwOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0RWRpdGluZyhrZWVwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc092ZXJsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlPdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLl9hdHRhY2hlZE92ZXJsYXlzLmxlbmd0aCA+IHRoaXMub3JpZ2luT3ZlcmxheXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeUVkaXRhYmxlID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh0aGlzLml0ZW1Db250ZW50Lm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmV2ZW50RGVzdHJveSQpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RWRpdGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZEVkaXRvckJsdXJFdmVudCh0aGlzLml0ZW1Db250ZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVPdmVybGF5RGV0YWNoKCkge1xuICAgICAgICBjb25zdCBvcGVuZWRPdmVybGF5cyA9IHRoaXMub3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIuX2F0dGFjaGVkT3ZlcmxheXMuc2xpY2UodGhpcy5vcmlnaW5PdmVybGF5cy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBvdmVybGF5c0RldGFjaG1lbnRzJCA9IG9wZW5lZE92ZXJsYXlzLm1hcChvdmVybGF5ID0+IG92ZXJsYXkuZGV0YWNobWVudHMoKSk7XG4gICAgICAgIGlmIChvdmVybGF5c0RldGFjaG1lbnRzJC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3Qob3ZlcmxheXNEZXRhY2htZW50cyQpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVsYXkoNTApLCB0YWtlKDEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RWRpdGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZURvY3VtZW50Q2xpY2soZWRpdG9yRWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jbGlja0Rpc3BhdGNoZXJcbiAgICAgICAgICAgIC5jbGlja2VkKDApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWVkaXRvckVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRFZGl0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZEVkaXRvckJsdXJFdmVudChlZGl0b3JFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICB0aW1lcigwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzT3ZlcmxheSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVPdmVybGF5RGV0YWNoKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlRG9jdW1lbnRDbGljayhlZGl0b3JFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgdGhpcy5ldmVudERlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5ldmVudERlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNjb250ZW50VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0tbGFiZWxcIj5cbiAgPHNwYW4gKm5nSWY9XCJ0aHlMYWJlbFRleHRcIiB0aHlGbGV4aWJsZVRleHQgW3RoeVRvb2x0aXBDb250ZW50XT1cInRoeUxhYmVsVGV4dFwiPnt7IHRoeUxhYmVsVGV4dCB9fTwvc3Bhbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+XG4gICAgPHNwYW4+IDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGRpdlxuICAjaXRlbVxuICBjbGFzcz1cInRoeS1wcm9wZXJ0eS1pdGVtLWNvbnRlbnRcIlxuICBbY2xhc3MudGh5LXByb3BlcnR5LWl0ZW0tY29udGVudC1lZGl0YWJsZV09XCJ0aHlFZGl0YWJsZVwiXG4gIFtjbGFzcy50aHktcHJvcGVydHktaXRlbS1jb250ZW50LWVkaXRpbmddPVwiZWRpdGluZ1wiPlxuICA8ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0tY29udGVudC10ZXh0XCI+XG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRoeS1wcm9wZXJ0eS1pdGVtLWNvbnRlbnQtZWRpdG9yXCIgKm5nSWY9XCJ0aHlFZGl0YWJsZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImVkaXRvclwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkaXRvclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0tb3BlcmF0aW9uXCIgKm5nSWY9XCJvcGVyYXRpb25cIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwib3BlcmF0aW9uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==