@odx/angular 2.10.0 → 2.11.0

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.
Files changed (31) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/components/paginator/README.md +3 -0
  3. package/components/paginator/index.d.ts +5 -0
  4. package/components/paginator/lib/interfaces/index.d.ts +1 -0
  5. package/components/paginator/lib/interfaces/page-change.interface.d.ts +5 -0
  6. package/components/paginator/lib/models/get-range-content.model.d.ts +2 -0
  7. package/components/paginator/lib/models/get-summary-content.model.d.ts +2 -0
  8. package/components/paginator/lib/models/index.d.ts +2 -0
  9. package/components/paginator/lib/paginator.component.d.ts +44 -0
  10. package/components/paginator/lib/paginator.config.d.ts +37 -0
  11. package/components/paginator/lib/paginator.module.d.ts +7 -0
  12. package/esm2020/components/paginator/index.mjs +6 -0
  13. package/esm2020/components/paginator/lib/interfaces/index.mjs +2 -0
  14. package/esm2020/components/paginator/lib/interfaces/page-change.interface.mjs +2 -0
  15. package/esm2020/components/paginator/lib/models/get-range-content.model.mjs +2 -0
  16. package/esm2020/components/paginator/lib/models/get-summary-content.model.mjs +2 -0
  17. package/esm2020/components/paginator/lib/models/index.mjs +3 -0
  18. package/esm2020/components/paginator/lib/paginator.component.mjs +139 -0
  19. package/esm2020/components/paginator/lib/paginator.config.mjs +20 -0
  20. package/esm2020/components/paginator/lib/paginator.module.mjs +17 -0
  21. package/esm2020/components/paginator/odx-angular-components-paginator.mjs +5 -0
  22. package/esm2020/components/table/lib/components/header-title/header-title.component.mjs +2 -5
  23. package/fesm2015/odx-angular-components-paginator.mjs +180 -0
  24. package/fesm2015/odx-angular-components-paginator.mjs.map +1 -0
  25. package/fesm2015/odx-angular-components-table.mjs +1 -4
  26. package/fesm2015/odx-angular-components-table.mjs.map +1 -1
  27. package/fesm2020/odx-angular-components-paginator.mjs +177 -0
  28. package/fesm2020/odx-angular-components-paginator.mjs.map +1 -0
  29. package/fesm2020/odx-angular-components-table.mjs +1 -4
  30. package/fesm2020/odx-angular-components-table.mjs.map +1 -1
  31. package/package.json +12 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ # @odx/angular 2.11.0 (2023-08-25)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * resolve comment from code review ([bf87756](https://dev.azure.com/draeger/ODXP/_git/odx-libraries/commit/bf87756d035342d1696dd15d3567f3254b54527c))
