devexpress-reporting-angular 23.2.5-build-2440-1343 → 23.2.5-build-2447-1420

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,14 @@
1
- import { TemplateRef, OnInit, OnDestroy } from '@angular/core';
1
+ import { ChangeDetectorRef, TemplateRef, OnInit, OnDestroy } from '@angular/core';
2
2
  import { ICollectionEditorOptions, ICollectionEditorViewModel } from '@devexpress/analytics-core/property-grid/widgets/collectioneditor/_editor';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class CollectionEditorComponent implements OnInit, OnDestroy {
5
+ private _changeDetectorRef;
5
6
  options: ICollectionEditorOptions;
6
7
  contentTemplate: TemplateRef<any>;
7
8
  data: ICollectionEditorViewModel;
9
+ private _vmSubscription;
8
10
  private _model;
9
- constructor();
11
+ constructor(_changeDetectorRef: ChangeDetectorRef);
10
12
  ngOnDestroy(): void;
11
13
  ngOnInit(): void;
12
14
  onScrollViewInitialized(args: any): void;
@@ -1,18 +1,20 @@
1
- import { ElementRef, OnInit, OnDestroy } from '@angular/core';
1
+ import { ChangeDetectorRef, ElementRef, OnInit, OnDestroy } from '@angular/core';
2
2
  import { Properties } from 'devextreme/ui/button';
3
3
  import { IDateRangeEditorOptions } from 'devexpress-reporting/viewer/widgets/dateRange/dateRangeEditor';
4
4
  import { IDateRangeEditorViewModel } from 'devexpress-reporting/viewer/widgets/dateRange/dateRangeEditor.viewmodel';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class DateRangeComponent implements OnInit, OnDestroy {
7
7
  private _currentElement;
8
+ private _changeDetectorRef;
8
9
  options: IDateRangeEditorOptions;
9
10
  private _editor;
10
11
  data: IDateRangeEditorViewModel;
12
+ private _vmSubscription;
11
13
  showPopupOptions: Properties;
12
14
  textBoxInputElement: HTMLElement;
13
15
  subscribeToEvents: (event: any) => void;
14
16
  unsubscribeFromEvents: () => void;
15
- constructor(_currentElement: ElementRef<any>);
17
+ constructor(_currentElement: ElementRef<any>, _changeDetectorRef: ChangeDetectorRef);
16
18
  ngOnDestroy(): void;
17
19
  ngOnInit(): void;
18
20
  static ɵfac: i0.ɵɵFactoryDeclaration<DateRangeComponent, never>;
@@ -21,6 +21,7 @@ export declare class DxReportViewerComponent extends DxReportingComponent {
21
21
  private _accessibilitySettings;
22
22
  private _reportUrl;
23
23
  private _disposableCallback;
24
+ private _disposeViewModelChangedSubscription;
24
25
  viewModel: IPreviewViewModel;
25
26
  model: JSReportViewer;
26
27
  protected _binding: JSReportViewerBinding;
@@ -40,6 +41,7 @@ export declare class DxReportViewerComponent extends DxReportingComponent {
40
41
  GetPreviewModel(): PreviewDisposableModel;
41
42
  ngAfterViewInit(): void;
42
43
  ngOnDestroy(): void;
44
+ private _subscribeToViewModelChanged;
43
45
  isMobile: boolean;
44
46
  get accessibilityCompliant(): boolean;
45
47
  set accessibilityCompliant(value: boolean);
@@ -1,5 +1,6 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import { CollectionEditorViewModel } from '@devexpress/analytics-core/property-grid/widgets/collectioneditor/_editor';
3
+ import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  import * as i2 from "devextreme-angular";
@@ -8,29 +9,33 @@ import * as i4 from "../../directives/dx-action.directive";
8
9
  import * as i5 from "../../directives/accordion.directive";
9
10
  import * as i6 from "../../directives/dx-mutation-observer.directive";
10
11
  export class CollectionEditorComponent {
11
- constructor() {
12
+ constructor(_changeDetectorRef) {
13
+ this._changeDetectorRef = _changeDetectorRef;
12
14
  }
13
15
  ngOnDestroy() {
16
+ this._vmSubscription && this._vmSubscription();
14
17
  this._model.dispose();
15
18
  }
16
19
  ngOnInit() {
17
20
  this._model = new CollectionEditorViewModel(this.options);
18
21
  this.data = this._model.getViewModel();
22
+ this._vmSubscription = this.data
23
+ ._viewModelEvents.on(ViewModelChangedEvent, () => this._changeDetectorRef.markForCheck());
19
24
  }
20
25
  onScrollViewInitialized(args) {
21
26
  args.component.option('useKeyboard', false);
22
27
  }
23
28
  }
24
- CollectionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CollectionEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ CollectionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CollectionEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
25
30
  CollectionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CollectionEditorComponent, selector: "dxa-collectioneditor", inputs: { options: ["data", "options"], contentTemplate: "contentTemplate" }, ngImport: i0, template: "<div class=\"dx-collectioneditor\">\n <div [dxaAccordion]=\"data\" [dxMutationObserver]=\"data.keyboardHelper\">\n <div class=\"dx-collectioneditor-header dx-accordion-header\">\n <div class=\"dx-editor-header\">\n <div role=\"treeitem\"\n class=\"dx-field dx-accessibility-focus-border-accented dxrd-accessibility-accordion-trigger\"\n [attr.aria-expanded]=\"data.alwaysShow || !data.collapsed ? 'true' : 'false'\"\n [attr.aria-owns]=\"data.contentId\" [attr.id]=\"data.headerId\">\n <div *ngIf=\"data.showButtons\" class=\"dx-collectioneditor-actions-wrapper\">\n <dx-button *ngIf=\"data.buttons.up.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.up.action($event)\" [disabled]=\"data.buttons.up.disabled\"\n icon=\"dxrd-svg-operations-moveup\" iconClass=\"dx-image-moveup\"\n [template]=\"data.buttons.up.template\"\n [attr.title]=\"data.buttons.up.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.down.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.down.action($event)\" [disabled]=\"data.buttons.down.disabled\"\n icon=\"dxrd-svg-operations-movedown\" iconClass=\"dx-image-movedown\"\n [template]=\"data.buttons.down.template\"\n [attr.title]=\"data.buttons.down.text\"></dx-button>\n <div class=\"dx-collectioneditor-action-separator\"></div>\n <dx-button *ngIf=\"data.buttons.add.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.add.action($event)\" [disabled]=\"data.buttons.add.disabled\"\n [template]=\"data.buttons.add.template\"\n icon=\"dxrd-svg-operations-add\" iconClass=\"dx-image-add\"\n [attr.title]=\"data.buttons.add.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.delete.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.delete.action($event)\" [disabled]=\"data.buttons.delete.disabled\"\n [template]=\"data.buttons.delete.template\"\n icon=\"dxrd-svg-operations-remove\" iconClass=\"dx-image-remove\"\n [attr.title]=\"data.buttons.delete.text\"></dx-button>\n </div>\n <div *ngIf=\"!!data.displayName\" class=\"dx-collectioneditor-header-text dxd-text-primary\"\n [style.padding-left]=\"data.padding + 'px'\">\n <dxa-template class=\"dx-collapsing-image dxrd-display-inline-block\"\n template=\"dxrd-svg-collapsed\"\n [class.dx-image-expanded]=\"!data.collapsed \"></dxa-template>\n <div class=\"dx-group-header-font dxd-text-primary dxrd-display-inline-block\" [attr.title]=\"data.displayName\">\n {{data.displayName}}</div>\n </div>\n </div>\n </div>\n </div>\n <div role=\"group\" class=\"dx-accordion-content\"\n [attr.aria-hidden]=\"!data.alwaysShow && data.collapsed ? 'true' : 'false'\"\n [attr.aria-labelledby]=\"data.headerId\" [attr.id]=\"data.contentId\">\n <dx-scroll-view [hidden]=\"data.disabled\" showScrollbar=\"onHover\" [disabled]=\"!data.showScroll\"\n [useNative]=\"false\" [scrollByThumb]=\"true\" (onInitialized)=\"onScrollViewInitialized($event)\">\n <div *ngIf=\"data.values.length === 0\"\n class=\"dx-collectioneditor-empty dxd-empty-area-placeholder-text-color dxd-text-info\">\n <span class=\"dx-collectioneditor-empty-text\">{{data.emptyAreaText}}</span>\n </div>\n <div *ngIf=\"data.values.length !== 0\" class=\"dx-collectioneditor-items\">\n <div *ngFor=\"let value of data.values\"\n class=\"dx-collectioneditor-item-container dxd-button-back-color dxd-state-normal dxd-back-highlighted dx-accessibility-list-item dx-accessibility-focus-border-accented\"\n [attr.aria-selected]=\"value.selected\" [dxActionModel]=\"value\" [dxAction]=\"value.select\"\n [class.dxd-state-selected]=\"value.selected\">\n <div class=\"dx-collection-item\">\n <ng-container *ngTemplateOutlet=\"contentTemplate, context: { data: value }\"></ng-container>\n </div>\n </div>\n </div>\n </dx-scroll-view>\n </div>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i2.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { kind: "component", type: i3.TemplateComponent, selector: "dxa-template", inputs: ["data", "template"] }, { kind: "directive", type: i4.DxActionDirective, selector: "[dxAction]", inputs: ["dxActionModel", "dxAction"] }, { kind: "directive", type: i5.AccordionDirective, selector: "[dxaAccordion]", inputs: ["dxaAccordion"] }, { kind: "directive", type: i6.DxMutationObserverDirective, selector: "[dxMutationObserver]", inputs: ["dxMutationObserver"] }] });
26
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CollectionEditorComponent, decorators: [{
27
32
  type: Component,
28
33
  args: [{ selector: 'dxa-collectioneditor', template: "<div class=\"dx-collectioneditor\">\n <div [dxaAccordion]=\"data\" [dxMutationObserver]=\"data.keyboardHelper\">\n <div class=\"dx-collectioneditor-header dx-accordion-header\">\n <div class=\"dx-editor-header\">\n <div role=\"treeitem\"\n class=\"dx-field dx-accessibility-focus-border-accented dxrd-accessibility-accordion-trigger\"\n [attr.aria-expanded]=\"data.alwaysShow || !data.collapsed ? 'true' : 'false'\"\n [attr.aria-owns]=\"data.contentId\" [attr.id]=\"data.headerId\">\n <div *ngIf=\"data.showButtons\" class=\"dx-collectioneditor-actions-wrapper\">\n <dx-button *ngIf=\"data.buttons.up.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.up.action($event)\" [disabled]=\"data.buttons.up.disabled\"\n icon=\"dxrd-svg-operations-moveup\" iconClass=\"dx-image-moveup\"\n [template]=\"data.buttons.up.template\"\n [attr.title]=\"data.buttons.up.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.down.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.down.action($event)\" [disabled]=\"data.buttons.down.disabled\"\n icon=\"dxrd-svg-operations-movedown\" iconClass=\"dx-image-movedown\"\n [template]=\"data.buttons.down.template\"\n [attr.title]=\"data.buttons.down.text\"></dx-button>\n <div class=\"dx-collectioneditor-action-separator\"></div>\n <dx-button *ngIf=\"data.buttons.add.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.add.action($event)\" [disabled]=\"data.buttons.add.disabled\"\n [template]=\"data.buttons.add.template\"\n icon=\"dxrd-svg-operations-add\" iconClass=\"dx-image-add\"\n [attr.title]=\"data.buttons.add.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.delete.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.delete.action($event)\" [disabled]=\"data.buttons.delete.disabled\"\n [template]=\"data.buttons.delete.template\"\n icon=\"dxrd-svg-operations-remove\" iconClass=\"dx-image-remove\"\n [attr.title]=\"data.buttons.delete.text\"></dx-button>\n </div>\n <div *ngIf=\"!!data.displayName\" class=\"dx-collectioneditor-header-text dxd-text-primary\"\n [style.padding-left]=\"data.padding + 'px'\">\n <dxa-template class=\"dx-collapsing-image dxrd-display-inline-block\"\n template=\"dxrd-svg-collapsed\"\n [class.dx-image-expanded]=\"!data.collapsed \"></dxa-template>\n <div class=\"dx-group-header-font dxd-text-primary dxrd-display-inline-block\" [attr.title]=\"data.displayName\">\n {{data.displayName}}</div>\n </div>\n </div>\n </div>\n </div>\n <div role=\"group\" class=\"dx-accordion-content\"\n [attr.aria-hidden]=\"!data.alwaysShow && data.collapsed ? 'true' : 'false'\"\n [attr.aria-labelledby]=\"data.headerId\" [attr.id]=\"data.contentId\">\n <dx-scroll-view [hidden]=\"data.disabled\" showScrollbar=\"onHover\" [disabled]=\"!data.showScroll\"\n [useNative]=\"false\" [scrollByThumb]=\"true\" (onInitialized)=\"onScrollViewInitialized($event)\">\n <div *ngIf=\"data.values.length === 0\"\n class=\"dx-collectioneditor-empty dxd-empty-area-placeholder-text-color dxd-text-info\">\n <span class=\"dx-collectioneditor-empty-text\">{{data.emptyAreaText}}</span>\n </div>\n <div *ngIf=\"data.values.length !== 0\" class=\"dx-collectioneditor-items\">\n <div *ngFor=\"let value of data.values\"\n class=\"dx-collectioneditor-item-container dxd-button-back-color dxd-state-normal dxd-back-highlighted dx-accessibility-list-item dx-accessibility-focus-border-accented\"\n [attr.aria-selected]=\"value.selected\" [dxActionModel]=\"value\" [dxAction]=\"value.select\"\n [class.dxd-state-selected]=\"value.selected\">\n <div class=\"dx-collection-item\">\n <ng-container *ngTemplateOutlet=\"contentTemplate, context: { data: value }\"></ng-container>\n </div>\n </div>\n </div>\n </dx-scroll-view>\n </div>\n </div>\n</div>" }]
29
- }], ctorParameters: function () { return []; }, propDecorators: { options: [{
34
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
30
35
  type: Input,
31
36
  args: ['data']
32
37
  }], contentTemplate: [{
33
38
  type: Input,
34
39
  args: ['contentTemplate']
35
40
  }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbmVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9keC1yZXBvcnQtdmlld2VyL2NvbXBvbmVudHMvYW5hbHl0aWNzL3Byb3BlcnRpZXMvY29sbGVjdGlvbmVkaXRvci9jb2xsZWN0aW9uZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2R4LXJlcG9ydC12aWV3ZXIvY29tcG9uZW50cy9hbmFseXRpY3MvcHJvcGVydGllcy9jb2xsZWN0aW9uZWRpdG9yL2NvbGxlY3Rpb25lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWtDLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBd0QsTUFBTSwyRUFBMkUsQ0FBQzs7Ozs7Ozs7QUFNNUssTUFBTSxPQUFPLHlCQUF5QjtJQU1sQztJQUNBLENBQUM7SUFDRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxJQUFJO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOzt1SEFsQlEseUJBQXlCOzJHQUF6Qix5QkFBeUIsMElDUHRDLHFyS0FvRU07NEZEN0RPLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDSSxzQkFBc0I7MEVBSWpCLE9BQU87c0JBQXJCLEtBQUs7dUJBQUMsTUFBTTtnQkFDYSxlQUFlO3NCQUF4QyxLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkVkaXRvclZpZXdNb2RlbCwgSUNvbGxlY3Rpb25FZGl0b3JPcHRpb25zLCBJQ29sbGVjdGlvbkVkaXRvclZpZXdNb2RlbCB9IGZyb20gJ0BkZXZleHByZXNzL2FuYWx5dGljcy1jb3JlL3Byb3BlcnR5LWdyaWQvd2lkZ2V0cy9jb2xsZWN0aW9uZWRpdG9yL19lZGl0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2R4YS1jb2xsZWN0aW9uZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sbGVjdGlvbmVkaXRvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbkVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoJ2RhdGEnKSBvcHRpb25zITogSUNvbGxlY3Rpb25FZGl0b3JPcHRpb25zO1xuICAgIEBJbnB1dCgnY29udGVudFRlbXBsYXRlJykgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZGF0YTogSUNvbGxlY3Rpb25FZGl0b3JWaWV3TW9kZWw7XG4gICAgcHJpdmF0ZSBfbW9kZWw6IENvbGxlY3Rpb25FZGl0b3JWaWV3TW9kZWw7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgfVxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tb2RlbC5kaXNwb3NlKCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tb2RlbCA9IG5ldyBDb2xsZWN0aW9uRWRpdG9yVmlld01vZGVsKHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuX21vZGVsLmdldFZpZXdNb2RlbCgpO1xuICAgIH1cblxuICAgIG9uU2Nyb2xsVmlld0luaXRpYWxpemVkKGFyZ3MpOiB2b2lkIHtcbiAgICAgICAgYXJncy5jb21wb25lbnQub3B0aW9uKCd1c2VLZXlib2FyZCcsIGZhbHNlKTtcbiAgICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yXCI+XG4gICAgPGRpdiBbZHhhQWNjb3JkaW9uXT1cImRhdGFcIiBbZHhNdXRhdGlvbk9ic2VydmVyXT1cImRhdGEua2V5Ym9hcmRIZWxwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImR4LWNvbGxlY3Rpb25lZGl0b3ItaGVhZGVyIGR4LWFjY29yZGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1lZGl0b3ItaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiByb2xlPVwidHJlZWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImR4LWZpZWxkIGR4LWFjY2Vzc2liaWxpdHktZm9jdXMtYm9yZGVyLWFjY2VudGVkIGR4cmQtYWNjZXNzaWJpbGl0eS1hY2NvcmRpb24tdHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZGF0YS5hbHdheXNTaG93IHx8ICFkYXRhLmNvbGxhcHNlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLW93bnNdPVwiZGF0YS5jb250ZW50SWRcIiBbYXR0ci5pZF09XCJkYXRhLmhlYWRlcklkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhLnNob3dCdXR0b25zXCIgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWFjdGlvbnMtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWJ1dHRvbiAqbmdJZj1cImRhdGEuYnV0dG9ucy51cC52aXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImR4LWNvbGxlY3Rpb25lZGl0b3ItYWN0aW9uIGR4LWFjY2Vzc2liaWxpdHktZm9jdXMtYm9yZGVyLWFjY2VudGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJkYXRhLmJ1dHRvbnMudXAuYWN0aW9uKCRldmVudClcIiBbZGlzYWJsZWRdPVwiZGF0YS5idXR0b25zLnVwLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZHhyZC1zdmctb3BlcmF0aW9ucy1tb3ZldXBcIiBpY29uQ2xhc3M9XCJkeC1pbWFnZS1tb3ZldXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJkYXRhLmJ1dHRvbnMudXAudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImRhdGEuYnV0dG9ucy51cC50ZXh0XCI+PC9keC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtYnV0dG9uICpuZ0lmPVwiZGF0YS5idXR0b25zLmRvd24udmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWFjdGlvbiBkeC1hY2Nlc3NpYmlsaXR5LWZvY3VzLWJvcmRlci1hY2NlbnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZGF0YS5idXR0b25zLmRvd24uYWN0aW9uKCRldmVudClcIiBbZGlzYWJsZWRdPVwiZGF0YS5idXR0b25zLmRvd24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkeHJkLXN2Zy1vcGVyYXRpb25zLW1vdmVkb3duXCIgaWNvbkNsYXNzPVwiZHgtaW1hZ2UtbW92ZWRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJkYXRhLmJ1dHRvbnMuZG93bi50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiZGF0YS5idXR0b25zLmRvd24udGV4dFwiPjwvZHgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWNvbGxlY3Rpb25lZGl0b3ItYWN0aW9uLXNlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWJ1dHRvbiAqbmdJZj1cImRhdGEuYnV0dG9ucy5hZGQudmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWFjdGlvbiBkeC1hY2Nlc3NpYmlsaXR5LWZvY3VzLWJvcmRlci1hY2NlbnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZGF0YS5idXR0b25zLmFkZC5hY3Rpb24oJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkYXRhLmJ1dHRvbnMuYWRkLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVdPVwiZGF0YS5idXR0b25zLmFkZC50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImR4cmQtc3ZnLW9wZXJhdGlvbnMtYWRkXCIgaWNvbkNsYXNzPVwiZHgtaW1hZ2UtYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJkYXRhLmJ1dHRvbnMuYWRkLnRleHRcIj48L2R4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1idXR0b24gKm5nSWY9XCJkYXRhLmJ1dHRvbnMuZGVsZXRlLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHgtY29sbGVjdGlvbmVkaXRvci1hY3Rpb24gZHgtYWNjZXNzaWJpbGl0eS1mb2N1cy1ib3JkZXItYWNjZW50ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImRhdGEuYnV0dG9ucy5kZWxldGUuYWN0aW9uKCRldmVudClcIiBbZGlzYWJsZWRdPVwiZGF0YS5idXR0b25zLmRlbGV0ZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cImRhdGEuYnV0dG9ucy5kZWxldGUudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkeHJkLXN2Zy1vcGVyYXRpb25zLXJlbW92ZVwiIGljb25DbGFzcz1cImR4LWltYWdlLXJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiZGF0YS5idXR0b25zLmRlbGV0ZS50ZXh0XCI+PC9keC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiISFkYXRhLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWhlYWRlci10ZXh0IGR4ZC10ZXh0LXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdF09XCJkYXRhLnBhZGRpbmcgKyAncHgnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhhLXRlbXBsYXRlIGNsYXNzPVwiZHgtY29sbGFwc2luZy1pbWFnZSBkeHJkLWRpc3BsYXktaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZT1cImR4cmQtc3ZnLWNvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmR4LWltYWdlLWV4cGFuZGVkXT1cIiFkYXRhLmNvbGxhcHNlZCBcIj48L2R4YS10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1ncm91cC1oZWFkZXItZm9udCBkeGQtdGV4dC1wcmltYXJ5IGR4cmQtZGlzcGxheS1pbmxpbmUtYmxvY2tcIiBbYXR0ci50aXRsZV09XCJkYXRhLmRpc3BsYXlOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLmRpc3BsYXlOYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgcm9sZT1cImdyb3VwXCIgY2xhc3M9XCJkeC1hY2NvcmRpb24tY29udGVudFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhZGF0YS5hbHdheXNTaG93ICYmIGRhdGEuY29sbGFwc2VkID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZGF0YS5oZWFkZXJJZFwiIFthdHRyLmlkXT1cImRhdGEuY29udGVudElkXCI+XG4gICAgICAgICAgICA8ZHgtc2Nyb2xsLXZpZXcgW2hpZGRlbl09XCJkYXRhLmRpc2FibGVkXCIgc2hvd1Njcm9sbGJhcj1cIm9uSG92ZXJcIiBbZGlzYWJsZWRdPVwiIWRhdGEuc2hvd1Njcm9sbFwiXG4gICAgICAgICAgICAgICAgW3VzZU5hdGl2ZV09XCJmYWxzZVwiIFtzY3JvbGxCeVRodW1iXT1cInRydWVcIiAob25Jbml0aWFsaXplZCk9XCJvblNjcm9sbFZpZXdJbml0aWFsaXplZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEudmFsdWVzLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHgtY29sbGVjdGlvbmVkaXRvci1lbXB0eSBkeGQtZW1wdHktYXJlYS1wbGFjZWhvbGRlci10ZXh0LWNvbG9yIGR4ZC10ZXh0LWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWVtcHR5LXRleHRcIj57e2RhdGEuZW1wdHlBcmVhVGV4dH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhLnZhbHVlcy5sZW5ndGggIT09IDBcIiBjbGFzcz1cImR4LWNvbGxlY3Rpb25lZGl0b3ItaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgZGF0YS52YWx1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWl0ZW0tY29udGFpbmVyIGR4ZC1idXR0b24tYmFjay1jb2xvciBkeGQtc3RhdGUtbm9ybWFsIGR4ZC1iYWNrLWhpZ2hsaWdodGVkIGR4LWFjY2Vzc2liaWxpdHktbGlzdC1pdGVtIGR4LWFjY2Vzc2liaWxpdHktZm9jdXMtYm9yZGVyLWFjY2VudGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidmFsdWUuc2VsZWN0ZWRcIiBbZHhBY3Rpb25Nb2RlbF09XCJ2YWx1ZVwiIFtkeEFjdGlvbl09XCJ2YWx1ZS5zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmR4ZC1zdGF0ZS1zZWxlY3RlZF09XCJ2YWx1ZS5zZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWNvbGxlY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGUsIGNvbnRleHQ6IHsgZGF0YTogdmFsdWUgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9keC1zY3JvbGwtdmlldz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbmVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9keC1yZXBvcnQtdmlld2VyL2NvbXBvbmVudHMvYW5hbHl0aWNzL3Byb3BlcnRpZXMvY29sbGVjdGlvbmVkaXRvci9jb2xsZWN0aW9uZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2R4LXJlcG9ydC12aWV3ZXIvY29tcG9uZW50cy9hbmFseXRpY3MvcHJvcGVydGllcy9jb2xsZWN0aW9uZWRpdG9yL2NvbGxlY3Rpb25lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFrQyxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUseUJBQXlCLEVBQXdELE1BQU0sMkVBQTJFLENBQUM7QUFDNUssT0FBTyxFQUFzQixxQkFBcUIsRUFBRSxNQUFNLDRFQUE0RSxDQUFDOzs7Ozs7OztBQU12SSxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLFlBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO0lBQ3pELENBQUM7SUFDRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLEdBQUksSUFBSSxDQUFDLElBQXVEO2FBQy9FLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBSTtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7dUhBdEJRLHlCQUF5QjsyR0FBekIseUJBQXlCLDBJQ1J0QyxxcktBb0VNOzRGRDVETyx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0ksc0JBQXNCO3dHQUlqQixPQUFPO3NCQUFyQixLQUFLO3VCQUFDLE1BQU07Z0JBQ2EsZUFBZTtzQkFBeEMsS0FBSzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRWRpdG9yVmlld01vZGVsLCBJQ29sbGVjdGlvbkVkaXRvck9wdGlvbnMsIElDb2xsZWN0aW9uRWRpdG9yVmlld01vZGVsIH0gZnJvbSAnQGRldmV4cHJlc3MvYW5hbHl0aWNzLWNvcmUvcHJvcGVydHktZ3JpZC93aWRnZXRzL2NvbGxlY3Rpb25lZGl0b3IvX2VkaXRvcic7XG5pbXBvcnQgeyBFdmVudE1hbmFnZXJIb2xkZXIsIFZpZXdNb2RlbENoYW5nZWRFdmVudCB9IGZyb20gJ0BkZXZleHByZXNzL2FuYWx5dGljcy1jb3JlL3NlcmlhbGl6ZXIvbmF0aXZlL3ZpZXdNb2RlbHMvdmlld01vZGVsR2VuZXJhdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkeGEtY29sbGVjdGlvbmVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbGxlY3Rpb25lZGl0b3IuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb25FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCdkYXRhJykgb3B0aW9ucyE6IElDb2xsZWN0aW9uRWRpdG9yT3B0aW9ucztcbiAgICBASW5wdXQoJ2NvbnRlbnRUZW1wbGF0ZScpIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGRhdGE6IElDb2xsZWN0aW9uRWRpdG9yVmlld01vZGVsO1xuICAgIHByaXZhdGUgX3ZtU3Vic2NyaXB0aW9uOiAoKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgX21vZGVsOiBDb2xsZWN0aW9uRWRpdG9yVmlld01vZGVsO1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdm1TdWJzY3JpcHRpb24gJiYgdGhpcy5fdm1TdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5fbW9kZWwuZGlzcG9zZSgpO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBuZXcgQ29sbGVjdGlvbkVkaXRvclZpZXdNb2RlbCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLl9tb2RlbC5nZXRWaWV3TW9kZWwoKTtcbiAgICAgICAgdGhpcy5fdm1TdWJzY3JpcHRpb24gPSAodGhpcy5kYXRhIGFzIEV2ZW50TWFuYWdlckhvbGRlcjxJQ29sbGVjdGlvbkVkaXRvclZpZXdNb2RlbD4pXG4gICAgICAgICAgICAuX3ZpZXdNb2RlbEV2ZW50cy5vbihWaWV3TW9kZWxDaGFuZ2VkRXZlbnQsICgpID0+IHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKTtcbiAgICB9XG5cbiAgICBvblNjcm9sbFZpZXdJbml0aWFsaXplZChhcmdzKTogdm9pZCB7XG4gICAgICAgIGFyZ3MuY29tcG9uZW50Lm9wdGlvbigndXNlS2V5Ym9hcmQnLCBmYWxzZSk7XG4gICAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZHgtY29sbGVjdGlvbmVkaXRvclwiPlxuICAgIDxkaXYgW2R4YUFjY29yZGlvbl09XCJkYXRhXCIgW2R4TXV0YXRpb25PYnNlcnZlcl09XCJkYXRhLmtleWJvYXJkSGVscGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWhlYWRlciBkeC1hY2NvcmRpb24taGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZWRpdG9yLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgcm9sZT1cInRyZWVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkeC1maWVsZCBkeC1hY2Nlc3NpYmlsaXR5LWZvY3VzLWJvcmRlci1hY2NlbnRlZCBkeHJkLWFjY2Vzc2liaWxpdHktYWNjb3JkaW9uLXRyaWdnZXJcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImRhdGEuYWx3YXlzU2hvdyB8fCAhZGF0YS5jb2xsYXBzZWQgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImRhdGEuY29udGVudElkXCIgW2F0dHIuaWRdPVwiZGF0YS5oZWFkZXJJZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5zaG93QnV0dG9uc1wiIGNsYXNzPVwiZHgtY29sbGVjdGlvbmVkaXRvci1hY3Rpb25zLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1idXR0b24gKm5nSWY9XCJkYXRhLmJ1dHRvbnMudXAudmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWFjdGlvbiBkeC1hY2Nlc3NpYmlsaXR5LWZvY3VzLWJvcmRlci1hY2NlbnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZGF0YS5idXR0b25zLnVwLmFjdGlvbigkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRhdGEuYnV0dG9ucy51cC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImR4cmQtc3ZnLW9wZXJhdGlvbnMtbW92ZXVwXCIgaWNvbkNsYXNzPVwiZHgtaW1hZ2UtbW92ZXVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVdPVwiZGF0YS5idXR0b25zLnVwLnRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJkYXRhLmJ1dHRvbnMudXAudGV4dFwiPjwvZHgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWJ1dHRvbiAqbmdJZj1cImRhdGEuYnV0dG9ucy5kb3duLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHgtY29sbGVjdGlvbmVkaXRvci1hY3Rpb24gZHgtYWNjZXNzaWJpbGl0eS1mb2N1cy1ib3JkZXItYWNjZW50ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImRhdGEuYnV0dG9ucy5kb3duLmFjdGlvbigkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRhdGEuYnV0dG9ucy5kb3duLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZHhyZC1zdmctb3BlcmF0aW9ucy1tb3ZlZG93blwiIGljb25DbGFzcz1cImR4LWltYWdlLW1vdmVkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVdPVwiZGF0YS5idXR0b25zLmRvd24udGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImRhdGEuYnV0dG9ucy5kb3duLnRleHRcIj48L2R4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWFjdGlvbi1zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1idXR0b24gKm5nSWY9XCJkYXRhLmJ1dHRvbnMuYWRkLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHgtY29sbGVjdGlvbmVkaXRvci1hY3Rpb24gZHgtYWNjZXNzaWJpbGl0eS1mb2N1cy1ib3JkZXItYWNjZW50ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImRhdGEuYnV0dG9ucy5hZGQuYWN0aW9uKCRldmVudClcIiBbZGlzYWJsZWRdPVwiZGF0YS5idXR0b25zLmFkZC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cImRhdGEuYnV0dG9ucy5hZGQudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkeHJkLXN2Zy1vcGVyYXRpb25zLWFkZFwiIGljb25DbGFzcz1cImR4LWltYWdlLWFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiZGF0YS5idXR0b25zLmFkZC50ZXh0XCI+PC9keC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtYnV0dG9uICpuZ0lmPVwiZGF0YS5idXR0b25zLmRlbGV0ZS52aXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImR4LWNvbGxlY3Rpb25lZGl0b3ItYWN0aW9uIGR4LWFjY2Vzc2liaWxpdHktZm9jdXMtYm9yZGVyLWFjY2VudGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJkYXRhLmJ1dHRvbnMuZGVsZXRlLmFjdGlvbigkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRhdGEuYnV0dG9ucy5kZWxldGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJkYXRhLmJ1dHRvbnMuZGVsZXRlLnRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZHhyZC1zdmctb3BlcmF0aW9ucy1yZW1vdmVcIiBpY29uQ2xhc3M9XCJkeC1pbWFnZS1yZW1vdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImRhdGEuYnV0dG9ucy5kZWxldGUudGV4dFwiPjwvZHgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiEhZGF0YS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZHgtY29sbGVjdGlvbmVkaXRvci1oZWFkZXItdGV4dCBkeGQtdGV4dC1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWxlZnRdPVwiZGF0YS5wYWRkaW5nICsgJ3B4J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4YS10ZW1wbGF0ZSBjbGFzcz1cImR4LWNvbGxhcHNpbmctaW1hZ2UgZHhyZC1kaXNwbGF5LWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU9XCJkeHJkLXN2Zy1jb2xsYXBzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5keC1pbWFnZS1leHBhbmRlZF09XCIhZGF0YS5jb2xsYXBzZWQgXCI+PC9keGEtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZ3JvdXAtaGVhZGVyLWZvbnQgZHhkLXRleHQtcHJpbWFyeSBkeHJkLWRpc3BsYXktaW5saW5lLWJsb2NrXCIgW2F0dHIudGl0bGVdPVwiZGF0YS5kaXNwbGF5TmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5kaXNwbGF5TmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHJvbGU9XCJncm91cFwiIGNsYXNzPVwiZHgtYWNjb3JkaW9uLWNvbnRlbnRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWRhdGEuYWx3YXlzU2hvdyAmJiBkYXRhLmNvbGxhcHNlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImRhdGEuaGVhZGVySWRcIiBbYXR0ci5pZF09XCJkYXRhLmNvbnRlbnRJZFwiPlxuICAgICAgICAgICAgPGR4LXNjcm9sbC12aWV3IFtoaWRkZW5dPVwiZGF0YS5kaXNhYmxlZFwiIHNob3dTY3JvbGxiYXI9XCJvbkhvdmVyXCIgW2Rpc2FibGVkXT1cIiFkYXRhLnNob3dTY3JvbGxcIlxuICAgICAgICAgICAgICAgIFt1c2VOYXRpdmVdPVwiZmFsc2VcIiBbc2Nyb2xsQnlUaHVtYl09XCJ0cnVlXCIgKG9uSW5pdGlhbGl6ZWQpPVwib25TY3JvbGxWaWV3SW5pdGlhbGl6ZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhLnZhbHVlcy5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImR4LWNvbGxlY3Rpb25lZGl0b3ItZW1wdHkgZHhkLWVtcHR5LWFyZWEtcGxhY2Vob2xkZXItdGV4dC1jb2xvciBkeGQtdGV4dC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHgtY29sbGVjdGlvbmVkaXRvci1lbXB0eS10ZXh0XCI+e3tkYXRhLmVtcHR5QXJlYVRleHR9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS52YWx1ZXMubGVuZ3RoICE9PSAwXCIgY2xhc3M9XCJkeC1jb2xsZWN0aW9uZWRpdG9yLWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZhbHVlIG9mIGRhdGEudmFsdWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHgtY29sbGVjdGlvbmVkaXRvci1pdGVtLWNvbnRhaW5lciBkeGQtYnV0dG9uLWJhY2stY29sb3IgZHhkLXN0YXRlLW5vcm1hbCBkeGQtYmFjay1oaWdobGlnaHRlZCBkeC1hY2Nlc3NpYmlsaXR5LWxpc3QtaXRlbSBkeC1hY2Nlc3NpYmlsaXR5LWZvY3VzLWJvcmRlci1hY2NlbnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInZhbHVlLnNlbGVjdGVkXCIgW2R4QWN0aW9uTW9kZWxdPVwidmFsdWVcIiBbZHhBY3Rpb25dPVwidmFsdWUuc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5keGQtc3RhdGUtc2VsZWN0ZWRdPVwidmFsdWUuc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1jb2xsZWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlLCBjb250ZXh0OiB7IGRhdGE6IHZhbHVlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZHgtc2Nyb2xsLXZpZXc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
@@ -2,52 +2,61 @@ import { Component, Input } from '@angular/core';
2
2
  import { createDateRangeEditor } from 'devexpress-reporting/viewer/widgets/dateRange/dateRangeEditor';
3
3
  import { generateIconTemplate } from '@devexpress/analytics-core/core/widgets/_generateIconTemplate';
4
4
  import { KeyboardEnum } from '@devexpress/analytics-core/property-grid/widgets/internal/_utils';
5
+ import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "devextreme-angular/ui/nested";
7
8
  import * as i2 from "devextreme-angular";
8
9
  import * as i3 from "../../../analytics/template/template.component";
9
10
  export class DateRangeComponent {
10
- constructor(_currentElement) {
11
+ constructor(_currentElement, _changeDetectorRef) {
11
12
  this._currentElement = _currentElement;
13
+ this._changeDetectorRef = _changeDetectorRef;
12
14
  }
13
15
  ngOnDestroy() {
16
+ this._vmSubscription && this._vmSubscription();
14
17
  this._editor.dispose();
15
18
  }
16
19
  ngOnInit() {
17
20
  this._editor = createDateRangeEditor(this.options, this._currentElement.nativeElement, this.options);
18
21
  this.data = this._editor.getViewModel();
22
+ this._vmSubscription = this.data._viewModelEvents.on(ViewModelChangedEvent, () => {
23
+ this._changeDetectorRef.markForCheck();
24
+ });
19
25
  this.data.cacheElement(this._currentElement.nativeElement);
26
+ const processClickEvent = () => {
27
+ this.data.showPopup();
28
+ this._changeDetectorRef.markForCheck();
29
+ };
20
30
  const processKeyBoardEvent = (e) => {
21
31
  if (e.key == KeyboardEnum.Enter || (e.key == KeyboardEnum.ArrowDown && e.altKey)) {
22
32
  this.data.showPopup();
33
+ this._changeDetectorRef.markForCheck();
23
34
  }
24
35
  };
25
36
  this.subscribeToEvents = (event) => {
26
37
  this.textBoxInputElement = event.element.querySelector('.dx-texteditor-input');
27
- this.textBoxInputElement?.addEventListener('click', this.data.showPopup);
38
+ this.textBoxInputElement?.addEventListener('click', processClickEvent);
28
39
  this.textBoxInputElement?.addEventListener('keydown', processKeyBoardEvent);
29
40
  };
30
41
  this.unsubscribeFromEvents = () => {
31
- this.textBoxInputElement?.removeEventListener('click', this.data.showPopup);
42
+ this.textBoxInputElement?.removeEventListener('click', processClickEvent);
32
43
  this.textBoxInputElement?.removeEventListener('keydown', processKeyBoardEvent);
33
44
  };
34
45
  this.showPopupOptions = {
35
46
  disabled: false,
36
- onClick: (e) => {
37
- this.data.showPopup();
38
- },
47
+ onClick: processClickEvent,
39
48
  template: generateIconTemplate('dx-ellipsis-image'),
40
49
  icon: 'dxrd-svg-ellipsis'
41
50
  };
42
51
  }
43
52
  }
44
- DateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateRangeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
53
+ DateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateRangeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
45
54
  DateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateRangeComponent, selector: "dxv-date-range", inputs: { options: ["data", "options"] }, ngImport: i0, template: "<div class=\"dxrv-daterange-editor\">\n <dx-text-box \n [value]=\"data.displayValue\"\n [readOnly]=\"true\"\n (onContentReady)=\"subscribeToEvents($event)\" (onDisposing)=\"unsubscribeFromEvents()\"\n >\n <dxi-button\n name=\"showPopup\"\n location=\"after\"\n [options]=\"showPopupOptions\"\n ></dxi-button>\n </dx-text-box>\n <dxa-template [template]=\"data.popupTemplate\" [data]=\"data.popupModel\"></dxa-template>\n</div>", dependencies: [{ kind: "component", type: i1.DxiButtonComponent, selector: "dxi-button", inputs: ["location", "name", "options", "cssClass", "disabled", "hint", "icon", "onClick", "template", "text", "visible"] }, { kind: "component", type: i2.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i3.TemplateComponent, selector: "dxa-template", inputs: ["data", "template"] }] });
46
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateRangeComponent, decorators: [{
47
56
  type: Component,
48
57
  args: [{ selector: 'dxv-date-range', template: "<div class=\"dxrv-daterange-editor\">\n <dx-text-box \n [value]=\"data.displayValue\"\n [readOnly]=\"true\"\n (onContentReady)=\"subscribeToEvents($event)\" (onDisposing)=\"unsubscribeFromEvents()\"\n >\n <dxi-button\n name=\"showPopup\"\n location=\"after\"\n [options]=\"showPopupOptions\"\n ></dxi-button>\n </dx-text-box>\n <dxa-template [template]=\"data.popupTemplate\" [data]=\"data.popupModel\"></dxa-template>\n</div>" }]
49
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
58
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
50
59
  type: Input,
51
60
  args: ['data']
52
61
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9keC1yZXBvcnQtdmlld2VyL2NvbXBvbmVudHMvcmVwb3J0aW5nL3BhcmFtZXRlcnNwYW5lbC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZHgtcmVwb3J0LXZpZXdlci9jb21wb25lbnRzL3JlcG9ydGluZy9wYXJhbWV0ZXJzcGFuZWwvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUUscUJBQXFCLEVBQTRDLE1BQU0sK0RBQStELENBQUM7QUFFaEosT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtFQUFrRSxDQUFDOzs7OztBQU9oRyxNQUFNLE9BQU8sa0JBQWtCO0lBUzNCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFHLENBQUM7SUFDeEQsV0FBVztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNELFFBQVE7UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQTJCLENBQUMsQ0FBQztRQUN6SCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRCxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBZ0IsRUFBRSxFQUFFO1lBQzlDLElBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUN6QjtRQUNMLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25GLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRztZQUNwQixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUIsQ0FBQztZQUNELFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQztZQUNuRCxJQUFJLEVBQUUsbUJBQW1CO1NBQ3JCLENBQUM7SUFDYixDQUFDOztnSEF2Q1Esa0JBQWtCO29HQUFsQixrQkFBa0IsZ0dDWi9CLDBmQWFNOzRGRERPLGtCQUFrQjtrQkFKOUIsU0FBUzsrQkFDSSxnQkFBZ0I7aUdBSVgsT0FBTztzQkFBckIsS0FBSzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3BlcnRpZXMgfSBmcm9tICdkZXZleHRyZW1lL3VpL2J1dHRvbic7XG5pbXBvcnQgeyBjcmVhdGVEYXRlUmFuZ2VFZGl0b3IsIERhdGVSYW5nZUVkaXRvciwgSURhdGVSYW5nZUVkaXRvck9wdGlvbnMgfSBmcm9tICdkZXZleHByZXNzLXJlcG9ydGluZy92aWV3ZXIvd2lkZ2V0cy9kYXRlUmFuZ2UvZGF0ZVJhbmdlRWRpdG9yJztcbmltcG9ydCB7IElEYXRlUmFuZ2VFZGl0b3JWaWV3TW9kZWwgfSBmcm9tICdkZXZleHByZXNzLXJlcG9ydGluZy92aWV3ZXIvd2lkZ2V0cy9kYXRlUmFuZ2UvZGF0ZVJhbmdlRWRpdG9yLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBnZW5lcmF0ZUljb25UZW1wbGF0ZSB9IGZyb20gJ0BkZXZleHByZXNzL2FuYWx5dGljcy1jb3JlL2NvcmUvd2lkZ2V0cy9fZ2VuZXJhdGVJY29uVGVtcGxhdGUnO1xuaW1wb3J0IHsgS2V5Ym9hcmRFbnVtIH0gZnJvbSAnQGRldmV4cHJlc3MvYW5hbHl0aWNzLWNvcmUvcHJvcGVydHktZ3JpZC93aWRnZXRzL2ludGVybmFsL191dGlscyc7XG5pbXBvcnQgeyBJRWRpdG9yVmlld01vZGVsIH0gZnJvbSAnQGRldmV4cHJlc3MvYW5hbHl0aWNzLWNvcmUvYW5hbHl0aWNzLXdpZGdldHMtbmF0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkeHYtZGF0ZS1yYW5nZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoJ2RhdGEnKSBvcHRpb25zOiBJRGF0ZVJhbmdlRWRpdG9yT3B0aW9ucztcbiAgICBwcml2YXRlIF9lZGl0b3I6IERhdGVSYW5nZUVkaXRvcjtcblxuICAgIGRhdGE6IElEYXRlUmFuZ2VFZGl0b3JWaWV3TW9kZWw7XG4gICAgc2hvd1BvcHVwT3B0aW9uczogUHJvcGVydGllcztcbiAgICB0ZXh0Qm94SW5wdXRFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgICBzdWJzY3JpYmVUb0V2ZW50czogKGV2ZW50KSA9PiB2b2lkO1xuICAgIHVuc3Vic2NyaWJlRnJvbUV2ZW50czogKCkgPT4gdm9pZDtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jdXJyZW50RWxlbWVudDogRWxlbWVudFJlZjxhbnk+KSB7fVxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yID0gY3JlYXRlRGF0ZVJhbmdlRWRpdG9yKHRoaXMub3B0aW9ucywgdGhpcy5fY3VycmVudEVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5vcHRpb25zIGFzIElFZGl0b3JWaWV3TW9kZWwpO1xuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLl9lZGl0b3IuZ2V0Vmlld01vZGVsKCk7XG4gICAgICAgIHRoaXMuZGF0YS5jYWNoZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NLZXlCb2FyZEV2ZW50ID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmKGUua2V5ID09IEtleWJvYXJkRW51bS5FbnRlciB8fCAoZS5rZXkgPT0gS2V5Ym9hcmRFbnVtLkFycm93RG93biAmJiBlLmFsdEtleSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuc2hvd1BvcHVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9FdmVudHMgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGV4dEJveElucHV0RWxlbWVudCA9IGV2ZW50LmVsZW1lbnQucXVlcnlTZWxlY3RvcignLmR4LXRleHRlZGl0b3ItaW5wdXQnKTtcbiAgICAgICAgICAgIHRoaXMudGV4dEJveElucHV0RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmRhdGEuc2hvd1BvcHVwKTtcbiAgICAgICAgICAgIHRoaXMudGV4dEJveElucHV0RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHByb2Nlc3NLZXlCb2FyZEV2ZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUZyb21FdmVudHMgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRleHRCb3hJbnB1dEVsZW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kYXRhLnNob3dQb3B1cCk7XG4gICAgICAgICAgICB0aGlzLnRleHRCb3hJbnB1dEVsZW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBwcm9jZXNzS2V5Qm9hcmRFdmVudCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2hvd1BvcHVwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnNob3dQb3B1cCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBnZW5lcmF0ZUljb25UZW1wbGF0ZSgnZHgtZWxsaXBzaXMtaW1hZ2UnKSxcbiAgICAgICAgICAgIGljb246ICdkeHJkLXN2Zy1lbGxpcHNpcydcbiAgICAgICAgfSBhcyBhbnk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImR4cnYtZGF0ZXJhbmdlLWVkaXRvclwiPlxuICAgIDxkeC10ZXh0LWJveCBcbiAgICAgICAgW3ZhbHVlXT1cImRhdGEuZGlzcGxheVZhbHVlXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgICAob25Db250ZW50UmVhZHkpPVwic3Vic2NyaWJlVG9FdmVudHMoJGV2ZW50KVwiIChvbkRpc3Bvc2luZyk9XCJ1bnN1YnNjcmliZUZyb21FdmVudHMoKVwiXG4gICAgICAgID5cbiAgICAgICAgPGR4aS1idXR0b25cbiAgICAgICAgICBuYW1lPVwic2hvd1BvcHVwXCJcbiAgICAgICAgICBsb2NhdGlvbj1cImFmdGVyXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJzaG93UG9wdXBPcHRpb25zXCJcbiAgICAgICAgPjwvZHhpLWJ1dHRvbj5cbiAgICA8L2R4LXRleHQtYm94PlxuICAgIDxkeGEtdGVtcGxhdGUgW3RlbXBsYXRlXT1cImRhdGEucG9wdXBUZW1wbGF0ZVwiIFtkYXRhXT1cImRhdGEucG9wdXBNb2RlbFwiPjwvZHhhLXRlbXBsYXRlPlxuPC9kaXY+Il19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9keC1yZXBvcnQtdmlld2VyL2NvbXBvbmVudHMvcmVwb3J0aW5nL3BhcmFtZXRlcnNwYW5lbC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZHgtcmVwb3J0LXZpZXdlci9jb21wb25lbnRzL3JlcG9ydGluZy9wYXJhbWV0ZXJzcGFuZWwvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFbkcsT0FBTyxFQUFFLHFCQUFxQixFQUE0QyxNQUFNLCtEQUErRCxDQUFDO0FBRWhKLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUVoRyxPQUFPLEVBQXNCLHFCQUFxQixFQUFFLE1BQU0sNEVBQTRFLENBQUM7Ozs7O0FBTXZJLE1BQU0sT0FBTyxrQkFBa0I7SUFVM0IsWUFBb0IsZUFBZ0MsRUFBVSxrQkFBcUM7UUFBL0Usb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtJQUFHLENBQUM7SUFDdkcsV0FBVztRQUNQLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNELFFBQVE7UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQTJCLENBQUMsQ0FBQztRQUN6SCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBSSxJQUFJLENBQUMsSUFBc0QsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1lBQ2hJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0QsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQWdCLEVBQUUsRUFBRTtZQUM5QyxJQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUMxQztRQUNMLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25GLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRztZQUNwQixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsUUFBUSxFQUFFLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDO1lBQ25ELElBQUksRUFBRSxtQkFBbUI7U0FDckIsQ0FBQztJQUNiLENBQUM7O2dIQS9DUSxrQkFBa0I7b0dBQWxCLGtCQUFrQixnR0NiL0IsMGZBYU07NEZEQU8sa0JBQWtCO2tCQUo5QixTQUFTOytCQUNJLGdCQUFnQjtpSUFJWCxPQUFPO3NCQUFyQixLQUFLO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3BlcnRpZXMgfSBmcm9tICdkZXZleHRyZW1lL3VpL2J1dHRvbic7XG5pbXBvcnQgeyBjcmVhdGVEYXRlUmFuZ2VFZGl0b3IsIERhdGVSYW5nZUVkaXRvciwgSURhdGVSYW5nZUVkaXRvck9wdGlvbnMgfSBmcm9tICdkZXZleHByZXNzLXJlcG9ydGluZy92aWV3ZXIvd2lkZ2V0cy9kYXRlUmFuZ2UvZGF0ZVJhbmdlRWRpdG9yJztcbmltcG9ydCB7IElEYXRlUmFuZ2VFZGl0b3JWaWV3TW9kZWwgfSBmcm9tICdkZXZleHByZXNzLXJlcG9ydGluZy92aWV3ZXIvd2lkZ2V0cy9kYXRlUmFuZ2UvZGF0ZVJhbmdlRWRpdG9yLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBnZW5lcmF0ZUljb25UZW1wbGF0ZSB9IGZyb20gJ0BkZXZleHByZXNzL2FuYWx5dGljcy1jb3JlL2NvcmUvd2lkZ2V0cy9fZ2VuZXJhdGVJY29uVGVtcGxhdGUnO1xuaW1wb3J0IHsgS2V5Ym9hcmRFbnVtIH0gZnJvbSAnQGRldmV4cHJlc3MvYW5hbHl0aWNzLWNvcmUvcHJvcGVydHktZ3JpZC93aWRnZXRzL2ludGVybmFsL191dGlscyc7XG5pbXBvcnQgeyBJRWRpdG9yVmlld01vZGVsIH0gZnJvbSAnQGRldmV4cHJlc3MvYW5hbHl0aWNzLWNvcmUvYW5hbHl0aWNzLXdpZGdldHMtbmF0aXZlJztcbmltcG9ydCB7IEV2ZW50TWFuYWdlckhvbGRlciwgVmlld01vZGVsQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGRldmV4cHJlc3MvYW5hbHl0aWNzLWNvcmUvc2VyaWFsaXplci9uYXRpdmUvdmlld01vZGVscy92aWV3TW9kZWxHZW5lcmF0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2R4di1kYXRlLXJhbmdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgnZGF0YScpIG9wdGlvbnM6IElEYXRlUmFuZ2VFZGl0b3JPcHRpb25zO1xuICAgIHByaXZhdGUgX2VkaXRvcjogRGF0ZVJhbmdlRWRpdG9yO1xuXG4gICAgZGF0YTogSURhdGVSYW5nZUVkaXRvclZpZXdNb2RlbDtcbiAgICBwcml2YXRlIF92bVN1YnNjcmlwdGlvbjogKCkgPT4gdm9pZDtcbiAgICBzaG93UG9wdXBPcHRpb25zOiBQcm9wZXJ0aWVzO1xuICAgIHRleHRCb3hJbnB1dEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIHN1YnNjcmliZVRvRXZlbnRzOiAoZXZlbnQpID0+IHZvaWQ7XG4gICAgdW5zdWJzY3JpYmVGcm9tRXZlbnRzOiAoKSA9PiB2b2lkO1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2N1cnJlbnRFbGVtZW50OiBFbGVtZW50UmVmPGFueT4sIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdm1TdWJzY3JpcHRpb24gJiYgdGhpcy5fdm1TdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VkaXRvciA9IGNyZWF0ZURhdGVSYW5nZUVkaXRvcih0aGlzLm9wdGlvbnMsIHRoaXMuX2N1cnJlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMub3B0aW9ucyBhcyBJRWRpdG9yVmlld01vZGVsKTtcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5fZWRpdG9yLmdldFZpZXdNb2RlbCgpO1xuICAgICAgICB0aGlzLl92bVN1YnNjcmlwdGlvbiA9ICh0aGlzLmRhdGEgYXMgRXZlbnRNYW5hZ2VySG9sZGVyPElEYXRlUmFuZ2VFZGl0b3JWaWV3TW9kZWw+KS5fdmlld01vZGVsRXZlbnRzLm9uKFZpZXdNb2RlbENoYW5nZWRFdmVudCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRhdGEuY2FjaGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBjb25zdCBwcm9jZXNzQ2xpY2tFdmVudCA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5zaG93UG9wdXAoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBwcm9jZXNzS2V5Qm9hcmRFdmVudCA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZihlLmtleSA9PSBLZXlib2FyZEVudW0uRW50ZXIgfHwgKGUua2V5ID09IEtleWJvYXJkRW51bS5BcnJvd0Rvd24gJiYgZS5hbHRLZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnNob3dQb3B1cCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnN1YnNjcmliZVRvRXZlbnRzID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRleHRCb3hJbnB1dEVsZW1lbnQgPSBldmVudC5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5keC10ZXh0ZWRpdG9yLWlucHV0Jyk7XG4gICAgICAgICAgICB0aGlzLnRleHRCb3hJbnB1dEVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcHJvY2Vzc0NsaWNrRXZlbnQpO1xuICAgICAgICAgICAgdGhpcy50ZXh0Qm94SW5wdXRFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgcHJvY2Vzc0tleUJvYXJkRXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlRnJvbUV2ZW50cyA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGV4dEJveElucHV0RWxlbWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBwcm9jZXNzQ2xpY2tFdmVudCk7XG4gICAgICAgICAgICB0aGlzLnRleHRCb3hJbnB1dEVsZW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBwcm9jZXNzS2V5Qm9hcmRFdmVudCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2hvd1BvcHVwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIG9uQ2xpY2s6IHByb2Nlc3NDbGlja0V2ZW50LFxuICAgICAgICAgICAgdGVtcGxhdGU6IGdlbmVyYXRlSWNvblRlbXBsYXRlKCdkeC1lbGxpcHNpcy1pbWFnZScpLFxuICAgICAgICAgICAgaWNvbjogJ2R4cmQtc3ZnLWVsbGlwc2lzJ1xuICAgICAgICB9IGFzIGFueTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHhydi1kYXRlcmFuZ2UtZWRpdG9yXCI+XG4gICAgPGR4LXRleHQtYm94IFxuICAgICAgICBbdmFsdWVdPVwiZGF0YS5kaXNwbGF5VmFsdWVcIlxuICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAgIChvbkNvbnRlbnRSZWFkeSk9XCJzdWJzY3JpYmVUb0V2ZW50cygkZXZlbnQpXCIgKG9uRGlzcG9zaW5nKT1cInVuc3Vic2NyaWJlRnJvbUV2ZW50cygpXCJcbiAgICAgICAgPlxuICAgICAgICA8ZHhpLWJ1dHRvblxuICAgICAgICAgIG5hbWU9XCJzaG93UG9wdXBcIlxuICAgICAgICAgIGxvY2F0aW9uPVwiYWZ0ZXJcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInNob3dQb3B1cE9wdGlvbnNcIlxuICAgICAgICA+PC9keGktYnV0dG9uPlxuICAgIDwvZHgtdGV4dC1ib3g+XG4gICAgPGR4YS10ZW1wbGF0ZSBbdGVtcGxhdGVdPVwiZGF0YS5wb3B1cFRlbXBsYXRlXCIgW2RhdGFdPVwiZGF0YS5wb3B1cE1vZGVsXCI+PC9keGEtdGVtcGxhdGU+XG48L2Rpdj4iXX0=
@@ -13,6 +13,7 @@ import '@devexpress/analytics-core/dx-analytics-core-svg-templates';
13
13
  import 'devexpress-reporting/dx-reporting-svg-templates';
14
14
  import { JSReportViewerBinding } from 'devexpress-reporting/viewer/binding/jsReportViewerBinding';
15
15
  import { AccessibilitySettings } from './utils/accessibility-settings';
16
+ import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator';
16
17
  import * as i0 from "@angular/core";
17
18
  import * as i1 from "./utils/accessibility-settings";
18
19
  import * as i2 from "@angular/common";
@@ -58,18 +59,26 @@ export class DxReportViewerComponent extends DxReportingComponent {
58
59
  super.ngAfterViewInit();
59
60
  this.model = this._binding.sender;
60
61
  this.viewModel = this.model.GetPreviewModel()?.getViewModel();
62
+ this._disposeViewModelChangedSubscription = this._subscribeToViewModelChanged(this.viewModel);
61
63
  this._disposableCallback = this.model.events.on('propertyChanged', (args) => {
62
64
  if (args.propertyName === 'previewModel') {
63
65
  this.viewModel = this.model.GetPreviewModel().getViewModel();
66
+ this._disposeViewModelChangedSubscription && this._disposeViewModelChangedSubscription();
67
+ this._disposeViewModelChangedSubscription = this._subscribeToViewModelChanged(this.viewModel);
64
68
  }
65
69
  });
66
70
  this._cd.detectChanges();
67
71
  }
68
72
  ngOnDestroy() {
69
73
  this._disposableCallback && this._disposableCallback();
74
+ this._disposeViewModelChangedSubscription && this._disposeViewModelChangedSubscription();
70
75
  this._binding.dispose();
71
76
  super.ngOnDestroy();
72
77
  }
78
+ _subscribeToViewModelChanged(viewModel) {
79
+ const eventHolder = viewModel;
80
+ return eventHolder?._viewModelEvents?.on(ViewModelChangedEvent, () => this._cd.markForCheck());
81
+ }
73
82
  get accessibilityCompliant() {
74
83
  return this._accessibilitySettings.accessibilityCompliant;
75
84
  }
@@ -140,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
140
149
  }], reportUrl: [{
141
150
  type: Input
142
151
  }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHgtcmVwb3J0LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9keC1yZXBvcnQtdmlld2VyL2R4LXJlcG9ydC12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZHgtcmVwb3J0LXZpZXdlci9keC1yZXBvcnQtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRXpJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU3RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV6RixPQUFPLDREQUE0RCxDQUFDO0FBQ3BFLE9BQU8saURBQWlELENBQUM7QUFDekQsT0FBTyxFQUF3QixxQkFBcUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBR3hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7O0FBUXZFLE1BQU0sT0FBTyx1QkFB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bkQsUUFBUTtzQkFGUCxLQUFLO2dCQU1GLHNCQUFzQjtzQkFGekIsS0FBSztnQkFXTiw2QkFBNkI7c0JBRjVCLEtBQUs7Z0JBS04sR0FBRztzQkFGRixLQUFLO2dCQUtGLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IER4UmVwb3J0aW5nQ29tcG9uZW50LCBfYm9vbGVhbkNvbnZlcnRlciwgX2lucHV0Q29udmVydGVyIH0gZnJvbSAnZGV2ZXhwcmVzcy1yZXBvcnRpbmctYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRHhSZXBvcnRWaWV3ZXJDYWxsYmFja3NDb21wb25lbnQgfSBmcm9tICcuL2R4cnYtY2FsbGJhY2tzJztcbmltcG9ydCB7IER4UmVwb3J0Vmlld2VyUmVxdWVzdE9wdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2R4cnYtcmVxdWVzdC1vcHRpb25zJztcblxuaW1wb3J0IHsgRHhSZXBvcnRWaWV3ZXJFeHBvcnRTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vZHhydi1leHBvcnQtc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IER4UmVwb3J0Vmlld2VyTW9iaWxlTW9kZVNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9keHJ2LW1vYmlsZS1tb2RlLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeFJlcG9ydFZpZXdlclByb2dyZXNzQmFyU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL2R4cnYtcHJvZ3Jlc3NiYXItc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IER4UmVwb3J0Vmlld2VyUmVtb3RlU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL2R4cnYtcmVtb3RlLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeFJlcG9ydFZpZXdlclRhYlBhbmVsU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL2R4cnYtdGFicGFuZWwtc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IER4UmVwb3J0Vmlld2VyU2VhcmNoU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL2R4cnYtc2VhcmNoLXNldHRpbmdzLmNvbXBvbmVudCc7XG5cbmltcG9ydCAnQGRldmV4cHJlc3MvYW5hbHl0aWNzLWNvcmUvZHgtYW5hbHl0aWNzLWNvcmUtc3ZnLXRlbXBsYXRlcyc7XG5pbXBvcnQgJ2RldmV4cHJlc3MtcmVwb3J0aW5nL2R4LXJlcG9ydGluZy1zdmctdGVtcGxhdGVzJztcbmltcG9ydCB7IElSZXBvcnRWaWV3ZXJPcHRpb25zLCBKU1JlcG9ydFZpZXdlckJpbmRpbmcgfSBmcm9tICdkZXZleHByZXNzLXJlcG9ydGluZy92aWV3ZXIvYmluZGluZy9qc1JlcG9ydFZpZXdlckJpbmRpbmcnO1xuaW1wb3J0IHsgSVByZXZpZXdWaWV3TW9kZWwsIFByZXZpZXdEaXNwb3NhYmxlTW9kZWwgfSBmcm9tICdkZXZleHByZXNzLXJlcG9ydGluZy92aWV3ZXIvaW50ZXJuYWwvX3ByZXZpZXdNb2RlbCc7XG5pbXBvcnQgeyBKU1JlcG9ydFZpZXdlciB9IGZyb20gJ2RldmV4cHJlc3MtcmVwb3J0aW5nL3ZpZXdlci9iaW5kaW5nL2pzUmVwb3J0Vmlld2VyJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlTZXR0aW5ncyB9IGZyb20gJy4vdXRpbHMvYWNjZXNzaWJpbGl0eS1zZXR0aW5ncyc7XG5cbiBAQ29tcG9uZW50KHtcbiAgICAgc2VsZWN0b3I6ICdkeC1yZXBvcnQtdmlld2VyJyxcbiAgICAgdGVtcGxhdGVVcmw6ICcuL2R4LXJlcG9ydC12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgICBzdHlsZVVybHM6IFtdLFxuICAgICBwcm92aWRlcnM6IFtBY2Nlc3NpYmlsaXR5U2V0dGluZ3NdXG4gfSlcbmV4cG9ydCBjbGFzcyBEeFJlcG9ydFZpZXdlckNvbXBvbmVudCBleHRlbmRzIER4UmVwb3J0aW5nQ29tcG9uZW50IHtcbiAgIHByaXZhdGUgX3JlcG9ydFVybDogc3RyaW5nID0gJyc7XG4gICBwcml2YXRlIF9kaXNwb3NhYmxlQ2FsbGJhY2s6ICgpID0+IHZvaWQ7XG4gICB2aWV3TW9kZWw6IElQcmV2aWV3Vmlld01vZGVsO1xuICAgbW9kZWw6IEpTUmVwb3J0Vmlld2VyO1xuICAgcHJvdGVjdGVkIF9iaW5kaW5nOiBKU1JlcG9ydFZpZXdlckJpbmRpbmc7XG4gICBiaW5kaW5nU2VuZGVyOiBKU1JlcG9ydFZpZXdlcjtcblxuICAgQENvbnRlbnRDaGlsZChEeFJlcG9ydFZpZXdlclJlcXVlc3RPcHRpb25zQ29tcG9uZW50KVxuICAgcmVxdWVzdE9wdGlvbnNDb21wb25lbnQ6IER4UmVwb3J0Vmlld2VyUmVxdWVzdE9wdGlvbnNDb21wb25lbnQ7XG5cbiAgIEBDb250ZW50Q2hpbGQoRHhSZXBvcnRWaWV3ZXJDYWxsYmFja3NDb21wb25lbnQpXG4gICBjYWxsYmFja3NDb21wb25lbnQ6IER4UmVwb3J0Vmlld2VyQ2FsbGJhY2tzQ29tcG9uZW50O1xuXG4gICBAQ29udGVudENoaWxkKER4UmVwb3J0Vmlld2VyTW9iaWxlTW9kZVNldHRpbmdzQ29tcG9uZW50KVxuICAgbW9iaWxlTW9kZVNldHRpbmdzQ29tcG9uZW50OiBEeFJlcG9ydFZpZXdlck1vYmlsZU1vZGVTZXR0aW5nc0NvbXBvbmVudDtcblxuICAgQENvbnRlbnRDaGlsZChEeFJlcG9ydFZpZXdlclJlbW90ZVNldHRpbmdzQ29tcG9uZW50KVxuICAgcmVtb3RlU2V0dGluZ3NDb21wb25lbnQ6IER4UmVwb3J0Vmlld2VyUmVtb3RlU2V0dGluZ3NDb21wb25lbnQ7XG5cbiAgIEBDb250ZW50Q2hpbGQoRHhSZXBvcnRWaWV3ZXJUYWJQYW5lbFNldHRpbmdzQ29tcG9uZW50KVxuICAgdGFiUGFuZWxTZXR0aW5nc0NvbXBvbmVudDogRHhSZXBvcnRWaWV3ZXJUYWJQYW5lbFNldHRpbmdzQ29tcG9uZW50O1xuXG4gICBAQ29udGVudENoaWxkKER4UmVwb3J0Vmlld2VyUHJvZ3Jlc3NCYXJTZXR0aW5nc0NvbXBvbmVudClcbiAgIHByb2dyZXNzQmFyU2V0dGluZ3NDb21wb25lbnQ6IER4UmVwb3J0Vmlld2VyUHJvZ3Jlc3NCYXJTZXR0aW5nc0NvbXBvbmVudDtcblxuICAgQENvbnRlbnRDaGlsZChEeFJlcG9ydFZpZXdlckV4cG9ydFNldHRpbmdzQ29tcG9uZW50KVxuICAgZXhwb3J0U2V0dGluZ3NDb21wb25lbnQ6IER4UmVwb3J0Vmlld2VyRXhwb3J0U2V0dGluZ3NDb21wb25lbnQ7XG5cbiAgIEBDb250ZW50Q2hpbGQoRHhSZXBvcnRWaWV3ZXJTZWFyY2hTZXR0aW5nc0NvbXBvbmVudClcbiAgIHNlYXJjaFNldHRpbmdzQ29tcG9uZW50OiBEeFJlcG9ydFZpZXdlclNlYXJjaFNldHRpbmdzQ29tcG9uZW50O1xuXG4gICBjb25zdHJ1Y3RvcihyZW5kZXJlcjogUmVuZGVyZXIyLCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsIHByaXZhdGUgX3ZpZXdlcjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9hY2Nlc3NpYmlsaXR5U2V0dGluZ3M6IEFjY2Vzc2liaWxpdHlTZXR0aW5ncykge1xuICAgICAgIHN1cGVyKHJlbmRlcmVyLCBwbGF0Zm9ybUlkKTtcbiAgIH1cblxuICAgZ2V0S29CaW5kaW5nKG9wdGlvbnM6IElSZXBvcnRWaWV3ZXJPcHRpb25zKTogSlNSZXBvcnRWaWV3ZXJCaW5kaW5nIHtcbiAgICAgICByZXR1cm4gbmV3IEpTUmVwb3J0Vmlld2VyQmluZGluZyhvcHRpb25zLCB0aGlzLmdldEV2ZW50UmFpc2VyKCksIGZhbHNlKTtcbiAgIH1cbiAgIGdldENhbGxiYWNrcygpOiBEeFJlcG9ydFZpZXdlckNhbGxiYWNrc0NvbXBvbmVudCB7XG4gICAgICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzQ29tcG9uZW50O1xuICAgfVxuICAgZ2V0Q29udHJvbE9wdGlvbnMoKTogSVJlcG9ydFZpZXdlck9wdGlvbnMge1xuICAgICAgIHJldHVybiB7XG4gICAgICAgICAgIHJ0bDogdGhpcy5ydGwsXG4gICAgICAgICAgIGRldmVsb3BtZW50TW9kZTogdGhpcy5kZXZlbG9wbWVudE1vZGUsXG4gICAgICAgICAgIGlzTW9iaWxlOiB0aGlzLmlzTW9iaWxlLFxuICAgICAgICAgICBhY2Nlc3NpYmlsaXR5Q29tcGxpYW50OiB0aGlzLmFjY2Vzc2liaWxpdHlDb21wbGlhbnQsXG4gICAgICAgICAgIHJlcG9ydFVybDogdGhpcy5fcmVwb3J0VXJsLFxuICAgICAgICAgICByZXF1ZXN0T3B0aW9uczogdGhpcy5yZXF1ZXN0T3B0aW9uc0NvbXBvbmVudCxcbiAgICAgICAgICAgbW9iaWxlTW9kZVNldHRpbmdzOiB0aGlzLm1vYmlsZU1vZGVTZXR0aW5nc0NvbXBvbmVudCxcbiAgICAgICAgICAgcmVtb3RlU2V0dGluZ3M6IHRoaXMucmVtb3RlU2V0dGluZ3NDb21wb25lbnQsXG4gICAgICAgICAgIHRhYlBhbmVsU2V0dGluZ3M6IHRoaXMudGFiUGFuZWxTZXR0aW5nc0NvbXBvbmVudCxcbiAgICAgICAgICAgcHJvZ3Jlc3NCYXJTZXR0aW5nczogdGhpcy5wcm9ncmVzc0JhclNldHRpbmdzQ29tcG9uZW50LFxuICAgICAgICAgICBleHBvcnRTZXR0aW5nczogdGhpcy5leHBvcnRTZXR0aW5nc0NvbXBvbmVudCxcbiAgICAgICAgICAga2VlcFJlcG9ydE9uQ29tcG9uZW50RGlzcG9zYWw6IHRoaXMua2VlcFJlcG9ydE9uQ29tcG9uZW50RGlzcG9zYWwsXG4gICAgICAgICAgIHNlYXJjaFNldHRpbmdzOiB0aGlzLnNlYXJjaFNldHRpbmdzQ29tcG9uZW50LFxuICAgICAgICAgICBjYWxsYmFja3M6IHt9XG4gICAgICAgfTtcbiAgIH1cblxuICAgR2V0UHJldmlld01vZGVsKCk6IFByZXZpZXdEaXNwb3NhYmxlTW9kZWwge1xuICAgICAgIHJldHVybiB0aGlzLmJpbmRpbmdTZW5kZXIuR2V0UHJldmlld01vZGVsKCk7XG4gICB9XG5cbiAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5fYmluZGluZy5zZW5kZXI7XG4gICAgICAgdGhpcy52aWV3TW9kZWwgPSB0aGlzLm1vZGVsLkdldFByZXZpZXdNb2RlbCgpPy5nZXRWaWV3TW9kZWwoKSBhcyBJUHJldmlld1ZpZXdNb2RlbDtcbiAgICAgICB0aGlzLl9kaXNwb3NhYmxlQ2FsbGJhY2sgPSB0aGlzLm1vZGVsLmV2ZW50cy5vbigncHJvcGVydHlDaGFuZ2VkJywgKGFyZ3MpID0+IHtcbiAgICAgICAgICAgaWYoYXJncy5wcm9wZXJ0eU5hbWUgPT09ICdwcmV2aWV3TW9kZWwnKSB7XG4gICAgICAgICAgICAgICB0aGlzLnZpZXdNb2RlbCA9IHRoaXMubW9kZWwuR2V0UHJldmlld01vZGVsKCkuZ2V0Vmlld01vZGVsKCkgYXMgSVByZXZpZXdWaWV3TW9kZWw7XG4gICAgICAgICAgIH1cbiAgICAgICB9KTtcbiAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICB9XG5cbiAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVDYWxsYmFjayAmJiB0aGlzLl9kaXNwb3NhYmxlQ2FsbGJhY2soKTtcbiAgICAgICB0aGlzLl9iaW5kaW5nLmRpc3Bvc2UoKTtcbiAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgfVxuXG4gICBASW5wdXQoKVxuICAgQF9pbnB1dENvbnZlcnRlcihfYm9vbGVhbkNvbnZlcnRlcilcbiAgIGlzTW9iaWxlOiBib29sZWFuO1xuXG4gICBASW5wdXQoKVxuICAgQF9pbnB1dENvbnZlcnRlcihfYm9vbGVhbkNvbnZlcnRlcilcbiAgIGdldCBhY2Nlc3NpYmlsaXR5Q29tcGxpYW50KCk6IGJvb2xlYW4ge1xuICAgICAgIHJldHVybiB0aGlzLl9hY2Nlc3NpYmlsaXR5U2V0dGluZ3MuYWNjZXNzaWJpbGl0eUNvbXBsaWFudDtcbiAgIH1cbiAgIHNldCBhY2Nlc3NpYmlsaXR5Q29tcGxpYW50KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eVNldHRpbmdzLmFjY2Vzc2liaWxpdHlDb21wbGlhbnQgPSB2YWx1ZTtcbiAgIH1cblxuICAgQElucHV0KClcbiAgIEBfaW5wdXRDb252ZXJ0ZXIoX2Jvb2xlYW5Db252ZXJ0ZXIpXG4gICBrZWVwUmVwb3J0T25Db21wb25lbnREaXNwb3NhbDogYm9vbGVhbjtcbiAgIEBJbnB1dCgpXG4gICBAX2lucHV0Q29udmVydGVyKF9ib29sZWFuQ29udmVydGVyKVxuICAgcnRsOiBib29sZWFuO1xuXG4gICBASW5wdXQoKVxuICAgZ2V0IHJlcG9ydFVybCgpOiBzdHJpbmcge1xuICAgICAgIHJldHVybiB0aGlzLl9yZXBvcnRVcmw7XG4gICB9XG4gICBzZXQgcmVwb3J0VXJsKHJlcG9ydFVybDogc3RyaW5nKSB7XG4gICAgICAgdGhpcy5fcmVwb3J0VXJsID0gcmVwb3J0VXJsO1xuICAgICAgIGlmKHRoaXMuYmluZGluZ1NlbmRlcikgdGhpcy5iaW5kaW5nU2VuZGVyLk9wZW5SZXBvcnQocmVwb3J0VXJsKTtcbiAgIH1cbn1cbiIsIjxkaXYgI2NvbnRyb2wgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogd2lkdGgsICdoZWlnaHQnOiBoZWlnaHQgfVwiPlxuICA8ZHhhLXRlbXBsYXRlcz48L2R4YS10ZW1wbGF0ZXM+XG4gIDxkeHYtdGVtcGxhdGVzPjwvZHh2LXRlbXBsYXRlcz5cbiAgPGRpdiBjbGFzcz1cImR4LWRlc2lnbmVyXCI+XG4gICAgICA8ZHhhLXRlbXBsYXRlICpuZ0lmPVwiISF2aWV3TW9kZWxcIiB0ZW1wbGF0ZT1cImR4LWRlc2lnbmVyXCIgW2RhdGFdPVwidmlld01vZGVsXCI+PC9keGEtdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+Il19
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHgtcmVwb3J0LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9keC1yZXBvcnQtdmlld2VyL2R4LXJlcG9ydC12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZHgtcmVwb3J0LXZpZXdlci9keC1yZXBvcnQtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRXpJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU3RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV6RixPQUFPLDREQUE0RCxDQUFDO0FBQ3BFLE9BQU8saURBQWlELENBQUM7QUFDekQsT0FBTyxFQUF3QixxQkFBcUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBR3hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBc0IscUJBQXFCLEVB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QztBQU9EO0lBREMsZUFBZSxDQUFDLGlCQUFpQixDQUFDOzhFQUNJO0FBR3ZDO0lBREMsZUFBZSxDQUFDLGlCQUFpQixDQUFDO29EQUN0Qjs0RkFoSEgsdUJBQXVCO2tCQU5sQyxTQUFTOytCQUNJLGtCQUFrQixhQUdqQixDQUFDLHFCQUFxQixDQUFDOzswQkFtQ0YsTUFBTTsyQkFBQyxXQUFXO3lJQXZCcEQsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHFDQUFxQztnQkFJbkQsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGdDQUFnQztnQkFJOUMsMkJBQTJCO3NCQUQxQixZQUFZO3VCQUFDLHlDQUF5QztnQkFJdkQsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHFDQUFxQztnQkFJbkQseUJBQXlCO3NCQUR4QixZQUFZO3VCQUFDLHVDQUF1QztnQkFJckQsNEJBQTRCO3NCQUQzQixZQUFZO3VCQUFDLDBDQUEwQztnQkFJeEQsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHFDQUFxQztnQkFJbkQsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHFDQUFxQztnQkFrRW5ELFFBQVE7c0JBRlAsS0FBSztnQkFNRixzQkFBc0I7c0JBRnpCLEtBQUs7Z0JBV04sNkJBQTZCO3NCQUY1QixLQUFLO2dCQUtOLEdBQUc7c0JBRkYsS0FBSztnQkFLRixTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIFBMQVRGT1JNX0lELCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEeFJlcG9ydGluZ0NvbXBvbmVudCwgX2Jvb2xlYW5Db252ZXJ0ZXIsIF9pbnB1dENvbnZlcnRlciB9IGZyb20gJ2RldmV4cHJlc3MtcmVwb3J0aW5nLWFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IER4UmVwb3J0Vmlld2VyQ2FsbGJhY2tzQ29tcG9uZW50IH0gZnJvbSAnLi9keHJ2LWNhbGxiYWNrcyc7XG5pbXBvcnQgeyBEeFJlcG9ydFZpZXdlclJlcXVlc3RPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9keHJ2LXJlcXVlc3Qtb3B0aW9ucyc7XG5cbmltcG9ydCB7IER4UmVwb3J0Vmlld2VyRXhwb3J0U2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL2R4cnYtZXhwb3J0LXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeFJlcG9ydFZpZXdlck1vYmlsZU1vZGVTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vZHhydi1tb2JpbGUtbW9kZS1zZXR0aW5ncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHhSZXBvcnRWaWV3ZXJQcm9ncmVzc0JhclNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9keHJ2LXByb2dyZXNzYmFyLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeFJlcG9ydFZpZXdlclJlbW90ZVNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9keHJ2LXJlbW90ZS1zZXR0aW5ncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHhSZXBvcnRWaWV3ZXJUYWJQYW5lbFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9keHJ2LXRhYnBhbmVsLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeFJlcG9ydFZpZXdlclNlYXJjaFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9keHJ2LXNlYXJjaC1zZXR0aW5ncy5jb21wb25lbnQnO1xuXG5pbXBvcnQgJ0BkZXZleHByZXNzL2FuYWx5dGljcy1jb3JlL2R4LWFuYWx5dGljcy1jb3JlLXN2Zy10ZW1wbGF0ZXMnO1xuaW1wb3J0ICdkZXZleHByZXNzLXJlcG9ydGluZy9keC1yZXBvcnRpbmctc3ZnLXRlbXBsYXRlcyc7XG5pbXBvcnQgeyBJUmVwb3J0Vmlld2VyT3B0aW9ucywgSlNSZXBvcnRWaWV3ZXJCaW5kaW5nIH0gZnJvbSAnZGV2ZXhwcmVzcy1yZXBvcnRpbmcvdmlld2VyL2JpbmRpbmcvanNSZXBvcnRWaWV3ZXJCaW5kaW5nJztcbmltcG9ydCB7IElQcmV2aWV3Vmlld01vZGVsLCBQcmV2aWV3RGlzcG9zYWJsZU1vZGVsIH0gZnJvbSAnZGV2ZXhwcmVzcy1yZXBvcnRpbmcvdmlld2VyL2ludGVybmFsL19wcmV2aWV3TW9kZWwnO1xuaW1wb3J0IHsgSlNSZXBvcnRWaWV3ZXIgfSBmcm9tICdkZXZleHByZXNzLXJlcG9ydGluZy92aWV3ZXIvYmluZGluZy9qc1JlcG9ydFZpZXdlcic7XG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5U2V0dGluZ3MgfSBmcm9tICcuL3V0aWxzL2FjY2Vzc2liaWxpdHktc2V0dGluZ3MnO1xuaW1wb3J0IHsgRXZlbnRNYW5hZ2VySG9sZGVyLCBWaWV3TW9kZWxDaGFuZ2VkRXZlbnQgfSBmcm9tICdAZGV2ZXhwcmVzcy9hbmFseXRpY3MtY29yZS9zZXJpYWxpemVyL25hdGl2ZS92aWV3TW9kZWxzL3ZpZXdNb2RlbEdlbmVyYXRvcic7XG5cbiBAQ29tcG9uZW50KHtcbiAgICAgc2VsZWN0b3I6ICdkeC1yZXBvcnQtdmlld2VyJyxcbiAgICAgdGVtcGxhdGVVcmw6ICcuL2R4LXJlcG9ydC12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgICBzdHlsZVVybHM6IFtdLFxuICAgICBwcm92aWRlcnM6IFtBY2Nlc3NpYmlsaXR5U2V0dGluZ3NdXG4gfSlcbmV4cG9ydCBjbGFzcyBEeFJlcG9ydFZpZXdlckNvbXBvbmVudCBleHRlbmRzIER4UmVwb3J0aW5nQ29tcG9uZW50IHtcbiAgIHByaXZhdGUgX3JlcG9ydFVybDogc3RyaW5nID0gJyc7XG4gICBwcml2YXRlIF9kaXNwb3NhYmxlQ2FsbGJhY2s6ICgpID0+IHZvaWQ7XG4gICBwcml2YXRlIF9kaXNwb3NlVmlld01vZGVsQ2hhbmdlZFN1YnNjcmlwdGlvbjogKCkgPT4gdm9pZDtcbiAgIHZpZXdNb2RlbDogSVByZXZpZXdWaWV3TW9kZWw7XG4gICBtb2RlbDogSlNSZXBvcnRWaWV3ZXI7XG4gICBwcm90ZWN0ZWQgX2JpbmRpbmc6IEpTUmVwb3J0Vmlld2VyQmluZGluZztcbiAgIGJpbmRpbmdTZW5kZXI6IEpTUmVwb3J0Vmlld2VyO1xuXG4gICBAQ29udGVudENoaWxkKER4UmVwb3J0Vmlld2VyUmVxdWVzdE9wdGlvbnNDb21wb25lbnQpXG4gICByZXF1ZXN0T3B0aW9uc0NvbXBvbmVudDogRHhSZXBvcnRWaWV3ZXJSZXF1ZXN0T3B0aW9uc0NvbXBvbmVudDtcblxuICAgQENvbnRlbnRDaGlsZChEeFJlcG9ydFZpZXdlckNhbGxiYWNrc0NvbXBvbmVudClcbiAgIGNhbGxiYWNrc0NvbXBvbmVudDogRHhSZXBvcnRWaWV3ZXJDYWxsYmFja3NDb21wb25lbnQ7XG5cbiAgIEBDb250ZW50Q2hpbGQoRHhSZXBvcnRWaWV3ZXJNb2JpbGVNb2RlU2V0dGluZ3NDb21wb25lbnQpXG4gICBtb2JpbGVNb2RlU2V0dGluZ3NDb21wb25lbnQ6IER4UmVwb3J0Vmlld2VyTW9iaWxlTW9kZVNldHRpbmdzQ29tcG9uZW50O1xuXG4gICBAQ29udGVudENoaWxkKER4UmVwb3J0Vmlld2VyUmVtb3RlU2V0dGluZ3NDb21wb25lbnQpXG4gICByZW1vdGVTZXR0aW5nc0NvbXBvbmVudDogRHhSZXBvcnRWaWV3ZXJSZW1vdGVTZXR0aW5nc0NvbXBvbmVudDtcblxuICAgQENvbnRlbnRDaGlsZChEeFJlcG9ydFZpZXdlclRhYlBhbmVsU2V0dGluZ3NDb21wb25lbnQpXG4gICB0YWJQYW5lbFNldHRpbmdzQ29tcG9uZW50OiBEeFJlcG9ydFZpZXdlclRhYlBhbmVsU2V0dGluZ3NDb21wb25lbnQ7XG5cbiAgIEBDb250ZW50Q2hpbGQoRHhSZXBvcnRWaWV3ZXJQcm9ncmVzc0JhclNldHRpbmdzQ29tcG9uZW50KVxuICAgcHJvZ3Jlc3NCYXJTZXR0aW5nc0NvbXBvbmVudDogRHhSZXBvcnRWaWV3ZXJQcm9ncmVzc0JhclNldHRpbmdzQ29tcG9uZW50O1xuXG4gICBAQ29udGVudENoaWxkKER4UmVwb3J0Vmlld2VyRXhwb3J0U2V0dGluZ3NDb21wb25lbnQpXG4gICBleHBvcnRTZXR0aW5nc0NvbXBvbmVudDogRHhSZXBvcnRWaWV3ZXJFeHBvcnRTZXR0aW5nc0NvbXBvbmVudDtcblxuICAgQENvbnRlbnRDaGlsZChEeFJlcG9ydFZpZXdlclNlYXJjaFNldHRpbmdzQ29tcG9uZW50KVxuICAgc2VhcmNoU2V0dGluZ3NDb21wb25lbnQ6IER4UmVwb3J0Vmlld2VyU2VhcmNoU2V0dGluZ3NDb21wb25lbnQ7XG5cbiAgIGNvbnN0cnVjdG9yKHJlbmRlcmVyOiBSZW5kZXJlcjIsIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCwgcHJpdmF0ZSBfdmlld2VyOiBFbGVtZW50UmVmLCBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2FjY2Vzc2liaWxpdHlTZXR0aW5nczogQWNjZXNzaWJpbGl0eVNldHRpbmdzKSB7XG4gICAgICAgc3VwZXIocmVuZGVyZXIsIHBsYXRmb3JtSWQpO1xuICAgfVxuXG4gICBnZXRLb0JpbmRpbmcob3B0aW9uczogSVJlcG9ydFZpZXdlck9wdGlvbnMpOiBKU1JlcG9ydFZpZXdlckJpbmRpbmcge1xuICAgICAgIHJldHVybiBuZXcgSlNSZXBvcnRWaWV3ZXJCaW5kaW5nKG9wdGlvbnMsIHRoaXMuZ2V0RXZlbnRSYWlzZXIoKSwgZmFsc2UpO1xuICAgfVxuICAgZ2V0Q2FsbGJhY2tzKCk6IER4UmVwb3J0Vmlld2VyQ2FsbGJhY2tzQ29tcG9uZW50IHtcbiAgICAgICByZXR1cm4gdGhpcy5jYWxsYmFja3NDb21wb25lbnQ7XG4gICB9XG4gICBnZXRDb250cm9sT3B0aW9ucygpOiBJUmVwb3J0Vmlld2VyT3B0aW9ucyB7XG4gICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgcnRsOiB0aGlzLnJ0bCxcbiAgICAgICAgICAgZGV2ZWxvcG1lbnRNb2RlOiB0aGlzLmRldmVsb3BtZW50TW9kZSxcbiAgICAgICAgICAgaXNNb2JpbGU6IHRoaXMuaXNNb2JpbGUsXG4gICAgICAgICAgIGFjY2Vzc2liaWxpdHlDb21wbGlhbnQ6IHRoaXMuYWNjZXNzaWJpbGl0eUNvbXBsaWFudCxcbiAgICAgICAgICAgcmVwb3J0VXJsOiB0aGlzLl9yZXBvcnRVcmwsXG4gICAgICAgICAgIHJlcXVlc3RPcHRpb25zOiB0aGlzLnJlcXVlc3RPcHRpb25zQ29tcG9uZW50LFxuICAgICAgICAgICBtb2JpbGVNb2RlU2V0dGluZ3M6IHRoaXMubW9iaWxlTW9kZVNldHRpbmdzQ29tcG9uZW50LFxuICAgICAgICAgICByZW1vdGVTZXR0aW5nczogdGhpcy5yZW1vdGVTZXR0aW5nc0NvbXBvbmVudCxcbiAgICAgICAgICAgdGFiUGFuZWxTZXR0aW5nczogdGhpcy50YWJQYW5lbFNldHRpbmdzQ29tcG9uZW50LFxuICAgICAgICAgICBwcm9ncmVzc0JhclNldHRpbmdzOiB0aGlzLnByb2dyZXNzQmFyU2V0dGluZ3NDb21wb25lbnQsXG4gICAgICAgICAgIGV4cG9ydFNldHRpbmdzOiB0aGlzLmV4cG9ydFNldHRpbmdzQ29tcG9uZW50LFxuICAgICAgICAgICBrZWVwUmVwb3J0T25Db21wb25lbnREaXNwb3NhbDogdGhpcy5rZWVwUmVwb3J0T25Db21wb25lbnREaXNwb3NhbCxcbiAgICAgICAgICAgc2VhcmNoU2V0dGluZ3M6IHRoaXMuc2VhcmNoU2V0dGluZ3NDb21wb25lbnQsXG4gICAgICAgICAgIGNhbGxiYWNrczoge31cbiAgICAgICB9O1xuICAgfVxuXG4gICBHZXRQcmV2aWV3TW9kZWwoKTogUHJldmlld0Rpc3Bvc2FibGVNb2RlbCB7XG4gICAgICAgcmV0dXJuIHRoaXMuYmluZGluZ1NlbmRlci5HZXRQcmV2aWV3TW9kZWwoKTtcbiAgIH1cblxuICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgIHRoaXMubW9kZWwgPSB0aGlzLl9iaW5kaW5nLnNlbmRlcjtcbiAgICAgICB0aGlzLnZpZXdNb2RlbCA9IHRoaXMubW9kZWwuR2V0UHJldmlld01vZGVsKCk/LmdldFZpZXdNb2RlbCgpIGFzIElQcmV2aWV3Vmlld01vZGVsO1xuICAgICAgIHRoaXMuX2Rpc3Bvc2VWaWV3TW9kZWxDaGFuZ2VkU3Vic2NyaXB0aW9uID0gdGhpcy5fc3Vic2NyaWJlVG9WaWV3TW9kZWxDaGFuZ2VkKHRoaXMudmlld01vZGVsKTtcblxuICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVDYWxsYmFjayA9IHRoaXMubW9kZWwuZXZlbnRzLm9uKCdwcm9wZXJ0eUNoYW5nZWQnLCAoYXJncykgPT4ge1xuICAgICAgICAgICBpZihhcmdzLnByb3BlcnR5TmFtZSA9PT0gJ3ByZXZpZXdNb2RlbCcpIHtcbiAgICAgICAgICAgICAgIHRoaXMudmlld01vZGVsID0gdGhpcy5tb2RlbC5HZXRQcmV2aWV3TW9kZWwoKS5nZXRWaWV3TW9kZWwoKSBhcyBJUHJldmlld1ZpZXdNb2RlbDtcbiAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2VWaWV3TW9kZWxDaGFuZ2VkU3Vic2NyaXB0aW9uICYmIHRoaXMuX2Rpc3Bvc2VWaWV3TW9kZWxDaGFuZ2VkU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NlVmlld01vZGVsQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMuX3N1YnNjcmliZVRvVmlld01vZGVsQ2hhbmdlZCh0aGlzLnZpZXdNb2RlbCk7XG4gICAgICAgICAgIH1cbiAgICAgICB9KTtcbiAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICB9XG5cbiAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVDYWxsYmFjayAmJiB0aGlzLl9kaXNwb3NhYmxlQ2FsbGJhY2soKTtcbiAgICAgICB0aGlzLl9kaXNwb3NlVmlld01vZGVsQ2hhbmdlZFN1YnNjcmlwdGlvbiAmJiB0aGlzLl9kaXNwb3NlVmlld01vZGVsQ2hhbmdlZFN1YnNjcmlwdGlvbigpO1xuICAgICAgIHRoaXMuX2JpbmRpbmcuZGlzcG9zZSgpO1xuICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICB9XG5cbiAgIHByaXZhdGUgX3N1YnNjcmliZVRvVmlld01vZGVsQ2hhbmdlZCh2aWV3TW9kZWw6IElQcmV2aWV3Vmlld01vZGVsKSB7XG4gICAgICAgY29uc3QgZXZlbnRIb2xkZXIgPSA8RXZlbnRNYW5hZ2VySG9sZGVyPElQcmV2aWV3Vmlld01vZGVsPj4gdmlld01vZGVsO1xuICAgICAgIHJldHVybiBldmVudEhvbGRlcj8uX3ZpZXdNb2RlbEV2ZW50cz8ub24oVmlld01vZGVsQ2hhbmdlZEV2ZW50LCAoKSA9PiB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKSk7XG4gICB9XG5cbiAgIEBJbnB1dCgpXG4gICBAX2lucHV0Q29udmVydGVyKF9ib29sZWFuQ29udmVydGVyKVxuICAgaXNNb2JpbGU6IGJvb2xlYW47XG5cbiAgIEBJbnB1dCgpXG4gICBAX2lucHV0Q29udmVydGVyKF9ib29sZWFuQ29udmVydGVyKVxuICAgZ2V0IGFjY2Vzc2liaWxpdHlDb21wbGlhbnQoKTogYm9vbGVhbiB7XG4gICAgICAgcmV0dXJuIHRoaXMuX2FjY2Vzc2liaWxpdHlTZXR0aW5ncy5hY2Nlc3NpYmlsaXR5Q29tcGxpYW50O1xuICAgfVxuICAgc2V0IGFjY2Vzc2liaWxpdHlDb21wbGlhbnQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5U2V0dGluZ3MuYWNjZXNzaWJpbGl0eUNvbXBsaWFudCA9IHZhbHVlO1xuICAgfVxuXG4gICBASW5wdXQoKVxuICAgQF9pbnB1dENvbnZlcnRlcihfYm9vbGVhbkNvbnZlcnRlcilcbiAgIGtlZXBSZXBvcnRPbkNvbXBvbmVudERpc3Bvc2FsOiBib29sZWFuO1xuICAgQElucHV0KClcbiAgIEBfaW5wdXRDb252ZXJ0ZXIoX2Jvb2xlYW5Db252ZXJ0ZXIpXG4gICBydGw6IGJvb2xlYW47XG5cbiAgIEBJbnB1dCgpXG4gICBnZXQgcmVwb3J0VXJsKCk6IHN0cmluZyB7XG4gICAgICAgcmV0dXJuIHRoaXMuX3JlcG9ydFVybDtcbiAgIH1cbiAgIHNldCByZXBvcnRVcmwocmVwb3J0VXJsOiBzdHJpbmcpIHtcbiAgICAgICB0aGlzLl9yZXBvcnRVcmwgPSByZXBvcnRVcmw7XG4gICAgICAgaWYodGhpcy5iaW5kaW5nU2VuZGVyKSB0aGlzLmJpbmRpbmdTZW5kZXIuT3BlblJlcG9ydChyZXBvcnRVcmwpO1xuICAgfVxufVxuIiwiPGRpdiAjY29udHJvbCBbbmdDbGFzc109XCJjc3NDbGFzc1wiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiB3aWR0aCwgJ2hlaWdodCc6IGhlaWdodCB9XCI+XG4gIDxkeGEtdGVtcGxhdGVzPjwvZHhhLXRlbXBsYXRlcz5cbiAgPGR4di10ZW1wbGF0ZXM+PC9keHYtdGVtcGxhdGVzPlxuICA8ZGl2IGNsYXNzPVwiZHgtZGVzaWduZXJcIj5cbiAgICAgIDxkeGEtdGVtcGxhdGUgKm5nSWY9XCIhIXZpZXdNb2RlbFwiIHRlbXBsYXRlPVwiZHgtZGVzaWduZXJcIiBbZGF0YV09XCJ2aWV3TW9kZWxcIj48L2R4YS10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -5,6 +5,7 @@ import { _inputConverter, _booleanConverter, DxReportingComponent } from 'devexp
5
5
  import '@devexpress/analytics-core/dx-analytics-core-svg-templates';
6
6
  import 'devexpress-reporting/dx-reporting-svg-templates';
7
7
  import { JSReportViewerBinding } from 'devexpress-reporting/viewer/binding/jsReportViewerBinding';
8
+ import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator';
8
9
  import * as i1 from '@angular/common';
9
10
  import { CommonModule } from '@angular/common';
10
11
  import { SvgTemplatesEngine } from '@devexpress/analytics-core/property-grid/widgets/internal/_svgTemplateEngine';
@@ -738,25 +739,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
738
739
  }] });
739
740
 
740
741
  class CollectionEditorComponent {
741
- constructor() {
742
+ constructor(_changeDetectorRef) {
743
+ this._changeDetectorRef = _changeDetectorRef;
742
744
  }
743
745
  ngOnDestroy() {
746
+ this._vmSubscription && this._vmSubscription();
744
747
  this._model.dispose();
745
748
  }
746
749
  ngOnInit() {
747
750
  this._model = new CollectionEditorViewModel(this.options);
748
751
  this.data = this._model.getViewModel();
752
+ this._vmSubscription = this.data
753
+ ._viewModelEvents.on(ViewModelChangedEvent, () => this._changeDetectorRef.markForCheck());
749
754
  }
750
755
  onScrollViewInitialized(args) {
751
756
  args.component.option('useKeyboard', false);
752
757
  }
753
758
  }
754
- CollectionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CollectionEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
759
+ CollectionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CollectionEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
755
760
  CollectionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CollectionEditorComponent, selector: "dxa-collectioneditor", inputs: { options: ["data", "options"], contentTemplate: "contentTemplate" }, ngImport: i0, template: "<div class=\"dx-collectioneditor\">\n <div [dxaAccordion]=\"data\" [dxMutationObserver]=\"data.keyboardHelper\">\n <div class=\"dx-collectioneditor-header dx-accordion-header\">\n <div class=\"dx-editor-header\">\n <div role=\"treeitem\"\n class=\"dx-field dx-accessibility-focus-border-accented dxrd-accessibility-accordion-trigger\"\n [attr.aria-expanded]=\"data.alwaysShow || !data.collapsed ? 'true' : 'false'\"\n [attr.aria-owns]=\"data.contentId\" [attr.id]=\"data.headerId\">\n <div *ngIf=\"data.showButtons\" class=\"dx-collectioneditor-actions-wrapper\">\n <dx-button *ngIf=\"data.buttons.up.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.up.action($event)\" [disabled]=\"data.buttons.up.disabled\"\n icon=\"dxrd-svg-operations-moveup\" iconClass=\"dx-image-moveup\"\n [template]=\"data.buttons.up.template\"\n [attr.title]=\"data.buttons.up.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.down.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.down.action($event)\" [disabled]=\"data.buttons.down.disabled\"\n icon=\"dxrd-svg-operations-movedown\" iconClass=\"dx-image-movedown\"\n [template]=\"data.buttons.down.template\"\n [attr.title]=\"data.buttons.down.text\"></dx-button>\n <div class=\"dx-collectioneditor-action-separator\"></div>\n <dx-button *ngIf=\"data.buttons.add.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.add.action($event)\" [disabled]=\"data.buttons.add.disabled\"\n [template]=\"data.buttons.add.template\"\n icon=\"dxrd-svg-operations-add\" iconClass=\"dx-image-add\"\n [attr.title]=\"data.buttons.add.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.delete.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.delete.action($event)\" [disabled]=\"data.buttons.delete.disabled\"\n [template]=\"data.buttons.delete.template\"\n icon=\"dxrd-svg-operations-remove\" iconClass=\"dx-image-remove\"\n [attr.title]=\"data.buttons.delete.text\"></dx-button>\n </div>\n <div *ngIf=\"!!data.displayName\" class=\"dx-collectioneditor-header-text dxd-text-primary\"\n [style.padding-left]=\"data.padding + 'px'\">\n <dxa-template class=\"dx-collapsing-image dxrd-display-inline-block\"\n template=\"dxrd-svg-collapsed\"\n [class.dx-image-expanded]=\"!data.collapsed \"></dxa-template>\n <div class=\"dx-group-header-font dxd-text-primary dxrd-display-inline-block\" [attr.title]=\"data.displayName\">\n {{data.displayName}}</div>\n </div>\n </div>\n </div>\n </div>\n <div role=\"group\" class=\"dx-accordion-content\"\n [attr.aria-hidden]=\"!data.alwaysShow && data.collapsed ? 'true' : 'false'\"\n [attr.aria-labelledby]=\"data.headerId\" [attr.id]=\"data.contentId\">\n <dx-scroll-view [hidden]=\"data.disabled\" showScrollbar=\"onHover\" [disabled]=\"!data.showScroll\"\n [useNative]=\"false\" [scrollByThumb]=\"true\" (onInitialized)=\"onScrollViewInitialized($event)\">\n <div *ngIf=\"data.values.length === 0\"\n class=\"dx-collectioneditor-empty dxd-empty-area-placeholder-text-color dxd-text-info\">\n <span class=\"dx-collectioneditor-empty-text\">{{data.emptyAreaText}}</span>\n </div>\n <div *ngIf=\"data.values.length !== 0\" class=\"dx-collectioneditor-items\">\n <div *ngFor=\"let value of data.values\"\n class=\"dx-collectioneditor-item-container dxd-button-back-color dxd-state-normal dxd-back-highlighted dx-accessibility-list-item dx-accessibility-focus-border-accented\"\n [attr.aria-selected]=\"value.selected\" [dxActionModel]=\"value\" [dxAction]=\"value.select\"\n [class.dxd-state-selected]=\"value.selected\">\n <div class=\"dx-collection-item\">\n <ng-container *ngTemplateOutlet=\"contentTemplate, context: { data: value }\"></ng-container>\n </div>\n </div>\n </div>\n </dx-scroll-view>\n </div>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i2.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { kind: "component", type: TemplateComponent, selector: "dxa-template", inputs: ["data", "template"] }, { kind: "directive", type: DxActionDirective, selector: "[dxAction]", inputs: ["dxActionModel", "dxAction"] }, { kind: "directive", type: AccordionDirective, selector: "[dxaAccordion]", inputs: ["dxaAccordion"] }, { kind: "directive", type: DxMutationObserverDirective, selector: "[dxMutationObserver]", inputs: ["dxMutationObserver"] }] });
756
761
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CollectionEditorComponent, decorators: [{
757
762
  type: Component,
758
763
  args: [{ selector: 'dxa-collectioneditor', template: "<div class=\"dx-collectioneditor\">\n <div [dxaAccordion]=\"data\" [dxMutationObserver]=\"data.keyboardHelper\">\n <div class=\"dx-collectioneditor-header dx-accordion-header\">\n <div class=\"dx-editor-header\">\n <div role=\"treeitem\"\n class=\"dx-field dx-accessibility-focus-border-accented dxrd-accessibility-accordion-trigger\"\n [attr.aria-expanded]=\"data.alwaysShow || !data.collapsed ? 'true' : 'false'\"\n [attr.aria-owns]=\"data.contentId\" [attr.id]=\"data.headerId\">\n <div *ngIf=\"data.showButtons\" class=\"dx-collectioneditor-actions-wrapper\">\n <dx-button *ngIf=\"data.buttons.up.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.up.action($event)\" [disabled]=\"data.buttons.up.disabled\"\n icon=\"dxrd-svg-operations-moveup\" iconClass=\"dx-image-moveup\"\n [template]=\"data.buttons.up.template\"\n [attr.title]=\"data.buttons.up.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.down.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.down.action($event)\" [disabled]=\"data.buttons.down.disabled\"\n icon=\"dxrd-svg-operations-movedown\" iconClass=\"dx-image-movedown\"\n [template]=\"data.buttons.down.template\"\n [attr.title]=\"data.buttons.down.text\"></dx-button>\n <div class=\"dx-collectioneditor-action-separator\"></div>\n <dx-button *ngIf=\"data.buttons.add.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.add.action($event)\" [disabled]=\"data.buttons.add.disabled\"\n [template]=\"data.buttons.add.template\"\n icon=\"dxrd-svg-operations-add\" iconClass=\"dx-image-add\"\n [attr.title]=\"data.buttons.add.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.delete.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.delete.action($event)\" [disabled]=\"data.buttons.delete.disabled\"\n [template]=\"data.buttons.delete.template\"\n icon=\"dxrd-svg-operations-remove\" iconClass=\"dx-image-remove\"\n [attr.title]=\"data.buttons.delete.text\"></dx-button>\n </div>\n <div *ngIf=\"!!data.displayName\" class=\"dx-collectioneditor-header-text dxd-text-primary\"\n [style.padding-left]=\"data.padding + 'px'\">\n <dxa-template class=\"dx-collapsing-image dxrd-display-inline-block\"\n template=\"dxrd-svg-collapsed\"\n [class.dx-image-expanded]=\"!data.collapsed \"></dxa-template>\n <div class=\"dx-group-header-font dxd-text-primary dxrd-display-inline-block\" [attr.title]=\"data.displayName\">\n {{data.displayName}}</div>\n </div>\n </div>\n </div>\n </div>\n <div role=\"group\" class=\"dx-accordion-content\"\n [attr.aria-hidden]=\"!data.alwaysShow && data.collapsed ? 'true' : 'false'\"\n [attr.aria-labelledby]=\"data.headerId\" [attr.id]=\"data.contentId\">\n <dx-scroll-view [hidden]=\"data.disabled\" showScrollbar=\"onHover\" [disabled]=\"!data.showScroll\"\n [useNative]=\"false\" [scrollByThumb]=\"true\" (onInitialized)=\"onScrollViewInitialized($event)\">\n <div *ngIf=\"data.values.length === 0\"\n class=\"dx-collectioneditor-empty dxd-empty-area-placeholder-text-color dxd-text-info\">\n <span class=\"dx-collectioneditor-empty-text\">{{data.emptyAreaText}}</span>\n </div>\n <div *ngIf=\"data.values.length !== 0\" class=\"dx-collectioneditor-items\">\n <div *ngFor=\"let value of data.values\"\n class=\"dx-collectioneditor-item-container dxd-button-back-color dxd-state-normal dxd-back-highlighted dx-accessibility-list-item dx-accessibility-focus-border-accented\"\n [attr.aria-selected]=\"value.selected\" [dxActionModel]=\"value\" [dxAction]=\"value.select\"\n [class.dxd-state-selected]=\"value.selected\">\n <div class=\"dx-collection-item\">\n <ng-container *ngTemplateOutlet=\"contentTemplate, context: { data: value }\"></ng-container>\n </div>\n </div>\n </div>\n </dx-scroll-view>\n </div>\n </div>\n</div>" }]
759
- }], ctorParameters: function () { return []; }, propDecorators: { options: [{
764
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
760
765
  type: Input,
761
766
  args: ['data']
762
767
  }], contentTemplate: [{
@@ -1322,48 +1327,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1322
1327
  }] } });
1323
1328
 
1324
1329
  class DateRangeComponent {
1325
- constructor(_currentElement) {
1330
+ constructor(_currentElement, _changeDetectorRef) {
1326
1331
  this._currentElement = _currentElement;
1332
+ this._changeDetectorRef = _changeDetectorRef;
1327
1333
  }
1328
1334
  ngOnDestroy() {
1335
+ this._vmSubscription && this._vmSubscription();
1329
1336
  this._editor.dispose();
1330
1337
  }
1331
1338
  ngOnInit() {
1332
1339
  this._editor = createDateRangeEditor(this.options, this._currentElement.nativeElement, this.options);
1333
1340
  this.data = this._editor.getViewModel();
1341
+ this._vmSubscription = this.data._viewModelEvents.on(ViewModelChangedEvent, () => {
1342
+ this._changeDetectorRef.markForCheck();
1343
+ });
1334
1344
  this.data.cacheElement(this._currentElement.nativeElement);
1345
+ const processClickEvent = () => {
1346
+ this.data.showPopup();
1347
+ this._changeDetectorRef.markForCheck();
1348
+ };
1335
1349
  const processKeyBoardEvent = (e) => {
1336
1350
  if (e.key == KeyboardEnum.Enter || (e.key == KeyboardEnum.ArrowDown && e.altKey)) {
1337
1351
  this.data.showPopup();
1352
+ this._changeDetectorRef.markForCheck();
1338
1353
  }
1339
1354
  };
1340
1355
  this.subscribeToEvents = (event) => {
1341
1356
  var _a, _b;
1342
1357
  this.textBoxInputElement = event.element.querySelector('.dx-texteditor-input');
1343
- (_a = this.textBoxInputElement) === null || _a === void 0 ? void 0 : _a.addEventListener('click', this.data.showPopup);
1358
+ (_a = this.textBoxInputElement) === null || _a === void 0 ? void 0 : _a.addEventListener('click', processClickEvent);
1344
1359
  (_b = this.textBoxInputElement) === null || _b === void 0 ? void 0 : _b.addEventListener('keydown', processKeyBoardEvent);
1345
1360
  };
1346
1361
  this.unsubscribeFromEvents = () => {
1347
1362
  var _a, _b;
1348
- (_a = this.textBoxInputElement) === null || _a === void 0 ? void 0 : _a.removeEventListener('click', this.data.showPopup);
1363
+ (_a = this.textBoxInputElement) === null || _a === void 0 ? void 0 : _a.removeEventListener('click', processClickEvent);
1349
1364
  (_b = this.textBoxInputElement) === null || _b === void 0 ? void 0 : _b.removeEventListener('keydown', processKeyBoardEvent);
1350
1365
  };
1351
1366
  this.showPopupOptions = {
1352
1367
  disabled: false,
1353
- onClick: (e) => {
1354
- this.data.showPopup();
1355
- },
1368
+ onClick: processClickEvent,
1356
1369
  template: generateIconTemplate('dx-ellipsis-image'),
1357
1370
  icon: 'dxrd-svg-ellipsis'
1358
1371
  };
1359
1372
  }
1360
1373
  }
1361
- DateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateRangeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
1374
+ DateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateRangeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1362
1375
  DateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateRangeComponent, selector: "dxv-date-range", inputs: { options: ["data", "options"] }, ngImport: i0, template: "<div class=\"dxrv-daterange-editor\">\n <dx-text-box \n [value]=\"data.displayValue\"\n [readOnly]=\"true\"\n (onContentReady)=\"subscribeToEvents($event)\" (onDisposing)=\"unsubscribeFromEvents()\"\n >\n <dxi-button\n name=\"showPopup\"\n location=\"after\"\n [options]=\"showPopupOptions\"\n ></dxi-button>\n </dx-text-box>\n <dxa-template [template]=\"data.popupTemplate\" [data]=\"data.popupModel\"></dxa-template>\n</div>", dependencies: [{ kind: "component", type: i1$1.DxiButtonComponent, selector: "dxi-button", inputs: ["location", "name", "options", "cssClass", "disabled", "hint", "icon", "onClick", "template", "text", "visible"] }, { kind: "component", type: i2.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: TemplateComponent, selector: "dxa-template", inputs: ["data", "template"] }] });
1363
1376
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateRangeComponent, decorators: [{
1364
1377
  type: Component,
1365
1378
  args: [{ selector: 'dxv-date-range', template: "<div class=\"dxrv-daterange-editor\">\n <dx-text-box \n [value]=\"data.displayValue\"\n [readOnly]=\"true\"\n (onContentReady)=\"subscribeToEvents($event)\" (onDisposing)=\"unsubscribeFromEvents()\"\n >\n <dxi-button\n name=\"showPopup\"\n location=\"after\"\n [options]=\"showPopupOptions\"\n ></dxi-button>\n </dx-text-box>\n <dxa-template [template]=\"data.popupTemplate\" [data]=\"data.popupModel\"></dxa-template>\n</div>" }]
1366
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
1379
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
1367
1380
  type: Input,
1368
1381
  args: ['data']
1369
1382
  }] } });
