@datarailsshared/datarailsshared 1.4.112 → 1.4.113

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.
@@ -72,7 +72,7 @@ DialogWrapperComponent.decorators = [
72
72
  { type: Component, args: [{
73
73
  selector: 'dr-dialog-wrapper',
74
74
  template: "<div class=\"dialog-wrapper\"\n [class.dialog-wrapper--confirmation-no-title]=\"dialogData.theme?.isConfirmation && !dialogData.title\">\n <i class=\"dr-icon-exit\" data-test=\"close_btn\" (click)=\"closeDialog()\" *ngIf=\"!dialogData?.hideCloseBtn\"></i>\n\n <div header class=\"dialog-wrapper__header\" *ngIf=\"dialogData.title\">\n <h1 class=\"dialog-wrapper__header__title\" data-test=\"dialogTitle\">{{ dialogData.title }}</h1>\n <h1 class=\"dialog-wrapper__header__subtitle\" data-test=\"dialogSubtitle\"\n *ngIf=\"dialogData.subtitle\">{{ dialogData.subtitle }}</h1>\n </div>\n <div class=\"dialog-wrapper__content\"\n [class.dialog-wrapper__content--no-padding]=\"dialogData.theme?.contentNoPadding\"\n [ngClass]=\"{ 'flex-position': dialogData.contentIcon?.class && !childComponent }\">\n <span *ngIf=\"dialogData.contentIcon?.class\" class=\"dialog-wrapper__content__icon\">\n <i [ngClass]=\"dialogData.contentIcon.class\" [style.color]=\"dialogData.contentIcon?.color || 'inherit'\"></i>\n </span>\n <span [innerHTML]=\"dialogData.content\"></span>\n <span #content class=\"dialog-wrapper__content__anchor\"> </span>\n </div>\n <div footer class=\"dialog-wrapper__footer\" *ngIf=\"dialogData.cancelButton || dialogData.acceptButton\">\n <div class=\"dialog-wrapper__footer__buttons\">\n <span *ngIf=\"dialogData.customButton\"\n class=\"dialog-wrapper__footer__button-wrapper\"\n [drTooltip]=\"dialogData.customButton.isDisabled && dialogData.tooltips?.customDisabled\">\n <dr-button (click)=\"onDecline()\"\n [theme]=\"'secondary'\"\n [isLoading]=\"isLoading\"\n data-test=\"declineBtn\"\n [disabled]=\"dialogData.customButton.isDisabled\"\n [drTooltip]=\"dialogData.tooltips?.custom\">{{ dialogData.customButton.label }}</dr-button>\n </span>\n <span *ngIf=\"dialogData.cancelButton\"\n class=\"dialog-wrapper__footer__button-wrapper\"\n [drTooltip]=\"dialogData.cancelButton.isDisabled && dialogData.tooltips?.cancelDisabled\">\n <dr-button (click)=\"closeDialog()\"\n [theme]=\"'secondary'\"\n data-test=\"closeBtn\"\n [disabled]=\"dialogData.cancelButton.isDisabled\"\n [drTooltip]=\"dialogData.tooltips?.cancel\">{{ dialogData.cancelButton.label }}</dr-button>\n </span>\n <span *ngIf=\"dialogData.acceptButton\"\n class=\"dialog-wrapper__footer__button-wrapper\"\n [drTooltip]=\"dialogData.acceptButton.isDisabled && dialogData.tooltips?.acceptDisabled\">\n <dr-button (click)=\"onAcceptDialog()\"\n [theme]=\"dialogData.acceptButton?.theme || 'primary'\"\n [isLoading]=\"isLoading\"\n data-test=\"acceptBtn\"\n [disabled]=\"dialogData.acceptButton.isDisabled\"\n [drTooltip]=\"dialogData.tooltips?.accept\">{{ dialogData.acceptButton.label }}</dr-button>\n </span>\n </div>\n </div>\n</div>\n",
75
- styles: [":host.small-modal{min-height:188px;max-height:467px;min-width:400px;max-width:400px}:host.medium-modal{min-height:188px;max-height:467px;min-width:632px;max-width:632px}:host.large-modal{min-width:750px;max-width:750px}:host.medium-large-modal{min-width:669px;max-width:669px}:host.xl-modal{min-height:188px;max-height:800px;min-width:1100px;max-width:1100px}:host.xl-custom-modal{min-height:188px;max-height:800px;min-width:1100px;max-width:100%}::ng-deep .dialog-wrapper{display:flex;justify-content:space-between;flex-direction:column;position:relative}::ng-deep .dialog-wrapper>.dr-icon-exit{z-index:1;position:absolute;right:32px;top:20px;color:#51566f;cursor:pointer}::ng-deep .dialog-wrapper__header{display:flex;flex-direction:column;padding:8px 52px 8px 32px;border-bottom:1px solid #e5e6ea}::ng-deep .dialog-wrapper__header__title{color:#151b3f;position:static;font-weight:600;font-size:18px;line-height:24px}::ng-deep .dialog-wrapper__header__subtitle{font-size:14px;line-height:20px;margin:0}::ng-deep .dialog-wrapper--confirmation-no-title{padding-top:16px;height:100%}::ng-deep .dialog-wrapper__content{overflow-y:inherit;font-size:14px;font-weight:400;line-height:22px;padding:24px 32px 32px}::ng-deep .dialog-wrapper__content__anchor{display:none}::ng-deep .dialog-wrapper__content--no-padding{padding:0}::ng-deep .dialog-wrapper__content__icon{margin-right:10px;top:5px;position:relative}::ng-deep .dialog-wrapper__content.flex-position{display:flex}::ng-deep .dialog-wrapper__footer{border-top:1px solid #e5e6ea}::ng-deep .dialog-wrapper__footer__buttons{display:flex;justify-content:flex-end;padding-top:10px;padding-right:32px;padding-bottom:11px}::ng-deep .dialog-wrapper__footer__buttons>dr-button:nth-child(n+2){margin-left:12px}::ng-deep .dialog-wrapper__footer__button-wrapper:nth-child(n+2){margin-left:12px}\n"]
75
+ styles: [":host.small-modal{min-height:188px;max-height:467px;min-width:400px;max-width:400px}:host.medium-modal{min-height:188px;max-height:467px;min-width:632px;max-width:632px}:host.large-modal{min-width:750px;max-width:750px}:host.medium-large-modal{min-width:669px;max-width:669px}:host.xl-modal{min-height:188px;max-height:800px;min-width:1100px;max-width:1100px}:host.xl-custom-modal{min-height:188px;max-height:800px;min-width:1100px;max-width:100%}::ng-deep .dialog-wrapper{display:flex;justify-content:space-between;flex-direction:column;position:relative}::ng-deep .dialog-wrapper>.dr-icon-exit{z-index:1;position:absolute;right:32px;top:20px;color:#51566f;cursor:pointer}::ng-deep .dialog-wrapper__header{display:flex;flex-direction:column;padding:8px 52px 8px 32px;border-bottom:1px solid #e5e6ea}::ng-deep .dialog-wrapper__header__title{color:#151b3f;position:static;font-weight:600;font-size:18px;line-height:24px}::ng-deep .dialog-wrapper__header__subtitle{font-size:14px;line-height:20px;margin:0}::ng-deep .dialog-wrapper--confirmation-no-title{padding-top:16px;height:100%}::ng-deep .dialog-wrapper__content{overflow-y:inherit;font-size:14px;font-weight:400;line-height:22px;padding:24px 32px 32px}::ng-deep .dialog-wrapper__content__anchor{display:none}::ng-deep .dialog-wrapper__content--no-padding{padding:0}::ng-deep .dialog-wrapper__content__icon{margin-right:10px;top:5px;position:relative}::ng-deep .dialog-wrapper__content.flex-position{display:flex}::ng-deep .dialog-wrapper__footer{border-top:1px solid #e5e6ea}::ng-deep .dialog-wrapper__footer__buttons{display:flex;justify-content:flex-end;padding:11px 32px}::ng-deep .dialog-wrapper__footer__buttons>dr-button:nth-child(n+2){margin-left:12px}::ng-deep .dialog-wrapper__footer__button-wrapper:nth-child(n+2){margin-left:12px}\n"]
76
76
  },] }
77
77
  ];