7
+
8
+
9
+ ### Features
10
+
11
+ * adapt table component to support pagination ([dd59cd2](https://dev.azure.com/draeger/ODXP/_git/odx-libraries/commit/dd59cd2cce34146910e0763a41e2b951fc999db6))
12
+ * change paginator config usage ([0eb5d50](https://dev.azure.com/draeger/ODXP/_git/odx-libraries/commit/0eb5d50a5d66b0a644c9f76261528cd3a9a6a751))
13
+ * draft commit ([3e8c1b5](https://dev.azure.com/draeger/ODXP/_git/odx-libraries/commit/3e8c1b578a32065107b6a42d9fe82f14bcdfa89a))
14
+ * test paginator ([82cc7bc](https://dev.azure.com/draeger/ODXP/_git/odx-libraries/commit/82cc7bc36212228b0014336017ad5ce627517c1c))
15
+
1
16
  # @odx/angular 2.10.0 (2023-08-25)
2
17
 
3
18
 
@@ -0,0 +1,3 @@
1
+ # @odx/angular/paginator
2
+
3
+ Secondary entry point of `@odx/angular`. It can be used by importing from `@odx/angular/paginator`.
@@ -0,0 +1,5 @@
1
+ export * from './lib/interfaces';
2
+ export * from './lib/models';
3
+ export * from './lib/paginator.component';
4
+ export * from './lib/paginator.config';
5
+ export * from './lib/paginator.module';
@@ -0,0 +1 @@
1
+ export * from './page-change.interface';
@@ -0,0 +1,5 @@
1
+ export interface PageChangeEvent {
2
+ length: number;
3
+ pageIndex: number;
4
+ pageSize: number;
5
+ }
@@ -0,0 +1,2 @@
1
+ import { DynamicTextContent } from '@odx/angular/cdk/dynamic-view';
2
+ export type GetRangeContentFn = (pageIndex: number, totalPages: number) => DynamicTextContent;
@@ -0,0 +1,2 @@
1
+ import { DynamicTextContent } from '@odx/angular/cdk/dynamic-view';
2
+ export type GetSummaryContentFn = (startItemIndex: number, endItemIndex: number, length: number) => DynamicTextContent;
@@ -0,0 +1,2 @@
1
+ export * from './get-range-content.model';
2
+ export * from './get-summary-content.model';
@@ -0,0 +1,44 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { DynamicTextContent } from '@odx/angular/cdk/dynamic-view';
3
+ import { PageChangeEvent } from './interfaces';
4
+ import { GetRangeContentFn, GetSummaryContentFn } from './models';
5
+ import * as i0 from "@angular/core";
6
+ export declare class PaginatorComponent {
7
+ private readonly disabledController;
8
+ private readonly config;
9
+ private _pageIndex;
10
+ private _pageSize;
11
+ private _length;
12
+ protected buttonSize: "small";
13
+ readonly element: import("@angular/core").ElementRef<HTMLElement>;
14
+ getSummaryContentFn?: GetSummaryContentFn | null;
15
+ getRangeContentFn?: GetRangeContentFn | null;
16
+ showSummary: boolean;
17
+ showFirstLastButtons: boolean;
18
+ set pageIndex(value: number);
19
+ get pageIndex(): number;
20
+ set pageSize(value: number);
21
+ get pageSize(): number;
22
+ set length(value: number);
23
+ get length(): number;
24
+ pageChanged: EventEmitter<PageChangeEvent>;
25
+ get isDisabled(): boolean;
26
+ get defaultGetSummaryContentFn(): GetSummaryContentFn;
27
+ get defaultGetRangeContentFn(): GetRangeContentFn;
28
+ get summaryContent(): DynamicTextContent;
29
+ get rangeContent(): DynamicTextContent;
30
+ firstPage(): void;
31
+ previousPage(): void;
32
+ nextPage(): void;
33
+ lastPage(): void;
34
+ get isFirstPage(): boolean;
35
+ get isLastPage(): boolean;
36
+ get isPreviousDisabled(): boolean;
37
+ get isNextDisabled(): boolean;
38
+ get totalPages(): number;
39
+ get startItemIndex(): number;
40
+ get endItemIndex(): number;
41
+ pageChange(pageIndex: number): void;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaginatorComponent, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<PaginatorComponent, "odx-paginator", never, { "getSummaryContentFn": "getSummaryContentFn"; "getRangeContentFn": "getRangeContentFn"; "showSummary": "showSummary"; "showFirstLastButtons": "showFirstLastButtons"; "pageIndex": "pageIndex"; "pageSize": "pageSize"; "length": "length"; }, { "pageChanged": "pageChanged"; }, never, never, true, never>;
44
+ }
@@ -0,0 +1,37 @@
1
+ import { GetRangeContentFn, GetSummaryContentFn } from './models';
2
+ export interface PaginatorConfig {
3
+ /**
4
+ * @param {GetSummaryContentFn} - Content is responsible for paginator summary
5
+ */
6
+ getSummaryContent: GetSummaryContentFn;
7
+ /**
8
+ * @param {GetRangeContentFn} - Content is responsible for paginator range
9
+ */
10
+ getRangeContent: GetRangeContentFn;
11
+ /**
12
+ * Default paginator page size
13
+ * @default 10
14
+ */
15
+ pageSize: number;
16
+ }
17
+ export declare const PaginatorConfig: import("@angular/core").InjectionToken<Partial<{
18
+ getSummaryContent: GetSummaryContentFn;
19
+ getRangeContent: GetRangeContentFn;
20
+ pageSize: number;
21
+ }>>, PaginatorDefaultConfig: {
22
+ getSummaryContent: GetSummaryContentFn;
23
+ getRangeContent: GetRangeContentFn;
24
+ pageSize: number;
25
+ }, injectPaginatorConfig: () => {
26
+ getSummaryContent: GetSummaryContentFn;
27
+ getRangeContent: GetRangeContentFn;
28
+ pageSize: number;
29
+ }, providePaginatorConfig: <D extends import("@odx/angular/utils").ConfigDependencies<unknown> = import("@odx/angular/utils").ConfigDependencies<{
30
+ getSummaryContent: GetSummaryContentFn;
31
+ getRangeContent: GetRangeContentFn;
32
+ pageSize: number;
33
+ }>>(config: import("@odx/angular/utils").ConfigProvider<Partial<{
34
+ getSummaryContent: GetSummaryContentFn;
35
+ getRangeContent: GetRangeContentFn;
36
+ pageSize: number;
37
+ }>, D>) => import("@angular/core").FactoryProvider | import("@angular/core").ValueProvider;
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./paginator.component";
3
+ export declare class PaginatorModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaginatorModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PaginatorModule, never, [typeof i1.PaginatorComponent], [typeof i1.PaginatorComponent]>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<PaginatorModule>;
7
+ }
@@ -0,0 +1,6 @@
1
+ export * from './lib/interfaces';
2
+ export * from './lib/models';
3
+ export * from './lib/paginator.component';
4
+ export * from './lib/paginator.config';
5
+ export * from './lib/paginator.module';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdpbmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRvci5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFnaW5hdG9yLm1vZHVsZSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './page-change.interface';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BhZ2UtY2hhbmdlLmludGVyZmFjZSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jaGFuZ2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvcGFnaW5hdG9yL3NyYy9saWIvaW50ZXJmYWNlcy9wYWdlLWNoYW5nZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGFnZUNoYW5nZUV2ZW50IHtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXJhbmdlLWNvbnRlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9tb2RlbHMvZ2V0LXJhbmdlLWNvbnRlbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNUZXh0Q29udGVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcblxuZXhwb3J0IHR5cGUgR2V0UmFuZ2VDb250ZW50Rm4gPSAocGFnZUluZGV4OiBudW1iZXIsIHRvdGFsUGFnZXM6IG51bWJlcikgPT4gRHluYW1pY1RleHRDb250ZW50O1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN1bW1hcnktY29udGVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3BhZ2luYXRvci9zcmMvbGliL21vZGVscy9nZXQtc3VtbWFyeS1jb250ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljVGV4dENvbnRlbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5cbmV4cG9ydCB0eXBlIEdldFN1bW1hcnlDb250ZW50Rm4gPSAoc3RhcnRJdGVtSW5kZXg6IG51bWJlciwgZW5kSXRlbUluZGV4OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKSA9PiBEeW5hbWljVGV4dENvbnRlbnQ7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './get-range-content.model';
2
+ export * from './get-summary-content.model';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZXQtcmFuZ2UtY29udGVudC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2dldC1zdW1tYXJ5LWNvbnRlbnQubW9kZWwnO1xuIl19
@@ -0,0 +1,139 @@
1
+ import { __decorate } from "tslib";
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
3
+ import { CoreModule, DisabledController } from '@odx/angular';
4
+ import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
5
+ import { ActionGroupComponent } from '@odx/angular/components/action-group';
6
+ import { ButtonComponent, ButtonSize } from '@odx/angular/components/button';
7
+ import { IconComponent } from '@odx/angular/components/icon';
8
+ import { CSSComponent } from '@odx/angular/internal';
9
+ import { injectElement } from '@odx/angular/utils';
10
+ import { injectPaginatorConfig } from './paginator.config';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common";
13
+ import * as i2 from "@odx/angular";
14
+ let PaginatorComponent = class PaginatorComponent {
15
+ constructor() {
16
+ this.disabledController = DisabledController.inject();
17
+ this.config = injectPaginatorConfig();
18
+ this._pageIndex = 0;
19
+ this._pageSize = this.config.pageSize;
20
+ this._length = 0;
21
+ this.buttonSize = ButtonSize.SMALL;
22
+ this.element = injectElement();
23
+ this.getSummaryContentFn = null;
24
+ this.getRangeContentFn = null;
25
+ this.showSummary = true;
26
+ this.showFirstLastButtons = true;
27
+ this.pageChanged = new EventEmitter();
28
+ }
29
+ set pageIndex(value) {
30
+ if (value >= 0)
31
+ this._pageIndex = value;
32
+ }
33
+ get pageIndex() {
34
+ return this._length ? this._pageIndex : -1;
35
+ }
36
+ set pageSize(value) {
37
+ if (value > 0)
38
+ this._pageSize = value;
39
+ }
40
+ get pageSize() {
41
+ return this._pageSize;
42
+ }
43
+ set length(value) {
44
+ if (value >= 0)
45
+ this._length = value;
46
+ }
47
+ get length() {
48
+ return this._length;
49
+ }
50
+ get isDisabled() {
51
+ return !!this.disabledController?.disabled;
52
+ }
53
+ get defaultGetSummaryContentFn() {
54
+ return this.config.getSummaryContent;
55
+ }
56
+ get defaultGetRangeContentFn() {
57
+ return this.config.getRangeContent;
58
+ }
59
+ get summaryContent() {
60
+ const fn = this.getSummaryContentFn ?? this.defaultGetSummaryContentFn;
61
+ return fn(this.startItemIndex + 1, this.endItemIndex, this.length);
62
+ }
63
+ get rangeContent() {
64
+ const fn = this.getRangeContentFn ?? this.defaultGetRangeContentFn;
65
+ return fn(this.pageIndex, this.totalPages);
66
+ }
67
+ firstPage() {
68
+ this.pageChange(0);
69
+ }
70
+ previousPage() {
71
+ this.pageChange(this._pageIndex - 1);
72
+ }
73
+ nextPage() {
74
+ this.pageChange(this._pageIndex + 1);
75
+ }
76
+ lastPage() {
77
+ this.pageChange(this.totalPages - 1);
78
+ }
79
+ get isFirstPage() {
80
+ return this._pageIndex === 0;
81
+ }
82
+ get isLastPage() {
83
+ return this._pageIndex === this.totalPages - 1;
84
+ }
85
+ get isPreviousDisabled() {
86
+ return this.isFirstPage || !this._length;
87
+ }
88
+ get isNextDisabled() {
89
+ return this.isLastPage || !this._length;
90
+ }
91
+ get totalPages() {
92
+ return Math.ceil(this._length / this._pageSize);
93
+ }
94
+ get startItemIndex() {
95
+ return this._length ? this._pageIndex * this._pageSize : -1;
96
+ }
97
+ get endItemIndex() {
98
+ return Math.min(this.startItemIndex + this._pageSize, this._length);
99
+ }
100
+ pageChange(pageIndex) {
101
+ if (pageIndex < 0)
102
+ return;
103
+ this._pageIndex = pageIndex;
104
+ this.pageChanged.emit({
105
+ pageIndex: this._pageIndex,
106
+ length: this._length,
107
+ pageSize: this._pageSize,
108
+ });
109
+ }
110
+ };
111
+ PaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ PaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PaginatorComponent, isStandalone: true, selector: "odx-paginator", inputs: { getSummaryContentFn: "getSummaryContentFn", getRangeContentFn: "getRangeContentFn", showSummary: "showSummary", showFirstLastButtons: "showFirstLastButtons", pageIndex: "pageIndex", pageSize: "pageSize", length: "length" }, outputs: { pageChanged: "pageChanged" }, host: { properties: { "class.is-disabled": "isDisabled" } }, providers: [DisabledController.connect()], ngImport: i0, template: "<div *ngIf=\"showSummary\" class=\"odx-paginator__summary\">\n <ng-template [odxDynamicView]=\"summaryContent\"></ng-template>\n</div>\n\n<div class=\"odx-paginator__navigation\">\n <odx-action-group>\n <button\n *ngIf=\"showFirstLastButtons\"\n odxButton\n [size]=\"buttonSize\"\n class=\"odx-paginator__navigation_first\"\n (click)=\"firstPage()\"\n [disabled]=\"isPreviousDisabled\"\n >\n <odx-icon name=\"chevron-left-end\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_previous\" (click)=\"previousPage()\" [disabled]=\"isPreviousDisabled\">\n <odx-icon name=\"chevron-left\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n\n <div class=\"odx-paginator__range\">\n <ng-template [odxDynamicView]=\"rangeContent\"></ng-template>\n </div>\n\n <odx-action-group>\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_next\" (click)=\"nextPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button *ngIf=\"showFirstLastButtons\" [size]=\"buttonSize\" odxButton class=\"odx-paginator__navigation_last\" (click)=\"lastPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right-end\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
113
+ PaginatorComponent = __decorate([
114
+ CSSComponent('paginator')
115
+ ], PaginatorComponent);
116
+ export { PaginatorComponent };
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorComponent, decorators: [{
118
+ type: Component,
119
+ args: [{ standalone: true, selector: 'odx-paginator', imports: [CoreModule, ActionGroupComponent, ButtonComponent, IconComponent, DynamicViewDirective], providers: [DisabledController.connect()], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
120
+ '[class.is-disabled]': 'isDisabled',
121
+ }, template: "<div *ngIf=\"showSummary\" class=\"odx-paginator__summary\">\n <ng-template [odxDynamicView]=\"summaryContent\"></ng-template>\n</div>\n\n<div class=\"odx-paginator__navigation\">\n <odx-action-group>\n <button\n *ngIf=\"showFirstLastButtons\"\n odxButton\n [size]=\"buttonSize\"\n class=\"odx-paginator__navigation_first\"\n (click)=\"firstPage()\"\n [disabled]=\"isPreviousDisabled\"\n >\n <odx-icon name=\"chevron-left-end\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_previous\" (click)=\"previousPage()\" [disabled]=\"isPreviousDisabled\">\n <odx-icon name=\"chevron-left\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n\n <div class=\"odx-paginator__range\">\n <ng-template [odxDynamicView]=\"rangeContent\"></ng-template>\n </div>\n\n <odx-action-group>\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_next\" (click)=\"nextPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button *ngIf=\"showFirstLastButtons\" [size]=\"buttonSize\" odxButton class=\"odx-paginator__navigation_last\" (click)=\"lastPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right-end\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n</div>\n" }]
122
+ }], propDecorators: { getSummaryContentFn: [{
123
+ type: Input
124
+ }], getRangeContentFn: [{
125
+ type: Input
126
+ }], showSummary: [{
127
+ type: Input
128
+ }], showFirstLastButtons: [{
129
+ type: Input
130
+ }], pageIndex: [{
131
+ type: Input
132
+ }], pageSize: [{
133
+ type: Input
134
+ }], length: [{
135
+ type: Input
136
+ }], pageChanged: [{
137
+ type: Output
138
+ }] } });
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3BhZ2luYXRvci9zcmMvbGliL3BhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQXNCLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQWVwRCxJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFrQjtJQUF4QjtRQUNZLHVCQUFrQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWpELFdBQU0sR0FBRyxxQkFBcUIsRUFBRSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixjQUFTLEdB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QixrRkFBRSxlQUFlLHlHQUFFLGFBQWEsb0dBQUUsb0JBQW9CO0FBU3JGLGtCQUFrQjtJQWI5QixZQUFZLENBQUMsV0FBVyxDQUFDO0dBYWIsa0JBQWtCLENBb0k5QjtTQXBJWSxrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFaOUIsU0FBUztpQ0FDSSxJQUFJLFlBQ04sZUFBZSxXQUNoQixDQUFDLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixDQUFDLGFBQ3RGLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUMsaUJBRTFCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0oscUJBQXFCLEVBQUUsWUFBWTtxQkFDcEM7OEJBZ0JNLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBSUssU0FBUztzQkFEbkIsS0FBSztnQkFVSyxRQUFRO3NCQURsQixLQUFLO2dCQVVLLE1BQU07c0JBRGhCLEtBQUs7Z0JBVUMsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIERpc2FibGVkQ29udHJvbGxlciB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBEeW5hbWljVGV4dENvbnRlbnQsIER5bmFtaWNWaWV3RGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgQWN0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9hY3Rpb24tZ3JvdXAnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50LCBCdXR0b25TaXplIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IFBhZ2VDaGFuZ2VFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBHZXRSYW5nZUNvbnRlbnRGbiwgR2V0U3VtbWFyeUNvbnRlbnRGbiB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IGluamVjdFBhZ2luYXRvckNvbmZpZyB9IGZyb20gJy4vcGFnaW5hdG9yLmNvbmZpZyc7XG5cbkBDU1NDb21wb25lbnQoJ3BhZ2luYXRvcicpXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdvZHgtcGFnaW5hdG9yJyxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIEFjdGlvbkdyb3VwQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIEljb25Db21wb25lbnQsIER5bmFtaWNWaWV3RGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbRGlzYWJsZWRDb250cm9sbGVyLmNvbm5lY3QoKV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuaXMtZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVkQ29udHJvbGxlciA9IERpc2FibGVkQ29udHJvbGxlci5pbmplY3QoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdFBhZ2luYXRvckNvbmZpZygpO1xuXG4gIHByaXZhdGUgX3BhZ2VJbmRleCA9IDA7XG4gIHByaXZhdGUgX3BhZ2VTaXplID0gdGhpcy5jb25maWcucGFnZVNpemU7XG4gIHByaXZhdGUgX2xlbmd0aCA9IDA7XG5cbiAgcHJvdGVjdGVkIGJ1dHRvblNpemUgPSBCdXR0b25TaXplLlNNQUxMO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXRTdW1tYXJ5Q29udGVudEZuPzogR2V0U3VtbWFyeUNvbnRlbnRGbiB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXRSYW5nZUNvbnRlbnRGbj86IEdldFJhbmdlQ29udGVudEZuIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dTdW1tYXJ5ID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGFnZUluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPj0gMCkgdGhpcy5fcGFnZUluZGV4ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhZ2VJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sZW5ndGggPyB0aGlzLl9wYWdlSW5kZXggOiAtMTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGFnZVNpemUodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSA+IDApIHRoaXMuX3BhZ2VTaXplID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhZ2VTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VTaXplO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsZW5ndGgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSA+PSAwKSB0aGlzLl9sZW5ndGggPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xlbmd0aDtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcGFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VDaGFuZ2VFdmVudD4oKTtcblxuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kaXNhYmxlZENvbnRyb2xsZXI/LmRpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWZhdWx0R2V0U3VtbWFyeUNvbnRlbnRGbigpOiBHZXRTdW1tYXJ5Q29udGVudEZuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0U3VtbWFyeUNvbnRlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlZmF1bHRHZXRSYW5nZUNvbnRlbnRGbigpOiBHZXRSYW5nZUNvbnRlbnRGbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldFJhbmdlQ29udGVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VtbWFyeUNvbnRlbnQoKTogRHluYW1pY1RleHRDb250ZW50IHtcbiAgICBjb25zdCBmbiA9IHRoaXMuZ2V0U3VtbWFyeUNvbnRlbnRGbiA/PyB0aGlzLmRlZmF1bHRHZXRTdW1tYXJ5Q29udGVudEZuO1xuICAgIHJldHVybiBmbih0aGlzLnN0YXJ0SXRlbUluZGV4ICsgMSwgdGhpcy5lbmRJdGVtSW5kZXgsIHRoaXMubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmFuZ2VDb250ZW50KCk6IER5bmFtaWNUZXh0Q29udGVudCB7XG4gICAgY29uc3QgZm4gPSB0aGlzLmdldFJhbmdlQ29udGVudEZuID8/IHRoaXMuZGVmYXVsdEdldFJhbmdlQ29udGVudEZuO1xuICAgIHJldHVybiBmbih0aGlzLnBhZ2VJbmRleCwgdGhpcy50b3RhbFBhZ2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBmaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlQ2hhbmdlKDApO1xuICB9XG5cbiAgcHVibGljIHByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VDaGFuZ2UodGhpcy5fcGFnZUluZGV4IC0gMSk7XG4gIH1cblxuICBwdWJsaWMgbmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlQ2hhbmdlKHRoaXMuX3BhZ2VJbmRleCArIDEpO1xuICB9XG5cbiAgcHVibGljIGxhc3RQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMucGFnZUNoYW5nZSh0aGlzLnRvdGFsUGFnZXMgLSAxKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNGaXJzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VJbmRleCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNMYXN0UGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUluZGV4ID09PSB0aGlzLnRvdGFsUGFnZXMgLSAxO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1ByZXZpb3VzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNGaXJzdFBhZ2UgfHwgIXRoaXMuX2xlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNOZXh0RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNMYXN0UGFnZSB8fCAhdGhpcy5fbGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLl9sZW5ndGggLyB0aGlzLl9wYWdlU2l6ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0SXRlbUluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xlbmd0aCA/IHRoaXMuX3BhZ2VJbmRleCAqIHRoaXMuX3BhZ2VTaXplIDogLTE7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuZEl0ZW1JbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLnN0YXJ0SXRlbUluZGV4ICsgdGhpcy5fcGFnZVNpemUsIHRoaXMuX2xlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZShwYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChwYWdlSW5kZXggPCAwKSByZXR1cm47XG5cbiAgICB0aGlzLl9wYWdlSW5kZXggPSBwYWdlSW5kZXg7XG5cbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoe1xuICAgICAgcGFnZUluZGV4OiB0aGlzLl9wYWdlSW5kZXgsXG4gICAgICBsZW5ndGg6IHRoaXMuX2xlbmd0aCxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLl9wYWdlU2l6ZSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cInNob3dTdW1tYXJ5XCIgY2xhc3M9XCJvZHgtcGFnaW5hdG9yX19zdW1tYXJ5XCI+XG4gIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwic3VtbWFyeUNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvZHgtcGFnaW5hdG9yX19uYXZpZ2F0aW9uXCI+XG4gIDxvZHgtYWN0aW9uLWdyb3VwPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvd0ZpcnN0TGFzdEJ1dHRvbnNcIlxuICAgICAgb2R4QnV0dG9uXG4gICAgICBbc2l6ZV09XCJidXR0b25TaXplXCJcbiAgICAgIGNsYXNzPVwib2R4LXBhZ2luYXRvcl9fbmF2aWdhdGlvbl9maXJzdFwiXG4gICAgICAoY2xpY2spPVwiZmlyc3RQYWdlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzUHJldmlvdXNEaXNhYmxlZFwiXG4gICAgPlxuICAgICAgPG9keC1pY29uIG5hbWU9XCJjaGV2cm9uLWxlZnQtZW5kXCIgaWNvblNldD1cImNvcmVcIj48L29keC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBvZHhCdXR0b24gW3NpemVdPVwiYnV0dG9uU2l6ZVwiIGNsYXNzPVwib2R4LXBhZ2luYXRvcl9fbmF2aWdhdGlvbl9wcmV2aW91c1wiIChjbGljayk9XCJwcmV2aW91c1BhZ2UoKVwiIFtkaXNhYmxlZF09XCJpc1ByZXZpb3VzRGlzYWJsZWRcIj5cbiAgICAgIDxvZHgtaWNvbiBuYW1lPVwiY2hldnJvbi1sZWZ0XCIgaWNvblNldD1cImNvcmVcIj48L29keC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L29keC1hY3Rpb24tZ3JvdXA+XG5cbiAgPGRpdiBjbGFzcz1cIm9keC1wYWdpbmF0b3JfX3JhbmdlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJyYW5nZUNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8b2R4LWFjdGlvbi1ncm91cD5cbiAgICA8YnV0dG9uIG9keEJ1dHRvbiBbc2l6ZV09XCJidXR0b25TaXplXCIgY2xhc3M9XCJvZHgtcGFnaW5hdG9yX19uYXZpZ2F0aW9uX25leHRcIiAoY2xpY2spPVwibmV4dFBhZ2UoKVwiIFtkaXNhYmxlZF09XCJpc05leHREaXNhYmxlZFwiPlxuICAgICAgPG9keC1pY29uIG5hbWU9XCJjaGV2cm9uLXJpZ2h0XCIgaWNvblNldD1cImNvcmVcIj48L29keC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dGaXJzdExhc3RCdXR0b25zXCIgW3NpemVdPVwiYnV0dG9uU2l6ZVwiIG9keEJ1dHRvbiBjbGFzcz1cIm9keC1wYWdpbmF0b3JfX25hdmlnYXRpb25fbGFzdFwiIChjbGljayk9XCJsYXN0UGFnZSgpXCIgW2Rpc2FibGVkXT1cImlzTmV4dERpc2FibGVkXCI+XG4gICAgICA8b2R4LWljb24gbmFtZT1cImNoZXZyb24tcmlnaHQtZW5kXCIgaWNvblNldD1cImNvcmVcIj48L29keC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L29keC1hY3Rpb24tZ3JvdXA+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { createConfigTokens } from '@odx/angular/utils';
2
+ const getSummaryContent = (startItemIndex, endItemIndex, length) => {
3
+ return `
4
+ <strong>${startItemIndex}</strong>
5
+ to <strong>${endItemIndex}</strong>
6
+ of <strong>${length}</strong>
7
+ `;
8
+ };
9
+ const getRangeContent = (pageIndex, totalPages) => {
10
+ return `
11
+ Page <strong>${pageIndex + 1}</strong>
12
+ of <strong>${totalPages}</strong>
13
+ `;
14
+ };
15
+ export const { PaginatorConfig, PaginatorDefaultConfig, injectPaginatorConfig, providePaginatorConfig } = createConfigTokens('Paginator', '@odx/angular/components/paginator', {
16
+ getSummaryContent,
17
+ getRangeContent,
18
+ pageSize: 10,
19
+ });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3BhZ2luYXRvci9zcmMvbGliL3BhZ2luYXRvci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFtQnhELE1BQU0saUJBQWlCLEdBQXdCLENBQUMsY0FBc0IsRUFBRSxZQUFvQixFQUFFLE1BQWMsRUFBc0IsRUFBRTtJQUNsSSxPQUFPO2NBQ0ssY0FBYztpQkFDWCxZQUFZO2lCQUNaLE1BQU07R0FDcEIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFzQixDQUFDLFNBQWlCLEVBQUUsVUFBa0IsRUFBc0IsRUFBRTtJQUN2RyxPQUFPO21CQUNVLFNBQVMsR0FBRyxDQUFDO2lCQUNmLFVBQVU7R0FDeEIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLEdBQUcsa0JBQWtCLENBQzFILFdBQVcsRUFDWCxtQ0FBbUMsRUFDbkM7SUFDRSxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY1RleHRDb250ZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgY3JlYXRlQ29uZmlnVG9rZW5zIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEdldFJhbmdlQ29udGVudEZuLCBHZXRTdW1tYXJ5Q29udGVudEZuIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRvckNvbmZpZyB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0dldFN1bW1hcnlDb250ZW50Rm59IC0gQ29udGVudCBpcyByZXNwb25zaWJsZSBmb3IgcGFnaW5hdG9yIHN1bW1hcnlcbiAgICovXG4gIGdldFN1bW1hcnlDb250ZW50OiBHZXRTdW1tYXJ5Q29udGVudEZuO1xuICAvKipcbiAgICogQHBhcmFtIHtHZXRSYW5nZUNvbnRlbnRGbn0gLSBDb250ZW50IGlzIHJlc3BvbnNpYmxlIGZvciBwYWdpbmF0b3IgcmFuZ2VcbiAgICovXG4gIGdldFJhbmdlQ29udGVudDogR2V0UmFuZ2VDb250ZW50Rm47XG4gIC8qKlxuICAgKiBEZWZhdWx0IHBhZ2luYXRvciBwYWdlIHNpemVcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHBhZ2VTaXplOiBudW1iZXI7XG59XG5cbmNvbnN0IGdldFN1bW1hcnlDb250ZW50OiBHZXRTdW1tYXJ5Q29udGVudEZuID0gKHN0YXJ0SXRlbUluZGV4OiBudW1iZXIsIGVuZEl0ZW1JbmRleDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IER5bmFtaWNUZXh0Q29udGVudCA9PiB7XG4gIHJldHVybiBgXG4gICAgPHN0cm9uZz4ke3N0YXJ0SXRlbUluZGV4fTwvc3Ryb25nPlxuICAgIHRvIDxzdHJvbmc+JHtlbmRJdGVtSW5kZXh9PC9zdHJvbmc+XG4gICAgb2YgPHN0cm9uZz4ke2xlbmd0aH08L3N0cm9uZz5cbiAgYDtcbn07XG5cbmNvbnN0IGdldFJhbmdlQ29udGVudDogR2V0UmFuZ2VDb250ZW50Rm4gPSAocGFnZUluZGV4OiBudW1iZXIsIHRvdGFsUGFnZXM6IG51bWJlcik6IER5bmFtaWNUZXh0Q29udGVudCA9PiB7XG4gIHJldHVybiBgXG4gICAgUGFnZSA8c3Ryb25nPiR7cGFnZUluZGV4ICsgMX08L3N0cm9uZz5cbiAgICBvZiA8c3Ryb25nPiR7dG90YWxQYWdlc308L3N0cm9uZz5cbiAgYDtcbn07XG5cbmV4cG9ydCBjb25zdCB7IFBhZ2luYXRvckNvbmZpZywgUGFnaW5hdG9yRGVmYXVsdENvbmZpZywgaW5qZWN0UGFnaW5hdG9yQ29uZmlnLCBwcm92aWRlUGFnaW5hdG9yQ29uZmlnIH0gPSBjcmVhdGVDb25maWdUb2tlbnMoXG4gICdQYWdpbmF0b3InLFxuICAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvcGFnaW5hdG9yJyxcbiAge1xuICAgIGdldFN1bW1hcnlDb250ZW50LFxuICAgIGdldFJhbmdlQ29udGVudCxcbiAgICBwYWdlU2l6ZTogMTAsXG4gIH0sXG4pO1xuIl19
@@ -0,0 +1,17 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { PaginatorComponent } from './paginator.component';
3
+ import * as i0 from "@angular/core";
4
+ const modules = [PaginatorComponent];
5
+ export class PaginatorModule {
6
+ }
7
+ PaginatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ PaginatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: PaginatorModule, imports: [PaginatorComponent], exports: [PaginatorComponent] });
9
+ PaginatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorModule, imports: [modules] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ imports: modules,
14
+ exports: [...modules],
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3BhZ2luYXRvci9zcmMvbGliL3BhZ2luYXRvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFM0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBTXJDLE1BQU0sT0FBTyxlQUFlOzs0R0FBZixlQUFlOzZHQUFmLGVBQWUsWUFOWCxrQkFBa0IsYUFBbEIsa0JBQWtCOzZHQU10QixlQUFlLFlBSGpCLE9BQU87MkZBR0wsZUFBZTtrQkFKM0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4vcGFnaW5hdG9yLmNvbXBvbmVudCc7XG5cbmNvbnN0IG1vZHVsZXMgPSBbUGFnaW5hdG9yQ29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogbW9kdWxlcyxcbiAgZXhwb3J0czogWy4uLm1vZHVsZXNdLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2R4LWFuZ3VsYXItY29tcG9uZW50cy1wYWdpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL29keC1hbmd1bGFyLWNvbXBvbmVudHMtcGFnaW5hdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -28,6 +28,7 @@ export class HeaderTitleComponent {
28
28
  if (!this.item?.sortable)
29
29
  return;
30
30
  switch (this.sortStatus.sortVariant) {
31
+ case TableSortVariant.DESC:
31
32
  case TableSortVariant.UNSORTED:
32
33
  this.table.clearSort();
33
34
  this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.ASC };
@@ -36,10 +37,6 @@ export class HeaderTitleComponent {
36
37
  this.table.clearSort();
37
38
  this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.DESC };
38
39
  break;
39
- case TableSortVariant.DESC:
40
- this.table.clearSort();
41
- this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.ASC };
42
- break;
43
40
  }
44
41
  this.table.sorted.emit(this.sortStatus);
45
42
  }