@@ -2679,18 +2692,27 @@ class DxReportViewerComponent extends DxReportingComponent {
2679
2692
  super.ngAfterViewInit();
2680
2693
  this.model = this._binding.sender;
2681
2694
  this.viewModel = (_a = this.model.GetPreviewModel()) === null || _a === void 0 ? void 0 : _a.getViewModel();
2695
+ this._disposeViewModelChangedSubscription = this._subscribeToViewModelChanged(this.viewModel);
2682
2696
  this._disposableCallback = this.model.events.on('propertyChanged', (args) => {
2683
2697
  if (args.propertyName === 'previewModel') {
2684
2698
  this.viewModel = this.model.GetPreviewModel().getViewModel();
2699
+ this._disposeViewModelChangedSubscription && this._disposeViewModelChangedSubscription();
2700
+ this._disposeViewModelChangedSubscription = this._subscribeToViewModelChanged(this.viewModel);
2685
2701
  }
2686
2702
  });
2687
2703
  this._cd.detectChanges();
2688
2704
  }
2689
2705
  ngOnDestroy() {
2690
2706
  this._disposableCallback && this._disposableCallback();
2707
+ this._disposeViewModelChangedSubscription && this._disposeViewModelChangedSubscription();
2691
2708
  this._binding.dispose();
2692
2709
  super.ngOnDestroy();
2693
2710
  }
2711
+ _subscribeToViewModelChanged(viewModel) {
2712
+ var _a;
2713
+ const eventHolder = viewModel;
2714
+ return (_a = eventHolder === null || eventHolder === void 0 ? void 0 : eventHolder._viewModelEvents) === null || _a === void 0 ? void 0 : _a.on(ViewModelChangedEvent, () => this._cd.markForCheck());
2715
+ }
2694
2716
  get accessibilityCompliant() {
2695
2717
  return this._accessibilitySettings.accessibilityCompliant;
2696
2718
  }