survey-angular-ui 2.5.13 → 2.5.14

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,8 +1,8 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, OnChanges, OnDestroy, OnInit, SimpleChanges } from "@angular/core";
2
- import { SurveyModel, ProgressButtons, IProgressButtonsViewModel } from "survey-core";
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewContainerRef } from "@angular/core";
2
+ import { SurveyModel, ProgressButtons, IProgressButtonsViewModel, Base } from "survey-core";
3
+ import { BaseAngular } from "../../../base-angular";
3
4
  import * as i0 from "@angular/core";
4
- export declare class ProgressButtonsComponent implements OnDestroy, AfterViewInit, OnChanges, OnInit, IProgressButtonsViewModel {
5
- private changeDetectorRef;
5
+ export declare class ProgressButtonsComponent extends BaseAngular implements OnDestroy, AfterViewInit, OnChanges, OnInit, IProgressButtonsViewModel {
6
6
  model: ProgressButtons;
7
7
  survey: SurveyModel;
8
8
  container: string;
@@ -12,7 +12,8 @@ export declare class ProgressButtonsComponent implements OnDestroy, AfterViewIni
12
12
  canShowFooter: boolean;
13
13
  canShowItemTitles: boolean;
14
14
  private respManager?;
15
- constructor(changeDetectorRef: ChangeDetectorRef);
15
+ constructor(changeDetectorRef: ChangeDetectorRef, viewContainerRef?: ViewContainerRef);
16
+ protected getModel(): Base;
16
17
  onResize(canShowItemTitles: boolean): void;
17
18
  onUpdateScroller(hasScroller: boolean): void;
18
19
  onUpdateSettings(): void;
@@ -1,32 +1,37 @@
1
1
  import { Component, Input, ViewChild } from "@angular/core";
2
2
  import { ProgressButtonsResponsivityManager } from "survey-core";
3
3
  import { AngularComponentFactory } from "../../../component-factory";
4
+ import { BaseAngular } from "../../../base-angular";
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "../../../survey-string.component";
6
7
  import * as i2 from "@angular/common";
7
- export class ProgressButtonsComponent {
8
- constructor(changeDetectorRef) {
9
- this.changeDetectorRef = changeDetectorRef;
8
+ export class ProgressButtonsComponent extends BaseAngular {
9
+ constructor(changeDetectorRef, viewContainerRef) {
10
+ super(changeDetectorRef, viewContainerRef);
10
11
  this.hasScroller = false;
11
12
  this.canShowHeader = false;
12
13
  this.canShowFooter = false;
13
14
  this.canShowItemTitles = true;
14
15
  }
16
+ getModel() {
17
+ return this.model;
18
+ }
15
19
  onResize(canShowItemTitles) {
16
20
  this.canShowItemTitles = canShowItemTitles;
17
21
  this.canShowHeader = !this.canShowItemTitles;
18
- this.changeDetectorRef.detectChanges();
22
+ this.detectChanges();
19
23
  }
20
24
  onUpdateScroller(hasScroller) {
21
25
  this.hasScroller = hasScroller;
22
- this.changeDetectorRef.detectChanges();
26
+ this.detectChanges();
23
27
  }
24
28
  onUpdateSettings() {
25
29
  this.canShowItemTitles = this.model.showItemTitles;
26
30
  this.canShowFooter = !this.model.showItemTitles;
27
- this.changeDetectorRef.detectChanges();
31
+ this.detectChanges();
28
32
  }
29
33
  ngOnInit() {
34
+ super.ngOnInit();
30
35
  }
31
36
  ngOnChanges(changes) {
32
37
  }
@@ -44,18 +49,19 @@ export class ProgressButtonsComponent {
44
49
  }
45
50
  ngOnDestroy() {
46
51
  var _a;
52
+ super.ngOnDestroy();
47
53
  (_a = this.respManager) === null || _a === void 0 ? void 0 : _a.dispose();
48
54
  }
49
55
  }
50
- ProgressButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressButtonsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
51
- ProgressButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProgressButtonsComponent, selector: "sv-ng-progress-buttons", inputs: { model: "model", survey: "survey", container: "container" }, viewQueries: [{ propertyName: "progressButtonsListContainer", first: true, predicate: ["progressButtonsListContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [class]=\"model.getRootCss(container)\" [style.maxWidth]=\"model.progressWidth\" [style.--sd-progress-buttons-pages-count]=\"survey.visiblePages.length\"\nrole=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" [attr.aria-label]=\"model.progressBarAriaLabel\"\n>\n <div *ngIf=\"canShowHeader\" [class]=\"survey.css.progressButtonsHeader\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.headerText\">{{ model.headerText }}</div>\n </div>\n <div [class]=\"survey.css.progressButtonsContainer\">\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, true)\"\n (click)=\"clickScrollButton(true)\"\n role=\"button\"\n ></div>\n <div\n [class]=\"survey.css.progressButtonsListContainer\" #progressButtonsListContainer>\n <ul [class]=\"survey.css.progressButtonsList\">\n <li\n *ngFor=\"let page of survey.visiblePages; index as index\"\n [class]=\"model.getListElementCss(index)\"\n (click)=\"model.isListElementClickable(index) ? model.clickListElement(page) : null\"\n [attr.data-page-number]=\"model.getItemNumber(page)\">\n <div [class]=\"survey.css.progressButtonsConnector\"></div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageTitle\"\n [title]=\"page.renderedNavigationTitle\"\n >\n <sv-ng-string [model]=\"page.locNavigationTitle\"></sv-ng-string>\n </div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageDescription\"\n [title]=\"page.navigationDescription\"\n >\n {{ page.navigationDescription }}\n </div>\n <div [class]=\"survey.css.progressButtonsButton\"><div [class]=\"survey.css.progressButtonsButtonBackground\"></div><div [class]=\"survey.css.progressButtonsButtonContent\"></div><span>{{model.getItemNumber(page)}}</span></div>\n </li>\n </ul>\n </div>\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, false)\"\n (click)=\"clickScrollButton(false)\"\n role=\"button\"\n ></div>\n </div>\n <div *ngIf=\"canShowFooter\" [class]=\"survey.css.progressButtonsFooter\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.footerText\">{{ model.footerText }}</div>\n </div>\n</div>", components: [{ type: i1.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
56
+ ProgressButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressButtonsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
57
+ ProgressButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProgressButtonsComponent, selector: "sv-ng-progress-buttons", inputs: { model: "model", survey: "survey", container: "container" }, viewQueries: [{ propertyName: "progressButtonsListContainer", first: true, predicate: ["progressButtonsListContainer"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [class]=\"model.getRootCss(container)\" [style.maxWidth]=\"model.progressWidth\" [style.--sd-progress-buttons-pages-count]=\"model.visiblePages.length\"\nrole=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" [attr.aria-label]=\"model.progressBarAriaLabel\"\n>\n <div *ngIf=\"canShowHeader\" [class]=\"survey.css.progressButtonsHeader\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.headerText\">{{ model.headerText }}</div>\n </div>\n <div [class]=\"survey.css.progressButtonsContainer\">\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, true)\"\n (click)=\"clickScrollButton(true)\"\n role=\"button\"\n ></div>\n <div\n [class]=\"survey.css.progressButtonsListContainer\" #progressButtonsListContainer>\n <ul [class]=\"survey.css.progressButtonsList\">\n <li\n *ngFor=\"let page of model.visiblePages; index as index\"\n [class]=\"model.getListElementCss(index)\"\n (click)=\"model.isListElementClickable(index) ? model.clickListElement(page) : null\"\n [attr.data-page-number]=\"model.getItemNumber(page)\">\n <div [class]=\"survey.css.progressButtonsConnector\"></div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageTitle\"\n [title]=\"page.renderedNavigationTitle\"\n >\n <sv-ng-string [model]=\"page.locNavigationTitle\"></sv-ng-string>\n </div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageDescription\"\n [title]=\"page.navigationDescription\"\n >\n {{ page.navigationDescription }}\n </div>\n <div [class]=\"survey.css.progressButtonsButton\"><div [class]=\"survey.css.progressButtonsButtonBackground\"></div><div [class]=\"survey.css.progressButtonsButtonContent\"></div><span>{{model.getItemNumber(page)}}</span></div>\n </li>\n </ul>\n </div>\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, false)\"\n (click)=\"clickScrollButton(false)\"\n role=\"button\"\n ></div>\n </div>\n <div *ngIf=\"canShowFooter\" [class]=\"survey.css.progressButtonsFooter\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.footerText\">{{ model.footerText }}</div>\n </div>\n</div>", components: [{ type: i1.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
52
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressButtonsComponent, decorators: [{
53
59
  type: Component,
54
60
  args: [{
55
61
  selector: "sv-ng-progress-buttons",
56
62
  templateUrl: "./progress.component.html"
57
63
  }]
58
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
64
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { model: [{
59
65
  type: Input
60
66
  }], survey: [{
61
67
  type: Input
@@ -66,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
66
72
  args: ["progressButtonsListContainer"]
67
73
  }] } });
68
74
  AngularComponentFactory.Instance.registerComponent("sv-progress-buttons", ProgressButtonsComponent);
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcHJvZ3Jlc3MvYnV0dG9ucy9wcm9ncmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wcm9ncmVzcy9idXR0b25zL3Byb2dyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFjLEtBQUssRUFBK0MsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZKLE9BQU8sRUFBZ0Msa0NBQWtDLEVBQTZCLE1BQU0sYUFBYSxDQUFDO0FBQzFILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBTXJFLE1BQU0sT0FBTyx3QkFBd0I7SUFVbkMsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFMakQsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0Isc0JBQWlCLEdBQVksSUFBSSxDQUFDO0lBR3pDLENBQUM7SUFDRCxRQUFRLENBQUMsaUJBQTBCO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsV0FBb0I7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFDRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsUUFBUTtJQUNSLENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0I7SUFDbEMsQ0FBQztJQUNNLGlCQUFpQixDQUN0QixZQUFxQjtRQUVyQixJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRTtZQUNyQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUM1RjtJQUNILENBQUM7SUFDTSxlQUFlOztRQUNwQixJQUFJLENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLDRCQUE0QiwwQ0FBRSxhQUFhLENBQUEsRUFBRTtZQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsYUFBYSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN0RjtJQUNILENBQUM7SUFDTSxXQUFXOztRQUNoQixNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7O3NIQTdDVSx3QkFBd0I7MEdBQXhCLHdCQUF3Qix1U0NSckMsMjBFQThDTTs0RkR0Q08sd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFdBQVcsRUFBRSwyQkFBMkI7aUJBQ3pDO3dHQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDcUMsNEJBQTRCO3NCQUF0RSxTQUFTO3VCQUFDLDhCQUE4Qjs7QUEyQzNDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdXJ2ZXlNb2RlbCwgUHJvZ3Jlc3NCdXR0b25zLCBQcm9ncmVzc0J1dHRvbnNSZXNwb25zaXZpdHlNYW5hZ2VyLCBJUHJvZ3Jlc3NCdXR0b25zVmlld01vZGVsIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3YtbmctcHJvZ3Jlc3MtYnV0dG9uc1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3Byb2dyZXNzLmNvbXBvbmVudC5odG1sXCJcbn0pXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NCdXR0b25zQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uSW5pdCwgSVByb2dyZXNzQnV0dG9uc1ZpZXdNb2RlbCB7XG4gIEBJbnB1dCgpIG1vZGVsITogUHJvZ3Jlc3NCdXR0b25zO1xuICBASW5wdXQoKSBzdXJ2ZXkhOiBTdXJ2ZXlNb2RlbDtcbiAgQElucHV0KCkgY29udGFpbmVyITogc3RyaW5nO1xuICBAVmlld0NoaWxkKFwicHJvZ3Jlc3NCdXR0b25zTGlzdENvbnRhaW5lclwiKSBwcm9ncmVzc0J1dHRvbnNMaXN0Q29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIHB1YmxpYyBoYXNTY3JvbGxlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgY2FuU2hvd0hlYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgY2FuU2hvd0Zvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgY2FuU2hvd0l0ZW1UaXRsZXM6IGJvb2xlYW4gPSB0cnVlO1xuICBwcml2YXRlIHJlc3BNYW5hZ2VyPzogUHJvZ3Jlc3NCdXR0b25zUmVzcG9uc2l2aXR5TWFuYWdlcjtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuICBvblJlc2l6ZShjYW5TaG93SXRlbVRpdGxlczogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2FuU2hvd0l0ZW1UaXRsZXMgPSBjYW5TaG93SXRlbVRpdGxlcztcbiAgICB0aGlzLmNhblNob3dIZWFkZXIgPSAhdGhpcy5jYW5TaG93SXRlbVRpdGxlcztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBvblVwZGF0ZVNjcm9sbGVyKGhhc1Njcm9sbGVyOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5oYXNTY3JvbGxlciA9IGhhc1Njcm9sbGVyO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIG9uVXBkYXRlU2V0dGluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5TaG93SXRlbVRpdGxlcyA9IHRoaXMubW9kZWwuc2hvd0l0ZW1UaXRsZXM7XG4gICAgdGhpcy5jYW5TaG93Rm9vdGVyID0gIXRoaXMubW9kZWwuc2hvd0l0ZW1UaXRsZXM7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICB9XG4gIHB1YmxpYyBjbGlja1Njcm9sbEJ1dHRvbihcbiAgICBpc0xlZnRTY3JvbGw6IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvZ3Jlc3NCdXR0b25zTGlzdENvbnRhaW5lcikge1xuICAgICAgdGhpcy5wcm9ncmVzc0J1dHRvbnNMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCArPSAoaXNMZWZ0U2Nyb2xsID8gLTEgOiAxKSAqIDcwO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMucHJvZ3Jlc3NCdXR0b25zTGlzdENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMucHJvZ3Jlc3NCdXR0b25zTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgdGhpcy5yZXNwTWFuYWdlciA9IG5ldyBQcm9ncmVzc0J1dHRvbnNSZXNwb25zaXZpdHlNYW5hZ2VyKHRoaXMubW9kZWwsIGVsZW1lbnQsIHRoaXMpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNwTWFuYWdlcj8uZGlzcG9zZSgpO1xuICB9XG59XG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN2LXByb2dyZXNzLWJ1dHRvbnNcIiwgUHJvZ3Jlc3NCdXR0b25zQ29tcG9uZW50KTtcbiIsIjxkaXYgW2NsYXNzXT1cIm1vZGVsLmdldFJvb3RDc3MoY29udGFpbmVyKVwiIFtzdHlsZS5tYXhXaWR0aF09XCJtb2RlbC5wcm9ncmVzc1dpZHRoXCIgW3N0eWxlLi0tc2QtcHJvZ3Jlc3MtYnV0dG9ucy1wYWdlcy1jb3VudF09XCJzdXJ2ZXkudmlzaWJsZVBhZ2VzLmxlbmd0aFwiXG5yb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbWluPVwiMFwiIGFyaWEtdmFsdWVtYXg9XCIxMDBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vZGVsLnByb2dyZXNzQmFyQXJpYUxhYmVsXCJcbj5cbiAgPGRpdiAqbmdJZj1cImNhblNob3dIZWFkZXJcIiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNIZWFkZXJcIj5cbiAgICA8ZGl2IFtjbGFzc109XCJzdXJ2ZXkuY3NzLnByb2dyZXNzQnV0dG9uc1BhZ2VUaXRsZVwiIFt0aXRsZV09XCJtb2RlbC5oZWFkZXJUZXh0XCI+e3sgbW9kZWwuaGVhZGVyVGV4dCB9fTwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNDb250YWluZXJcIj5cbiAgICA8ZGl2XG4gICAgICBbY2xhc3NdPVwibW9kZWwuZ2V0U2Nyb2xsQnV0dG9uQ3NzKGhhc1Njcm9sbGVyLCB0cnVlKVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tTY3JvbGxCdXR0b24odHJ1ZSlcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCJzdXJ2ZXkuY3NzLnByb2dyZXNzQnV0dG9uc0xpc3RDb250YWluZXJcIiAjcHJvZ3Jlc3NCdXR0b25zTGlzdENvbnRhaW5lcj5cbiAgICAgIDx1bCBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNMaXN0XCI+XG4gICAgICAgIDxsaVxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwYWdlIG9mIHN1cnZleS52aXNpYmxlUGFnZXM7IGluZGV4IGFzIGluZGV4XCJcbiAgICAgICAgICBbY2xhc3NdPVwibW9kZWwuZ2V0TGlzdEVsZW1lbnRDc3MoaW5kZXgpXCJcbiAgICAgICAgICAoY2xpY2spPVwibW9kZWwuaXNMaXN0RWxlbWVudENsaWNrYWJsZShpbmRleCkgPyBtb2RlbC5jbGlja0xpc3RFbGVtZW50KHBhZ2UpIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1wYWdlLW51bWJlcl09XCJtb2RlbC5nZXRJdGVtTnVtYmVyKHBhZ2UpXCI+XG4gICAgICAgICAgPGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNDb25uZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuU2hvd0l0ZW1UaXRsZXNcIlxuICAgICAgICAgICAgW2NsYXNzXT1cInN1cnZleS5jc3MucHJvZ3Jlc3NCdXR0b25zUGFnZVRpdGxlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJwYWdlLnJlbmRlcmVkTmF2aWdhdGlvblRpdGxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Ytbmctc3RyaW5nIFttb2RlbF09XCJwYWdlLmxvY05hdmlnYXRpb25UaXRsZVwiPjwvc3Ytbmctc3RyaW5nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5TaG93SXRlbVRpdGxlc1wiXG4gICAgICAgICAgICBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNQYWdlRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW3RpdGxlXT1cInBhZ2UubmF2aWdhdGlvbkRlc2NyaXB0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBwYWdlLm5hdmlnYXRpb25EZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgW2NsYXNzXT1cInN1cnZleS5jc3MucHJvZ3Jlc3NCdXR0b25zQnV0dG9uXCI+PGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNCdXR0b25CYWNrZ3JvdW5kXCI+PC9kaXY+PGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNCdXR0b25Db250ZW50XCI+PC9kaXY+PHNwYW4+e3ttb2RlbC5nZXRJdGVtTnVtYmVyKHBhZ2UpfX08L3NwYW4+PC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCJtb2RlbC5nZXRTY3JvbGxCdXR0b25Dc3MoaGFzU2Nyb2xsZXIsIGZhbHNlKVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tTY3JvbGxCdXR0b24oZmFsc2UpXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJjYW5TaG93Rm9vdGVyXCIgW2NsYXNzXT1cInN1cnZleS5jc3MucHJvZ3Jlc3NCdXR0b25zRm9vdGVyXCI+XG4gICAgPGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNQYWdlVGl0bGVcIiBbdGl0bGVdPVwibW9kZWwuZm9vdGVyVGV4dFwiPnt7IG1vZGVsLmZvb3RlclRleHQgfX08L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcHJvZ3Jlc3MvYnV0dG9ucy9wcm9ncmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wcm9ncmVzcy9idXR0b25zL3Byb2dyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFjLEtBQUssRUFBK0MsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUN6SyxPQUFPLEVBQWdDLGtDQUFrQyxFQUFtQyxNQUFNLGFBQWEsQ0FBQztBQUNoSSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFNcEQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFdBQVc7SUFVdkQsWUFBWSxpQkFBb0MsRUFBRSxnQkFBbUM7UUFDbkYsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFOdEMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0Isc0JBQWlCLEdBQVksSUFBSSxDQUFDO0lBSXpDLENBQUM7SUFDUyxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsUUFBUSxDQUFDLGlCQUEwQjtRQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELGdCQUFnQixDQUFDLFdBQW9CO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNRLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtJQUNsQyxDQUFDO0lBQ00saUJBQWlCLENBQ3RCLFlBQXFCO1FBRXJCLElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQ3JDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLENBQUMsVUFBVSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQzVGO0lBQ0gsQ0FBQztJQUNNLGVBQWU7O1FBQ3BCLElBQUksQ0FBQyxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsNEJBQTRCLDBDQUFFLGFBQWEsQ0FBQSxFQUFFO1lBQ3RELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLENBQUM7WUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RGO0lBQ0gsQ0FBQztJQUNRLFdBQVc7O1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7O3NIQW5EVSx3QkFBd0I7MEdBQXhCLHdCQUF3Qiw4VENUckMseTBFQThDTTs0RkRyQ08sd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFdBQVcsRUFBRSwyQkFBMkI7aUJBQ3pDO3VJQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDcUMsNEJBQTRCO3NCQUF0RSxTQUFTO3VCQUFDLDhCQUE4Qjs7QUFpRDNDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdXJ2ZXlNb2RlbCwgUHJvZ3Jlc3NCdXR0b25zLCBQcm9ncmVzc0J1dHRvbnNSZXNwb25zaXZpdHlNYW5hZ2VyLCBJUHJvZ3Jlc3NCdXR0b25zVmlld01vZGVsLCBCYXNlIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuaW1wb3J0IHsgQmFzZUFuZ3VsYXIgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1hbmd1bGFyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzdi1uZy1wcm9ncmVzcy1idXR0b25zXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vcHJvZ3Jlc3MuY29tcG9uZW50Lmh0bWxcIlxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc0J1dHRvbnNDb21wb25lbnQgZXh0ZW5kcyBCYXNlQW5ndWxhciBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkluaXQsIElQcm9ncmVzc0J1dHRvbnNWaWV3TW9kZWwge1xuICBASW5wdXQoKSBtb2RlbCE6IFByb2dyZXNzQnV0dG9ucztcbiAgQElucHV0KCkgc3VydmV5ITogU3VydmV5TW9kZWw7XG4gIEBJbnB1dCgpIGNvbnRhaW5lciE6IHN0cmluZztcbiAgQFZpZXdDaGlsZChcInByb2dyZXNzQnV0dG9uc0xpc3RDb250YWluZXJcIikgcHJvZ3Jlc3NCdXR0b25zTGlzdENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBwdWJsaWMgaGFzU2Nyb2xsZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGNhblNob3dIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGNhblNob3dGb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGNhblNob3dJdGVtVGl0bGVzOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSByZXNwTWFuYWdlcj86IFByb2dyZXNzQnV0dG9uc1Jlc3BvbnNpdml0eU1hbmFnZXI7XG4gIGNvbnN0cnVjdG9yKGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgdmlld0NvbnRhaW5lclJlZj86IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICBzdXBlcihjaGFuZ2VEZXRlY3RvclJlZiwgdmlld0NvbnRhaW5lclJlZik7XG4gIH1cbiAgcHJvdGVjdGVkIGdldE1vZGVsKCk6IEJhc2Uge1xuICAgIHJldHVybiB0aGlzLm1vZGVsO1xuICB9XG4gIG9uUmVzaXplKGNhblNob3dJdGVtVGl0bGVzOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jYW5TaG93SXRlbVRpdGxlcyA9IGNhblNob3dJdGVtVGl0bGVzO1xuICAgIHRoaXMuY2FuU2hvd0hlYWRlciA9ICF0aGlzLmNhblNob3dJdGVtVGl0bGVzO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIG9uVXBkYXRlU2Nyb2xsZXIoaGFzU2Nyb2xsZXI6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmhhc1Njcm9sbGVyID0gaGFzU2Nyb2xsZXI7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgb25VcGRhdGVTZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLmNhblNob3dJdGVtVGl0bGVzID0gdGhpcy5tb2RlbC5zaG93SXRlbVRpdGxlcztcbiAgICB0aGlzLmNhblNob3dGb290ZXIgPSAhdGhpcy5tb2RlbC5zaG93SXRlbVRpdGxlcztcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgfVxuICBwdWJsaWMgY2xpY2tTY3JvbGxCdXR0b24oXG4gICAgaXNMZWZ0U2Nyb2xsOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2dyZXNzQnV0dG9uc0xpc3RDb250YWluZXIpIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NCdXR0b25zTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgKz0gKGlzTGVmdFNjcm9sbCA/IC0xIDogMSkgKiA3MDtcbiAgICB9XG4gIH1cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoISF0aGlzLnByb2dyZXNzQnV0dG9uc0xpc3RDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnByb2dyZXNzQnV0dG9uc0xpc3RDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMucmVzcE1hbmFnZXIgPSBuZXcgUHJvZ3Jlc3NCdXR0b25zUmVzcG9uc2l2aXR5TWFuYWdlcih0aGlzLm1vZGVsLCBlbGVtZW50LCB0aGlzKTtcbiAgICB9XG4gIH1cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLnJlc3BNYW5hZ2VyPy5kaXNwb3NlKCk7XG4gIH1cbn1cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwic3YtcHJvZ3Jlc3MtYnV0dG9uc1wiLCBQcm9ncmVzc0J1dHRvbnNDb21wb25lbnQpO1xuIiwiPGRpdiBbY2xhc3NdPVwibW9kZWwuZ2V0Um9vdENzcyhjb250YWluZXIpXCIgW3N0eWxlLm1heFdpZHRoXT1cIm1vZGVsLnByb2dyZXNzV2lkdGhcIiBbc3R5bGUuLS1zZC1wcm9ncmVzcy1idXR0b25zLXBhZ2VzLWNvdW50XT1cIm1vZGVsLnZpc2libGVQYWdlcy5sZW5ndGhcIlxucm9sZT1cInByb2dyZXNzYmFyXCIgYXJpYS12YWx1ZW1pbj1cIjBcIiBhcmlhLXZhbHVlbWF4PVwiMTAwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJtb2RlbC5wcm9ncmVzc0JhckFyaWFMYWJlbFwiXG4+XG4gIDxkaXYgKm5nSWY9XCJjYW5TaG93SGVhZGVyXCIgW2NsYXNzXT1cInN1cnZleS5jc3MucHJvZ3Jlc3NCdXR0b25zSGVhZGVyXCI+XG4gICAgPGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNQYWdlVGl0bGVcIiBbdGl0bGVdPVwibW9kZWwuaGVhZGVyVGV4dFwiPnt7IG1vZGVsLmhlYWRlclRleHQgfX08L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgW2NsYXNzXT1cInN1cnZleS5jc3MucHJvZ3Jlc3NCdXR0b25zQ29udGFpbmVyXCI+XG4gICAgPGRpdlxuICAgICAgW2NsYXNzXT1cIm1vZGVsLmdldFNjcm9sbEJ1dHRvbkNzcyhoYXNTY3JvbGxlciwgdHJ1ZSlcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrU2Nyb2xsQnV0dG9uKHRydWUpXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID48L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNMaXN0Q29udGFpbmVyXCIgI3Byb2dyZXNzQnV0dG9uc0xpc3RDb250YWluZXI+XG4gICAgICA8dWwgW2NsYXNzXT1cInN1cnZleS5jc3MucHJvZ3Jlc3NCdXR0b25zTGlzdFwiPlxuICAgICAgICA8bGlcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgcGFnZSBvZiBtb2RlbC52aXNpYmxlUGFnZXM7IGluZGV4IGFzIGluZGV4XCJcbiAgICAgICAgICBbY2xhc3NdPVwibW9kZWwuZ2V0TGlzdEVsZW1lbnRDc3MoaW5kZXgpXCJcbiAgICAgICAgICAoY2xpY2spPVwibW9kZWwuaXNMaXN0RWxlbWVudENsaWNrYWJsZShpbmRleCkgPyBtb2RlbC5jbGlja0xpc3RFbGVtZW50KHBhZ2UpIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1wYWdlLW51bWJlcl09XCJtb2RlbC5nZXRJdGVtTnVtYmVyKHBhZ2UpXCI+XG4gICAgICAgICAgPGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNDb25uZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuU2hvd0l0ZW1UaXRsZXNcIlxuICAgICAgICAgICAgW2NsYXNzXT1cInN1cnZleS5jc3MucHJvZ3Jlc3NCdXR0b25zUGFnZVRpdGxlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJwYWdlLnJlbmRlcmVkTmF2aWdhdGlvblRpdGxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Ytbmctc3RyaW5nIFttb2RlbF09XCJwYWdlLmxvY05hdmlnYXRpb25UaXRsZVwiPjwvc3Ytbmctc3RyaW5nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5TaG93SXRlbVRpdGxlc1wiXG4gICAgICAgICAgICBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNQYWdlRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW3RpdGxlXT1cInBhZ2UubmF2aWdhdGlvbkRlc2NyaXB0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBwYWdlLm5hdmlnYXRpb25EZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgW2NsYXNzXT1cInN1cnZleS5jc3MucHJvZ3Jlc3NCdXR0b25zQnV0dG9uXCI+PGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNCdXR0b25CYWNrZ3JvdW5kXCI+PC9kaXY+PGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNCdXR0b25Db250ZW50XCI+PC9kaXY+PHNwYW4+e3ttb2RlbC5nZXRJdGVtTnVtYmVyKHBhZ2UpfX08L3NwYW4+PC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCJtb2RlbC5nZXRTY3JvbGxCdXR0b25Dc3MoaGFzU2Nyb2xsZXIsIGZhbHNlKVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tTY3JvbGxCdXR0b24oZmFsc2UpXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJjYW5TaG93Rm9vdGVyXCIgW2NsYXNzXT1cInN1cnZleS5jc3MucHJvZ3Jlc3NCdXR0b25zRm9vdGVyXCI+XG4gICAgPGRpdiBbY2xhc3NdPVwic3VydmV5LmNzcy5wcm9ncmVzc0J1dHRvbnNQYWdlVGl0bGVcIiBbdGl0bGVdPVwibW9kZWwuZm9vdGVyVGV4dFwiPnt7IG1vZGVsLmZvb3RlclRleHQgfX08L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -2953,29 +2953,33 @@ AngularComponentFactory.Instance.registerComponent("sv-progress-questions", Prog
2953
2953
  AngularComponentFactory.Instance.registerComponent("sv-progress-correctquestions", ProgressDefaultComponent);
2954
2954
  AngularComponentFactory.Instance.registerComponent("sv-progress-requiredquestions", ProgressDefaultComponent);
2955
2955
 
2956
- class ProgressButtonsComponent {
2957
- constructor(changeDetectorRef) {
2958
- this.changeDetectorRef = changeDetectorRef;
2956
+ class ProgressButtonsComponent extends BaseAngular {
2957
+ constructor(changeDetectorRef, viewContainerRef) {
2958
+ super(changeDetectorRef, viewContainerRef);
2959
2959
  this.hasScroller = false;
2960
2960
  this.canShowHeader = false;
2961
2961
  this.canShowFooter = false;
2962
2962
  this.canShowItemTitles = true;
2963
2963
  }
2964
+ getModel() {
2965
+ return this.model;
2966
+ }
2964
2967
  onResize(canShowItemTitles) {
2965
2968
  this.canShowItemTitles = canShowItemTitles;
2966
2969
  this.canShowHeader = !this.canShowItemTitles;
2967
- this.changeDetectorRef.detectChanges();
2970
+ this.detectChanges();
2968
2971
  }
2969
2972
  onUpdateScroller(hasScroller) {
2970
2973
  this.hasScroller = hasScroller;
2971
- this.changeDetectorRef.detectChanges();
2974
+ this.detectChanges();
2972
2975
  }
2973
2976
  onUpdateSettings() {
2974
2977
  this.canShowItemTitles = this.model.showItemTitles;
2975
2978
  this.canShowFooter = !this.model.showItemTitles;
2976
- this.changeDetectorRef.detectChanges();
2979
+ this.detectChanges();
2977
2980
  }
2978
2981
  ngOnInit() {
2982
+ super.ngOnInit();
2979
2983
  }
2980
2984
  ngOnChanges(changes) {
2981
2985
  }
@@ -2993,18 +2997,19 @@ class ProgressButtonsComponent {
2993
2997
  }
2994
2998
  ngOnDestroy() {
2995
2999
  var _a;
3000
+ super.ngOnDestroy();
2996
3001
  (_a = this.respManager) === null || _a === void 0 ? void 0 : _a.dispose();
2997
3002
  }
2998
3003
  }
2999
- ProgressButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressButtonsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3000
- ProgressButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProgressButtonsComponent, selector: "sv-ng-progress-buttons", inputs: { model: "model", survey: "survey", container: "container" }, viewQueries: [{ propertyName: "progressButtonsListContainer", first: true, predicate: ["progressButtonsListContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [class]=\"model.getRootCss(container)\" [style.maxWidth]=\"model.progressWidth\" [style.--sd-progress-buttons-pages-count]=\"survey.visiblePages.length\"\nrole=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" [attr.aria-label]=\"model.progressBarAriaLabel\"\n>\n <div *ngIf=\"canShowHeader\" [class]=\"survey.css.progressButtonsHeader\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.headerText\">{{ model.headerText }}</div>\n </div>\n <div [class]=\"survey.css.progressButtonsContainer\">\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, true)\"\n (click)=\"clickScrollButton(true)\"\n role=\"button\"\n ></div>\n <div\n [class]=\"survey.css.progressButtonsListContainer\" #progressButtonsListContainer>\n <ul [class]=\"survey.css.progressButtonsList\">\n <li\n *ngFor=\"let page of survey.visiblePages; index as index\"\n [class]=\"model.getListElementCss(index)\"\n (click)=\"model.isListElementClickable(index) ? model.clickListElement(page) : null\"\n [attr.data-page-number]=\"model.getItemNumber(page)\">\n <div [class]=\"survey.css.progressButtonsConnector\"></div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageTitle\"\n [title]=\"page.renderedNavigationTitle\"\n >\n <sv-ng-string [model]=\"page.locNavigationTitle\"></sv-ng-string>\n </div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageDescription\"\n [title]=\"page.navigationDescription\"\n >\n {{ page.navigationDescription }}\n </div>\n <div [class]=\"survey.css.progressButtonsButton\"><div [class]=\"survey.css.progressButtonsButtonBackground\"></div><div [class]=\"survey.css.progressButtonsButtonContent\"></div><span>{{model.getItemNumber(page)}}</span></div>\n </li>\n </ul>\n </div>\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, false)\"\n (click)=\"clickScrollButton(false)\"\n role=\"button\"\n ></div>\n </div>\n <div *ngIf=\"canShowFooter\" [class]=\"survey.css.progressButtonsFooter\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.footerText\">{{ model.footerText }}</div>\n </div>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
3004
+ ProgressButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressButtonsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
3005
+ ProgressButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProgressButtonsComponent, selector: "sv-ng-progress-buttons", inputs: { model: "model", survey: "survey", container: "container" }, viewQueries: [{ propertyName: "progressButtonsListContainer", first: true, predicate: ["progressButtonsListContainer"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [class]=\"model.getRootCss(container)\" [style.maxWidth]=\"model.progressWidth\" [style.--sd-progress-buttons-pages-count]=\"model.visiblePages.length\"\nrole=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" [attr.aria-label]=\"model.progressBarAriaLabel\"\n>\n <div *ngIf=\"canShowHeader\" [class]=\"survey.css.progressButtonsHeader\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.headerText\">{{ model.headerText }}</div>\n </div>\n <div [class]=\"survey.css.progressButtonsContainer\">\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, true)\"\n (click)=\"clickScrollButton(true)\"\n role=\"button\"\n ></div>\n <div\n [class]=\"survey.css.progressButtonsListContainer\" #progressButtonsListContainer>\n <ul [class]=\"survey.css.progressButtonsList\">\n <li\n *ngFor=\"let page of model.visiblePages; index as index\"\n [class]=\"model.getListElementCss(index)\"\n (click)=\"model.isListElementClickable(index) ? model.clickListElement(page) : null\"\n [attr.data-page-number]=\"model.getItemNumber(page)\">\n <div [class]=\"survey.css.progressButtonsConnector\"></div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageTitle\"\n [title]=\"page.renderedNavigationTitle\"\n >\n <sv-ng-string [model]=\"page.locNavigationTitle\"></sv-ng-string>\n </div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageDescription\"\n [title]=\"page.navigationDescription\"\n >\n {{ page.navigationDescription }}\n </div>\n <div [class]=\"survey.css.progressButtonsButton\"><div [class]=\"survey.css.progressButtonsButtonBackground\"></div><div [class]=\"survey.css.progressButtonsButtonContent\"></div><span>{{model.getItemNumber(page)}}</span></div>\n </li>\n </ul>\n </div>\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, false)\"\n (click)=\"clickScrollButton(false)\"\n role=\"button\"\n ></div>\n </div>\n <div *ngIf=\"canShowFooter\" [class]=\"survey.css.progressButtonsFooter\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.footerText\">{{ model.footerText }}</div>\n </div>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
3001
3006
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressButtonsComponent, decorators: [{
3002
3007
  type: Component,
3003
3008
  args: [{
3004
3009
  selector: "sv-ng-progress-buttons",
3005
3010
  templateUrl: "./progress.component.html"
3006
3011
  }]
3007
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
3012
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { model: [{
3008
3013
  type: Input
3009
3014
  }], survey: [{
3010
3015
  type: Input