@impartner/design-components 1.0.4 → 1.1.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.
@@ -1,6 +1,7 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
+ import * as i2 from "../icon/icon.component";
4
5
  /**
5
6
  * The `AlertComponent` (`<impdc-alert` or `<any impdc-alert`) is intended to show information or feedback inline with content.
6
7
  * To use, import `AlertModule` or another module that imports and exports that module from `@impartner/design-components`.
@@ -16,16 +17,32 @@ export class AlertComponent {
16
17
  */
17
18
  this.show = false;
18
19
  /**
19
- * The heading text of the Alert.
20
+ * The heading text of the Alert. Content can also be projected in the heading area using a `heading` directive.
20
21
  */
21
22
  this.headingText = '';
23
+ /**
24
+ * The body text of the Alert. Content can also be projected into the body area using default projection.
25
+ */
26
+ this.bodyText = '';
27
+ /**
28
+ * By default, an Alert is a "floating" notification. When set to "inline", these "floating" styles are replaced.
29
+ */
30
+ this.inline = false;
31
+ /**
32
+ * Removes the Alert icon provided by the theme or projected into the icon area using the `icon` directive.
33
+ */
34
+ this.hideIcon = false;
35
+ /**
36
+ * Allows the Alert to be dismissed.
37
+ */
38
+ this.dismissible = true;
22
39
  /**
23
40
  * Event emitted when the Alert is dismissed.
24
41
  */
25
42
  this.dismiss = new EventEmitter();
26
43
  }