@@ -83,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
83
80
  }], propDecorators: { item: [{
84
81
  type: Input
85
82
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3RhYmxlL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3RhYmxlL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFXM0MsTUFBTSxPQUFPLG9CQUFvQjtJQVRqQztRQVVtQixVQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoQyx1QkFBa0IsR0FBRyxjQUFjLEVBQUUs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LENBQUMsTUFBTSxXQUN0QyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQzs4QkFTeEQsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9jaGVja2JveCc7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNvcnRTdGF0dXMsIFRhYmxlQm9keUNlbGwsIFRhYmxlSGVhZGVyQ2VsbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFibGVTb3J0VmFyaWFudCB9IGZyb20gJy4uLy4uL21vZGVscy9zb3J0LXZhcmlhbnQnO1xuaW1wb3J0IHsgVEFCTEUgfSBmcm9tICcuLi8uLi90YWJsZS5jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd0aFtvZHhIZWFkZXJUaXRsZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENoZWNrYm94Q29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyVGl0bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHRhYmxlID0gaW5qZWN0KFRBQkxFKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG4gIHByaXZhdGUgc29ydFN0YXR1czogU29ydFN0YXR1cyA9IHRoaXMuZ2V0U29ydFN0YXR1cztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXRlbSE6IFRhYmxlSGVhZGVyQ2VsbDtcblxuICBwdWJsaWMgdGVzdCA9IHRydWU7XG5cbiAgcHVibGljIGNoZWNrRm9ybSA9IG5ldyBGb3JtR3JvdXAoeyBjaGVjazogbmV3IEZvcm1Db250cm9sKGZhbHNlKSB9KTtcblxuICBwdWJsaWMgZ2V0IGdldFNvcnRTdGF0dXMoKTogU29ydFN0YXR1cyB7XG4gICAgcmV0dXJuIHsgY29sdW1uOiB0aGlzLml0ZW0/Lm5hbWUsIHNvcnRWYXJpYW50OiBUYWJsZVNvcnRWYXJpYW50LlVOU09SVEVEIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNvcnRJY29uKCk6IFRhYmxlU29ydFZhcmlhbnQge1xuICAgIHJldHVybiB0aGlzLnNvcnRTdGF0dXMuc29ydFZhcmlhbnQ7XG4gIH1cblxuICBwdWJsaWMgc29ydENvbHVtbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXRlbT8uc29ydGFibGUpIHJldHVybjtcbiAgICBzd2l0Y2ggKHRoaXMuc29ydFN0YXR1cy5zb3J0VmFyaWFudCkge1xuICAgICAgY2FzZSBUYWJsZVNvcnRWYXJpYW50LlVOU09SVEVEOlxuICAgICAgICB0aGlzLnRhYmxlLmNsZWFyU29ydCgpO1xuICAgICAgICB0aGlzLnNvcnRTdGF0dXMgPSB7IC4uLnRoaXMuc29ydFN0YXR1cywgc29ydFZhcmlhbnQ6IFRhYmxlU29ydFZhcmlhbnQuQVNDIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUYWJsZVNvcnRWYXJpYW50LkFTQzpcbiAgICAgICAgdGhpcy50YWJsZS5jbGVhclNvcnQoKTtcblxuICAgICAgICB0aGlzLnNvcnRTdGF0dXMgPSB7IC4uLnRoaXMuc29ydFN0YXR1cywgc29ydFZhcmlhbnQ6IFRhYmxlU29ydFZhcmlhbnQuREVTQyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGFibGVTb3J0VmFyaWFudC5ERVNDOlxuICAgICAgICB0aGlzLnRhYmxlLmNsZWFyU29ydCgpO1xuXG4gICAgICAgIHRoaXMuc29ydFN0YXR1cyA9IHsgLi4udGhpcy5zb3J0U3RhdHVzLCBzb3J0VmFyaWFudDogVGFibGVTb3J0VmFyaWFudC5BU0MgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy50YWJsZS5zb3J0ZWQuZW1pdCh0aGlzLnNvcnRTdGF0dXMpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU29ydFN0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRTdGF0dXMgPSB7IGNvbHVtbjogdGhpcy5pdGVtPy5uYW1lLCBzb3J0VmFyaWFudDogVGFibGVTb3J0VmFyaWFudC5VTlNPUlRFRCB9O1xuICAgIHRoaXMuY2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuZGF0YS5maWx0ZXIoKGQ6IFRhYmxlQm9keUNlbGwpID0+IGRbdGhpcy5pdGVtLm5hbWVdKS5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgY2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy50YWJsZS5oZWFkZXJEYXRhLmZpbmQoKGg6IFRhYmxlSGVhZGVyQ2VsbCkgPT4gaC5jaGVjayk/Lm5hbWU7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuZGF0YS5ldmVyeSgoaXRlbTogVGFibGVCb2R5Q2VsbCkgPT4gY29sdW1uICYmIGl0ZW1bY29sdW1uXSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0JveExpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQm94TGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLml0ZW0uY2hlY2spIHJldHVybjtcbiAgICB0aGlzLmNoZWNrRm9ybVxuICAgICAgLmdldCgnY2hlY2snKVxuICAgICAgPy52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgdGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgdGFwKChjaGVjaykgPT4gdGhpcy50YWJsZS5jaGVja2VkLmVtaXQoeyBjb2x1bW46IHRoaXMuaXRlbS5uYW1lLCBjaGVjazogISFjaGVjayB9KSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLnRhYmxlLmhlYWRlckRhdGEuZmluZCgoaDogVGFibGVIZWFkZXJDZWxsKSA9PiBoLmNoZWNrKT8ubmFtZTtcbiAgICBjb25zdCB7IGxlbmd0aCB9ID0gdGhpcy50YWJsZS5kYXRhO1xuICAgIGNvbnN0IHVuY2hlY2tlZCA9IGxlbmd0aCAtIHRoaXMudGFibGUuZGF0YS5maWx0ZXIoKGl0ZW06IFRhYmxlQm9keUNlbGwpID0+IGNvbHVtbiAmJiBpdGVtW2NvbHVtbl0pLmxlbmd0aDtcbiAgICByZXR1cm4gdW5jaGVja2VkID4gMCAmJiB1bmNoZWNrZWQgPCBsZW5ndGg7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJpdGVtPy5jaGVjazsgZWxzZSB0aXRsZVwiIGNsYXNzPVwib2R4LXRhYmxlX19jaGVja1wiPlxuICA8ZGl2IFtmb3JtR3JvdXBdPVwiY2hlY2tGb3JtXCI+XG4gICAgPG9keC1jaGVja2JveCBbY2hlY2tlZF09XCJjaGVja2VkXCIgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImNoZWNrXCI+PC9vZHgtY2hlY2tib3g+XG4gIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3RpdGxlPlxuICA8ZGl2IGNsYXNzPVwib2R4LXRhYmxlX19oZWFkZXItY2VsbC10aXRsZVwiIChjbGljayk9XCJzb3J0Q29sdW1uKClcIiBbY2xhc3Muc29ydGFibGVdPVwiaXRlbS5zb3J0YWJsZVwiPlxuICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8uc29ydGFibGVcIiBbbmdTd2l0Y2hdPVwic29ydEljb25cIj5cbiAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIid1bnNvcnRlZCdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxuICAgICAgICA8cGF0aCBkPVwibTE0LDVIMnYtMmgxMnYyWm0tNCwySDJ2Mmg4di0yWm0tNCw0SDJ2Mmg0di0yWlwiIHN0eWxlPVwiZmlsbDogdmFyKC0tYmx1ZS03MDApXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ2Rlc2MnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cbiAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMTEgNiA4IDMgNSA2IDcgNiA3IDEzIDkgMTMgOSA2IDExIDZcIiBzdHlsZT1cImZpbGw6IHZhcigtLWJsdWUtNzAwKVwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidhc2MnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cbiAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiNSAxMCA4IDEzIDExIDEwIDkgMTAgOSAzIDcgMyA3IDEwIDUgMTBcIiBzdHlsZT1cImZpbGw6IHZhcigtLWJsdWUtNzAwKVwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIm9keC1mb3JtLWZpZWxkXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3RhYmxlL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3RhYmxlL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXItdGl0bGUvaGVhZGVyLXRpdGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFXM0MsTUFBTSxPQUFPLG9CQUFvQjtJQVRqQztRQVVtQixVQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoQyx1QkFBa0IsR0FBRyxjQUFjLEVBQUUs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b24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2NoZWNrYm94JztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU29ydFN0YXR1cywgVGFibGVCb2R5Q2VsbCwgVGFibGVIZWFkZXJDZWxsIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZVNvcnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NvcnQtdmFyaWFudCc7XG5pbXBvcnQgeyBUQUJMRSB9IGZyb20gJy4uLy4uL3RhYmxlLmNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3RoW29keEhlYWRlclRpdGxlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXItdGl0bGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ2hlY2tib3hDb21wb25lbnQsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJUaXRsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFibGUgPSBpbmplY3QoVEFCTEUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcbiAgcHJpdmF0ZSBzb3J0U3RhdHVzOiBTb3J0U3RhdHVzID0gdGhpcy5nZXRTb3J0U3RhdHVzO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpdGVtITogVGFibGVIZWFkZXJDZWxsO1xuXG4gIHB1YmxpYyB0ZXN0ID0gdHJ1ZTtcblxuICBwdWJsaWMgY2hlY2tGb3JtID0gbmV3IEZvcm1Hcm91cCh7IGNoZWNrOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpIH0pO1xuXG4gIHB1YmxpYyBnZXQgZ2V0U29ydFN0YXR1cygpOiBTb3J0U3RhdHVzIHtcbiAgICByZXR1cm4geyBjb2x1bW46IHRoaXMuaXRlbT8ubmFtZSwgc29ydFZhcmlhbnQ6IFRhYmxlU29ydFZhcmlhbnQuVU5TT1JURUQgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc29ydEljb24oKTogVGFibGVTb3J0VmFyaWFudCB7XG4gICAgcmV0dXJuIHRoaXMuc29ydFN0YXR1cy5zb3J0VmFyaWFudDtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0Q29sdW1uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pdGVtPy5zb3J0YWJsZSkgcmV0dXJuO1xuICAgIHN3aXRjaCAodGhpcy5zb3J0U3RhdHVzLnNvcnRWYXJpYW50KSB7XG4gICAgICBjYXNlIFRhYmxlU29ydFZhcmlhbnQuREVTQzpcbiAgICAgIGNhc2UgVGFibGVTb3J0VmFyaWFudC5VTlNPUlRFRDpcbiAgICAgICAgdGhpcy50YWJsZS5jbGVhclNvcnQoKTtcbiAgICAgICAgdGhpcy5zb3J0U3RhdHVzID0geyAuLi50aGlzLnNvcnRTdGF0dXMsIHNvcnRWYXJpYW50OiBUYWJsZVNvcnRWYXJpYW50LkFTQyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGFibGVTb3J0VmFyaWFudC5BU0M6XG4gICAgICAgIHRoaXMudGFibGUuY2xlYXJTb3J0KCk7XG5cbiAgICAgICAgdGhpcy5zb3J0U3RhdHVzID0geyAuLi50aGlzLnNvcnRTdGF0dXMsIHNvcnRWYXJpYW50OiBUYWJsZVNvcnRWYXJpYW50LkRFU0MgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy50YWJsZS5zb3J0ZWQuZW1pdCh0aGlzLnNvcnRTdGF0dXMpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU29ydFN0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRTdGF0dXMgPSB7IGNvbHVtbjogdGhpcy5pdGVtPy5uYW1lLCBzb3J0VmFyaWFudDogVGFibGVTb3J0VmFyaWFudC5VTlNPUlRFRCB9O1xuICAgIHRoaXMuY2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuZGF0YS5maWx0ZXIoKGQ6IFRhYmxlQm9keUNlbGwpID0+IGRbdGhpcy5pdGVtLm5hbWVdKS5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgY2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy50YWJsZS5oZWFkZXJEYXRhLmZpbmQoKGg6IFRhYmxlSGVhZGVyQ2VsbCkgPT4gaC5jaGVjayk/Lm5hbWU7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuZGF0YS5ldmVyeSgoaXRlbTogVGFibGVCb2R5Q2VsbCkgPT4gY29sdW1uICYmIGl0ZW1bY29sdW1uXSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0JveExpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQm94TGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLml0ZW0uY2hlY2spIHJldHVybjtcbiAgICB0aGlzLmNoZWNrRm9ybVxuICAgICAgLmdldCgnY2hlY2snKVxuICAgICAgPy52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgdGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgdGFwKChjaGVjaykgPT4gdGhpcy50YWJsZS5jaGVja2VkLmVtaXQoeyBjb2x1bW46IHRoaXMuaXRlbS5uYW1lLCBjaGVjazogISFjaGVjayB9KSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy50YWJsZS5oZWFkZXJEYXRhLmZpbmQoKGg6IFRhYmxlSGVhZGVyQ2VsbCkgPT4gaC5jaGVjayk/Lm5hbWU7XG4gICAgY29uc3QgeyBsZW5ndGggfSA9IHRoaXMudGFibGUuZGF0YTtcbiAgICBjb25zdCB1bmNoZWNrZWQgPSBsZW5ndGggLSB0aGlzLnRhYmxlLmRhdGEuZmlsdGVyKChpdGVtOiBUYWJsZUJvZHlDZWxsKSA9PiBjb2x1bW4gJiYgaXRlbVtjb2x1bW5dKS5sZW5ndGg7XG4gICAgcmV0dXJuIHVuY2hlY2tlZCA+IDAgJiYgdW5jaGVja2VkIDwgbGVuZ3RoO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiaXRlbT8uY2hlY2s7IGVsc2UgdGl0bGVcIiBjbGFzcz1cIm9keC10YWJsZV9fY2hlY2tcIj5cbiAgPGRpdiBbZm9ybUdyb3VwXT1cImNoZWNrRm9ybVwiPlxuICAgIDxvZHgtY2hlY2tib3ggW2NoZWNrZWRdPVwiY2hlY2tlZFwiIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJjaGVja1wiPjwvb2R4LWNoZWNrYm94PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICN0aXRsZT5cbiAgPGRpdiBjbGFzcz1cIm9keC10YWJsZV9faGVhZGVyLWNlbGwtdGl0bGVcIiAoY2xpY2spPVwic29ydENvbHVtbigpXCIgW2NsYXNzLnNvcnRhYmxlXT1cIml0ZW0uc29ydGFibGVcIj5cbiAgICB7eyBpdGVtLnRpdGxlIH19XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0/LnNvcnRhYmxlXCIgW25nU3dpdGNoXT1cInNvcnRJY29uXCI+XG4gICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCIndW5zb3J0ZWQnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cbiAgICAgICAgPHBhdGggZD1cIm0xNCw1SDJ2LTJoMTJ2MlptLTQsMkgydjJoOHYtMlptLTQsNEgydjJoNHYtMlpcIiBzdHlsZT1cImZpbGw6IHZhcigtLWJsdWUtNzAwKVwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidkZXNjJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG4gICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjExIDYgOCAzIDUgNiA3IDYgNyAxMyA5IDEzIDkgNiAxMSA2XCIgc3R5bGU9XCJmaWxsOiB2YXIoLS1ibHVlLTcwMClcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInYXNjJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG4gICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjUgMTAgOCAxMyAxMSAxMCA5IDEwIDkgMyA3IDMgNyAxMCA1IDEwXCIgc3R5bGU9XCJmaWxsOiB2YXIoLS1ibHVlLTcwMClcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJvZHgtZm9ybS1maWVsZFwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=