@pepperi-addons/ngx-lib 0.4.2-beta.320 → 0.4.2-beta.321
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/customization/customization.service.d.ts +3 -1
- package/esm2020/core/common/services/utilities.service.mjs +13 -8
- package/esm2020/core/customization/customization.service.mjs +13 -2
- package/esm2020/list/list.component.mjs +8 -1
- package/esm2020/top-bar/top-bar.component.mjs +16 -13
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs +7 -0
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs +16 -13
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.mjs +24 -8
- package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-list.mjs +7 -0
- package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs +15 -12
- package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib.mjs +24 -8
- package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/package.json +1 -1
- package/src/core/style/abstracts/mixins.scss +244 -99
- package/src/core/style/components/general.scss +57 -29
- package/top-bar/top-bar.component.d.ts +2 -2
|
@@ -18,17 +18,22 @@ export class PepTopBarComponent {
|
|
|
18
18
|
this.isHidden = true;
|
|
19
19
|
this.searchIsOpenAndSmallDevice = false;
|
|
20
20
|
this.PepScreenSizeType = PepScreenSizeType;
|
|
21
|
-
this.__pepLifecyclePhase = 'constructor';
|
|
22
21
|
this.__pepViewReady = false;
|
|
22
|
+
this._footerOwnerSeq = 0;
|
|
23
23
|
}
|
|
24
24
|
ngAfterViewInit() {
|
|
25
|
-
this.__pepLifecyclePhase = 'ngAfterViewInit';
|
|
26
25
|
setTimeout(() => {
|
|
27
26
|
if (!this.inline) {
|
|
28
|
-
this.
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
const startLen = this.footerStartContent?.nativeElement?.children?.length ?? -1;
|
|
28
|
+
const endLen = this.footerEndContent?.nativeElement?.children?.length ?? -1;
|
|
29
|
+
this.hasFooterContent = startLen > 0 || endLen > 0;
|
|
31
30
|
}
|
|
31
|
+
// Mark view ready BEFORE subscribing so that cdRef.detectChanges() runs
|
|
32
|
+
// inside setFooterState() before footerStateChange is emitted on the
|
|
33
|
+
// first (synchronous) BehaviorSubject emission. Without this, Angular's
|
|
34
|
+
// DOM is not updated before the React wrapper queries .footer on SPA navigation.
|
|
35
|
+
this.isHidden = false;
|
|
36
|
+
this.__pepViewReady = true;
|
|
32
37
|
this.layoutService.onResize$.subscribe((size) => {
|
|
33
38
|
this.screenSize = size;
|
|
34
39
|
this.setSearchIsOpenAndSmallDevice();
|
|
@@ -36,15 +41,12 @@ export class PepTopBarComponent {
|
|
|
36
41
|
this.setFooterState();
|
|
37
42
|
}
|
|
38
43
|
});
|
|
39
|
-
this.isHidden = false;
|
|
40
|
-
this.__pepViewReady = true;
|
|
41
44
|
if (this.cdRef && this.__pepViewReady) {
|
|
42
45
|
this.cdRef.detectChanges();
|
|
43
46
|
}
|
|
44
47
|
});
|
|
45
48
|
}
|
|
46
49
|
ngAfterContentInit() {
|
|
47
|
-
this.__pepLifecyclePhase = 'ngAfterContentInit';
|
|
48
50
|
if (this.searchComp) {
|
|
49
51
|
this.searchComp.stateChange
|
|
50
52
|
.subscribe((searchStateChangeEvent) => {
|
|
@@ -56,7 +58,7 @@ export class PepTopBarComponent {
|
|
|
56
58
|
}
|
|
57
59
|
ngOnDestroy() {
|
|
58
60
|
if (this.customizationService) {
|
|
59
|
-
this.customizationService.hideFooter();
|
|
61
|
+
this.customizationService.hideFooter(this._footerOwnerSeq);
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
64
|
setSearchIsOpenAndSmallDevice() {
|
|
@@ -77,18 +79,19 @@ export class PepTopBarComponent {
|
|
|
77
79
|
this.footerStateChange.emit({ state: this.footerState });
|
|
78
80
|
if (this.footerState === 'visible') {
|
|
79
81
|
this.customizationService.showFooter();
|
|
82
|
+
this._footerOwnerSeq = this.customizationService.footerOwnerSeq;
|
|
80
83
|
}
|
|
81
84
|
else {
|
|
82
|
-
this.customizationService.hideFooter();
|
|
85
|
+
this.customizationService.hideFooter(this._footerOwnerSeq);
|
|
83
86
|
}
|
|
84
87
|
}
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
90
|
PepTopBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTopBarComponent, deps: [{ token: i1.PepCustomizationService }, { token: i1.PepLayoutService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
88
|
-
PepTopBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepTopBarComponent, selector: "pep-top-bar", inputs: { inline: "inline", title: "title" }, outputs: { footerStateChange: "footerStateChange" }, queries: [{ propertyName: "searchComp", first: true, predicate: PepSearchComponent, descendants: true }, { propertyName: "listActionsComp", first: true, predicate: PepListActionsComponent, descendants: true }, { propertyName: "listChooserComp", first: true, predicate: PepListChooserComponent, descendants: true }, { propertyName: "listTotalComp", first: true, predicate: PepListTotalComponent, descendants: true }, { propertyName: "listSortingComp", first: true, predicate: PepListSortingComponent, descendants: true }, { propertyName: "listViewsComp", first: true, predicate: PepListViewsComponent, descendants: true }], viewQueries: [{ propertyName: "footerStartContent", first: true, predicate: ["footerStartContent"], descendants: true }, { propertyName: "footerEndContent", first: true, predicate: ["footerEndContent"], descendants: true }], ngImport: i0, template: "<div pepRtlDirection [hidden]=\"isHidden\" class=\"pep-top-bar-container\" [ngClass]=\"{ inline: inline }\">\n <div class=\"header-content\">\n <div class=\"main-layout\">\n <div class=\"content pep-border-bottom\">\n <div class=\"left-container pep-spacing-element-negative\">\n <ng-container *ngTemplateOutlet=\"listActionsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"listChooserTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"leftContentTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"listTotalTemplate\"></ng-container>\n </div>\n <div class=\"pep-spacing-element\"></div>\n <div class=\"right-container pep-spacing-element-negative\">\n <ng-container *ngTemplateOutlet=\"searchTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"sortingTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"viewsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"rightContentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <!-- hasFooterContent === null is for the first load to see if there is data in the (footer-start-content || footer-end-content). -->\n <div *ngIf=\"hasFooterContent === null || (hasFooterContent && footerState === 'visible')\" class=\"footer\"\n [style.height.rem]=\"customizationService.footerHeight\">\n <div class=\"content pep-border-top\">\n <div #footerStartContent class=\"left-container pep-spacing-element-negative flex-wrapper\">\n <ng-content select=\"[footer-start-content]\"></ng-content>\n </div>\n <div #footerEndContent class=\"right-container pep-spacing-element-negative flex-wrapper\">\n <ng-content select=\"[footer-end-content]\"></ng-content>\n </div>\n </div>\n <!-- <ng-container *ngIf=\"showFooter && screenSize >= PepScreenSizeType.MD; then footerBlock; else noFooterBlock\">\n </ng-container>\n <ng-template #footerBlock>\n {{ customizationService.showFooter() }}\n </ng-template>\n <ng-template #noFooterBlock>\n {{ customizationService.hideFooter() }}\n </ng-template> -->\n </div>\n\n</div>\n\n<!-- Left side templates -->\n<ng-template #listActionsTemplate>\n <div class=\"list-actions-wrapper\">\n <ng-content *ngIf=\"!searchIsOpenAndSmallDevice\" select=\"pep-list-actions\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #titleTemplate>\n <div *ngIf=\"title?.length > 0\" class=\"pep-spacing-element title ellipsis {{ inline ? 'title-md' : 'title-lg' }} \"\n [ngClass]=\"{ 'md-max-title-width': screenSize === PepScreenSizeType.MD, 'sm-max-title-width': screenSize >= PepScreenSizeType.SM }\"\n >\n <span class=\"ellipsis\" [title]=\"title\">{{ title }}</span>\n </div>\n</ng-template>\n\n<ng-template #listChooserTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listChooserComp }\">\n <ng-content select=\"pep-list-chooser\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #leftContentTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" class=\"flex-wrapper\">\n <ng-content select=\"[header-start-content]\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #listTotalTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listTotalComp }\">\n <ng-content select=\"pep-list-total\"></ng-content>\n </div>\n</ng-template>\n\n<!-- Right side templates -->\n<ng-template #searchTemplate>\n <div [ngClass]=\"{ 'pep-spacing-element': searchComp }\">\n <ng-content select=\"pep-search\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #sortingTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listSortingComp }\">\n <ng-content select=\"pep-list-sorting\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #viewsTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listViewsComp }\" class=\"flex-wrapper\">\n <ng-content select=\"pep-list-views\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #rightContentTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" class=\"flex-wrapper\">\n <ng-content select=\"[header-end-content]\"></ng-content>\n </div>\n</ng-template>", styles: [".pep-top-bar-container{display:grid;height:calc(var(--pep-top-bar-spacing-top, 1.5rem) + var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));z-index:101}.pep-top-bar-container .title{display:inline-flex!important;align-items:center;justify-content:center}.pep-top-bar-container .title.md-max-title-width{max-width:300px}.pep-top-bar-container .title.sm-max-title-width{max-width:180px}.pep-top-bar-container .header-content{height:calc(var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));margin-top:var(--pep-top-bar-spacing-top, 1.5rem)}.pep-top-bar-container .header-content .main-layout{width:inherit;height:inherit;padding:0}.pep-top-bar-container .header-content .main-layout .content{display:flex;justify-content:space-between;height:inherit}.pep-top-bar-container .header-content .main-layout .content .left-container,.pep-top-bar-container .header-content .main-layout .content .right-container{height:inherit}.pep-top-bar-container .footer{position:fixed;bottom:0;left:0;right:0;height:var(--pep-footer-bar-height, 4.5rem);z-index:101}.pep-top-bar-container .footer .content{display:flex;justify-content:space-between;margin-inline:calc(var(--pep-spacing-lg, 1rem) * 2);padding-top:var(--pep-footer-bar-spacing-top, .75rem)}@media (max-width: 599px){.pep-top-bar-container .footer .content{margin-inline:var(--pep-spacing-lg, 1rem)}}.pep-top-bar-container .left-container{display:flex}.pep-top-bar-container .right-container{display:flex;justify-content:flex-end}.pep-top-bar-container .flex-wrapper ::ng-deep>*{display:flex}.pep-top-bar-container .list-actions-wrapper ::ng-deep .pep-button{margin-right:var(--pep-spacing-xs, .25rem);margin-left:var(--pep-spacing-xs, .25rem)}.pep-top-bar-container:not(.inline) ::ng-deep .pepperi-button,.pep-top-bar-container:not(.inline) ::ng-deep .pep-button,.pep-top-bar-container:not(.inline) .pepperi-button,.pep-top-bar-container:not(.inline) .pep-button{height:var(--pep-top-bar-field-height, 2.5rem);line-height:var(--pep-top-bar-field-height, 2.5rem)}.pep-top-bar-container.inline{position:inherit;height:var(--pep-top-bar-field-height, 2.5rem);width:100%}.pep-top-bar-container.inline .header-content{margin-top:0;height:inherit;padding:0;position:inherit;width:inherit}.pep-top-bar-container.inline .header-content .main-layout{width:inherit;height:inherit;padding:0}.pep-top-bar-container.inline .header-content .main-layout .content{height:inherit;margin:0}\n", ".pep-top-bar-container{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.pep-top-bar-container .footer{background-color:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.PepRtlDirectionDirective, selector: "[pepRtlDirection]" }] });
|
|
91
|
+
PepTopBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepTopBarComponent, selector: "pep-top-bar", inputs: { inline: "inline", title: "title" }, outputs: { footerStateChange: "footerStateChange" }, queries: [{ propertyName: "searchComp", first: true, predicate: PepSearchComponent, descendants: true }, { propertyName: "listActionsComp", first: true, predicate: PepListActionsComponent, descendants: true }, { propertyName: "listChooserComp", first: true, predicate: PepListChooserComponent, descendants: true }, { propertyName: "listTotalComp", first: true, predicate: PepListTotalComponent, descendants: true }, { propertyName: "listSortingComp", first: true, predicate: PepListSortingComponent, descendants: true }, { propertyName: "listViewsComp", first: true, predicate: PepListViewsComponent, descendants: true }], viewQueries: [{ propertyName: "footerStartContent", first: true, predicate: ["footerStartContent"], descendants: true }, { propertyName: "footerEndContent", first: true, predicate: ["footerEndContent"], descendants: true }], ngImport: i0, template: "<div pepRtlDirection [hidden]=\"isHidden\" class=\"pep-top-bar-container\" [ngClass]=\"{ inline: inline }\">\n <div class=\"header-content\">\n <div class=\"main-layout\">\n <div class=\"content pep-border-bottom\">\n <div class=\"left-container pep-spacing-element-negative\">\n <ng-container *ngTemplateOutlet=\"listActionsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"listChooserTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"leftContentTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"listTotalTemplate\"></ng-container>\n </div>\n <div class=\"pep-spacing-element\"></div>\n <div class=\"right-container pep-spacing-element-negative\">\n <ng-container *ngTemplateOutlet=\"searchTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"sortingTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"viewsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"rightContentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <!-- hasFooterContent === null is for the first load to see if there is data in the (footer-start-content || footer-end-content). -->\n <div *ngIf=\"hasFooterContent === null || (hasFooterContent && footerState === 'visible')\" class=\"footer\"\n [style.height.rem]=\"customizationService.footerHeight\">\n <div class=\"content pep-border-top\">\n <div #footerStartContent class=\"left-container pep-spacing-element-negative flex-wrapper\">\n <ng-content select=\"[footer-start-content]\"></ng-content>\n </div>\n <div #footerEndContent class=\"right-container pep-spacing-element-negative flex-wrapper\">\n <ng-content select=\"[footer-end-content]\"></ng-content>\n </div>\n </div>\n <!-- <ng-container *ngIf=\"showFooter && screenSize >= PepScreenSizeType.MD; then footerBlock; else noFooterBlock\">\n </ng-container>\n <ng-template #footerBlock>\n {{ customizationService.showFooter() }}\n </ng-template>\n <ng-template #noFooterBlock>\n {{ customizationService.hideFooter() }}\n </ng-template> -->\n </div>\n\n</div>\n\n<!-- Left side templates -->\n<ng-template #listActionsTemplate>\n <div class=\"list-actions-wrapper\">\n <ng-content *ngIf=\"!searchIsOpenAndSmallDevice\" select=\"pep-list-actions-element\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #titleTemplate>\n <div *ngIf=\"title?.length > 0\" class=\"pep-spacing-element title ellipsis {{ inline ? 'title-md' : 'title-lg' }} \"\n [ngClass]=\"{ 'md-max-title-width': screenSize === PepScreenSizeType.MD, 'sm-max-title-width': screenSize >= PepScreenSizeType.SM }\"\n >\n <span class=\"ellipsis\" [title]=\"title\">{{ title }}</span>\n </div>\n</ng-template>\n\n<ng-template #listChooserTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listChooserComp }\">\n <ng-content select=\"pep-list-chooser\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #leftContentTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" class=\"flex-wrapper\">\n <ng-content select=\"[header-start-content]\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #listTotalTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listTotalComp }\">\n <ng-content select=\"pep-list-total\"></ng-content>\n </div>\n</ng-template>\n\n<!-- Right side templates -->\n<ng-template #searchTemplate>\n <div [ngClass]=\"{ 'pep-spacing-element': searchComp }\">\n <ng-content select=\"pep-search\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #sortingTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listSortingComp }\">\n <ng-content select=\"pep-list-sorting\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #viewsTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listViewsComp }\" class=\"flex-wrapper\">\n <ng-content select=\"pep-list-views\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #rightContentTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" class=\"flex-wrapper\">\n <ng-content select=\"[header-end-content]\"></ng-content>\n </div>\n</ng-template>", styles: [".pep-top-bar-container{display:grid;height:calc(var(--pep-top-bar-spacing-top, 1.5rem) + var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));z-index:101}.pep-top-bar-container .title{display:inline-flex!important;align-items:center;justify-content:center}.pep-top-bar-container .title.md-max-title-width{max-width:300px}.pep-top-bar-container .title.sm-max-title-width{max-width:180px}.pep-top-bar-container .header-content{height:calc(var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));margin-top:var(--pep-top-bar-spacing-top, 1.5rem)}.pep-top-bar-container .header-content .main-layout{width:inherit;height:inherit;padding:0}.pep-top-bar-container .header-content .main-layout .content{display:flex;justify-content:space-between;height:inherit}.pep-top-bar-container .header-content .main-layout .content .left-container,.pep-top-bar-container .header-content .main-layout .content .right-container{height:inherit}.pep-top-bar-container .footer{position:fixed;bottom:0;left:0;right:0;height:var(--pep-footer-bar-height, 4.5rem);z-index:101}.pep-top-bar-container .footer .content{display:flex;justify-content:space-between;margin-inline:calc(var(--pep-spacing-lg, 1rem) * 2);padding-top:var(--pep-footer-bar-spacing-top, .75rem)}@media (max-width: 599px){.pep-top-bar-container .footer .content{margin-inline:var(--pep-spacing-lg, 1rem)}}.pep-top-bar-container .left-container{display:flex}.pep-top-bar-container .right-container{display:flex;justify-content:flex-end}.pep-top-bar-container .flex-wrapper ::ng-deep>*{display:flex}.pep-top-bar-container .list-actions-wrapper ::ng-deep .pep-button{margin-right:var(--pep-spacing-xs, .25rem);margin-left:var(--pep-spacing-xs, .25rem)}.pep-top-bar-container:not(.inline) ::ng-deep .pepperi-button,.pep-top-bar-container:not(.inline) ::ng-deep .pep-button,.pep-top-bar-container:not(.inline) .pepperi-button,.pep-top-bar-container:not(.inline) .pep-button{height:var(--pep-top-bar-field-height, 2.5rem);line-height:var(--pep-top-bar-field-height, 2.5rem)}.pep-top-bar-container.inline{position:inherit;height:var(--pep-top-bar-field-height, 2.5rem);width:100%}.pep-top-bar-container.inline .header-content{margin-top:0;height:inherit;padding:0;position:inherit;width:inherit}.pep-top-bar-container.inline .header-content .main-layout{width:inherit;height:inherit;padding:0}.pep-top-bar-container.inline .header-content .main-layout .content{height:inherit;margin:0}\n", ".pep-top-bar-container{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.pep-top-bar-container .footer{background-color:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.PepRtlDirectionDirective, selector: "[pepRtlDirection]" }] });
|
|
89
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTopBarComponent, decorators: [{
|
|
90
93
|
type: Component,
|
|
91
|
-
args: [{ selector: 'pep-top-bar', template: "<div pepRtlDirection [hidden]=\"isHidden\" class=\"pep-top-bar-container\" [ngClass]=\"{ inline: inline }\">\n <div class=\"header-content\">\n <div class=\"main-layout\">\n <div class=\"content pep-border-bottom\">\n <div class=\"left-container pep-spacing-element-negative\">\n <ng-container *ngTemplateOutlet=\"listActionsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"listChooserTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"leftContentTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"listTotalTemplate\"></ng-container>\n </div>\n <div class=\"pep-spacing-element\"></div>\n <div class=\"right-container pep-spacing-element-negative\">\n <ng-container *ngTemplateOutlet=\"searchTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"sortingTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"viewsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"rightContentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <!-- hasFooterContent === null is for the first load to see if there is data in the (footer-start-content || footer-end-content). -->\n <div *ngIf=\"hasFooterContent === null || (hasFooterContent && footerState === 'visible')\" class=\"footer\"\n [style.height.rem]=\"customizationService.footerHeight\">\n <div class=\"content pep-border-top\">\n <div #footerStartContent class=\"left-container pep-spacing-element-negative flex-wrapper\">\n <ng-content select=\"[footer-start-content]\"></ng-content>\n </div>\n <div #footerEndContent class=\"right-container pep-spacing-element-negative flex-wrapper\">\n <ng-content select=\"[footer-end-content]\"></ng-content>\n </div>\n </div>\n <!-- <ng-container *ngIf=\"showFooter && screenSize >= PepScreenSizeType.MD; then footerBlock; else noFooterBlock\">\n </ng-container>\n <ng-template #footerBlock>\n {{ customizationService.showFooter() }}\n </ng-template>\n <ng-template #noFooterBlock>\n {{ customizationService.hideFooter() }}\n </ng-template> -->\n </div>\n\n</div>\n\n<!-- Left side templates -->\n<ng-template #listActionsTemplate>\n <div class=\"list-actions-wrapper\">\n <ng-content *ngIf=\"!searchIsOpenAndSmallDevice\" select=\"pep-list-actions\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #titleTemplate>\n <div *ngIf=\"title?.length > 0\" class=\"pep-spacing-element title ellipsis {{ inline ? 'title-md' : 'title-lg' }} \"\n [ngClass]=\"{ 'md-max-title-width': screenSize === PepScreenSizeType.MD, 'sm-max-title-width': screenSize >= PepScreenSizeType.SM }\"\n >\n <span class=\"ellipsis\" [title]=\"title\">{{ title }}</span>\n </div>\n</ng-template>\n\n<ng-template #listChooserTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listChooserComp }\">\n <ng-content select=\"pep-list-chooser\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #leftContentTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" class=\"flex-wrapper\">\n <ng-content select=\"[header-start-content]\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #listTotalTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listTotalComp }\">\n <ng-content select=\"pep-list-total\"></ng-content>\n </div>\n</ng-template>\n\n<!-- Right side templates -->\n<ng-template #searchTemplate>\n <div [ngClass]=\"{ 'pep-spacing-element': searchComp }\">\n <ng-content select=\"pep-search\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #sortingTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listSortingComp }\">\n <ng-content select=\"pep-list-sorting\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #viewsTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listViewsComp }\" class=\"flex-wrapper\">\n <ng-content select=\"pep-list-views\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #rightContentTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" class=\"flex-wrapper\">\n <ng-content select=\"[header-end-content]\"></ng-content>\n </div>\n</ng-template>", styles: [".pep-top-bar-container{display:grid;height:calc(var(--pep-top-bar-spacing-top, 1.5rem) + var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));z-index:101}.pep-top-bar-container .title{display:inline-flex!important;align-items:center;justify-content:center}.pep-top-bar-container .title.md-max-title-width{max-width:300px}.pep-top-bar-container .title.sm-max-title-width{max-width:180px}.pep-top-bar-container .header-content{height:calc(var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));margin-top:var(--pep-top-bar-spacing-top, 1.5rem)}.pep-top-bar-container .header-content .main-layout{width:inherit;height:inherit;padding:0}.pep-top-bar-container .header-content .main-layout .content{display:flex;justify-content:space-between;height:inherit}.pep-top-bar-container .header-content .main-layout .content .left-container,.pep-top-bar-container .header-content .main-layout .content .right-container{height:inherit}.pep-top-bar-container .footer{position:fixed;bottom:0;left:0;right:0;height:var(--pep-footer-bar-height, 4.5rem);z-index:101}.pep-top-bar-container .footer .content{display:flex;justify-content:space-between;margin-inline:calc(var(--pep-spacing-lg, 1rem) * 2);padding-top:var(--pep-footer-bar-spacing-top, .75rem)}@media (max-width: 599px){.pep-top-bar-container .footer .content{margin-inline:var(--pep-spacing-lg, 1rem)}}.pep-top-bar-container .left-container{display:flex}.pep-top-bar-container .right-container{display:flex;justify-content:flex-end}.pep-top-bar-container .flex-wrapper ::ng-deep>*{display:flex}.pep-top-bar-container .list-actions-wrapper ::ng-deep .pep-button{margin-right:var(--pep-spacing-xs, .25rem);margin-left:var(--pep-spacing-xs, .25rem)}.pep-top-bar-container:not(.inline) ::ng-deep .pepperi-button,.pep-top-bar-container:not(.inline) ::ng-deep .pep-button,.pep-top-bar-container:not(.inline) .pepperi-button,.pep-top-bar-container:not(.inline) .pep-button{height:var(--pep-top-bar-field-height, 2.5rem);line-height:var(--pep-top-bar-field-height, 2.5rem)}.pep-top-bar-container.inline{position:inherit;height:var(--pep-top-bar-field-height, 2.5rem);width:100%}.pep-top-bar-container.inline .header-content{margin-top:0;height:inherit;padding:0;position:inherit;width:inherit}.pep-top-bar-container.inline .header-content .main-layout{width:inherit;height:inherit;padding:0}.pep-top-bar-container.inline .header-content .main-layout .content{height:inherit;margin:0}\n", ".pep-top-bar-container{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.pep-top-bar-container .footer{background-color:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}\n"] }]
|
|
94
|
+
args: [{ selector: 'pep-top-bar', template: "<div pepRtlDirection [hidden]=\"isHidden\" class=\"pep-top-bar-container\" [ngClass]=\"{ inline: inline }\">\n <div class=\"header-content\">\n <div class=\"main-layout\">\n <div class=\"content pep-border-bottom\">\n <div class=\"left-container pep-spacing-element-negative\">\n <ng-container *ngTemplateOutlet=\"listActionsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"listChooserTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"leftContentTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"listTotalTemplate\"></ng-container>\n </div>\n <div class=\"pep-spacing-element\"></div>\n <div class=\"right-container pep-spacing-element-negative\">\n <ng-container *ngTemplateOutlet=\"searchTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"sortingTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"viewsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"rightContentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <!-- hasFooterContent === null is for the first load to see if there is data in the (footer-start-content || footer-end-content). -->\n <div *ngIf=\"hasFooterContent === null || (hasFooterContent && footerState === 'visible')\" class=\"footer\"\n [style.height.rem]=\"customizationService.footerHeight\">\n <div class=\"content pep-border-top\">\n <div #footerStartContent class=\"left-container pep-spacing-element-negative flex-wrapper\">\n <ng-content select=\"[footer-start-content]\"></ng-content>\n </div>\n <div #footerEndContent class=\"right-container pep-spacing-element-negative flex-wrapper\">\n <ng-content select=\"[footer-end-content]\"></ng-content>\n </div>\n </div>\n <!-- <ng-container *ngIf=\"showFooter && screenSize >= PepScreenSizeType.MD; then footerBlock; else noFooterBlock\">\n </ng-container>\n <ng-template #footerBlock>\n {{ customizationService.showFooter() }}\n </ng-template>\n <ng-template #noFooterBlock>\n {{ customizationService.hideFooter() }}\n </ng-template> -->\n </div>\n\n</div>\n\n<!-- Left side templates -->\n<ng-template #listActionsTemplate>\n <div class=\"list-actions-wrapper\">\n <ng-content *ngIf=\"!searchIsOpenAndSmallDevice\" select=\"pep-list-actions-element\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #titleTemplate>\n <div *ngIf=\"title?.length > 0\" class=\"pep-spacing-element title ellipsis {{ inline ? 'title-md' : 'title-lg' }} \"\n [ngClass]=\"{ 'md-max-title-width': screenSize === PepScreenSizeType.MD, 'sm-max-title-width': screenSize >= PepScreenSizeType.SM }\"\n >\n <span class=\"ellipsis\" [title]=\"title\">{{ title }}</span>\n </div>\n</ng-template>\n\n<ng-template #listChooserTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listChooserComp }\">\n <ng-content select=\"pep-list-chooser\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #leftContentTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" class=\"flex-wrapper\">\n <ng-content select=\"[header-start-content]\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #listTotalTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listTotalComp }\">\n <ng-content select=\"pep-list-total\"></ng-content>\n </div>\n</ng-template>\n\n<!-- Right side templates -->\n<ng-template #searchTemplate>\n <div [ngClass]=\"{ 'pep-spacing-element': searchComp }\">\n <ng-content select=\"pep-search\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #sortingTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listSortingComp }\">\n <ng-content select=\"pep-list-sorting\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #viewsTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" [ngClass]=\"{ 'pep-spacing-element': listViewsComp }\" class=\"flex-wrapper\">\n <ng-content select=\"pep-list-views\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #rightContentTemplate>\n <div *ngIf=\"!searchIsOpenAndSmallDevice\" class=\"flex-wrapper\">\n <ng-content select=\"[header-end-content]\"></ng-content>\n </div>\n</ng-template>", styles: [".pep-top-bar-container{display:grid;height:calc(var(--pep-top-bar-spacing-top, 1.5rem) + var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));z-index:101}.pep-top-bar-container .title{display:inline-flex!important;align-items:center;justify-content:center}.pep-top-bar-container .title.md-max-title-width{max-width:300px}.pep-top-bar-container .title.sm-max-title-width{max-width:180px}.pep-top-bar-container .header-content{height:calc(var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));margin-top:var(--pep-top-bar-spacing-top, 1.5rem)}.pep-top-bar-container .header-content .main-layout{width:inherit;height:inherit;padding:0}.pep-top-bar-container .header-content .main-layout .content{display:flex;justify-content:space-between;height:inherit}.pep-top-bar-container .header-content .main-layout .content .left-container,.pep-top-bar-container .header-content .main-layout .content .right-container{height:inherit}.pep-top-bar-container .footer{position:fixed;bottom:0;left:0;right:0;height:var(--pep-footer-bar-height, 4.5rem);z-index:101}.pep-top-bar-container .footer .content{display:flex;justify-content:space-between;margin-inline:calc(var(--pep-spacing-lg, 1rem) * 2);padding-top:var(--pep-footer-bar-spacing-top, .75rem)}@media (max-width: 599px){.pep-top-bar-container .footer .content{margin-inline:var(--pep-spacing-lg, 1rem)}}.pep-top-bar-container .left-container{display:flex}.pep-top-bar-container .right-container{display:flex;justify-content:flex-end}.pep-top-bar-container .flex-wrapper ::ng-deep>*{display:flex}.pep-top-bar-container .list-actions-wrapper ::ng-deep .pep-button{margin-right:var(--pep-spacing-xs, .25rem);margin-left:var(--pep-spacing-xs, .25rem)}.pep-top-bar-container:not(.inline) ::ng-deep .pepperi-button,.pep-top-bar-container:not(.inline) ::ng-deep .pep-button,.pep-top-bar-container:not(.inline) .pepperi-button,.pep-top-bar-container:not(.inline) .pep-button{height:var(--pep-top-bar-field-height, 2.5rem);line-height:var(--pep-top-bar-field-height, 2.5rem)}.pep-top-bar-container.inline{position:inherit;height:var(--pep-top-bar-field-height, 2.5rem);width:100%}.pep-top-bar-container.inline .header-content{margin-top:0;height:inherit;padding:0;position:inherit;width:inherit}.pep-top-bar-container.inline .header-content .main-layout{width:inherit;height:inherit;padding:0}.pep-top-bar-container.inline .header-content .main-layout .content{height:inherit;margin:0}\n", ".pep-top-bar-container{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.pep-top-bar-container .footer{background-color:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}\n"] }]
|
|
92
95
|
}], ctorParameters: function () { return [{ type: i1.PepCustomizationService }, { type: i1.PepLayoutService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { inline: [{
|
|
93
96
|
type: Input
|
|
94
97
|
}], title: [{
|
|
@@ -120,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
120
123
|
type: ContentChild,
|
|
121
124
|
args: [PepListViewsComponent]
|
|
122
125
|
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3RvcC1iYXIvdG9wLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3RvcC1iYXIvdG9wLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsWUFBWSxFQUdaLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHSCxpQkFBaUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLHFCQUFxQixHQUN4QixNQUFNLDhCQUE4QixDQUFDOzs7O0FBZ0J0QyxNQUFNLE9BQU8sa0JBQWtCO0lBK0IzQixZQUNXLG9CQUE2QyxFQUM3QyxhQUErQixFQUM5QixLQUF3QjtRQUZ6Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQWpDM0IsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBVyxJQUFJLENBQUM7UUFHOUIsc0JBQWlCLEdBQTZDLElBQUksWUFBWSxFQUE4QixDQUFDO1FBZTdHLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBSWhCLCtCQUEwQixHQUFHLEtBQUssQ0FBQztRQUVuQyxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUM5Qix3QkFBbUIs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Q0FBQyxVQUFVLEVBQUUsQ0FBQTthQUN6QztTQUNKO0lBQ0wsQ0FBQzs7K0dBbEhRLGtCQUFrQjttR0FBbEIsa0JBQWtCLDhMQVViLGtCQUFrQixrRkFDbEIsdUJBQXVCLGtGQUV2Qix1QkFBdUIsZ0ZBRXZCLHFCQUFxQixrRkFDckIsdUJBQXVCLGdGQUV2QixxQkFBcUIsaVJDN0R2QyxvcUpBcUdjOzJGRDFERCxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksYUFBYTs2S0FLZCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUdOLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFHMEIsa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDQSxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUVLLFVBQVU7c0JBQTNDLFlBQVk7dUJBQUMsa0JBQWtCO2dCQUVoQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUdyQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUVBLGFBQWE7c0JBQWpELFlBQVk7dUJBQUMscUJBQXFCO2dCQUVuQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUVBLGFBQWE7c0JBQWpELFlBQVk7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgUGVwTGF5b3V0U2VydmljZSxcbiAgICBQZXBTY3JlZW5TaXplVHlwZSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgUGVwU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc2VhcmNoJztcbmltcG9ydCB7XG4gICAgUGVwTGlzdEFjdGlvbnNDb21wb25lbnQsXG4gICAgUGVwTGlzdENob29zZXJDb21wb25lbnQsXG4gICAgUGVwTGlzdFNvcnRpbmdDb21wb25lbnQsXG4gICAgUGVwTGlzdFRvdGFsQ29tcG9uZW50LFxuICAgIFBlcExpc3RWaWV3c0NvbXBvbmVudCxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvbGlzdCc7XG5pbXBvcnQgeyBQZXBNZW51U3RhdGVUeXBlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvbWVudSc7XG5pbXBvcnQge1xuICAgIElQZXBTZWFyY2hTdGF0ZUNoYW5nZUV2ZW50LFxuICAgIFBlcFNlYXJjaFN0YXRlVHlwZSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc2VhcmNoJztcbmltcG9ydCB7XG4gICAgSVBlcEZvb3RlclN0YXRlQ2hhbmdlRXZlbnQsXG4gICAgUGVwRm9vdGVyU3RhdGVUeXBlLFxufSBmcm9tICcuL3RvcC1iYXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC10b3AtYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9wLWJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9wLWJhci5jb21wb25lbnQuc2NzcycsICcuL3RvcC1iYXIuY29tcG9uZW50LnRoZW1lLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwVG9wQmFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gbnVsbDtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZvb3RlclN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcEZvb3RlclN0YXRlQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9vdGVyU3RhdGVDaGFuZ2VFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2Zvb3RlclN0YXJ0Q29udGVudCcpIGZvb3RlclN0YXJ0Q29udGVudDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdmb290ZXJFbmRDb250ZW50JykgZm9vdGVyRW5kQ29udGVudDogRWxlbWVudFJlZjtcblxuICAgIEBDb250ZW50Q2hpbGQoUGVwU2VhcmNoQ29tcG9uZW50KSBzZWFyY2hDb21wOiBQZXBTZWFyY2hDb21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChQZXBMaXN0QWN0aW9uc0NvbXBvbmVudClcbiAgICBsaXN0QWN0aW9uc0NvbXA6IFBlcExpc3RBY3Rpb25zQ29tcG9uZW50O1xuICAgIEBDb250ZW50Q2hpbGQoUGVwTGlzdENob29zZXJDb21wb25lbnQpXG4gICAgbGlzdENob29zZXJDb21wOiBQZXBMaXN0Q2hvb3NlckNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKFBlcExpc3RUb3RhbENvbXBvbmVudCkgbGlzdFRvdGFsQ29tcDogUGVwTGlzdFRvdGFsQ29tcG9uZW50O1xuICAgIEBDb250ZW50Q2hpbGQoUGVwTGlzdFNvcnRpbmdDb21wb25lbnQpXG4gICAgbGlzdFNvcnRpbmdDb21wOiBQZXBMaXN0U29ydGluZ0NvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKFBlcExpc3RWaWV3c0NvbXBvbmVudCkgbGlzdFZpZXdzQ29tcDogUGVwTGlzdFZpZXdzQ29tcG9uZW50O1xuXG4gICAgaGFzRm9vdGVyQ29udGVudCA9IG51bGw7XG4gICAgaXNIaWRkZW4gPSB0cnVlO1xuICAgIHNjcmVlblNpemU6IFBlcFNjcmVlblNpemVUeXBlO1xuICAgIC8vIGxpc3RBY3Rpb25zSXNWaXNpYmxlID0gZmFsc2U7XG4gICAgc2VhcmNoU3RhdGU6IFBlcFNlYXJjaFN0YXRlVHlwZTtcbiAgICBzZWFyY2hJc09wZW5BbmRTbWFsbERldmljZSA9IGZhbHNlO1xuICAgIGZvb3RlclN0YXRlOiBQZXBGb290ZXJTdGF0ZVR5cGU7XG4gICAgUGVwU2NyZWVuU2l6ZVR5cGUgPSBQZXBTY3JlZW5TaXplVHlwZTtcbiAgICBwcml2YXRlIF9fcGVwTGlmZWN5Y2xlUGhhc2UgPSAnY29uc3RydWN0b3InO1xuICAgIHByaXZhdGUgX19wZXBWaWV3UmVhZHkgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fX3BlcExpZmVjeWNsZVBoYXNlID0gJ25nQWZ0ZXJWaWV3SW5pdCc7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaW5saW5lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNGb290ZXJDb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJTdGFydENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmNoaWxkcmVuPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyRW5kQ29udGVudD8ubmF0aXZlRWxlbWVudD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5vblJlc2l6ZSQuc3Vic2NyaWJlKChzaXplOiBQZXBTY3JlZW5TaXplVHlwZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuU2l6ZSA9IHNpemU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWFyY2hJc09wZW5BbmRTbWFsbERldmljZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZvb3RlclN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNIaWRkZW4gPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5fX3BlcFZpZXdSZWFkeSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5jZFJlZiAmJiB0aGlzLl9fcGVwVmlld1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5fX3BlcExpZmVjeWNsZVBoYXNlID0gJ25nQWZ0ZXJDb250ZW50SW5pdCc7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29tcCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb21wLnN0YXRlQ2hhbmdlXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKHNlYXJjaFN0YXRlQ2hhbmdlRXZlbnQ6IElQZXBTZWFyY2hTdGF0ZUNoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlID0gc2VhcmNoU3RhdGVDaGFuZ2VFdmVudC5zdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VhcmNoSXNPcGVuQW5kU21hbGxEZXZpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21pemF0aW9uU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5oaWRlRm9vdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNlYXJjaElzT3BlbkFuZFNtYWxsRGV2aWNlKCk6IHZvaWQge1xuICAgICAgICAvLyBjaGVjayBpZiBzZWFyY2ggaXMgb3BlbiBhbmQgdGhlIGRldmljZSBzaXplIGlzIHNtYWxsIG9yIGV4dHJhIHNtYWxsXG4gICAgICAgIHRoaXMuc2VhcmNoSXNPcGVuQW5kU21hbGxEZXZpY2UgPVxuICAgICAgICAgICAgdGhpcy5zY3JlZW5TaXplID4gUGVwU2NyZWVuU2l6ZVR5cGUuU00gJiZcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RhdGUgPT09ICdvcGVuJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvb3RlclN0YXRlKCkge1xuICAgICAgICBjb25zdCBuZXdGb290ZXJTdGF0ZTogUGVwRm9vdGVyU3RhdGVUeXBlID1cbiAgICAgICAgICAgIHRoaXMuaGFzRm9vdGVyQ29udGVudCAmJiB0aGlzLnNjcmVlblNpemUgPj0gUGVwU2NyZWVuU2l6ZVR5cGUuTURcbiAgICAgICAgICAgICAgICA/ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICAgIDogJ2hpZGRlbic7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9vdGVyU3RhdGUgIT09IG5ld0Zvb3RlclN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLmZvb3RlclN0YXRlID0gbmV3Rm9vdGVyU3RhdGU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNkUmVmICYmIHRoaXMuX19wZXBWaWV3UmVhZHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mb290ZXJTdGF0ZUNoYW5nZS5lbWl0KHsgc3RhdGU6IHRoaXMuZm9vdGVyU3RhdGUgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZvb3RlclN0YXRlID09PSAndmlzaWJsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLnNob3dGb290ZXIoKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmhpZGVGb290ZXIoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBwZXBSdGxEaXJlY3Rpb24gW2hpZGRlbl09XCJpc0hpZGRlblwiIGNsYXNzPVwicGVwLXRvcC1iYXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyBpbmxpbmU6IGlubGluZSB9XCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWxheW91dFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQgcGVwLWJvcmRlci1ib3R0b21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1jb250YWluZXIgcGVwLXNwYWNpbmctZWxlbWVudC1uZWdhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdEFjdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdENob29zZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGVmdENvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRvdGFsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1jb250YWluZXIgcGVwLXNwYWNpbmctZWxlbWVudC1uZWdhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmlld3NUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmlnaHRDb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gaGFzRm9vdGVyQ29udGVudCA9PT0gbnVsbCBpcyBmb3IgdGhlIGZpcnN0IGxvYWQgdG8gc2VlIGlmIHRoZXJlIGlzIGRhdGEgaW4gdGhlIChmb290ZXItc3RhcnQtY29udGVudCB8fCBmb290ZXItZW5kLWNvbnRlbnQpLiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaGFzRm9vdGVyQ29udGVudCA9PT0gbnVsbCB8fCAoaGFzRm9vdGVyQ29udGVudCAmJiBmb290ZXJTdGF0ZSA9PT0gJ3Zpc2libGUnKVwiIGNsYXNzPVwiZm9vdGVyXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5yZW1dPVwiY3VzdG9taXphdGlvblNlcnZpY2UuZm9vdGVySGVpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50IHBlcC1ib3JkZXItdG9wXCI+XG4gICAgICAgICAgICA8ZGl2ICNmb290ZXJTdGFydENvbnRlbnQgY2xhc3M9XCJsZWZ0LWNvbnRhaW5lciBwZXAtc3BhY2luZy1lbGVtZW50LW5lZ2F0aXZlIGZsZXgtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXItc3RhcnQtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgI2Zvb3RlckVuZENvbnRlbnQgY2xhc3M9XCJyaWdodC1jb250YWluZXIgcGVwLXNwYWNpbmctZWxlbWVudC1uZWdhdGl2ZSBmbGV4LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZm9vdGVyLWVuZC1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Zvb3RlciAmJiBzY3JlZW5TaXplID49IFBlcFNjcmVlblNpemVUeXBlLk1EOyB0aGVuIGZvb3RlckJsb2NrOyBlbHNlIG5vRm9vdGVyQmxvY2tcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyQmxvY2s+XG4gICAgICAgICAgICB7eyBjdXN0b21pemF0aW9uU2VydmljZS5zaG93Rm9vdGVyKCkgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub0Zvb3RlckJsb2NrPlxuICAgICAgICAgICAge3sgY3VzdG9taXphdGlvblNlcnZpY2UuaGlkZUZvb3RlcigpIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxuICAgIDwvZGl2PlxuXG48L2Rpdj5cblxuPCEtLSBMZWZ0IHNpZGUgdGVtcGxhdGVzIC0tPlxuPG5nLXRlbXBsYXRlICNsaXN0QWN0aW9uc1RlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWFjdGlvbnMtd3JhcHBlclwiPlxuICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFzZWFyY2hJc09wZW5BbmRTbWFsbERldmljZVwiIHNlbGVjdD1cInBlcC1saXN0LWFjdGlvbnNcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RpdGxlVGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cInRpdGxlPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50IHRpdGxlIGVsbGlwc2lzIHt7IGlubGluZSA/ICd0aXRsZS1tZCcgOiAndGl0bGUtbGcnIH19IFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ21kLW1heC10aXRsZS13aWR0aCc6IHNjcmVlblNpemUgPT09IFBlcFNjcmVlblNpemVUeXBlLk1ELCAnc20tbWF4LXRpdGxlLXdpZHRoJzogc2NyZWVuU2l6ZSA+PSBQZXBTY3JlZW5TaXplVHlwZS5TTSB9XCJcbiAgICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVsbGlwc2lzXCIgW3RpdGxlXT1cInRpdGxlXCI+e3sgdGl0bGUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xpc3RDaG9vc2VyVGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cIiFzZWFyY2hJc09wZW5BbmRTbWFsbERldmljZVwiIFtuZ0NsYXNzXT1cInsgJ3BlcC1zcGFjaW5nLWVsZW1lbnQnOiBsaXN0Q2hvb3NlckNvbXAgfVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwZXAtbGlzdC1jaG9vc2VyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsZWZ0Q29udGVudFRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCIhc2VhcmNoSXNPcGVuQW5kU21hbGxEZXZpY2VcIiBjbGFzcz1cImZsZXgtd3JhcHBlclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyLXN0YXJ0LWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsaXN0VG90YWxUZW1wbGF0ZT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXNlYXJjaElzT3BlbkFuZFNtYWxsRGV2aWNlXCIgW25nQ2xhc3NdPVwieyAncGVwLXNwYWNpbmctZWxlbWVudCc6IGxpc3RUb3RhbENvbXAgfVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwZXAtbGlzdC10b3RhbFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUmlnaHQgc2lkZSB0ZW1wbGF0ZXMgLS0+XG48bmctdGVtcGxhdGUgI3NlYXJjaFRlbXBsYXRlPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyAncGVwLXNwYWNpbmctZWxlbWVudCc6IHNlYXJjaENvbXAgfVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwZXAtc2VhcmNoXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzb3J0aW5nVGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cIiFzZWFyY2hJc09wZW5BbmRTbWFsbERldmljZVwiIFtuZ0NsYXNzXT1cInsgJ3BlcC1zcGFjaW5nLWVsZW1lbnQnOiBsaXN0U29ydGluZ0NvbXAgfVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwZXAtbGlzdC1zb3J0aW5nXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN2aWV3c1RlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCIhc2VhcmNoSXNPcGVuQW5kU21hbGxEZXZpY2VcIiBbbmdDbGFzc109XCJ7ICdwZXAtc3BhY2luZy1lbGVtZW50JzogbGlzdFZpZXdzQ29tcCB9XCIgY2xhc3M9XCJmbGV4LXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicGVwLWxpc3Qtdmlld3NcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3JpZ2h0Q29udGVudFRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCIhc2VhcmNoSXNPcGVuQW5kU21hbGxEZXZpY2VcIiBjbGFzcz1cImZsZXgtd3JhcHBlclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyLWVuZC1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3RvcC1iYXIvdG9wLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3RvcC1iYXIvdG9wLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsWUFBWSxFQUdaLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHSCxpQkFBaUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLHFCQUFxQixHQUN4QixNQUFNLDhCQUE4QixDQUFDOzs7O0FBZ0J0QyxNQUFNLE9BQU8sa0JBQWtCO0lBK0IzQixZQUNXLG9CQUE2QyxFQUM3QyxhQUErQixFQUM5QixLQUF3QjtRQUZ6Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQWpDM0IsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBVyxJQUFJLENBQUM7UUFHOUIsc0JBQWlCLEdBQTZDLElBQUksWUFBWSxFQUE4QixDQUFDO1FBZTdHLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBSWhCLCtCQUEwQixHQUFHLEtBQUssQ0FBQztRQUVuQyxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUM5QixtQkFBYyxH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RTtnQkFDaEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUM7YUFDbkU7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDOUQ7U0FDSjtJQUNMLENBQUM7OytHQXBIUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw4TEFVYixrQkFBa0Isa0ZBQ2xCLHVCQUF1QixrRkFFdkIsdUJBQXVCLGdGQUV2QixxQkFBcUIsa0ZBQ3JCLHVCQUF1QixnRkFFdkIscUJBQXFCLGlSQzdEdkMsNHFKQXFHYzsyRkQxREQsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNJLGFBQWE7NktBS2QsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBRzBCLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ0EsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFFSyxVQUFVO3NCQUEzQyxZQUFZO3VCQUFDLGtCQUFrQjtnQkFFaEMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFHckMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFFQSxhQUFhO3NCQUFqRCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFFbkMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFFQSxhQUFhO3NCQUFqRCxZQUFZO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFBlcExheW91dFNlcnZpY2UsXG4gICAgUGVwU2NyZWVuU2l6ZVR5cGUsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IFBlcFNlYXJjaENvbXBvbmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NlYXJjaCc7XG5pbXBvcnQge1xuICAgIFBlcExpc3RBY3Rpb25zQ29tcG9uZW50LFxuICAgIFBlcExpc3RDaG9vc2VyQ29tcG9uZW50LFxuICAgIFBlcExpc3RTb3J0aW5nQ29tcG9uZW50LFxuICAgIFBlcExpc3RUb3RhbENvbXBvbmVudCxcbiAgICBQZXBMaXN0Vmlld3NDb21wb25lbnQsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2xpc3QnO1xuaW1wb3J0IHsgUGVwTWVudVN0YXRlVHlwZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL21lbnUnO1xuaW1wb3J0IHtcbiAgICBJUGVwU2VhcmNoU3RhdGVDaGFuZ2VFdmVudCxcbiAgICBQZXBTZWFyY2hTdGF0ZVR5cGUsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NlYXJjaCc7XG5pbXBvcnQge1xuICAgIElQZXBGb290ZXJTdGF0ZUNoYW5nZUV2ZW50LFxuICAgIFBlcEZvb3RlclN0YXRlVHlwZSxcbn0gZnJvbSAnLi90b3AtYmFyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtdG9wLWJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcC1iYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RvcC1iYXIuY29tcG9uZW50LnNjc3MnLCAnLi90b3AtYmFyLmNvbXBvbmVudC50aGVtZS5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBlcFRvcEJhckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgaW5saW5lID0gZmFsc2U7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBmb290ZXJTdGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPElQZXBGb290ZXJTdGF0ZUNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEZvb3RlclN0YXRlQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdmb290ZXJTdGFydENvbnRlbnQnKSBmb290ZXJTdGFydENvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnZm9vdGVyRW5kQ29udGVudCcpIGZvb3RlckVuZENvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAQ29udGVudENoaWxkKFBlcFNlYXJjaENvbXBvbmVudCkgc2VhcmNoQ29tcDogUGVwU2VhcmNoQ29tcG9uZW50O1xuICAgIEBDb250ZW50Q2hpbGQoUGVwTGlzdEFjdGlvbnNDb21wb25lbnQpXG4gICAgbGlzdEFjdGlvbnNDb21wOiBQZXBMaXN0QWN0aW9uc0NvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKFBlcExpc3RDaG9vc2VyQ29tcG9uZW50KVxuICAgIGxpc3RDaG9vc2VyQ29tcDogUGVwTGlzdENob29zZXJDb21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChQZXBMaXN0VG90YWxDb21wb25lbnQpIGxpc3RUb3RhbENvbXA6IFBlcExpc3RUb3RhbENvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKFBlcExpc3RTb3J0aW5nQ29tcG9uZW50KVxuICAgIGxpc3RTb3J0aW5nQ29tcDogUGVwTGlzdFNvcnRpbmdDb21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChQZXBMaXN0Vmlld3NDb21wb25lbnQpIGxpc3RWaWV3c0NvbXA6IFBlcExpc3RWaWV3c0NvbXBvbmVudDtcblxuICAgIGhhc0Zvb3RlckNvbnRlbnQgPSBudWxsO1xuICAgIGlzSGlkZGVuID0gdHJ1ZTtcbiAgICBzY3JlZW5TaXplOiBQZXBTY3JlZW5TaXplVHlwZTtcbiAgICAvLyBsaXN0QWN0aW9uc0lzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHNlYXJjaFN0YXRlOiBQZXBTZWFyY2hTdGF0ZVR5cGU7XG4gICAgc2VhcmNoSXNPcGVuQW5kU21hbGxEZXZpY2UgPSBmYWxzZTtcbiAgICBmb290ZXJTdGF0ZTogUGVwRm9vdGVyU3RhdGVUeXBlO1xuICAgIFBlcFNjcmVlblNpemVUeXBlID0gUGVwU2NyZWVuU2l6ZVR5cGU7XG4gICAgcHJpdmF0ZSBfX3BlcFZpZXdSZWFkeSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Zvb3Rlck93bmVyU2VxID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaW5saW5lKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRMZW4gPSB0aGlzLmZvb3RlclN0YXJ0Q29udGVudD8ubmF0aXZlRWxlbWVudD8uY2hpbGRyZW4/Lmxlbmd0aCA/PyAtMTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRMZW4gPSB0aGlzLmZvb3RlckVuZENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmNoaWxkcmVuPy5sZW5ndGggPz8gLTE7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNGb290ZXJDb250ZW50ID0gc3RhcnRMZW4gPiAwIHx8IGVuZExlbiA+IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE1hcmsgdmlldyByZWFkeSBCRUZPUkUgc3Vic2NyaWJpbmcgc28gdGhhdCBjZFJlZi5kZXRlY3RDaGFuZ2VzKCkgcnVuc1xuICAgICAgICAgICAgLy8gaW5zaWRlIHNldEZvb3RlclN0YXRlKCkgYmVmb3JlIGZvb3RlclN0YXRlQ2hhbmdlIGlzIGVtaXR0ZWQgb24gdGhlXG4gICAgICAgICAgICAvLyBmaXJzdCAoc3luY2hyb25vdXMpIEJlaGF2aW9yU3ViamVjdCBlbWlzc2lvbi4gV2l0aG91dCB0aGlzLCBBbmd1bGFyJ3NcbiAgICAgICAgICAgIC8vIERPTSBpcyBub3QgdXBkYXRlZCBiZWZvcmUgdGhlIFJlYWN0IHdyYXBwZXIgcXVlcmllcyAuZm9vdGVyIG9uIFNQQSBuYXZpZ2F0aW9uLlxuICAgICAgICAgICAgdGhpcy5pc0hpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fX3BlcFZpZXdSZWFkeSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5vblJlc2l6ZSQuc3Vic2NyaWJlKChzaXplOiBQZXBTY3JlZW5TaXplVHlwZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuU2l6ZSA9IHNpemU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWFyY2hJc09wZW5BbmRTbWFsbERldmljZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZvb3RlclN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNkUmVmICYmIHRoaXMuX19wZXBWaWV3UmVhZHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaENvbXApIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29tcC5zdGF0ZUNoYW5nZVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIChzZWFyY2hTdGF0ZUNoYW5nZUV2ZW50OiBJUGVwU2VhcmNoU3RhdGVDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZSA9IHNlYXJjaFN0YXRlQ2hhbmdlRXZlbnQuc3RhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNlYXJjaElzT3BlbkFuZFNtYWxsRGV2aWNlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuaGlkZUZvb3Rlcih0aGlzLl9mb290ZXJPd25lclNlcSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNlYXJjaElzT3BlbkFuZFNtYWxsRGV2aWNlKCk6IHZvaWQge1xuICAgICAgICAvLyBjaGVjayBpZiBzZWFyY2ggaXMgb3BlbiBhbmQgdGhlIGRldmljZSBzaXplIGlzIHNtYWxsIG9yIGV4dHJhIHNtYWxsXG4gICAgICAgIHRoaXMuc2VhcmNoSXNPcGVuQW5kU21hbGxEZXZpY2UgPVxuICAgICAgICAgICAgdGhpcy5zY3JlZW5TaXplID4gUGVwU2NyZWVuU2l6ZVR5cGUuU00gJiZcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RhdGUgPT09ICdvcGVuJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvb3RlclN0YXRlKCkge1xuICAgICAgICBjb25zdCBuZXdGb290ZXJTdGF0ZTogUGVwRm9vdGVyU3RhdGVUeXBlID1cbiAgICAgICAgICAgIHRoaXMuaGFzRm9vdGVyQ29udGVudCAmJiB0aGlzLnNjcmVlblNpemUgPj0gUGVwU2NyZWVuU2l6ZVR5cGUuTURcbiAgICAgICAgICAgICAgICA/ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICAgIDogJ2hpZGRlbic7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9vdGVyU3RhdGUgIT09IG5ld0Zvb3RlclN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLmZvb3RlclN0YXRlID0gbmV3Rm9vdGVyU3RhdGU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNkUmVmICYmIHRoaXMuX19wZXBWaWV3UmVhZHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mb290ZXJTdGF0ZUNoYW5nZS5lbWl0KHsgc3RhdGU6IHRoaXMuZm9vdGVyU3RhdGUgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZvb3RlclN0YXRlID09PSAndmlzaWJsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLnNob3dGb290ZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb290ZXJPd25lclNlcSA9IHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuZm9vdGVyT3duZXJTZXE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuaGlkZUZvb3Rlcih0aGlzLl9mb290ZXJPd25lclNlcSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IHBlcFJ0bERpcmVjdGlvbiBbaGlkZGVuXT1cImlzSGlkZGVuXCIgY2xhc3M9XCJwZXAtdG9wLWJhci1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7IGlubGluZTogaW5saW5lIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tbGF5b3V0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudCBwZXAtYm9yZGVyLWJvdHRvbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LWNvbnRhaW5lciBwZXAtc3BhY2luZy1lbGVtZW50LW5lZ2F0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0QWN0aW9uc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0Q2hvb3NlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsZWZ0Q29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0VG90YWxUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWNvbnRhaW5lciBwZXAtc3BhY2luZy1lbGVtZW50LW5lZ2F0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic29ydGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aWV3c1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyaWdodENvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBoYXNGb290ZXJDb250ZW50ID09PSBudWxsIGlzIGZvciB0aGUgZmlyc3QgbG9hZCB0byBzZWUgaWYgdGhlcmUgaXMgZGF0YSBpbiB0aGUgKGZvb3Rlci1zdGFydC1jb250ZW50IHx8IGZvb3Rlci1lbmQtY29udGVudCkuIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJoYXNGb290ZXJDb250ZW50ID09PSBudWxsIHx8IChoYXNGb290ZXJDb250ZW50ICYmIGZvb3RlclN0YXRlID09PSAndmlzaWJsZScpXCIgY2xhc3M9XCJmb290ZXJcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnJlbV09XCJjdXN0b21pemF0aW9uU2VydmljZS5mb290ZXJIZWlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQgcGVwLWJvcmRlci10b3BcIj5cbiAgICAgICAgICAgIDxkaXYgI2Zvb3RlclN0YXJ0Q29udGVudCBjbGFzcz1cImxlZnQtY29udGFpbmVyIHBlcC1zcGFjaW5nLWVsZW1lbnQtbmVnYXRpdmUgZmxleC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlci1zdGFydC1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAjZm9vdGVyRW5kQ29udGVudCBjbGFzcz1cInJpZ2h0LWNvbnRhaW5lciBwZXAtc3BhY2luZy1lbGVtZW50LW5lZ2F0aXZlIGZsZXgtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXItZW5kLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Rm9vdGVyICYmIHNjcmVlblNpemUgPj0gUGVwU2NyZWVuU2l6ZVR5cGUuTUQ7IHRoZW4gZm9vdGVyQmxvY2s7IGVsc2Ugbm9Gb290ZXJCbG9ja1wiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmb290ZXJCbG9jaz5cbiAgICAgICAgICAgIHt7IGN1c3RvbWl6YXRpb25TZXJ2aWNlLnNob3dGb290ZXIoKSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vRm9vdGVyQmxvY2s+XG4gICAgICAgICAgICB7eyBjdXN0b21pemF0aW9uU2VydmljZS5oaWRlRm9vdGVyKCkgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XG4gICAgPC9kaXY+XG5cbjwvZGl2PlxuXG48IS0tIExlZnQgc2lkZSB0ZW1wbGF0ZXMgLS0+XG48bmctdGVtcGxhdGUgI2xpc3RBY3Rpb25zVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImxpc3QtYWN0aW9ucy13cmFwcGVyXCI+XG4gICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXNlYXJjaElzT3BlbkFuZFNtYWxsRGV2aWNlXCIgc2VsZWN0PVwicGVwLWxpc3QtYWN0aW9ucy1lbGVtZW50XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0aXRsZVRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCJ0aXRsZT8ubGVuZ3RoID4gMFwiIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudCB0aXRsZSBlbGxpcHNpcyB7eyBpbmxpbmUgPyAndGl0bGUtbWQnIDogJ3RpdGxlLWxnJyB9fSBcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdtZC1tYXgtdGl0bGUtd2lkdGgnOiBzY3JlZW5TaXplID09PSBQZXBTY3JlZW5TaXplVHlwZS5NRCwgJ3NtLW1heC10aXRsZS13aWR0aCc6IHNjcmVlblNpemUgPj0gUGVwU2NyZWVuU2l6ZVR5cGUuU00gfVwiXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiIFt0aXRsZV09XCJ0aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsaXN0Q2hvb3NlclRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCIhc2VhcmNoSXNPcGVuQW5kU21hbGxEZXZpY2VcIiBbbmdDbGFzc109XCJ7ICdwZXAtc3BhY2luZy1lbGVtZW50JzogbGlzdENob29zZXJDb21wIH1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicGVwLWxpc3QtY2hvb3NlclwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGVmdENvbnRlbnRUZW1wbGF0ZT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXNlYXJjaElzT3BlbkFuZFNtYWxsRGV2aWNlXCIgY2xhc3M9XCJmbGV4LXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hlYWRlci1zdGFydC1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRvdGFsVGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cIiFzZWFyY2hJc09wZW5BbmRTbWFsbERldmljZVwiIFtuZ0NsYXNzXT1cInsgJ3BlcC1zcGFjaW5nLWVsZW1lbnQnOiBsaXN0VG90YWxDb21wIH1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicGVwLWxpc3QtdG90YWxcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFJpZ2h0IHNpZGUgdGVtcGxhdGVzIC0tPlxuPG5nLXRlbXBsYXRlICNzZWFyY2hUZW1wbGF0ZT5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ3BlcC1zcGFjaW5nLWVsZW1lbnQnOiBzZWFyY2hDb21wIH1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicGVwLXNlYXJjaFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc29ydGluZ1RlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCIhc2VhcmNoSXNPcGVuQW5kU21hbGxEZXZpY2VcIiBbbmdDbGFzc109XCJ7ICdwZXAtc3BhY2luZy1lbGVtZW50JzogbGlzdFNvcnRpbmdDb21wIH1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicGVwLWxpc3Qtc29ydGluZ1wiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdmlld3NUZW1wbGF0ZT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXNlYXJjaElzT3BlbkFuZFNtYWxsRGV2aWNlXCIgW25nQ2xhc3NdPVwieyAncGVwLXNwYWNpbmctZWxlbWVudCc6IGxpc3RWaWV3c0NvbXAgfVwiIGNsYXNzPVwiZmxleC13cmFwcGVyXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInBlcC1saXN0LXZpZXdzXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyaWdodENvbnRlbnRUZW1wbGF0ZT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXNlYXJjaElzT3BlbkFuZFNtYWxsRGV2aWNlXCIgY2xhc3M9XCJmbGV4LXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hlYWRlci1lbmQtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -1924,6 +1924,13 @@ class PepListComponent {
|
|
|
1924
1924
|
this.hostElement.nativeElement.updateItems = this.updateItems.bind(this);
|
|
1925
1925
|
this.hostElement.nativeElement.updatePage = this.updatePage.bind(this);
|
|
1926
1926
|
this.hostElement.nativeElement.updateItem = this.updateItem.bind(this);
|
|
1927
|
+
// Extended for React/GenericList consumers — needed for selection and navigation.
|
|
1928
|
+
this.hostElement.nativeElement.scrollToIndex = this.scrollToIndex.bind(this);
|
|
1929
|
+
this.hostElement.nativeElement.getSelectedItemsData = this.getSelectedItemsData.bind(this);
|
|
1930
|
+
this.hostElement.nativeElement.getIsItemEditable = this.getIsItemEditable.bind(this);
|
|
1931
|
+
this.hostElement.nativeElement.getItemDataByID = this.getItemDataByID.bind(this);
|
|
1932
|
+
this.hostElement.nativeElement.setSelectedIds = this.setSelectedIds.bind(this);
|
|
1933
|
+
this.hostElement.nativeElement.setIsAllSelected = this.setIsAllSelected.bind(this);
|
|
1927
1934
|
}
|
|
1928
1935
|
// For refresh the UI when change the is selectable for action on item.
|
|
1929
1936
|
getisItemDisabled(item) {
|