27
- get alertColor() {
28
- return this.theme === 'warning'
44
+ get componentClasses() {
45
+ const themeClass = this.theme === 'warning'
29
46
  ? 'alert-warning'
30
47
  : this.theme === 'info'
31
48
  ? 'alert-info'
@@ -34,24 +51,49 @@ export class AlertComponent {
34
51
  : this.theme === 'success'
35
52
  ? 'alert-success'
36
53
  : '';
54
+ const inlineClass = this.inline ? ' alert-inline' : '';
55
+ const dismissibleClass = this.dismissible ? ' alert-dismissible' : '';
56
+ return themeClass + inlineClass + dismissibleClass;
57
+ }
58
+ get themeIconName() {
59
+ return this.theme === 'warning'
60
+ ? 'exclamation-circle'
61
+ : this.theme === 'info'
62
+ ? 'info-circle'
63
+ : this.theme === 'danger'
64
+ ? 'times-circle'
65
+ : this.theme === 'success'
66
+ ? 'check-circle'
67
+ : '';
37
68
  }
38
69
  closeAlert() {
70
+ if (!this.dismissible) {
71
+ return;
72
+ }
39
73
  this.show = false;
40
74
  this.dismiss.emit();
41
75
  }
42
76
  }
43
77
  AlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- AlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"alert alert-dismissible\" [ngClass]=\"alertColor\">\n <div class=\"alert-heading\">\n <span class=\"alert-heading-left\">\n <ng-content select=\"[heading]\"></ng-content>\n <ng-container *ngIf=\"headingText\">\n <span class=\"alert-heading-text\">{{ headingText }}</span>\n </ng-container>\n </span>\n <div\n (click)=\"closeAlert()\"\n class=\"close-icon\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span class=\"fas fa-times\"></span>\n </div>\n </div>\n <div class=\"alert-body\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".alert-dismissible{padding-right:2rem}.icon{width:1.6rem;height:1.6rem;padding-right:1.4rem}.alert-heading{display:flex;align-items:center;font-weight:500;font-size:1.4rem;line-height:2rem}.alert-heading-left{display:inline-flex;align-items:center;gap:1rem}.alert-body{margin:.8rem 0}.heading-wrapper:first-child{margin:0}.close-icon{position:absolute;right:0;margin:1.75rem 1.4rem;font-size:1.6rem;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
78
+ AlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText", bodyText: "bodyText", inline: "inline", hideIcon: "hideIcon", dismissible: "dismissible" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div class=\"alert-content\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <ng-content></ng-content>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] });
45
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AlertComponent, decorators: [{
46
80
  type: Component,
47
- args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"alert alert-dismissible\" [ngClass]=\"alertColor\">\n <div class=\"alert-heading\">\n <span class=\"alert-heading-left\">\n <ng-content select=\"[heading]\"></ng-content>\n <ng-container *ngIf=\"headingText\">\n <span class=\"alert-heading-text\">{{ headingText }}</span>\n </ng-container>\n </span>\n <div\n (click)=\"closeAlert()\"\n class=\"close-icon\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span class=\"fas fa-times\"></span>\n </div>\n </div>\n <div class=\"alert-body\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".alert-dismissible{padding-right:2rem}.icon{width:1.6rem;height:1.6rem;padding-right:1.4rem}.alert-heading{display:flex;align-items:center;font-weight:500;font-size:1.4rem;line-height:2rem}.alert-heading-left{display:inline-flex;align-items:center;gap:1rem}.alert-body{margin:.8rem 0}.heading-wrapper:first-child{margin:0}.close-icon{position:absolute;right:0;margin:1.75rem 1.4rem;font-size:1.6rem;cursor:pointer}\n"] }]
81
+ args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div class=\"alert-content\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <ng-content></ng-content>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}\n"] }]
48
82
  }], propDecorators: { theme: [{
49
83
  type: Input
50
84
  }], show: [{
51
85
  type: Input
52
86
  }], headingText: [{
53
87
  type: Input
88
+ }], bodyText: [{
89
+ type: Input
90
+ }], inline: [{
91
+ type: Input
92
+ }], hideIcon: [{
93
+ type: Input
94
+ }], dismissible: [{
95
+ type: Input
54
96
  }], dismiss: [{
55
97
  type: Output
56
98
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUd2RTs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sY0FBYztJQUwzQjtRQU1FOztXQUVHO1FBRUgsVUFBSyxHQUFlLFNBQVMsQ0FBQztRQUU5Qjs7V0FFRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQUM7UUFFdEI7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUUxQjs7V0FFRztRQUVILFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBa0JwQztJQWhCQyxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUztZQUM3QixDQUFDLENBQUMsZUFBZTtZQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxNQUFNO2dCQUN2QixDQUFDLENBQUMsWUFBWTtnQkFDZCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRO29CQUN6QixDQUFDLENBQUMsY0FBYztvQkFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUzt3QkFDMUIsQ0FBQyxDQUFDLGVBQWU7d0JBQ2pCLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7NEdBdENVLGNBQWM7Z0dBQWQsY0FBYyx5S0NaM0IsNm5CQW9CQTs0RkRSYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLDRCQUE0Qjs4QkFTdEMsS0FBSztzQkFESixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1OLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydFRoZW1lIH0gZnJvbSAnLi90aGVtZSc7XG5cbi8qKlxuICogVGhlIGBBbGVydENvbXBvbmVudGAgKGA8aW1wZGMtYWxlcnRgIG9yIGA8YW55IGltcGRjLWFsZXJ0YCkgaXMgaW50ZW5kZWQgdG8gc2hvdyBpbmZvcm1hdGlvbiBvciBmZWVkYmFjayBpbmxpbmUgd2l0aCBjb250ZW50LlxuICogVG8gdXNlLCBpbXBvcnQgYEFsZXJ0TW9kdWxlYCBvciBhbm90aGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgYW5kIGV4cG9ydHMgdGhhdCBtb2R1bGUgZnJvbSBgQGltcGFydG5lci9kZXNpZ24tY29tcG9uZW50c2AuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLWFsZXJ0LCBbaW1wZGMtYWxlcnRdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdGhlbWUgb2YgdGhlIEFsZXJ0IGFmZmVjdGluZyB0ZXh0LCBpY29ucywgYmFja2dyb3VuZHMsIGFuZCBib3JkZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgdGhlbWU6IEFsZXJ0VGhlbWUgPSAnd2FybmluZyc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIEFsZXJ0IHNob3VsZCBiZSBzaG93biBpbW1lZGlhdGVseS5cbiAgICovXG4gIEBJbnB1dCgpIHNob3cgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGhlYWRpbmcgdGV4dCBvZiB0aGUgQWxlcnQuXG4gICAqL1xuICBASW5wdXQoKSBoZWFkaW5nVGV4dCA9ICcnO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIEFsZXJ0IGlzIGRpc21pc3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBkaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCBhbGVydENvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWUgPT09ICd3YXJuaW5nJ1xuICAgICAgPyAnYWxlcnQtd2FybmluZydcbiAgICAgIDogdGhpcy50aGVtZSA9PT0gJ2luZm8nXG4gICAgICA/ICdhbGVydC1pbmZvJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnZGFuZ2VyJ1xuICAgICAgPyAnYWxlcnQtZGFuZ2VyJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnc3VjY2VzcydcbiAgICAgID8gJ2FsZXJ0LXN1Y2Nlc3MnXG4gICAgICA6ICcnO1xuICB9XG5cbiAgY2xvc2VBbGVydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcbiAgICB0aGlzLmRpc21pc3MuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1wiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGlzbWlzc2libGVcIiBbbmdDbGFzc109XCJhbGVydENvbG9yXCI+XG4gIDxkaXYgY2xhc3M9XCJhbGVydC1oZWFkaW5nXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJhbGVydC1oZWFkaW5nLWxlZnRcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkaW5nXVwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkaW5nVGV4dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFsZXJ0LWhlYWRpbmctdGV4dFwiPnt7IGhlYWRpbmdUZXh0IH19PC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9zcGFuPlxuICAgIDxkaXZcbiAgICAgIChjbGljayk9XCJjbG9zZUFsZXJ0KClcIlxuICAgICAgY2xhc3M9XCJjbG9zZS1pY29uXCJcbiAgICAgIGRhdGEtYnMtZGlzbWlzcz1cImFsZXJ0XCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWxlcnQtYm9keVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFHdkU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGNBQWM7SUFMM0I7UUFNRTs7V0FFRztRQUVILFVBQUssR0FBZSxTQUFTLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRXRCOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRXZCOztXQUVHO1FBQ00sV0FBTSxHQUFHLEtBQUssQ0FBQztRQUV4Qjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUU1Qjs7V0FFRztRQUVILFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBcUNwQztJQW5DQyxJQUFJLGdCQUFnQjtRQUNsQixNQUFNLFVBQVUsR0FDZCxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFDdEIsQ0FBQyxDQUFDLGVBQWU7WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTTtnQkFDdkIsQ0FBQyxDQUFDLFlBQVk7Z0JBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUTtvQkFDekIsQ0FBQyxDQUFDLGNBQWM7b0JBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVM7d0JBQzFCLENBQUMsQ0FBQyxlQUFlO3dCQUNqQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RFLE9BQU8sVUFBVSxHQUFHLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFDN0IsQ0FBQyxDQUFDLG9CQUFvQjtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxNQUFNO2dCQUN2QixDQUFDLENBQUMsYUFBYTtnQkFDZixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRO29CQUN6QixDQUFDLENBQUMsY0FBYztvQkFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUzt3QkFDMUIsQ0FBQyxDQUFDLGNBQWM7d0JBQ2hCLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7NEdBN0VVLGNBQWM7Z0dBQWQsY0FBYyxtUUNaM0IseXVDQTBDQTs0RkQ5QmEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSw0QkFBNEI7OEJBU3RDLEtBQUs7c0JBREosS0FBSztnQkFNRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTU4sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0VGhlbWUgfSBmcm9tICcuL3RoZW1lJztcblxuLyoqXG4gKiBUaGUgYEFsZXJ0Q29tcG9uZW50YCAoYDxpbXBkYy1hbGVydGAgb3IgYDxhbnkgaW1wZGMtYWxlcnRgKSBpcyBpbnRlbmRlZCB0byBzaG93IGluZm9ybWF0aW9uIG9yIGZlZWRiYWNrIGlubGluZSB3aXRoIGNvbnRlbnQuXG4gKiBUbyB1c2UsIGltcG9ydCBgQWxlcnRNb2R1bGVgIG9yIGFub3RoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGF0IG1vZHVsZSBmcm9tIGBAaW1wYXJ0bmVyL2Rlc2lnbi1jb21wb25lbnRzYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtYWxlcnQsIFtpbXBkYy1hbGVydF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbGVydC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0Q29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSB0aGVtZSBvZiB0aGUgQWxlcnQgYWZmZWN0aW5nIHRleHQsIGljb25zLCBiYWNrZ3JvdW5kcywgYW5kIGJvcmRlcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICB0aGVtZTogQWxlcnRUaGVtZSA9ICd3YXJuaW5nJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgQWxlcnQgc2hvdWxkIGJlIHNob3duIGltbWVkaWF0ZWx5LlxuICAgKi9cbiAgQElucHV0KCkgc2hvdyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGluZyB0ZXh0IG9mIHRoZSBBbGVydC4gQ29udGVudCBjYW4gYWxzbyBiZSBwcm9qZWN0ZWQgaW4gdGhlIGhlYWRpbmcgYXJlYSB1c2luZyBhIGBoZWFkaW5nYCBkaXJlY3RpdmUuXG4gICAqL1xuICBASW5wdXQoKSBoZWFkaW5nVGV4dCA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgYm9keSB0ZXh0IG9mIHRoZSBBbGVydC4gQ29udGVudCBjYW4gYWxzbyBiZSBwcm9qZWN0ZWQgaW50byB0aGUgYm9keSBhcmVhIHVzaW5nIGRlZmF1bHQgcHJvamVjdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGJvZHlUZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIGFuIEFsZXJ0IGlzIGEgXCJmbG9hdGluZ1wiIG5vdGlmaWNhdGlvbi4gV2hlbiBzZXQgdG8gXCJpbmxpbmVcIiwgdGhlc2UgXCJmbG9hdGluZ1wiIHN0eWxlcyBhcmUgcmVwbGFjZWQuXG4gICAqL1xuICBASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgQWxlcnQgaWNvbiBwcm92aWRlZCBieSB0aGUgdGhlbWUgb3IgcHJvamVjdGVkIGludG8gdGhlIGljb24gYXJlYSB1c2luZyB0aGUgYGljb25gIGRpcmVjdGl2ZS5cbiAgICovXG4gIEBJbnB1dCgpIGhpZGVJY29uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgQWxlcnQgdG8gYmUgZGlzbWlzc2VkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzbWlzc2libGUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIEFsZXJ0IGlzIGRpc21pc3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBkaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCBjb21wb25lbnRDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGhlbWVDbGFzcyA9XG4gICAgICB0aGlzLnRoZW1lID09PSAnd2FybmluZydcbiAgICAgICAgPyAnYWxlcnQtd2FybmluZydcbiAgICAgICAgOiB0aGlzLnRoZW1lID09PSAnaW5mbydcbiAgICAgICAgPyAnYWxlcnQtaW5mbydcbiAgICAgICAgOiB0aGlzLnRoZW1lID09PSAnZGFuZ2VyJ1xuICAgICAgICA/ICdhbGVydC1kYW5nZXInXG4gICAgICAgIDogdGhpcy50aGVtZSA9PT0gJ3N1Y2Nlc3MnXG4gICAgICAgID8gJ2FsZXJ0LXN1Y2Nlc3MnXG4gICAgICAgIDogJyc7XG4gICAgY29uc3QgaW5saW5lQ2xhc3MgPSB0aGlzLmlubGluZSA/ICcgYWxlcnQtaW5saW5lJyA6ICcnO1xuICAgIGNvbnN0IGRpc21pc3NpYmxlQ2xhc3MgPSB0aGlzLmRpc21pc3NpYmxlID8gJyBhbGVydC1kaXNtaXNzaWJsZScgOiAnJztcbiAgICByZXR1cm4gdGhlbWVDbGFzcyArIGlubGluZUNsYXNzICsgZGlzbWlzc2libGVDbGFzcztcbiAgfVxuXG4gIGdldCB0aGVtZUljb25OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWUgPT09ICd3YXJuaW5nJ1xuICAgICAgPyAnZXhjbGFtYXRpb24tY2lyY2xlJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnaW5mbydcbiAgICAgID8gJ2luZm8tY2lyY2xlJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnZGFuZ2VyJ1xuICAgICAgPyAndGltZXMtY2lyY2xlJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnc3VjY2VzcydcbiAgICAgID8gJ2NoZWNrLWNpcmNsZSdcbiAgICAgIDogJyc7XG4gIH1cblxuICBjbG9zZUFsZXJ0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcbiAgICB0aGlzLmRpc21pc3MuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1wiIGNsYXNzPVwiaW1wZGMgYWxlcnRcIiBbbmdDbGFzc109XCJjb21wb25lbnRDbGFzc2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUljb25cIj5cbiAgICA8c3BhbiAjYWxlcnRJY29uIFtoaWRkZW5dPVwiIWFsZXJ0SWNvbi5jaGlsZHJlbi5sZW5ndGhcIiBjbGFzcz1cImFsZXJ0LWljb25cIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpY29uXVwiPjwvbmctY29udGVudD5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCIhYWxlcnRJY29uLmNoaWxkcmVuLmxlbmd0aFwiIGNsYXNzPVwiYWxlcnQtaWNvblwiPlxuICAgICAgPHNwYW4gaW1wZGMtaWNvbiBbbmFtZV09XCJ0aGVtZUljb25OYW1lXCI+PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cImFsZXJ0LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQtaGVhZGluZ1wiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hlYWRpbmddXCI+PC9uZy1jb250ZW50PlxuICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkaW5nVGV4dFwiPnt7IGhlYWRpbmdUZXh0IH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgI2JvZHlDb250ZW50XG4gICAgICBjbGFzcz1cImFsZXJ0LWJvZHlcIlxuICAgICAgW2hpZGRlbl09XCIhYm9keUNvbnRlbnQuY2hpbGRyZW4ubGVuZ3RoXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYm9keVRleHRcIj57eyBib2R5VGV4dCB9fTwvZGl2PlxuXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgI2FsZXJ0QWN0aW9uc1xuICAgICAgICBbaGlkZGVuXT1cIiFhbGVydEFjdGlvbnMuY2hpbGRyZW4ubGVuZ3RoXCJcbiAgICAgICAgY2xhc3M9XCJhbGVydC1hY3Rpb25zXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthY3Rpb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxhXG4gICAgKm5nSWY9XCJkaXNtaXNzaWJsZVwiXG4gICAgY2xhc3M9XCJjbG9zZS1pY29uXCJcbiAgICAoY2xpY2spPVwiY2xvc2VBbGVydCgpXCJcbiAgICBkYXRhLWJzLWRpc21pc3M9XCJhbGVydFwiXG4gICAgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XG4gICAgPHNwYW4gaW1wZGMtaWNvbiBuYW1lPVwidGltZXNcIiB0aGVtZT1cInJlZ3VsYXJcIj48L3NwYW4+XG4gIDwvYT5cbjwvZGl2PlxuIl19
@@ -1,18 +1,19 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { AlertComponent } from './alert.component';
4
+ import { IconModule } from '../icon';
4
5
  import * as i0 from "@angular/core";
5
6
  export class AlertModule {
6
7
  }
7
8
  AlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- AlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: AlertModule, declarations: [AlertComponent], imports: [CommonModule], exports: [AlertComponent] });
9
- AlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AlertModule, imports: [CommonModule] });
9
+ AlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: AlertModule, declarations: [AlertComponent], imports: [CommonModule, IconModule], exports: [IconModule, AlertComponent] });
10
+ AlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AlertModule, imports: [CommonModule, IconModule, IconModule] });
10
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AlertModule, decorators: [{
11
12
  type: NgModule,
12
13
  args: [{
13
- imports: [CommonModule],
14
+ imports: [CommonModule, IconModule],
14
15
  declarations: [AlertComponent],
15
- exports: [AlertComponent]
16
+ exports: [IconModule, AlertComponent]
16
17
  }]
17
18
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9hbGVydC9hbGVydC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU9uRCxNQUFNLE9BQU8sV0FBVzs7eUdBQVgsV0FBVzswR0FBWCxXQUFXLGlCQUhQLGNBQWMsYUFEbkIsWUFBWSxhQUVaLGNBQWM7MEdBRWIsV0FBVyxZQUpaLFlBQVk7NEZBSVgsV0FBVztrQkFMdkIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2FsZXJ0LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtBbGVydENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtBbGVydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRNb2R1bGUge31cbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9hbGVydC9hbGVydC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBT3JDLE1BQU0sT0FBTyxXQUFXOzt5R0FBWCxXQUFXOzBHQUFYLFdBQVcsaUJBSFAsY0FBYyxhQURuQixZQUFZLEVBQUUsVUFBVSxhQUV4QixVQUFVLEVBQUUsY0FBYzswR0FFekIsV0FBVyxZQUpaLFlBQVksRUFBRSxVQUFVLEVBRXhCLFVBQVU7NEZBRVQsV0FBVztrQkFMdkIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO29CQUNuQyxZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzlCLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBbGVydENvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWNvbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0FsZXJ0Q29tcG9uZW50XSxcbiAgZXhwb3J0czogW0ljb25Nb2R1bGUsIEFsZXJ0Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydE1vZHVsZSB7fVxuIl19
@@ -2,7 +2,8 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { sanitize } from '../../utilities';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../button/button.component";
5
- import * as i2 from "../form-field/controls/input/input.directive";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "../form-field/controls/input/input.directive";
6
7
  /**
7
8
  * The `PaginationComponent` (`<impdc-pagination` or `<div impdc-pagination`) is a control for paged content such as tables or lists.
8
9
  * To use, import `PaginationModule` or another module that imports and exports that module from `@impartner/design-components`.
@@ -51,22 +52,24 @@ export class PaginationComponent {
51
52
  return Math.ceil(this.total / this.perPage);
52
53
  }
53
54
  get firstPageResult() {
54
- if (this.total < 1 || this.page < 1 || this.perPage < 1) {
55
+ const page = this._getPageClamped();
56
+ if (this.total < 1 || page < 1 || this.perPage < 1) {
55
57
  return 0;
56
58
  }
57
- if (this.page === 1) {
59
+ if (page === 1) {
58
60
  return 1;
59
61
  }
60
- if (this.page > Math.ceil(this.total / this.perPage)) {
62
+ if (page > Math.ceil(this.total / this.perPage)) {
61
63
  return this.total;
62
64
  }
63
- return (this.page - 1) * this.perPage + 1;
65
+ return (page - 1) * this.perPage + 1;
64
66
  }
65
67
  get lastPageResult() {
66
- if (this.total <= 0 || this.page < 1 || this.perPage < 1) {
68
+ const page = this._getPageClamped();
69
+ if (this.total <= 0 || page < 1 || this.perPage < 1) {
67
70
  return 0;
68
71
  }
69
- if (this.page === 1) {
72
+ if (page === 1) {
70
73
  if (this.total < this.perPage) {
71
74
  return this.total;
72
75
  }
@@ -74,26 +77,38 @@ export class PaginationComponent {
74
77
  return this.perPage;
75
78
  }
76
79
  }
77
- if (this.total < this.perPage * this.page) {
80
+ if (this.total < this.perPage * page) {
78
81
  return this.total;
79
82
  }
80
83
  else {
81
- return this.perPage * this.page;
84
+ return this.perPage * page;
82
85
  }
83
86
  }
87
+ _getPageClamped(page) {
88
+ page = Number(page || this.page || 0);
89
+ if (isNaN(page) || page < 1) {
90
+ return 1;
91
+ }
92
+ if (page > this.totalPages) {
93
+ return this.totalPages;
94
+ }
95
+ return page;
96
+ }
84
97
  goToPreviousPage() {
85
- if (this.page <= 1) {
98
+ const page = this._getPageClamped();
99
+ if (page <= 1) {
86
100
  return;
87
101
  }
88
- const previousPage = this.page - 1;
102
+ const previousPage = page - 1;
89
103
  this.page = previousPage;
90
104
  this.goToPage.emit(previousPage);
91
105
  }
92
106
  goToNextPage() {
93
- if (this.page >= this.totalPages) {
107
+ const page = this._getPageClamped();
108
+ if (page >= this.totalPages) {
94
109
  return;
95
110
  }
96
- const nextPage = this.page + 1;
111
+ const nextPage = page + 1;
97
112
  this.page = nextPage;
98
113
  this.goToPage.emit(nextPage);
99
114
  }
@@ -101,25 +116,20 @@ export class PaginationComponent {
101
116
  this.goToExactPage(target?.value);
102
117
  }
103
118
  goToExactPage(page) {
104
- if (!page) {
105
- return;
106
- }
107
- let allowedPageNumber = Number(page);
108
- if (allowedPageNumber < 0) {
109
- allowedPageNumber = 1;
110
- }
111
- if (allowedPageNumber > this.totalPages) {
112
- allowedPageNumber = this.totalPages;
113
- }
114
- this.page = allowedPageNumber;
115
- this.goToPage.emit(allowedPageNumber);
119
+ this.page = this._getPageClamped(page);
120
+ this.goToPage.emit(this.page);
121
+ }
122
+ preventDefaultAndBlur(event) {
123
+ // prevents PRM form submit
124
+ event.preventDefault();
125
+ event.target.blur();
116
126
  }
117
127
  }
118
128
  PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
119
- PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: PaginationComponent, selector: "impdc-pagination, div[impdc-pagination]", inputs: { page: "page", perPage: "perPage", total: "total", summary: "summary" }, outputs: { goToPage: "goToPage" }, ngImport: i0, template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left first\"></i>\n <i class=\"fas fa-chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n maxlength=\"4\"\n [value]=\"page\"\n (blur)=\"goToExactPageFromEvent($event)\" />\n <span class=\"total-pages\"> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n <i class=\"fas fa-chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions .first{margin-right:-1.2rem}.pagination-actions .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "directive", type: i2.InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }] });
129
+ PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: PaginationComponent, selector: "impdc-pagination, div[impdc-pagination]", inputs: { page: "page", perPage: "perPage", total: "total", summary: "summary" }, outputs: { goToPage: "goToPage" }, ngImport: i0, template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left first\"></i>\n <i class=\"fas fa-chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n [(ngModel)]=\"page\"\n maxlength=\"4\"\n (blur)=\"goToExactPageFromEvent($event)\"\n (keydown.enter)=\"preventDefaultAndBlur($event)\" />\n <span class=\"total-pages\"> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page >= totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n <i class=\"fas fa-chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions .first{margin-right:-1.2rem}.pagination-actions .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }] });
120
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationComponent, decorators: [{
121
131
  type: Component,
122
- args: [{ selector: 'impdc-pagination, div[impdc-pagination]', template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left first\"></i>\n <i class=\"fas fa-chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n maxlength=\"4\"\n [value]=\"page\"\n (blur)=\"goToExactPageFromEvent($event)\" />\n <span class=\"total-pages\"> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n <i class=\"fas fa-chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions .first{margin-right:-1.2rem}.pagination-actions .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"] }]
132
+ args: [{ selector: 'impdc-pagination, div[impdc-pagination]', template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left first\"></i>\n <i class=\"fas fa-chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n [(ngModel)]=\"page\"\n maxlength=\"4\"\n (blur)=\"goToExactPageFromEvent($event)\"\n (keydown.enter)=\"preventDefaultAndBlur($event)\" />\n <span class=\"total-pages\"> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page >= totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n <i class=\"fas fa-chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions .first{margin-right:-1.2rem}.pagination-actions .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"] }]
123
133
  }], propDecorators: { page: [{
124
134
  type: Input
125
135
  }], perPage: [{
@@ -131,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
131
141
  }], goToPage: [{
132
142
  type: Output
133
143
  }] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUUzQzs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQU1VLGFBQVEsR0FDZCxrRUFBa0UsQ0FBQztRQUVyRTs7V0FFRztRQUVJLFNBQUksR0FBRyxDQUFDLENBQUM7UUFFaEI7O1dBRUc7UUFFSSxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRXBCOztXQUVHO1FBRUksVUFBSyxHQUFHLENBQUMsQ0FBQztRQWtCakI7O1dBRUc7UUFDdUIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0ErRmpFO0lBbEhDOzs7T0FHRztJQUNILElBQ1csT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQzNCLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLElBQUksQ0FBQyxlQUFlLE1BQU0sQ0FBQzthQUM5RCxPQUFPLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxJQUFJLENBQUMsY0FBYyxNQUFNLENBQUM7YUFDNUQsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFPRCxJQUFXLFVBQVU7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRTtZQUN0QyxPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDN0IsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUU7WUFDdkQsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjtRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRTtZQUN4RCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ25CO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNyQjtTQUNGO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtZQUN6QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1FBRXpCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hDLE9BQU87U0FDUjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBRXJCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sRUFBYztRQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFFLE1BQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFxQjtRQUN4QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBRUQsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckMsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLEVBQUU7WUFDekIsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBRTlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEMsQ0FBQzs7aUhBdklVLG1CQUFtQjtxR0FBbkIsbUJBQW1CLG9NQ2JoQyx3b0VBeUVBOzRGRDVEYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UseUNBQXlDOzhCQVk1QyxJQUFJO3NCQURWLEtBQUs7Z0JBT0MsT0FBTztzQkFEYixLQUFLO2dCQU9DLEtBQUs7c0JBRFgsS0FBSztnQkFRSyxPQUFPO3NCQURqQixLQUFLO2dCQWVvQixRQUFRO3NCQUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNhbml0aXplIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzJztcblxuLyoqXG4gKiBUaGUgYFBhZ2luYXRpb25Db21wb25lbnRgIChgPGltcGRjLXBhZ2luYXRpb25gIG9yIGA8ZGl2IGltcGRjLXBhZ2luYXRpb25gKSBpcyBhIGNvbnRyb2wgZm9yIHBhZ2VkIGNvbnRlbnQgc3VjaCBhcyB0YWJsZXMgb3IgbGlzdHMuXG4gKiBUbyB1c2UsIGltcG9ydCBgUGFnaW5hdGlvbk1vZHVsZWAgb3IgYW5vdGhlciBtb2R1bGUgdGhhdCBpbXBvcnRzIGFuZCBleHBvcnRzIHRoYXQgbW9kdWxlIGZyb20gYEBpbXBhcnRuZXIvZGVzaWduLWNvbXBvbmVudHNgLlxuICogYE1vZGFsTW9kdWxlYCBpbXBvcnRzIGFuZCBleHBvcnRzIEltcGRjRm9ybXNNb2R1bGUgYW5kIFtCdXR0b25Nb2R1bGVdKC4vP3BhdGg9L2RvY3MvZGVzaWduLWNvbXBvbmVudHMtYnV0dG9uKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtcGFnaW5hdGlvbiwgZGl2W2ltcGRjLXBhZ2luYXRpb25dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCB7XG4gIHByaXZhdGUgX3N1bW1hcnkgPVxuICAgICdTaG93aW5nIHtmaXJzdFBhZ2VSZXN1bHR9IHRvIHtsYXN0UGFnZVJlc3VsdH0gb2Yge3RvdGFsfSByZXN1bHRzJztcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdlID0gMDtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBpdGVtcyBzaG93biBwZXIgcGFnZS4gSXRlbXMgYXJlIGNvbW1vbmx5IGRpc3BsYXllZCBhcyByb3dzIGluIGEgdGFibGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGVyUGFnZSA9IDEwO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRvdGFsID0gMDtcblxuICAvKipcbiAgICogQSBmb3JtYXR0YWJsZSB0ZXh0IHN1bW1hcnkgb2YgcGFnaW5hdGlvbiBkYXRhLiBge2ZpcnN0UGFnZVJlc3VsdH1gIFRoZSBmaXJzdCBpdGVtIHdpdGhpbiB0aGUgY3VycmVudCBwYWdlLlxuICAgKiBge2xhc3RQYWdlUmVzdWx0fWAgVGhlIGxhc3QgaXRlbSB3aXRoaW4gdGhlIGN1cnJlbnQgcGFnZS4gYHt0b3RhbH1gIFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN1bW1hcnkoc3VtbWFyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3VtbWFyeSA9IHN1bW1hcnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1bW1hcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2FuaXRpemUodGhpcy5fc3VtbWFyeSlcbiAgICAgIC5yZXBsYWNlKCd7Zmlyc3RQYWdlUmVzdWx0fScsIGA8Yj4ke3RoaXMuZmlyc3RQYWdlUmVzdWx0fTwvYj5gKVxuICAgICAgLnJlcGxhY2UoJ3tsYXN0UGFnZVJlc3VsdH0nLCBgPGI+JHt0aGlzLmxhc3RQYWdlUmVzdWx0fTwvYj5gKVxuICAgICAgLnJlcGxhY2UoJ3t0b3RhbH0nLCBgPGI+JHt0aGlzLnRvdGFsfTwvYj5gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHBhZ2UgbnVtYmVyIGlzIGNoYW5nZWQsIHNwZWNpZnlpbmcgdGhlIHRhcmdldCBwYWdlIG51bWJlci5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgZ29Ub1BhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwdWJsaWMgZ2V0IHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy50b3RhbCA8IDEgfHwgdGhpcy5wZXJQYWdlIDwgMSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG90YWwgPCB0aGlzLnBlclBhZ2UpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbCAvIHRoaXMucGVyUGFnZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpcnN0UGFnZVJlc3VsdCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnRvdGFsIDwgMSB8fCB0aGlzLnBhZ2UgPCAxIHx8IHRoaXMucGVyUGFnZSA8IDEpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhZ2UgPT09IDEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhZ2UgPiBNYXRoLmNlaWwodGhpcy50b3RhbCAvIHRoaXMucGVyUGFnZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvdGFsO1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5wYWdlIC0gMSkgKiB0aGlzLnBlclBhZ2UgKyAxO1xuICB9XG5cbiAgcHVibGljIGdldCBsYXN0UGFnZVJlc3VsdCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnRvdGFsIDw9IDAgfHwgdGhpcy5wYWdlIDwgMSB8fCB0aGlzLnBlclBhZ2UgPCAxKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYWdlID09PSAxKSB7XG4gICAgICBpZiAodGhpcy50b3RhbCA8IHRoaXMucGVyUGFnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50b3RhbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlclBhZ2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG90YWwgPCB0aGlzLnBlclBhZ2UgKiB0aGlzLnBhZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvdGFsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5wZXJQYWdlICogdGhpcy5wYWdlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnb1RvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2UgPD0gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzUGFnZSA9IHRoaXMucGFnZSAtIDE7XG4gICAgdGhpcy5wYWdlID0gcHJldmlvdXNQYWdlO1xuXG4gICAgdGhpcy5nb1RvUGFnZS5lbWl0KHByZXZpb3VzUGFnZSk7XG4gIH1cblxuICBwdWJsaWMgZ29Ub05leHRQYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2UgPj0gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dFBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xuICAgIHRoaXMucGFnZSA9IG5leHRQYWdlO1xuXG4gICAgdGhpcy5nb1RvUGFnZS5lbWl0KG5leHRQYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvRXhhY3RQYWdlRnJvbUV2ZW50KHsgdGFyZ2V0IH06IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmdvVG9FeGFjdFBhZ2UoKHRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdvVG9FeGFjdFBhZ2UocGFnZTogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFwYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGFsbG93ZWRQYWdlTnVtYmVyID0gTnVtYmVyKHBhZ2UpO1xuXG4gICAgaWYgKGFsbG93ZWRQYWdlTnVtYmVyIDwgMCkge1xuICAgICAgYWxsb3dlZFBhZ2VOdW1iZXIgPSAxO1xuICAgIH1cblxuICAgIGlmIChhbGxvd2VkUGFnZU51bWJlciA+IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgYWxsb3dlZFBhZ2VOdW1iZXIgPSB0aGlzLnRvdGFsUGFnZXM7XG4gICAgfVxuXG4gICAgdGhpcy5wYWdlID0gYWxsb3dlZFBhZ2VOdW1iZXI7XG5cbiAgICB0aGlzLmdvVG9QYWdlLmVtaXQoYWxsb3dlZFBhZ2VOdW1iZXIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cIm1vYmlsZS1wYWdpbmF0aW9uXCI+XG4gICAgPGJ1dHRvblxuICAgICAgaW1wZGNCdXR0b25cbiAgICAgIHRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJwYWdlIDw9IDFcIlxuICAgICAgKGNsaWNrKT1cImdvVG9QcmV2aW91c1BhZ2UoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGltcGRjQnV0dG9uXG4gICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwicGFnZSA9PT0gdG90YWxQYWdlc1wiXG4gICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkZXNrdG9wLXBhZ2luYXRpb25cIj5cbiAgICA8ZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdW1tYXJ5XCIgW2lubmVySFRNTF09XCJzdW1tYXJ5XCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWFjdGlvbnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgaW1wZGNCdXR0b25cbiAgICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiRmlyc3QgUGFnZVwiXG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1maXJzdC1sYXN0LWJ0bnNcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub0V4YWN0UGFnZSgxKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJwYWdlIDw9IDFcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1sZWZ0IGZpcnN0XCI+PC9pPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgIDwhLS0gMSAtLT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBpbXBkY0J1dHRvblxuICAgICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgIGNsYXNzPVwicHJldmlvdXNcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiUHJldmlvdXNcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2UgPD0gMVwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWNoYW5nZVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpbXBkY0lucHV0XG4gICAgICAgICAgbWF4bGVuZ3RoPVwiNFwiXG4gICAgICAgICAgW3ZhbHVlXT1cInBhZ2VcIlxuICAgICAgICAgIChibHVyKT1cImdvVG9FeGFjdFBhZ2VGcm9tRXZlbnQoJGV2ZW50KVwiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidG90YWwtcGFnZXNcIj4gLyB7eyB0b3RhbFBhZ2VzIH19IDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBpbXBkY0J1dHRvblxuICAgICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJOZXh0XCJcbiAgICAgICAgKGNsaWNrKT1cImdvVG9OZXh0UGFnZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2UgPT09IHRvdGFsUGFnZXNcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBpbXBkY0J1dHRvblxuICAgICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1maXJzdC1sYXN0LWJ0bnNcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTGFzdCBQYWdlXCJcbiAgICAgICAgKGNsaWNrKT1cImdvVG9FeGFjdFBhZ2UodG90YWxQYWdlcylcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA9PT0gdG90YWxQYWdlc1wiPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0IGxhc3RcIj48L2k+XG4gICAgICAgIDwhLS0ge3sgdG90YWxQYWdlcyB9fSAtLT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFFM0M7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUFMaEM7UUFNVSxhQUFRLEdBQ2Qsa0VBQWtFLENBQUM7UUFFckU7O1dBRUc7UUFFSSxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRWhCOztXQUVHO1FBRUksWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUVwQjs7V0FFRztRQUVJLFVBQUssR0FBRyxDQUFDLENBQUM7UUFrQmpCOztXQUVHO1FBQ3VCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBd0dqRTtJQTNIQzs7O09BR0c7SUFDSCxJQUNXLE9BQU8sQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUMzQixPQUFPLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxJQUFJLENBQUMsZUFBZSxNQUFNLENBQUM7YUFDOUQsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sSUFBSSxDQUFDLGNBQWMsTUFBTSxDQUFDO2FBQzVELE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBT0QsSUFBVyxVQUFVO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO1lBQ2xELE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDZCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMvQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7UUFFRCxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRTtZQUNuRCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNuQjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDckI7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQXNCO1FBQzVDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUMzQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDeEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRTtZQUNiLE9BQU87U0FDUjtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7UUFFekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLFlBQVk7UUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsT0FBTztTQUNSO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUVyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sc0JBQXNCLENBQUMsRUFBRSxNQUFNLEVBQWM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBRSxNQUEyQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxhQUFhLENBQUMsSUFBcUI7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0scUJBQXFCLENBQUMsS0FBWTtRQUN2QywyQkFBMkI7UUFDM0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxNQUEyQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVDLENBQUM7O2lIQWhKVSxtQkFBbUI7cUdBQW5CLG1CQUFtQixvTUNiaEMsd3NFQTBFQTs0RkQ3RGEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLHlDQUF5Qzs4QkFZNUMsSUFBSTtzQkFEVixLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSztnQkFPQyxLQUFLO3NCQURYLEtBQUs7Z0JBUUssT0FBTztzQkFEakIsS0FBSztnQkFlb0IsUUFBUTtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzYW5pdGl6ZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcyc7XG5cbi8qKlxuICogVGhlIGBQYWdpbmF0aW9uQ29tcG9uZW50YCAoYDxpbXBkYy1wYWdpbmF0aW9uYCBvciBgPGRpdiBpbXBkYy1wYWdpbmF0aW9uYCkgaXMgYSBjb250cm9sIGZvciBwYWdlZCBjb250ZW50IHN1Y2ggYXMgdGFibGVzIG9yIGxpc3RzLlxuICogVG8gdXNlLCBpbXBvcnQgYFBhZ2luYXRpb25Nb2R1bGVgIG9yIGFub3RoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGF0IG1vZHVsZSBmcm9tIGBAaW1wYXJ0bmVyL2Rlc2lnbi1jb21wb25lbnRzYC5cbiAqIGBNb2RhbE1vZHVsZWAgaW1wb3J0cyBhbmQgZXhwb3J0cyBJbXBkY0Zvcm1zTW9kdWxlIGFuZCBbQnV0dG9uTW9kdWxlXSguLz9wYXRoPS9kb2NzL2Rlc2lnbi1jb21wb25lbnRzLWJ1dHRvbikuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLXBhZ2luYXRpb24sIGRpdltpbXBkYy1wYWdpbmF0aW9uXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Db21wb25lbnQge1xuICBwcml2YXRlIF9zdW1tYXJ5ID1cbiAgICAnU2hvd2luZyB7Zmlyc3RQYWdlUmVzdWx0fSB0byB7bGFzdFBhZ2VSZXN1bHR9IG9mIHt0b3RhbH0gcmVzdWx0cyc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHBhZ2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGFnZSA9IDA7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgaXRlbXMgc2hvd24gcGVyIHBhZ2UuIEl0ZW1zIGFyZSBjb21tb25seSBkaXNwbGF5ZWQgYXMgcm93cyBpbiBhIHRhYmxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBlclBhZ2UgPSAxMDtcblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0b3RhbCA9IDA7XG5cbiAgLyoqXG4gICAqIEEgZm9ybWF0dGFibGUgdGV4dCBzdW1tYXJ5IG9mIHBhZ2luYXRpb24gZGF0YS4gYHtmaXJzdFBhZ2VSZXN1bHR9YCBUaGUgZmlyc3QgaXRlbSB3aXRoaW4gdGhlIGN1cnJlbnQgcGFnZS5cbiAgICogYHtsYXN0UGFnZVJlc3VsdH1gIFRoZSBsYXN0IGl0ZW0gd2l0aGluIHRoZSBjdXJyZW50IHBhZ2UuIGB7dG90YWx9YCBUaGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdW1tYXJ5KHN1bW1hcnk6IHN0cmluZykge1xuICAgIHRoaXMuX3N1bW1hcnkgPSBzdW1tYXJ5O1xuICB9XG5cbiAgcHVibGljIGdldCBzdW1tYXJ5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNhbml0aXplKHRoaXMuX3N1bW1hcnkpXG4gICAgICAucmVwbGFjZSgne2ZpcnN0UGFnZVJlc3VsdH0nLCBgPGI+JHt0aGlzLmZpcnN0UGFnZVJlc3VsdH08L2I+YClcbiAgICAgIC5yZXBsYWNlKCd7bGFzdFBhZ2VSZXN1bHR9JywgYDxiPiR7dGhpcy5sYXN0UGFnZVJlc3VsdH08L2I+YClcbiAgICAgIC5yZXBsYWNlKCd7dG90YWx9JywgYDxiPiR7dGhpcy50b3RhbH08L2I+YCk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwYWdlIG51bWJlciBpcyBjaGFuZ2VkLCBzcGVjaWZ5aW5nIHRoZSB0YXJnZXQgcGFnZSBudW1iZXIuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGdvVG9QYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHVibGljIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMudG90YWwgPCAxIHx8IHRoaXMucGVyUGFnZSA8IDEpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRvdGFsIDwgdGhpcy5wZXJQYWdlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBlclBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGdldCBmaXJzdFBhZ2VSZXN1bHQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBwYWdlID0gdGhpcy5fZ2V0UGFnZUNsYW1wZWQoKTtcbiAgICBpZiAodGhpcy50b3RhbCA8IDEgfHwgcGFnZSA8IDEgfHwgdGhpcy5wZXJQYWdlIDwgMSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKHBhZ2UgPT09IDEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmIChwYWdlID4gTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBlclBhZ2UpKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3RhbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKHBhZ2UgLSAxKSAqIHRoaXMucGVyUGFnZSArIDE7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhc3RQYWdlUmVzdWx0KCk6IG51bWJlciB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuX2dldFBhZ2VDbGFtcGVkKCk7XG4gICAgaWYgKHRoaXMudG90YWwgPD0gMCB8fCBwYWdlIDwgMSB8fCB0aGlzLnBlclBhZ2UgPCAxKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAocGFnZSA9PT0gMSkge1xuICAgICAgaWYgKHRoaXMudG90YWwgPCB0aGlzLnBlclBhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXJQYWdlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRvdGFsIDwgdGhpcy5wZXJQYWdlICogcGFnZSkge1xuICAgICAgcmV0dXJuIHRoaXMudG90YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnBlclBhZ2UgKiBwYWdlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhZ2VDbGFtcGVkKHBhZ2U/OiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgIHBhZ2UgPSBOdW1iZXIocGFnZSB8fCB0aGlzLnBhZ2UgfHwgMCk7XG4gICAgaWYgKGlzTmFOKHBhZ2UpIHx8IHBhZ2UgPCAxKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBpZiAocGFnZSA+IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgcmV0dXJuIHRoaXMudG90YWxQYWdlcztcbiAgICB9XG5cbiAgICByZXR1cm4gcGFnZTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLl9nZXRQYWdlQ2xhbXBlZCgpO1xuICAgIGlmIChwYWdlIDw9IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSBwYWdlIC0gMTtcbiAgICB0aGlzLnBhZ2UgPSBwcmV2aW91c1BhZ2U7XG5cbiAgICB0aGlzLmdvVG9QYWdlLmVtaXQocHJldmlvdXNQYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvTmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuX2dldFBhZ2VDbGFtcGVkKCk7XG4gICAgaWYgKHBhZ2UgPj0gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dFBhZ2UgPSBwYWdlICsgMTtcbiAgICB0aGlzLnBhZ2UgPSBuZXh0UGFnZTtcblxuICAgIHRoaXMuZ29Ub1BhZ2UuZW1pdChuZXh0UGFnZSk7XG4gIH1cblxuICBwdWJsaWMgZ29Ub0V4YWN0UGFnZUZyb21FdmVudCh7IHRhcmdldCB9OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5nb1RvRXhhY3RQYWdlKCh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvRXhhY3RQYWdlKHBhZ2U6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucGFnZSA9IHRoaXMuX2dldFBhZ2VDbGFtcGVkKHBhZ2UpO1xuXG4gICAgdGhpcy5nb1RvUGFnZS5lbWl0KHRoaXMucGFnZSk7XG4gIH1cblxuICBwdWJsaWMgcHJldmVudERlZmF1bHRBbmRCbHVyKGV2ZW50OiBFdmVudCkge1xuICAgIC8vIHByZXZlbnRzIFBSTSBmb3JtIHN1Ym1pdFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5ibHVyKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwibW9iaWxlLXBhZ2luYXRpb25cIj5cbiAgICA8YnV0dG9uXG4gICAgICBpbXBkY0J1dHRvblxuICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cInBhZ2UgPD0gMVwiXG4gICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgaW1wZGNCdXR0b25cbiAgICAgIHRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJwYWdlID09PSB0b3RhbFBhZ2VzXCJcbiAgICAgIChjbGljayk9XCJnb1RvTmV4dFBhZ2UoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImRlc2t0b3AtcGFnaW5hdGlvblwiPlxuICAgIDxkaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnlcIiBbaW5uZXJIVE1MXT1cInN1bW1hcnlcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBpbXBkY0J1dHRvblxuICAgICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJGaXJzdCBQYWdlXCJcbiAgICAgICAgY2xhc3M9XCJwYWdpbmF0aW9uLWZpcnN0LWxhc3QtYnRuc1wiXG4gICAgICAgIChjbGljayk9XCJnb1RvRXhhY3RQYWdlKDEpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2UgPD0gMVwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWxlZnQgZmlyc3RcIj48L2k+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgPCEtLSAxIC0tPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGltcGRjQnV0dG9uXG4gICAgICAgIHRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgY2xhc3M9XCJwcmV2aW91c1wiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJQcmV2aW91c1wiXG4gICAgICAgIChjbGljayk9XCJnb1RvUHJldmlvdXNQYWdlKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA8PSAxXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtY2hhbmdlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGltcGRjSW5wdXRcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhZ2VcIlxuICAgICAgICAgIG1heGxlbmd0aD1cIjRcIlxuICAgICAgICAgIChibHVyKT1cImdvVG9FeGFjdFBhZ2VGcm9tRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicHJldmVudERlZmF1bHRBbmRCbHVyKCRldmVudClcIiAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRvdGFsLXBhZ2VzXCI+IC8ge3sgdG90YWxQYWdlcyB9fSA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgaW1wZGNCdXR0b25cbiAgICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTmV4dFwiXG4gICAgICAgIChjbGljayk9XCJnb1RvTmV4dFBhZ2UoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJwYWdlID49IHRvdGFsUGFnZXNcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBpbXBkY0J1dHRvblxuICAgICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1maXJzdC1sYXN0LWJ0bnNcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTGFzdCBQYWdlXCJcbiAgICAgICAgKGNsaWNrKT1cImdvVG9FeGFjdFBhZ2UodG90YWxQYWdlcylcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA9PT0gdG90YWxQYWdlc1wiPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0IGxhc3RcIj48L2k+XG4gICAgICAgIDwhLS0ge3sgdG90YWxQYWdlcyB9fSAtLT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,5 +1,6 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
3
4
  import { ButtonModule } from '../button';
4
5
  import { ImpdcFormsModule } from '../form-field';
5
6
  import { PaginationComponent } from './pagination.component';
@@ -8,14 +9,14 @@ export class PaginationModule {
8
9
  constructor() { }
9
10
  }
10
11
  PaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- PaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, declarations: [PaginationComponent], imports: [CommonModule, ButtonModule, ImpdcFormsModule], exports: [ButtonModule, ImpdcFormsModule, PaginationComponent] });
12
- PaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, imports: [CommonModule, ButtonModule, ImpdcFormsModule, ButtonModule, ImpdcFormsModule] });
12
+ PaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, declarations: [PaginationComponent], imports: [CommonModule, ButtonModule, FormsModule, ImpdcFormsModule], exports: [ButtonModule, ImpdcFormsModule, PaginationComponent] });
13
+ PaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, imports: [CommonModule, ButtonModule, FormsModule, ImpdcFormsModule, ButtonModule, ImpdcFormsModule] });
13
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, decorators: [{
14
15
  type: NgModule,
15
16
  args: [{
16
- imports: [CommonModule, ButtonModule, ImpdcFormsModule],
17
+ imports: [CommonModule, ButtonModule, FormsModule, ImpdcFormsModule],
17
18
  declarations: [PaginationComponent],
18
19
  exports: [ButtonModule, ImpdcFormsModule, PaginationComponent]
19
20
  }]
20
21
  }], ctorParameters: function () { return []; } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBTzdELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsZ0JBQWUsQ0FBQzs7OEdBREwsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBSFosbUJBQW1CLGFBRHhCLFlBQVksRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLGFBRTVDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUI7K0dBRWxELGdCQUFnQixZQUpqQixZQUFZLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUU1QyxZQUFZLEVBQUUsZ0JBQWdCOzRGQUU3QixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQztvQkFDdkQsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQztpQkFDL0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbic7XG5pbXBvcnQgeyBJbXBkY0Zvcm1zTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1dHRvbk1vZHVsZSwgSW1wZGNGb3Jtc01vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1BhZ2luYXRpb25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbQnV0dG9uTW9kdWxlLCBJbXBkY0Zvcm1zTW9kdWxlLCBQYWdpbmF0aW9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uTW9kdWxlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU83RCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLGdCQUFlLENBQUM7OzhHQURMLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQUhaLG1CQUFtQixhQUR4QixZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsYUFFekQsWUFBWSxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQjsrR0FFbEQsZ0JBQWdCLFlBSmpCLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUV6RCxZQUFZLEVBQUUsZ0JBQWdCOzRGQUU3QixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3BFLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUM7aUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbic7XG5pbXBvcnQgeyBJbXBkY0Zvcm1zTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1dHRvbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEltcGRjRm9ybXNNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtQYWdpbmF0aW9uQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0J1dHRvbk1vZHVsZSwgSW1wZGNGb3Jtc01vZHVsZSwgUGFnaW5hdGlvbkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbk1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==