78
78
  DialogWrapperComponent.ctorParameters = () => [
@@ -1,11 +1,14 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, Optional } from '@angular/core';
2
+ import { FormGroupDirective } from '@angular/forms';
2
3
  import { takeUntil } from 'rxjs/operators';
3
4
  import { Subject } from 'rxjs';
4
5
  export class DrErrorComponent {
5
- constructor(cdr) {
6
+ constructor(cdr, formGroupDirective) {
6
7
  this.cdr = cdr;
8
+ this.formGroupDirective = formGroupDirective;
7
9
  this.destroyed$ = new Subject();
8
10
  this.label = 'Field error';
11
+ this.noIcon = false;
9
12
  }
10
13
  set control(value) {
11
14
  if (value) {
@@ -16,6 +19,14 @@ export class DrErrorComponent {
16
19
  });
17
20
  }
18
21
  }
22
+ set controlName(value) {
23
+ if (!value || typeof value !== 'string')
24
+ return;
25
+ if (!this.formGroupDirective) {
26
+ throw new Error('You must provide a formGroupDirective to use this input');
27
+ }
28
+ this.control = this.formGroupDirective.control.get(value);
29
+ }
19
30
  get errorString() {
20
31
  var _a;
21
32
  if (this._control.hasError('required')) {
@@ -34,17 +45,20 @@ export class DrErrorComponent {
34
45
  }
35
46
  DrErrorComponent.decorators = [
36
47
  { type: Component, args: [{
37
- template: "<div *ngIf=\"_control.status === 'INVALID' && !_control.pristine\"\n [drTooltip]=\"errorString\"\n class=\"error-container\"\n [class.warning]=\"isWarning\">\n <i class=\"dr-icon-status-error\"></i>\n <span>{{label}}</span>\n</div>\n",
48
+ template: "<div *ngIf=\"_control.status === 'INVALID' && !_control.pristine\"\n [drTooltip]=\"errorString\"\n class=\"error-container\"\n [class.warning]=\"isWarning\">\n <i *ngIf=\"!noIcon\" class=\"dr-icon-status-error\"></i>\n <span>{{label}}</span>\n</div>\n",
38
49
  selector: 'dr-error',
39
50
  changeDetection: ChangeDetectionStrategy.OnPush,
40
- styles: [":host{display:flex;margin-top:8px}:host:empty{display:none}:host .error-container{display:flex;align-items:center;cursor:pointer;width:auto;color:#bf1d30}:host .error-container i{font-size:16px;margin-right:2px}:host .error-container span{font-family:\"Poppins\",sans-serif;font-style:normal;font-weight:400;font-size:11px;line-height:20px}:host .error-container.warning{color:#ffb800}:host .error-container.warning span{color:#9e5f00}\n"]
51
+ styles: [":host{display:flex;margin-top:8px}:host:empty{display:none}:host .error-container{display:flex;align-items:center;cursor:pointer;width:auto;color:#bf1d30}:host .error-container i{font-size:16px;margin-right:2px}:host .error-container span{font-family:\"Poppins\",sans-serif;font-style:normal;font-weight:400;font-size:11px;line-height:20px}:host .error-container.warning{color:#ffb800}:host .error-container.warning span{color:#9e5f00}:host.no-icon{margin-top:2px}:host.no-icon .error-container span{font-size:12px}\n"]
41
52
  },] }
42
53
  ];
43
54
  DrErrorComponent.ctorParameters = () => [
44
- { type: ChangeDetectorRef }
55
+ { type: ChangeDetectorRef },
56
+ { type: FormGroupDirective, decorators: [{ type: Optional }] }
45
57
  ];
46
58
  DrErrorComponent.propDecorators = {
47
59
  control: [{ type: Input }],
48
- label: [{ type: Input }]
60
+ controlName: [{ type: Input }],
61
+ label: [{ type: Input }],
62
+ noIcon: [{ type: Input }, { type: HostBinding, args: ['class.no-icon',] }]
49
63
  };
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZXJyb3IvZHItZXJyb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUy9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFFekIsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFHbEMsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFZaEMsVUFBSyxHQUFHLGFBQWEsQ0FBQztJQWQvQixDQUFDO0lBSUQsSUFBYSxPQUFPLENBQUMsS0FBa0I7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDdkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUtELElBQUksV0FBVzs7UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sb0JBQW9CLENBQUM7U0FDL0I7UUFFRCxPQUFPLENBQUEsTUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sMENBQUUsV0FBVyxLQUFJLElBQUksQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxTQUFTOztRQUNULE9BQU8sTUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sMENBQUUsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7OztZQTFDSixTQUFTLFNBQUM7Z0JBQ1AsdVFBQXNDO2dCQUN0QyxRQUFRLEVBQUUsVUFBVTtnQkFFcEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2xEOzs7WUFWaUMsaUJBQWlCOzs7c0JBbUI5QyxLQUFLO29CQVVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnZHItZXJyb3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIHNlbGVjdG9yOiAnZHItZXJyb3InLFxuICAgIHN0eWxlVXJsczogWydkci1lcnJvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcblxuZXhwb3J0IGNsYXNzIERyRXJyb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwdWJsaWMgX2NvbnRyb2w6IEZvcm1Db250cm9sO1xuICAgIEBJbnB1dCgpIHNldCBjb250cm9sKHZhbHVlOiBGb3JtQ29udHJvbCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2wgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5fY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgbGFiZWwgPSAnRmllbGQgZXJyb3InO1xuXG5cbiAgICBnZXQgZXJyb3JTdHJpbmcoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ0ZpZWxkIGlzIHJlcXVpcmVkISc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fY29udHJvbC5lcnJvcnM/LmVycm9yU3RyaW5nIHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGlzV2FybmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2wuZXJyb3JzPy5pc1dhcm5pbmc7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZXJyb3IvZHItZXJyb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFlLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFRL0IsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixZQUFvQixHQUFzQixFQUFzQixrQkFBc0M7UUFBbEYsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBc0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUU5RixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQXNCaEMsVUFBSyxHQUFHLGFBQWEsQ0FBQztRQUVRLFdBQU0sR0FBRyxLQUFLLENBQUM7SUExQm1ELENBQUM7SUFJMUcsSUFBYSxPQUFPLENBQUMsS0FBa0I7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDdkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELElBQWEsV0FBVyxDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTztRQUVoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztTQUM5RTtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFnQixDQUFDO0lBQzdFLENBQUM7SUFNRCxJQUFJLFdBQVc7O1FBQ1gsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwQyxPQUFPLG9CQUFvQixDQUFDO1NBQy9CO1FBRUQsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLDBDQUFFLFdBQVcsS0FBSSxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksU0FBUzs7UUFDVCxPQUFPLE1BQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLDBDQUFFLFNBQVMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOzs7WUFsREosU0FBUyxTQUFDO2dCQUNQLHlSQUFzQztnQkFDdEMsUUFBUSxFQUFFLFVBQVU7Z0JBRXBCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNsRDs7O1lBVmlDLGlCQUFpQjtZQUM3QixrQkFBa0IsdUJBV1MsUUFBUTs7O3NCQUlwRCxLQUFLOzBCQVVMLEtBQUs7b0JBVUwsS0FBSztxQkFFTCxLQUFLLFlBQUksV0FBVyxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJ2RyLWVycm9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2RyLWVycm9yJyxcbiAgICBzdHlsZVVybHM6IFsnZHItZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHJFcnJvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKSB7fVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwdWJsaWMgX2NvbnRyb2w6IEZvcm1Db250cm9sO1xuICAgIEBJbnB1dCgpIHNldCBjb250cm9sKHZhbHVlOiBGb3JtQ29udHJvbCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2wgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5fY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNvbnRyb2xOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm47XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Hcm91cERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBwcm92aWRlIGEgZm9ybUdyb3VwRGlyZWN0aXZlIHRvIHVzZSB0aGlzIGlucHV0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cERpcmVjdGl2ZS5jb250cm9sLmdldCh2YWx1ZSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbGFiZWwgPSAnRmllbGQgZXJyb3InO1xuXG4gICAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5uby1pY29uJykgbm9JY29uID0gZmFsc2U7XG5cbiAgICBnZXQgZXJyb3JTdHJpbmcoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ0ZpZWxkIGlzIHJlcXVpcmVkISc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fY29udHJvbC5lcnJvcnM/LmVycm9yU3RyaW5nIHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGlzV2FybmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2wuZXJyb3JzPy5pc1dhcm5pbmc7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -18,12 +18,14 @@ export class DrDatePickerWithTimeframeComponent extends DrDatePickerComponent {
18
18
  // eslint-disable-next-line
19
19
  this.onChangeFormat = new EventEmitter();
20
20
  this.pagingSetup = {
21
- [TimeframeOption.YEAR]: (forward) => this.pagingDateChange('addCalendarYears', 1, forward),
22
- [TimeframeOption.QUARTER]: (forward) => this.pagingDateChange('addCalendarMonths', 3, forward),
23
- [TimeframeOption.MONTH]: (forward) => this.pagingDateChange('addCalendarMonths', 1, forward),
24
- [TimeframeOption.DAY]: (forward) => this.pagingDateChange('addCalendarDays', 1, forward),
25
- [TimeframeOption.WEEK]: (forward) => this.pagingDateChange('addCalendarDays', 7, forward)
21
+ [TimeframeOption.YEAR]: (forward) => this.getNextDate('addCalendarYears', 1, forward),
22
+ [TimeframeOption.QUARTER]: (forward) => this.getNextDate('addCalendarMonths', 3, forward),
23
+ [TimeframeOption.MONTH]: (forward) => this.getNextDate('addCalendarMonths', 1, forward),
24
+ [TimeframeOption.DAY]: (forward) => this.getNextDate('addCalendarDays', 1, forward),
25
+ [TimeframeOption.WEEK]: (forward) => this.getNextDate('addCalendarDays', 7, forward)
26
26
  };
27
+ this.isNextDateDisabled = false;
28
+ this.isPrevDateDisabled = false;
27
29
  this.onChangeDebounced$ = new Subject();
28
30
  datePickerService.isTimeframeSelectionEnabled = true;
29
31
  datePickerService.format$.pipe(takeUntil(this.destroyed$)).subscribe((value) => {
@@ -67,12 +69,12 @@ export class DrDatePickerWithTimeframeComponent extends DrDatePickerComponent {
67
69
  }
68
70
  pagingClicked(forward) {
69
71
  if (this.pagingSetup[this.datePickerService.timeframe]) {
70
- this.pagingSetup[this.datePickerService.timeframe](forward);
72
+ const nextValue = this.pagingSetup[this.datePickerService.timeframe](forward);
73
+ this.pagingDateChange(nextValue);
71
74
  }
72
75
  this.datePicker.close();
73
76
  }
74
- pagingDateChange(actionCall, amount, forward) {
75
- const newValue = this.dateAdapter[actionCall](this.innerValue, forward ? amount : -amount);
77
+ pagingDateChange(newValue) {
76
78
  if (this.paginationDebounce) {
77
79
  // this is required for not sending extra requests when user quickly clicking on pagination
78
80
  // here we do the same as in setValueFromMoment(newValue) with difference
@@ -85,11 +87,29 @@ export class DrDatePickerWithTimeframeComponent extends DrDatePickerComponent {
85
87
  this.setValueFromMoment(newValue);
86
88
  }
87
89
  }
90
+ writeValue(value) {
91
+ super.writeValue(value);
92
+ if (!value)
93
+ return;
94
+ this.restrictPagination();
95
+ }
96
+ getNextDate(actionCall, amount, forward) {
97
+ var _a, _b;
98
+ return (_b = (_a = this.dateAdapter)[actionCall]) === null || _b === void 0 ? void 0 : _b.call(_a, this.innerValue, forward ? amount : -amount);
99
+ }
100
+ restrictPagination() {
101
+ if (!this._min && !this._max)
102
+ return;
103
+ const nextValue = this.pagingSetup[this.datePickerService.timeframe](true);
104
+ const prevValue = this.pagingSetup[this.datePickerService.timeframe](false);
105
+ this.isNextDateDisabled = this._max && nextValue && nextValue.unix() > this._max.unix();
106
+ this.isPrevDateDisabled = this._min && prevValue && prevValue.unix() < this._min.unix();
107
+ }
88
108
  }
89
109
  DrDatePickerWithTimeframeComponent.decorators = [
90
110
  { type: Component, args: [{
91
111
  selector: 'dr-date-picker-with-timeframe',
92
- template: "<dr-button theme=\"icon\" icon=\"dr-icon-arrow-left\" (click)=\"pagingClicked(false)\"></dr-button>\n<div class=\"dr-datepicker-input-container\">\n <i *ngIf=\"isDashboardDatepicker\" class=\"dr-icon-date\"></i>\n <div\n class=\"dr-datepicker-input-container__formatted-value-display\"\n (click)=\"datepickerInput.click()\"\n >\n {{ displayedFormattedValue }}\n </div>\n <input\n #datepickerInput\n [(ngModel)]=\"value\"\n (click)=\"datePicker.open()\"\n [matDatepicker]=\"datePicker\"\n [readonly]=\"readonly\"\n [min]=\"_min\"\n [max]=\"_max\"\n />\n</div>\n<dr-button theme=\"icon\" icon=\"dr-icon-arrow-right\" (click)=\"pagingClicked(true)\"></dr-button>\n<mat-datepicker #datePicker\n class=\"dr-timeframe-datepicker\"\n [calendarHeaderComponent]=\"customHeader\"\n (yearSelected)=\"chosenPeriodHandler($event, timeframeOption.YEAR)\"\n (monthSelected)=\"chosenPeriodHandler($event, timeframeOption.MONTH)\">\n</mat-datepicker>\n",
112
+ template: "<dr-button [disabled]=\"isPrevDateDisabled\" theme=\"icon\" icon=\"dr-icon-arrow-left\" (click)=\"pagingClicked(false)\"></dr-button>\n<div class=\"dr-datepicker-input-container\">\n <i *ngIf=\"isDashboardDatepicker\" class=\"dr-icon-date\"></i>\n <div\n class=\"dr-datepicker-input-container__formatted-value-display\"\n (click)=\"datepickerInput.click()\"\n >\n {{ displayedFormattedValue }}\n </div>\n <input\n #datepickerInput\n [(ngModel)]=\"value\"\n (click)=\"datePicker.open()\"\n [matDatepicker]=\"datePicker\"\n [readonly]=\"readonly\"\n [min]=\"_min\"\n [max]=\"_max\"\n />\n</div>\n<dr-button [disabled]=\"isNextDateDisabled\" theme=\"icon\" icon=\"dr-icon-arrow-right\" (click)=\"pagingClicked(true)\"></dr-button>\n<mat-datepicker #datePicker\n class=\"dr-timeframe-datepicker\"\n [calendarHeaderComponent]=\"customHeader\"\n (yearSelected)=\"chosenPeriodHandler($event, timeframeOption.YEAR)\"\n (monthSelected)=\"chosenPeriodHandler($event, timeframeOption.MONTH)\">\n</mat-datepicker>\n",
93
113
  changeDetection: ChangeDetectionStrategy.OnPush,
94
114
  providers: [
95
115
  { provide: NG_VALUE_ACCESSOR, useExisting: DrDatePickerWithTimeframeComponent, multi: true },
@@ -112,4 +132,4 @@ DrDatePickerWithTimeframeComponent.propDecorators = {
112
132
  paginationDebounce: [{ type: Input }],
113
133
  onChangeFormat: [{ type: Output }]
114
134
  };
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXItd2l0aC10aW1lZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBMkIsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBWS9CLE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxxQkFBcUI7SUFtRHpFLFlBQ2MsR0FBc0IsRUFDdEIsV0FBNkIsRUFDaEMsaUJBQXNDO1FBRTdDLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFKakMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZ0JBQVcsR0FB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LElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBRXpCLDJGQUEyRjtZQUMzRix5RUFBeUU7WUFDekUsb0RBQW9EO1lBQ3BELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3hEO2FBQU07WUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckM7SUFDTCxDQUFDOzs7WUF6R0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwrQkFBK0I7Z0JBQ3pDLDJtQ0FBNkQ7Z0JBRTdELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxTQUFTLEVBQUU7b0JBQ1AsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGtDQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7b0JBQzVGLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFO2lCQUNuQzs7YUFDSjs7O1lBM0JHLGlCQUFpQjtZQVVaLFdBQVc7WUFDWCxtQkFBbUI7Ozt3Q0FtQnZCLFdBQVcsU0FBQyxtQ0FBbUM7b0NBSS9DLEtBQUs7K0JBRUwsS0FBSztpQ0FPTCxLQUFLO2tDQUVMLEtBQUs7aUNBS0wsS0FBSzs2QkFHTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IERyRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kci1kYXRlLXBpY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElEYXRlUGlja2VyRm9ybWF0Q29uZmlnLCBUaW1lZnJhbWVPcHRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZGF0ZVBpY2tlcic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLWRhdGUtcGlja2VyLXdpdGgtdGltZWZyYW1lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJEYXRlUGlja2VyV2l0aFRpbWVmcmFtZUNvbXBvbmVudCwgbXVsdGk6IHRydWUgfSxcbiAgICAgICAgeyBwcm92aWRlOiBEckRhdGVQaWNrZXJTZXJ2aWNlIH1cbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEckRhdGVQaWNrZXJXaXRoVGltZWZyYW1lQ29tcG9uZW50IGV4dGVuZHMgRHJEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZHItZGF0ZS1waWNrZXItb24tZGFzaGJvYXJkJykgZ2V0IGlzRGFzaGJvYXJkQ2xhc3NEaXNwbGF5ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRGFzaGJvYXJkRGF0ZXBpY2tlcjtcbiAgICB9O1xuXG4gICAgQElucHV0KCkgaXNEYXNoYm9hcmREYXRlcGlja2VyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzZXQgZGF0ZUZvcm1hdENvbmZpZyh2YWx1ZTogSURhdGVQaWNrZXJGb3JtYXRDb25maWcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdENvbmZpZyA9IHsgLi4udGhpcy5kYXRlUGlja2VyU2VydmljZS5mb3JtYXRDb25maWcsIC4uLnZhbHVlIH07XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGNhblNlbGVjdFRpbWVmcmFtZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzZXQgYXZhaWxhYmxlVGltZWZyYW1lcyh2YWx1ZTogVGltZWZyYW1lT3B0aW9uW10pIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5hdmFpbGFibGVUaW1lZnJhbWVzID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQElucHV0KCkgcGFnaW5hdGlvbkRlYm91bmNlO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlRm9ybWF0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5nU2V0dXAgPSB7XG4gICAgICAgIFtUaW1lZnJhbWVPcHRpb24uWUVBUl06IChmb3J3YXJkKSA9PiB0aGlzLnBhZ2luZ0RhdGVDaGFuZ2UoJ2FkZENhbGVuZGFyWWVhcnMnLCAxLCBmb3J3YXJkKSxcbiAgICAgICAgW1RpbWVmcmFtZU9wdGlvbi5RVUFSVEVSXTogKGZvcndhcmQpID0+IHRoaXMucGFnaW5nRGF0ZUNoYW5nZSgnYWRkQ2FsZW5kYXJNb250aHMnLCAzLCBmb3J3YXJkKSxcbiAgICAgICAgW1RpbWVmcmFtZU9wdGlvbi5NT05USF06IChmb3J3YXJkKSA9PiB0aGlzLnBhZ2luZ0RhdGVDaGFuZ2UoJ2FkZENhbGVuZGFyTW9udGhzJywgMSwgZm9yd2FyZCksXG4gICAgICAgIFtUaW1lZnJhbWVPcHRpb24uREFZXTogKGZvcndhcmQpID0+IHRoaXMucGFnaW5nRGF0ZUNoYW5nZSgnYWRkQ2FsZW5kYXJEYXlzJywgMSwgZm9yd2FyZCksXG4gICAgICAgIFtUaW1lZnJhbWVPcHRpb24uV0VFS106IChmb3J3YXJkKSA9PiB0aGlzLnBhZ2luZ0RhdGVDaGFuZ2UoJ2FkZENhbGVuZGFyRGF5cycsIDcsIGZvcndhcmQpXG4gICAgfTtcblxuICAgIHB1YmxpYyBnZXQgZGlzcGxheWVkRm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkaXNwbGF5VmFsdWUgPSBfLmNsb25lRGVlcCh0aGlzLnZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lKSkge1xuICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5zdWJ0cmFjdEZpc2NhbFllYXJNb250aHNGcm9tRGF0ZShkaXNwbGF5VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybWF0Q2FjaGVkID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5mb3JtYXQkLmdldFZhbHVlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldERpc3BsYXlQcmVmaXgoKSArIGRpc3BsYXlWYWx1ZS5mb3JtYXQoZm9ybWF0Q2FjaGVkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlRGVib3VuY2VkJDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPGFueT4sXG4gICAgICAgIHB1YmxpYyBkYXRlUGlja2VyU2VydmljZTogRHJEYXRlUGlja2VyU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihjZHIsIGRhdGVBZGFwdGVyLCBkYXRlUGlja2VyU2VydmljZSk7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLmlzVGltZWZyYW1lU2VsZWN0aW9uRW5hYmxlZCA9IHRydWU7XG5cbiAgICAgICAgZGF0ZVBpY2tlclNlcnZpY2UuZm9ybWF0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm9ybWF0LmVtaXQoZGF0ZVBpY2tlclNlcnZpY2Uubm9ybWFsaXplVmFsdWUodmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVTZWxlY3Rpb25FbmFibGVkID0gdGhpcy5jYW5TZWxlY3RUaW1lZnJhbWU7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25EZWJvdW5jZSkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZURlYm91bmNlZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSwgZGVib3VuY2VUaW1lKHRoaXMucGFnaW5hdGlvbkRlYm91bmNlKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhZ2luZ0NsaWNrZWQoZm9yd2FyZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYWdpbmdTZXR1cFt0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZV0pIHtcbiAgICAgICAgICAgIHRoaXMucGFnaW5nU2V0dXBbdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWVdKGZvcndhcmQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlci5jbG9zZSgpO1xuICAgIH1cblxuICAgIHBhZ2luZ0RhdGVDaGFuZ2UoYWN0aW9uQ2FsbDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgZm9yd2FyZDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZGF0ZUFkYXB0ZXJbYWN0aW9uQ2FsbF0odGhpcy5pbm5lclZhbHVlLCBmb3J3YXJkID8gYW1vdW50IDogLWFtb3VudCk7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25EZWJvdW5jZSkge1xuXG4gICAgICAgICAgICAvLyB0aGlzIGlzIHJlcXVpcmVkIGZvciBub3Qgc2VuZGluZyBleHRyYSByZXF1ZXN0cyB3aGVuIHVzZXIgcXVpY2tseSBjbGlja2luZyBvbiBwYWdpbmF0aW9uXG4gICAgICAgICAgICAvLyBoZXJlIHdlIGRvIHRoZSBzYW1lIGFzIGluIHNldFZhbHVlRnJvbU1vbWVudChuZXdWYWx1ZSkgd2l0aCBkaWZmZXJlbmNlXG4gICAgICAgICAgICAvLyB0aGF0IHVwZGF0aW5nIG9mIG5nTW9kZWwvZm9ybUNvbnRyb2wgaXMgZGVib3VuY2VkXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXdWYWx1ZS51bml4KCk7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUodGltZXN0YW1wKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VEZWJvdW5jZWQkLm5leHQodGhpcy5pbm5lclZhbHVlLnVuaXgoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbU1vbWVudChuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXItd2l0aC10aW1lZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBMkIsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBYy9CLE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxxQkFBcUI7SUFzRHpFLFlBQ2MsR0FBc0IsRUFDdEIsV0FBNkIsRUFDaEMsaUJBQXNDO1FBRTdDLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFKakMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZ0JBQVcsR0FB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UyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVGLENBQUM7OztZQTdISixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLCtCQUErQjtnQkFDekMsK3FDQUE2RDtnQkFFN0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLFNBQVMsRUFBRTtvQkFDUCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtvQkFDNUYsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7aUJBQ25DOzthQUNKOzs7WUE3QkcsaUJBQWlCO1lBVVosV0FBVztZQUNYLG1CQUFtQjs7O3dDQXFCdkIsV0FBVyxTQUFDLG1DQUFtQztvQ0FJL0MsS0FBSzsrQkFFTCxLQUFLO2lDQU9MLEtBQUs7a0NBRUwsS0FBSztpQ0FLTCxLQUFLOzZCQUdMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RyLWRhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSURhdGVQaWNrZXJGb3JtYXRDb25maWcsIFRpbWVmcmFtZU9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWRhdGUtcGlja2VyLXdpdGgtdGltZWZyYW1lJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHItZGF0ZS1waWNrZXItd2l0aC10aW1lZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLWRhdGUtcGlja2VyLXdpdGgtdGltZWZyYW1lLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEckRhdGVQaWNrZXJXaXRoVGltZWZyYW1lQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IERyRGF0ZVBpY2tlclNlcnZpY2UgfVxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyRGF0ZVBpY2tlcldpdGhUaW1lZnJhbWVDb21wb25lbnQgZXh0ZW5kcyBEckRhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQge1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kci1kYXRlLXBpY2tlci1vbi1kYXNoYm9hcmQnKSBnZXQgaXNEYXNoYm9hcmRDbGFzc0Rpc3BsYXllZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEYXNoYm9hcmREYXRlcGlja2VyO1xuICAgIH07XG5cbiAgICBASW5wdXQoKSBpc0Rhc2hib2FyZERhdGVwaWNrZXIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNldCBkYXRlRm9ybWF0Q29uZmlnKHZhbHVlOiBJRGF0ZVBpY2tlckZvcm1hdENvbmZpZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZm9ybWF0Q29uZmlnID0geyAuLi50aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdENvbmZpZywgLi4udmFsdWUgfTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgY2FuU2VsZWN0VGltZWZyYW1lID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNldCBhdmFpbGFibGVUaW1lZnJhbWVzKHZhbHVlOiBUaW1lZnJhbWVPcHRpb25bXSkge1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmF2YWlsYWJsZVRpbWVmcmFtZXMgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBASW5wdXQoKSBwYWdpbmF0aW9uRGVib3VuY2U7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBAT3V0cHV0KCkgb25DaGFuZ2VGb3JtYXQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnaW5nU2V0dXAgPSB7XG4gICAgICAgIFtUaW1lZnJhbWVPcHRpb24uWUVBUl06IChmb3J3YXJkKSA9PiB0aGlzLmdldE5leHREYXRlKCdhZGRDYWxlbmRhclllYXJzJywgMSwgZm9yd2FyZCksXG4gICAgICAgIFtUaW1lZnJhbWVPcHRpb24uUVVBUlRFUl06IChmb3J3YXJkKSA9PiB0aGlzLmdldE5leHREYXRlKCdhZGRDYWxlbmRhck1vbnRocycsIDMsIGZvcndhcmQpLFxuICAgICAgICBbVGltZWZyYW1lT3B0aW9uLk1PTlRIXTogKGZvcndhcmQpID0+IHRoaXMuZ2V0TmV4dERhdGUoJ2FkZENhbGVuZGFyTW9udGhzJywgMSwgZm9yd2FyZCksXG4gICAgICAgIFtUaW1lZnJhbWVPcHRpb24uREFZXTogKGZvcndhcmQpID0+IHRoaXMuZ2V0TmV4dERhdGUoJ2FkZENhbGVuZGFyRGF5cycsIDEsIGZvcndhcmQpLFxuICAgICAgICBbVGltZWZyYW1lT3B0aW9uLldFRUtdOiAoZm9yd2FyZCkgPT4gdGhpcy5nZXROZXh0RGF0ZSgnYWRkQ2FsZW5kYXJEYXlzJywgNywgZm9yd2FyZClcbiAgICB9O1xuXG4gICAgcHVibGljIGdldCBkaXNwbGF5ZWRGb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRpc3BsYXlWYWx1ZSA9IF8uY2xvbmVEZWVwKHRoaXMudmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUpKSB7XG4gICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnN1YnRyYWN0RmlzY2FsWWVhck1vbnRoc0Zyb21EYXRlKGRpc3BsYXlWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtYXRDYWNoZWQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQuZ2V0VmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZ2V0RGlzcGxheVByZWZpeCgpICsgZGlzcGxheVZhbHVlLmZvcm1hdChmb3JtYXRDYWNoZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc05leHREYXRlRGlzYWJsZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNQcmV2RGF0ZURpc2FibGVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlRGVib3VuY2VkJDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPGFueT4sXG4gICAgICAgIHB1YmxpYyBkYXRlUGlja2VyU2VydmljZTogRHJEYXRlUGlja2VyU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihjZHIsIGRhdGVBZGFwdGVyLCBkYXRlUGlja2VyU2VydmljZSk7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLmlzVGltZWZyYW1lU2VsZWN0aW9uRW5hYmxlZCA9IHRydWU7XG5cbiAgICAgICAgZGF0ZVBpY2tlclNlcnZpY2UuZm9ybWF0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm9ybWF0LmVtaXQoZGF0ZVBpY2tlclNlcnZpY2Uubm9ybWFsaXplVmFsdWUodmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVTZWxlY3Rpb25FbmFibGVkID0gdGhpcy5jYW5TZWxlY3RUaW1lZnJhbWU7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25EZWJvdW5jZSkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZURlYm91bmNlZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSwgZGVib3VuY2VUaW1lKHRoaXMucGFnaW5hdGlvbkRlYm91bmNlKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhZ2luZ0NsaWNrZWQoZm9yd2FyZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYWdpbmdTZXR1cFt0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHRoaXMucGFnaW5nU2V0dXBbdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWVdKGZvcndhcmQpO1xuICAgICAgICAgICAgdGhpcy5wYWdpbmdEYXRlQ2hhbmdlKG5leHRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRlUGlja2VyLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcGFnaW5nRGF0ZUNoYW5nZShuZXdWYWx1ZTogTW9tZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25EZWJvdW5jZSkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyByZXF1aXJlZCBmb3Igbm90IHNlbmRpbmcgZXh0cmEgcmVxdWVzdHMgd2hlbiB1c2VyIHF1aWNrbHkgY2xpY2tpbmcgb24gcGFnaW5hdGlvblxuICAgICAgICAgICAgLy8gaGVyZSB3ZSBkbyB0aGUgc2FtZSBhcyBpbiBzZXRWYWx1ZUZyb21Nb21lbnQobmV3VmFsdWUpIHdpdGggZGlmZmVyZW5jZVxuICAgICAgICAgICAgLy8gdGhhdCB1cGRhdGluZyBvZiBuZ01vZGVsL2Zvcm1Db250cm9sIGlzIGRlYm91bmNlZFxuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gbmV3VmFsdWUudW5peCgpO1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRpbWVzdGFtcCk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRGVib3VuY2VkJC5uZXh0KHRoaXMuaW5uZXJWYWx1ZS51bml4KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21Nb21lbnQobmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgICAgICB0aGlzLnJlc3RyaWN0UGFnaW5hdGlvbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TmV4dERhdGUoYWN0aW9uQ2FsbDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgZm9yd2FyZDogYm9vbGVhbik6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVBZGFwdGVyW2FjdGlvbkNhbGxdPy4odGhpcy5pbm5lclZhbHVlLCBmb3J3YXJkID8gYW1vdW50IDogLWFtb3VudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0cmljdFBhZ2luYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbWluICYmICF0aGlzLl9tYXgpIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gdGhpcy5wYWdpbmdTZXR1cFt0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZV0odHJ1ZSk7XG4gICAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHRoaXMucGFnaW5nU2V0dXBbdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWVdKGZhbHNlKTtcbiAgICAgICAgdGhpcy5pc05leHREYXRlRGlzYWJsZWQgPSB0aGlzLl9tYXggJiYgbmV4dFZhbHVlICYmIG5leHRWYWx1ZS51bml4KCkgPiB0aGlzLl9tYXgudW5peCgpO1xuICAgICAgICB0aGlzLmlzUHJldkRhdGVEaXNhYmxlZCA9IHRoaXMuX21pbiAmJiBwcmV2VmFsdWUgJiYgcHJldlZhbHVlLnVuaXgoKSA8IHRoaXMuX21pbi51bml4KCk7XG4gICAgfVxufVxuIl19
@@ -4,26 +4,37 @@ import { ComponentPortal } from '@angular/cdk/portal';
4
4
  import { TooltipComponent } from './dr-tooltip.component';
5
5
  import { POPUP_POSITIONS } from '../models/constants';
6
6
  import { skip } from 'rxjs/operators';
7
+ const getOverlayPosition = (position) => (Object.assign({}, POPUP_POSITIONS[position]));
8
+ const ɵ0 = getOverlayPosition;
7
9
  export class DrTooltipDirective {
8
10
  constructor(overlay, overlayPositionBuilder, elementRef) {
9
11
  this.overlay = overlay;
10
12
  this.overlayPositionBuilder = overlayPositionBuilder;
11
13
  this.elementRef = elementRef;
12
14
  this.contentContext = {};
13
- this.position = 'top';
15
+ this._position = 'top';
14
16
  this.class = '';
15
17
  // is used for preserve tooltip from being hidden for N milliseconds
16
18
  this.drTooltipMousleaveTimeout = 0;
19
+ this.overlayPosition = getOverlayPosition(this.position);
20
+ }
21
+ get position() {
22
+ return this._position;
23
+ }
24
+ set position(value) {
25
+ this._position = value;
26
+ this.overlayPosition = getOverlayPosition(value);
17
27
  }
18
28
  set drTooltipOptions(options) {
19
29
  if (options === null || options === void 0 ? void 0 : options.indent) {
20
- const position = POPUP_POSITIONS[this.position];
21
- if (position.offsetY) {
30
+ const position = getOverlayPosition(this.position);
31
+ if (position === null || position === void 0 ? void 0 : position.offsetY) {
22
32
  position.offsetY = position.offsetY < 0 ? -options.indent : options.indent;
23
33
  }
24
- if (position.offsetX) {
34
+ if (position === null || position === void 0 ? void 0 : position.offsetX) {
25
35
  position.offsetX = position.offsetX < 0 ? -options.indent : options.indent;
26
36
  }
37
+ this.overlayPosition = position;
27
38
  }
28
39
  this.options = options;
29
40
  }
@@ -78,7 +89,7 @@ export class DrTooltipDirective {
78
89
  }
79
90
  }
80
91
  createOverlay() {
81
- const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([POPUP_POSITIONS[this.position]]);
92
+ const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([this.overlayPosition]);
82
93
  this.overlayRef = this.overlay.create({ positionStrategy });
83
94
  }
84
95
  renderTooltip() {
@@ -130,4 +141,5 @@ DrTooltipDirective.propDecorators = {
130
141
  show: [{ type: HostListener, args: ['mouseenter',] }],
131
142
  hide: [{ type: HostListener, args: ['mouseleave',] }]
132
143
  };
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItdG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10b29sdGlwL2RyLXRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt0QyxNQUFNLE9BQU8sa0JBQWtCO0lBOEMzQixZQUFvQixPQUFnQixFQUNoQixzQkFBOEMsRUFDOUMsVUFBc0I7UUFGdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGVBQVUsR0FBVixVQUFVLENBQVk7UUEzQzFDLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRXBCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLG9FQUFvRTtRQUMzRCw4QkFBeUIsR0FBRyxDQUFDLENBQUM7SUFxQ3ZDLENBQUM7SUFuQ0QsSUFDSSxnQkFBZ0IsQ0FBQyxPQUFZO1FBQzdCLElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sRUFBRTtZQUNqQixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsUUFBUSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQzlFO1lBQ0QsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUNsQixRQUFRLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7YUFDOUU7U0FDSjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUNJLFdBQVcsQ0FBQyxLQUFjO1FBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3hCO2FBQU07WUFDSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBZUQsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtRQUNELHFFQUFxRTtRQUNyRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM3QjtRQUVELElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ2pDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqRDtJQUNMLENBQUM7SUFHRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUVuRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUdELElBQUk7O1FBQ0EsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSSxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUE7WUFBRSxPQUFPO1FBRXZHLCtDQUErQztRQUMvQyw2REFBNkQ7UUFDN0Qsc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBRWhDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUN0QztZQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTs7Z0JBQ25DLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBLEVBQUU7b0JBQ3JFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDekI7WUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFTyxhQUFhO1FBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxSSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxhQUFhOztRQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxXQUFXLEVBQUUsQ0FBQSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDOUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFbEUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBa0IsRUFBRSxFQUFFO2dCQUNqSCxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNaLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDekI7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRTtZQUNqQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDakQ7SUFDTCxDQUFDOzs7WUF0SUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxhQUFhO2FBQzFCOzs7WUFUUSxPQUFPO1lBQUUsc0JBQXNCO1lBRE4sVUFBVTs7O3NCQWF2QyxLQUFLLFNBQUMsV0FBVzs2QkFFakIsS0FBSyxTQUFDLGtCQUFrQjt1QkFFeEIsS0FBSyxTQUFDLG1CQUFtQjtvQkFFekIsS0FBSyxTQUFDLGdCQUFnQjt3Q0FJdEIsS0FBSzsrQkFFTCxLQUFLOzBCQWNMLEtBQUssU0FBQyxlQUFlO21CQXVDckIsWUFBWSxTQUFDLFlBQVk7bUJBT3pCLFlBQVksU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVBvc2l0aW9uQnVpbGRlciwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vZHItdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUE9QVVBfUE9TSVRJT05TIH0gZnJvbSAnLi4vbW9kZWxzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2RyVG9vbHRpcF0nXG59KVxuZXhwb3J0IGNsYXNzIERyVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoJ2RyVG9vbHRpcCcpXG4gICAgY29udGVudDogYW55O1xuICAgIEBJbnB1dCgnZHJUb29sdGlwQ29udGV4dCcpXG4gICAgY29udGVudENvbnRleHQgPSB7fTtcbiAgICBASW5wdXQoJ2RyVG9vbHRpcFBvc2l0aW9uJylcbiAgICBwb3NpdGlvbiA9ICd0b3AnO1xuICAgIEBJbnB1dCgnZHJUb29sdGlwQ2xhc3MnKVxuICAgIGNsYXNzID0gJyc7XG5cbiAgICAvLyBpcyB1c2VkIGZvciBwcmVzZXJ2ZSB0b29sdGlwIGZyb20gYmVpbmcgaGlkZGVuIGZvciBOIG1pbGxpc2Vjb25kc1xuICAgIEBJbnB1dCgpIGRyVG9vbHRpcE1vdXNsZWF2ZVRpbWVvdXQgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgZHJUb29sdGlwT3B0aW9ucyhvcHRpb25zOiBhbnkpIHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LmluZGVudCkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBQT1BVUF9QT1NJVElPTlNbdGhpcy5wb3NpdGlvbl07XG4gICAgICAgICAgICBpZiAocG9zaXRpb24ub2Zmc2V0WSkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uLm9mZnNldFkgPSBwb3NpdGlvbi5vZmZzZXRZIDwgMCA/IC1vcHRpb25zLmluZGVudCA6IG9wdGlvbnMuaW5kZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvc2l0aW9uLm9mZnNldFgpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbi5vZmZzZXRYID0gcG9zaXRpb24ub2Zmc2V0WCA8IDAgPyAtb3B0aW9ucy5pbmRlbnQgOiBvcHRpb25zLmluZGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIEBJbnB1dCgnZHJUb29sdGlwU2hvdycpXG4gICAgc2V0IHNob3dUb29sdGlwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMubWFudWFsSGFuZGxpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbHRpcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICAgIHByaXZhdGUgdG9vbHRpcFJlZjogQ29tcG9uZW50UmVmPFRvb2x0aXBDb21wb25lbnQ+O1xuXG4gICAgcHJpdmF0ZSBvcHRpb25zO1xuICAgIHByaXZhdGUgbWFudWFsSGFuZGxpbmc6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSB0b29sdGlwTW91c2VPblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgbW91c2VsZWF2ZVRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE86IFRlbXBvcmFyeSBzb2x1dGlvbi4gbGluZSAxNjIgZG9lc24ndCBzdG9wIGZ1bmN0aW9uIGV4ZWN1dGlvblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICAgIHNob3coKSB7XG4gICAgICAgIGlmICh0aGlzLm1hbnVhbEhhbmRsaW5nIHx8IHRoaXMub3ZlcmxheVJlZikgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMucmVuZGVyVG9vbHRpcCgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIGhpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hbnVhbEhhbmRsaW5nIHx8ICF0aGlzLnRvb2x0aXBSZWYgfHwgdGhpcy50b29sdGlwUmVmPy5pbnN0YW5jZS5pc01vdXNlT24kLmdldFZhbHVlKCkpIHJldHVybjtcblxuICAgICAgICAvLyBpZiB0aGlzIHRpbWVvdXQgdmFsdWUgaXMgc2V0IC0gdGhlbiBwcmVzZXJ2ZVxuICAgICAgICAvLyB0b29sdGlwIGZyb20gYmVpbmcgaGlkZGVuIE4gbWlsbGlzZWNvbmRzIGFuZCBub3QgaGlkaW5nIGl0XG4gICAgICAgIC8vIGluIGNhc2UgbW91c2UgaXMgcG9pbnRlZCBvbiB0b29sdGlwXG4gICAgICAgIGlmICh0aGlzLmRyVG9vbHRpcE1vdXNsZWF2ZVRpbWVvdXQpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VsZWF2ZVRpbWVyKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubW91c2VsZWF2ZVRpbWVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5tb3VzZWxlYXZlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b29sdGlwUmVmICYmICF0aGlzLnRvb2x0aXBSZWY/Lmluc3RhbmNlLmlzTW91c2VPbiQuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lUb29sdGlwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcy5kclRvb2x0aXBNb3VzbGVhdmVUaW1lb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVRvb2x0aXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVBvc2l0aW9uQnVpbGRlci5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZikud2l0aFBvc2l0aW9ucyhbUE9QVVBfUE9TSVRJT05TW3RoaXMucG9zaXRpb25dXSk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7IHBvc2l0aW9uU3RyYXRlZ3kgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJUb29sdGlwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgJiYgdGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBSZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoVG9vbHRpcENvbXBvbmVudCkpO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUmVmLmluc3RhbmNlLmNvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBSZWYuaW5zdGFuY2UuY29udGVudENvbnRleHQgPSB0aGlzLmNvbnRlbnRDb250ZXh0O1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUmVmLmluc3RhbmNlLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcFJlZi5pbnN0YW5jZS5vcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUmVmLmluc3RhbmNlLmNsYXNzID0gdGhpcy5jbGFzcyArICcgJyArIHRoaXMucG9zaXRpb247XG5cbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24gPSB0aGlzLnRvb2x0aXBSZWYuaW5zdGFuY2UuaXNNb3VzZU9uJC5waXBlKHNraXAoMSkpLnN1YnNjcmliZSgoaXNNb3VzZU9uOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc01vdXNlT24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95VG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICB0aGlzLnRvb2x0aXBSZWYgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBNb3VzZU9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBNb3VzZU9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
144
+ export { ɵ0 };
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItdG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10b29sdGlwL2RyLXRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxtQkFBTSxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUcsQ0FBQzs7QUFLNUUsTUFBTSxPQUFPLGtCQUFrQjtJQXVEM0IsWUFBb0IsT0FBZ0IsRUFDaEIsc0JBQThDLEVBQzlDLFVBQXNCO1FBRnRCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBcEQxQyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNaLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVMUIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLG9FQUFvRTtRQUMzRCw4QkFBeUIsR0FBRyxDQUFDLENBQUM7UUFrQy9CLG9CQUFlLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBSzVELENB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LEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBRWxFLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQWtCLEVBQUUsRUFBRTtnQkFDakgsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDWixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7aUJBQ3pCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTyxjQUFjO1FBQ2xCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDakMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2pEO0lBQ0wsQ0FBQzs7O1lBL0lKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsYUFBYTthQUMxQjs7O1lBWFEsT0FBTztZQUFFLHNCQUFzQjtZQUROLFVBQVU7OztzQkFldkMsS0FBSyxTQUFDLFdBQVc7NkJBRWpCLEtBQUssU0FBQyxrQkFBa0I7dUJBR3hCLEtBQUssU0FBQyxtQkFBbUI7b0JBUXpCLEtBQUssU0FBQyxnQkFBZ0I7d0NBSXRCLEtBQUs7K0JBRUwsS0FBSzswQkFlTCxLQUFLLFNBQUMsZUFBZTttQkF3Q3JCLFlBQVksU0FBQyxZQUFZO21CQU96QixZQUFZLFNBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL2RyLXRvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IFBPUFVQX1BPU0lUSU9OUyB9IGZyb20gJy4uL21vZGVscy9jb25zdGFudHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBnZXRPdmVybGF5UG9zaXRpb24gPSAocG9zaXRpb24pID0+ICh7IC4uLlBPUFVQX1BPU0lUSU9OU1twb3NpdGlvbl0gfSk7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2RyVG9vbHRpcF0nXG59KVxuZXhwb3J0IGNsYXNzIERyVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoJ2RyVG9vbHRpcCcpXG4gICAgY29udGVudDogYW55O1xuICAgIEBJbnB1dCgnZHJUb29sdGlwQ29udGV4dCcpXG4gICAgY29udGVudENvbnRleHQgPSB7fTtcbiAgICBwcml2YXRlIF9wb3NpdGlvbiA9ICd0b3AnO1xuICAgIEBJbnB1dCgnZHJUb29sdGlwUG9zaXRpb24nKVxuICAgIHB1YmxpYyBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgICB9XG4gICAgcHVibGljIHNldCBwb3NpdGlvbih2YWx1ZSkge1xuICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLm92ZXJsYXlQb3NpdGlvbiA9IGdldE92ZXJsYXlQb3NpdGlvbih2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgnZHJUb29sdGlwQ2xhc3MnKVxuICAgIGNsYXNzID0gJyc7XG5cbiAgICAvLyBpcyB1c2VkIGZvciBwcmVzZXJ2ZSB0b29sdGlwIGZyb20gYmVpbmcgaGlkZGVuIGZvciBOIG1pbGxpc2Vjb25kc1xuICAgIEBJbnB1dCgpIGRyVG9vbHRpcE1vdXNsZWF2ZVRpbWVvdXQgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgZHJUb29sdGlwT3B0aW9ucyhvcHRpb25zOiBhbnkpIHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LmluZGVudCkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBnZXRPdmVybGF5UG9zaXRpb24odGhpcy5wb3NpdGlvbik7XG4gICAgICAgICAgICBpZiAocG9zaXRpb24/Lm9mZnNldFkpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbi5vZmZzZXRZID0gcG9zaXRpb24ub2Zmc2V0WSA8IDAgPyAtb3B0aW9ucy5pbmRlbnQgOiBvcHRpb25zLmluZGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwb3NpdGlvbj8ub2Zmc2V0WCkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uLm9mZnNldFggPSBwb3NpdGlvbi5vZmZzZXRYIDwgMCA/IC1vcHRpb25zLmluZGVudCA6IG9wdGlvbnMuaW5kZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIEBJbnB1dCgnZHJUb29sdGlwU2hvdycpXG4gICAgc2V0IHNob3dUb29sdGlwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMubWFudWFsSGFuZGxpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbHRpcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICAgIHByaXZhdGUgdG9vbHRpcFJlZjogQ29tcG9uZW50UmVmPFRvb2x0aXBDb21wb25lbnQ+O1xuXG4gICAgcHJpdmF0ZSBvcHRpb25zO1xuICAgIHByaXZhdGUgbWFudWFsSGFuZGxpbmc6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSB0b29sdGlwTW91c2VPblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgbW91c2VsZWF2ZVRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbiA9IGdldE92ZXJsYXlQb3NpdGlvbih0aGlzLnBvc2l0aW9uKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE86IFRlbXBvcmFyeSBzb2x1dGlvbi4gbGluZSAxNjIgZG9lc24ndCBzdG9wIGZ1bmN0aW9uIGV4ZWN1dGlvblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICAgIHNob3coKSB7XG4gICAgICAgIGlmICh0aGlzLm1hbnVhbEhhbmRsaW5nIHx8IHRoaXMub3ZlcmxheVJlZikgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMucmVuZGVyVG9vbHRpcCgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIGhpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hbnVhbEhhbmRsaW5nIHx8ICF0aGlzLnRvb2x0aXBSZWYgfHwgdGhpcy50b29sdGlwUmVmPy5pbnN0YW5jZS5pc01vdXNlT24kLmdldFZhbHVlKCkpIHJldHVybjtcblxuICAgICAgICAvLyBpZiB0aGlzIHRpbWVvdXQgdmFsdWUgaXMgc2V0IC0gdGhlbiBwcmVzZXJ2ZVxuICAgICAgICAvLyB0b29sdGlwIGZyb20gYmVpbmcgaGlkZGVuIE4gbWlsbGlzZWNvbmRzIGFuZCBub3QgaGlkaW5nIGl0XG4gICAgICAgIC8vIGluIGNhc2UgbW91c2UgaXMgcG9pbnRlZCBvbiB0b29sdGlwXG4gICAgICAgIGlmICh0aGlzLmRyVG9vbHRpcE1vdXNsZWF2ZVRpbWVvdXQpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VsZWF2ZVRpbWVyKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubW91c2VsZWF2ZVRpbWVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5tb3VzZWxlYXZlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b29sdGlwUmVmICYmICF0aGlzLnRvb2x0aXBSZWY/Lmluc3RhbmNlLmlzTW91c2VPbiQuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lUb29sdGlwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcy5kclRvb2x0aXBNb3VzbGVhdmVUaW1lb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVRvb2x0aXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVBvc2l0aW9uQnVpbGRlci5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZikud2l0aFBvc2l0aW9ucyhbdGhpcy5vdmVybGF5UG9zaXRpb25dKTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHsgcG9zaXRpb25TdHJhdGVneSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlclRvb2x0aXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKSAmJiB0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcFJlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChUb29sdGlwQ29tcG9uZW50KSk7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBSZWYuaW5zdGFuY2UuY29udGVudCA9IHRoaXMuY29udGVudDtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcFJlZi5pbnN0YW5jZS5jb250ZW50Q29udGV4dCA9IHRoaXMuY29udGVudENvbnRleHQ7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBSZWYuaW5zdGFuY2UucG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUmVmLmluc3RhbmNlLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBSZWYuaW5zdGFuY2UuY2xhc3MgPSB0aGlzLmNsYXNzICsgJyAnICsgdGhpcy5wb3NpdGlvbjtcblxuICAgICAgICAgICAgdGhpcy50b29sdGlwTW91c2VPblN1YnNjcmlwdGlvbiA9IHRoaXMudG9vbHRpcFJlZi5pbnN0YW5jZS5pc01vdXNlT24kLnBpcGUoc2tpcCgxKSkuc3Vic2NyaWJlKChpc01vdXNlT246IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTW91c2VPbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lUb29sdGlwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lUb29sdGlwKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMudG9vbHRpcFJlZiA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==