primeng 17.8.0 → 17.10.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 (164) hide show
  1. package/api/primeicons.d.ts +5 -5
  2. package/api/translation.d.ts +1 -0
  3. package/api/translationkeys.d.ts +1 -0
  4. package/buttongroup/buttongroup.d.ts +11 -0
  5. package/buttongroup/index.d.ts +5 -0
  6. package/buttongroup/public_api.d.ts +1 -0
  7. package/colorpicker/colorpicker.d.ts +1 -0
  8. package/esm2022/api/primeicons.mjs +6 -6
  9. package/esm2022/api/primengconfig.mjs +3 -2
  10. package/esm2022/api/translation.mjs +1 -1
  11. package/esm2022/api/translationkeys.mjs +2 -1
  12. package/esm2022/autocomplete/autocomplete.mjs +11 -11
  13. package/esm2022/buttongroup/buttongroup.mjs +38 -0
  14. package/esm2022/buttongroup/primeng-buttongroup.mjs +5 -0
  15. package/esm2022/buttongroup/public_api.mjs +2 -0
  16. package/esm2022/calendar/calendar.mjs +9 -9
  17. package/esm2022/cascadeselect/cascadeselect.mjs +7 -7
  18. package/esm2022/colorpicker/colorpicker.mjs +7 -1
  19. package/esm2022/dialog/dialog.mjs +4 -2
  20. package/esm2022/dropdown/dropdown.mjs +15 -13
  21. package/esm2022/floatlabel/floatlabel.mjs +44 -0
  22. package/esm2022/floatlabel/primeng-floatlabel.mjs +5 -0
  23. package/esm2022/floatlabel/public_api.mjs +2 -0
  24. package/esm2022/iconfield/iconfield.mjs +44 -0
  25. package/esm2022/iconfield/primeng-iconfield.mjs +5 -0
  26. package/esm2022/iconfield/public_api.mjs +2 -0
  27. package/esm2022/inputicon/inputicon.mjs +38 -0
  28. package/esm2022/inputicon/primeng-inputicon.mjs +5 -0
  29. package/esm2022/inputicon/public_api.mjs +2 -0
  30. package/esm2022/inputnumber/inputnumber.interface.mjs +1 -1
  31. package/esm2022/inputnumber/inputnumber.mjs +27 -12
  32. package/esm2022/metergroup/metergroup.interface.mjs +2 -0
  33. package/esm2022/metergroup/metergroup.mjs +277 -0
  34. package/esm2022/metergroup/primeng-metergroup.mjs +5 -0
  35. package/esm2022/metergroup/public_api.mjs +3 -0
  36. package/esm2022/multiselect/multiselect.mjs +7 -7
  37. package/esm2022/password/password.mjs +3 -3
  38. package/esm2022/selectbutton/selectbutton.mjs +2 -2
  39. package/esm2022/table/table.mjs +27 -15
  40. package/esm2022/tabmenu/tabmenu.mjs +11 -3
  41. package/esm2022/togglebutton/togglebutton.mjs +2 -2
  42. package/esm2022/tree/tree.mjs +14 -7
  43. package/esm2022/treeselect/treeselect.mjs +9 -9
  44. package/esm2022/treetable/treetable.mjs +2 -2
  45. package/esm2022/utils/objectutils.mjs +2 -2
  46. package/fesm2022/primeng-api.mjs +8 -6
  47. package/fesm2022/primeng-api.mjs.map +1 -1
  48. package/fesm2022/primeng-autocomplete.mjs +10 -10
  49. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  50. package/fesm2022/primeng-buttongroup.mjs +45 -0
  51. package/fesm2022/primeng-buttongroup.mjs.map +1 -0
  52. package/fesm2022/primeng-calendar.mjs +8 -8
  53. package/fesm2022/primeng-calendar.mjs.map +1 -1
  54. package/fesm2022/primeng-cascadeselect.mjs +6 -6
  55. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  56. package/fesm2022/primeng-colorpicker.mjs +7 -1
  57. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  58. package/fesm2022/primeng-dialog.mjs +3 -1
  59. package/fesm2022/primeng-dialog.mjs.map +1 -1
  60. package/fesm2022/primeng-dropdown.mjs +14 -12
  61. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  62. package/fesm2022/primeng-floatlabel.mjs +51 -0
  63. package/fesm2022/primeng-floatlabel.mjs.map +1 -0
  64. package/fesm2022/primeng-iconfield.mjs +51 -0
  65. package/fesm2022/primeng-iconfield.mjs.map +1 -0
  66. package/fesm2022/primeng-inputicon.mjs +45 -0
  67. package/fesm2022/primeng-inputicon.mjs.map +1 -0
  68. package/fesm2022/primeng-inputnumber.mjs +26 -11
  69. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  70. package/fesm2022/primeng-metergroup.mjs +284 -0
  71. package/fesm2022/primeng-metergroup.mjs.map +1 -0
  72. package/fesm2022/primeng-multiselect.mjs +6 -6
  73. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  74. package/fesm2022/primeng-password.mjs +2 -2
  75. package/fesm2022/primeng-password.mjs.map +1 -1
  76. package/fesm2022/primeng-selectbutton.mjs +2 -2
  77. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  78. package/fesm2022/primeng-table.mjs +26 -14
  79. package/fesm2022/primeng-table.mjs.map +1 -1
  80. package/fesm2022/primeng-tabmenu.mjs +10 -2
  81. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  82. package/fesm2022/primeng-togglebutton.mjs +2 -2
  83. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  84. package/fesm2022/primeng-tree.mjs +13 -6
  85. package/fesm2022/primeng-tree.mjs.map +1 -1
  86. package/fesm2022/primeng-treeselect.mjs +8 -8
  87. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  88. package/fesm2022/primeng-treetable.mjs +1 -1
  89. package/fesm2022/primeng-treetable.mjs.map +1 -1
  90. package/fesm2022/primeng-utils.mjs +1 -1
  91. package/fesm2022/primeng-utils.mjs.map +1 -1
  92. package/floatlabel/floatlabel.d.ts +17 -0
  93. package/floatlabel/index.d.ts +5 -0
  94. package/floatlabel/public_api.d.ts +1 -0
  95. package/iconfield/iconfield.d.ts +25 -0
  96. package/iconfield/index.d.ts +5 -0
  97. package/iconfield/public_api.d.ts +1 -0
  98. package/inputicon/index.d.ts +5 -0
  99. package/inputicon/inputicon.d.ts +21 -0
  100. package/inputicon/public_api.d.ts +1 -0
  101. package/inputnumber/inputnumber.d.ts +3 -2
  102. package/inputnumber/inputnumber.interface.d.ts +1 -1
  103. package/metergroup/index.d.ts +5 -0
  104. package/metergroup/metergroup.d.ts +101 -0
  105. package/metergroup/metergroup.interface.d.ts +106 -0
  106. package/metergroup/public_api.d.ts +2 -0
  107. package/package.json +103 -73
  108. package/resources/components/button/button.css +32 -9
  109. package/resources/components/iconfield/iconfield.css +5 -0
  110. package/resources/components/inputicon/inputicon.css +6 -0
  111. package/resources/primeng.css +32 -9
  112. package/resources/primeng.min.css +1 -1
  113. package/resources/themes/arya-blue/theme.css +129 -0
  114. package/resources/themes/arya-green/theme.css +129 -0
  115. package/resources/themes/arya-orange/theme.css +129 -0
  116. package/resources/themes/arya-purple/theme.css +129 -0
  117. package/resources/themes/bootstrap4-dark-blue/theme.css +129 -0
  118. package/resources/themes/bootstrap4-dark-purple/theme.css +129 -0
  119. package/resources/themes/bootstrap4-light-blue/theme.css +129 -0
  120. package/resources/themes/bootstrap4-light-purple/theme.css +129 -0
  121. package/resources/themes/fluent-light/theme.css +129 -0
  122. package/resources/themes/lara-dark-blue/theme.css +129 -0
  123. package/resources/themes/lara-dark-indigo/theme.css +129 -0
  124. package/resources/themes/lara-dark-purple/theme.css +129 -0
  125. package/resources/themes/lara-dark-teal/theme.css +129 -0
  126. package/resources/themes/lara-light-blue/theme.css +129 -0
  127. package/resources/themes/lara-light-indigo/theme.css +129 -0
  128. package/resources/themes/lara-light-purple/theme.css +129 -0
  129. package/resources/themes/lara-light-teal/theme.css +129 -0
  130. package/resources/themes/luna-amber/theme.css +129 -0
  131. package/resources/themes/luna-blue/theme.css +129 -0
  132. package/resources/themes/luna-green/theme.css +129 -0
  133. package/resources/themes/luna-pink/theme.css +129 -0
  134. package/resources/themes/md-dark-deeppurple/theme.css +129 -0
  135. package/resources/themes/md-dark-indigo/theme.css +129 -0
  136. package/resources/themes/md-light-deeppurple/theme.css +129 -0
  137. package/resources/themes/md-light-indigo/theme.css +129 -0
  138. package/resources/themes/mdc-dark-deeppurple/theme.css +129 -0
  139. package/resources/themes/mdc-dark-indigo/theme.css +129 -0
  140. package/resources/themes/mdc-light-deeppurple/theme.css +129 -0
  141. package/resources/themes/mdc-light-indigo/theme.css +129 -0
  142. package/resources/themes/mira/theme.css +129 -0
  143. package/resources/themes/nano/theme.css +129 -0
  144. package/resources/themes/nova/theme.css +129 -0
  145. package/resources/themes/nova-accent/theme.css +129 -0
  146. package/resources/themes/nova-alt/theme.css +129 -0
  147. package/resources/themes/rhea/theme.css +129 -0
  148. package/resources/themes/saga-blue/theme.css +129 -0
  149. package/resources/themes/saga-green/theme.css +129 -0
  150. package/resources/themes/saga-orange/theme.css +129 -0
  151. package/resources/themes/saga-purple/theme.css +129 -0
  152. package/resources/themes/soho-dark/theme.css +129 -0
  153. package/resources/themes/soho-light/theme.css +129 -0
  154. package/resources/themes/tailwind-light/theme.css +129 -0
  155. package/resources/themes/vela-blue/theme.css +129 -0
  156. package/resources/themes/vela-green/theme.css +129 -0
  157. package/resources/themes/vela-orange/theme.css +129 -0
  158. package/resources/themes/vela-purple/theme.css +129 -0
  159. package/resources/themes/viva-dark/theme.css +129 -0
  160. package/resources/themes/viva-light/theme.css +129 -0
  161. package/table/table.d.ts +3 -1
  162. package/tabmenu/tabmenu.d.ts +3 -1
  163. package/treeselect/treeselect.d.ts +2 -2
  164. package/treetable/treetable.d.ts +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0ZXJncm91cC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbWV0ZXJncm91cC9tZXRlcmdyb3VwLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEZWZpbmVzIHZhbGlkIHRlbXBsYXRlcyBpbiBNZXRlckdyb3VwLlxuICogQGdyb3VwIFRlbXBsYXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGVyR3JvdXBUZW1wbGF0ZXMge1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBsYWJlbCB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBsYWJlbChjb250ZXh0OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAqL1xuICAgICAgICAkaW1wbGljaXQ/OiBNZXRlckl0ZW07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBwZXJjZW50IG9mIHRoZSBtZXRlcmdyb3VwIGl0ZW1zLlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWxQZXJjZW50PzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXJyYXkgb2Ygc2VxdWVudGlhbCBzdW0gb2YgdmFsdWVzIG9mIG1ldGVyZ3JvdXAgaXRlbXMuXG4gICAgICAgICAqL1xuICAgICAgICBwZXJjZW50YWdlcz86IG51bWJlcjtcbiAgICB9KTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBDdXN0b20gbWV0ZXIgaXRlbSB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBtZXRlcihjb250ZXh0OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAqL1xuICAgICAgICAkaW1wbGljaXQ/OiBNZXRlckl0ZW07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IGluZGV4IG9mIHRoZSBtZXRlciBpdGVtLlxuICAgICAgICAgKi9cbiAgICAgICAgaW5kZXg/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgbWV0ZXIgaXRlbVxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3M/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IG9yaWVudGF0aW9uIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAqL1xuICAgICAgICBvcmllbnRhdGlvbj86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEN1cnJlbnQgd2lkdGggb2YgdGhlIG1ldGVyIGl0ZW0uXG4gICAgICAgICAqL1xuICAgICAgICBzaXplPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgcGVyY2VudCBvZiB0aGUgbWV0ZXJncm91cCBpdGVtc1xuICAgICAgICAgKi9cbiAgICAgICAgdG90YWxQZXJjZW50PzogbnVtYmVyO1xuICAgIH0pOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBzdGFydCB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBzdGFydChjb250ZXh0OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAqL1xuICAgICAgICAkaW1wbGljaXQ/OiBNZXRlckl0ZW07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBwZXJjZW50IG9mIHRoZSBtZXRlcmdyb3VwIGl0ZW1zLlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWxQZXJjZW50PzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXJyYXkgb2Ygc2VxdWVudGlhbCBzdW0gb2YgdmFsdWVzIG9mIG1ldGVyZ3JvdXAgaXRlbXMuXG4gICAgICAgICAqL1xuICAgICAgICBwZXJjZW50YWdlcz86IG51bWJlcjtcbiAgICB9KTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBDdXN0b20gc3RhcnQgdGVtcGxhdGUuXG4gICAgICovXG4gICAgZW5kKGNvbnRleHQ6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEN1cnJlbnQgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgICAgICovXG4gICAgICAgICRpbXBsaWNpdD86IE1ldGVySXRlbTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIHBlcmNlbnQgb2YgdGhlIG1ldGVyZ3JvdXAgaXRlbXMuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbFBlcmNlbnQ/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBcnJheSBvZiBzZXF1ZW50aWFsIHN1bSBvZiB2YWx1ZXMgb2YgbWV0ZXJncm91cCBpdGVtcy5cbiAgICAgICAgICovXG4gICAgICAgIHBlcmNlbnRhZ2VzPzogbnVtYmVyO1xuICAgIH0pOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBpY29uIHRlbXBsYXRlLlxuICAgICAqL1xuICAgIGljb24oY29udGV4dDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3VycmVudCB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgJGltcGxpY2l0PzogTWV0ZXJJdGVtO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGljb24uXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzcz86IHN0cmluZztcbiAgICB9KTogVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXRlckl0ZW0ge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIHZhbHVlPzogbnVtYmVyO1xuICAgIGNvbG9yPzogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,277 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, Input, NgModule, ViewEncapsulation, effect, forwardRef, inject, viewChild } from '@angular/core';
3
+ import { PrimeTemplate, SharedModule } from 'primeng/api';
4
+ import { DomHandler } from 'primeng/dom';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ export class MeterGroupLabel {
8
+ value = null;
9
+ labelPosition = 'end';
10
+ labelOrientation = 'horizontal';
11
+ min;
12
+ max;
13
+ iconTemplate;
14
+ templates;
15
+ get labelClass() {
16
+ return {
17
+ 'p-metergroup-labels p-component': true,
18
+ 'p-metergroup-labels-vertical': this.labelOrientation === 'vertical',
19
+ 'p-metergroup-labels-horizontal': this.labelOrientation === 'horizontal'
20
+ };
21
+ }
22
+ parentInstance = inject(forwardRef(() => MeterGroup));
23
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupLabel, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: MeterGroupLabel, selector: "p-meterGroupLabel", inputs: { value: "value", labelPosition: "labelPosition", labelOrientation: "labelOrientation", min: "min", max: "max", iconTemplate: "iconTemplate" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
25
+ <ol [ngClass]="labelClass">
26
+ <li *ngFor="let labelItem of value; let index = index; trackBy: parentInstance.trackByFn" class="p-metergroup-label">
27
+ <ng-container *ngIf="!iconTemplate">
28
+ <i *ngIf="labelItem.icon" [class]="labelItem.icon" [ngClass]="{ 'p-metergroup-label-icon': true }" [ngStyle]="{ color: labelItem.color }"></i>
29
+ <span *ngIf="!labelItem.icon" class="p-metergroup-label-marker" [ngStyle]="{ backgroundColor: labelItem.color }"></span>
30
+ </ng-container>
31
+ <ng-container *ngTemplateOutlet="iconTemplate; context: { $implicit: labelItem, icon: labelItem.icon }"></ng-container>
32
+ <span class="p-metergroup-label-text">{{ labelItem.label }} ({{ parentInstance?.percentValue(labelItem.value) }})</span>
33
+ </li>
34
+ </ol>
35
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupLabel, decorators: [{
38
+ type: Component,
39
+ args: [{
40
+ selector: 'p-meterGroupLabel',
41
+ template: `
42
+ <ol [ngClass]="labelClass">
43
+ <li *ngFor="let labelItem of value; let index = index; trackBy: parentInstance.trackByFn" class="p-metergroup-label">
44
+ <ng-container *ngIf="!iconTemplate">
45
+ <i *ngIf="labelItem.icon" [class]="labelItem.icon" [ngClass]="{ 'p-metergroup-label-icon': true }" [ngStyle]="{ color: labelItem.color }"></i>
46
+ <span *ngIf="!labelItem.icon" class="p-metergroup-label-marker" [ngStyle]="{ backgroundColor: labelItem.color }"></span>
47
+ </ng-container>
48
+ <ng-container *ngTemplateOutlet="iconTemplate; context: { $implicit: labelItem, icon: labelItem.icon }"></ng-container>
49
+ <span class="p-metergroup-label-text">{{ labelItem.label }} ({{ parentInstance?.percentValue(labelItem.value) }})</span>
50
+ </li>
51
+ </ol>
52
+ `
53
+ }]
54
+ }], propDecorators: { value: [{
55
+ type: Input
56
+ }], labelPosition: [{
57
+ type: Input
58
+ }], labelOrientation: [{
59
+ type: Input
60
+ }], min: [{
61
+ type: Input
62
+ }], max: [{
63
+ type: Input
64
+ }], iconTemplate: [{
65
+ type: Input
66
+ }], templates: [{
67
+ type: ContentChildren,
68
+ args: [PrimeTemplate]
69
+ }] } });
70
+ /**
71
+ * MeterGroup displays scalar measurements within a known range.
72
+ * @group Components
73
+ */
74
+ export class MeterGroup {
75
+ /**
76
+ * Current value of the metergroup.
77
+ * @group Props
78
+ */
79
+ value;
80
+ /**
81
+ * Mininum boundary value.
82
+ * @group Props
83
+ */
84
+ min = 0;
85
+ /**
86
+ * Maximum boundary value.
87
+ * @group Props
88
+ */
89
+ max = 100;
90
+ /**
91
+ * Specifies the layout of the component, valid values are 'horizontal' and 'vertical'.
92
+ * @group Props
93
+ */
94
+ orientation = 'horizontal';
95
+ /**
96
+ * Specifies the label position of the component, valid values are 'start' and 'end'.
97
+ * @group Props
98
+ */
99
+ labelPosition = 'end';
100
+ /**
101
+ * Specifies the label orientation of the component, valid values are 'horizontal' and 'vertical'.
102
+ * @group Props
103
+ */
104
+ labelOrientation = 'horizontal';
105
+ /**
106
+ * Inline style of the element.
107
+ * @group Props
108
+ */
109
+ style;
110
+ /**
111
+ * Style class of the element.
112
+ * @group Props
113
+ */
114
+ styleClass;
115
+ templates;
116
+ get vertical() {
117
+ return this.orientation === 'vertical';
118
+ }
119
+ get containerClass() {
120
+ return {
121
+ 'p-metergroup p-component': true,
122
+ 'p-metergroup-horizontal': this.orientation === 'horizontal',
123
+ 'p-metergroup-vertical': this.orientation === 'vertical'
124
+ };
125
+ }
126
+ labelTemplate;
127
+ meterTemplate;
128
+ endTemplate;
129
+ startTemplate;
130
+ iconTemplate;
131
+ container = viewChild('container', { read: ElementRef });
132
+ containerEffect = effect(() => {
133
+ const _container = this.container();
134
+ const height = DomHandler.getOuterHeight(_container.nativeElement);
135
+ this.vertical && (this.container().nativeElement.style.height = height + 'px');
136
+ });
137
+ ngAfterContentInit() {
138
+ this.templates?.forEach((item) => {
139
+ switch (item.getType()) {
140
+ case 'label':
141
+ this.labelTemplate = item.template;
142
+ break;
143
+ case 'meter':
144
+ this.meterTemplate = item.template;
145
+ break;
146
+ case 'icon':
147
+ this.iconTemplate = item.template;
148
+ break;
149
+ case 'start':
150
+ this.startTemplate = item.template;
151
+ break;
152
+ case 'end':
153
+ this.endTemplate = item.template;
154
+ break;
155
+ default:
156
+ break;
157
+ }
158
+ });
159
+ }
160
+ percent(meter = 0) {
161
+ const percentOfItem = ((meter - this.min) / (this.max - this.min)) * 100;
162
+ return Math.round(Math.max(0, Math.min(100, percentOfItem)));
163
+ }
164
+ percentValue(meter) {
165
+ return this.percent(meter) + '%';
166
+ }
167
+ meterStyle(val) {
168
+ return {
169
+ backgroundColor: val.color,
170
+ width: this.orientation === 'horizontal' && this.percentValue(val.value),
171
+ height: this.orientation === 'vertical' && this.percentValue(val.value)
172
+ };
173
+ }
174
+ totalPercent() {
175
+ return this.percent(this.value.reduce((total, val) => total + val.value, 0));
176
+ }
177
+ percentages() {
178
+ let sum = 0;
179
+ const sumsArray = [];
180
+ this.value.forEach((item) => {
181
+ sum += item.value;
182
+ sumsArray.push(sum);
183
+ });
184
+ return sumsArray;
185
+ }
186
+ trackByFn(index) {
187
+ return index;
188
+ }
189
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
190
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: MeterGroup, selector: "p-meterGroup", inputs: { value: "value", min: "min", max: "max", orientation: "orientation", labelPosition: "labelPosition", labelOrientation: "labelOrientation", style: "style", styleClass: "styleClass" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
191
+ <div #container [ngClass]="containerClass" role="meter" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="totalPercent()" [ngStyle]="style" [class]="styleClass">
192
+ @if(labelPosition ==='start') {
193
+ <p-meterGroupLabel *ngIf="!labelTemplate" [value]="value" [labelPosition]="labelPosition" [labelOrientation]="labelOrientation" [min]="min" [max]="max" [iconTemplate]="iconTemplate" />
194
+ <ng-container *ngTemplateOutlet="labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
195
+ }
196
+ <ng-container *ngTemplateOutlet="startTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
197
+ <div class="p-metergroup-meters">
198
+ <ng-container *ngFor="let meterItem of value; let index = index; trackBy: trackByFn">
199
+ <ng-container *ngTemplateOutlet="meterTemplate; context: { $implicit: meterItem, index: index, orientation: this.orientation, class: 'p-metergroup-meter', size: percentValue(meterItem.value), totalPercent: totalPercent() }">
200
+ </ng-container>
201
+ <ng-container *ngIf="!meterTemplate">
202
+ <span class="p-metergroup-meter" [ngStyle]="meterStyle(meterItem)"></span>
203
+ </ng-container>
204
+ </ng-container>
205
+ </div>
206
+ <ng-container *ngTemplateOutlet="endTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
207
+ @if(labelPosition === 'end') {
208
+ <p-meterGroupLabel *ngIf="!labelTemplate" [value]="value" [labelPosition]="labelPosition" [labelOrientation]="labelOrientation" [min]="min" [max]="max" [iconTemplate]="iconTemplate" />
209
+ <ng-container *ngTemplateOutlet="labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
210
+ }
211
+ </div>
212
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: MeterGroupLabel, selector: "p-meterGroupLabel", inputs: ["value", "labelPosition", "labelOrientation", "min", "max", "iconTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
213
+ }
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroup, decorators: [{
215
+ type: Component,
216
+ args: [{
217
+ selector: 'p-meterGroup',
218
+ template: `
219
+ <div #container [ngClass]="containerClass" role="meter" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="totalPercent()" [ngStyle]="style" [class]="styleClass">
220
+ @if(labelPosition ==='start') {
221
+ <p-meterGroupLabel *ngIf="!labelTemplate" [value]="value" [labelPosition]="labelPosition" [labelOrientation]="labelOrientation" [min]="min" [max]="max" [iconTemplate]="iconTemplate" />
222
+ <ng-container *ngTemplateOutlet="labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
223
+ }
224
+ <ng-container *ngTemplateOutlet="startTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
225
+ <div class="p-metergroup-meters">
226
+ <ng-container *ngFor="let meterItem of value; let index = index; trackBy: trackByFn">
227
+ <ng-container *ngTemplateOutlet="meterTemplate; context: { $implicit: meterItem, index: index, orientation: this.orientation, class: 'p-metergroup-meter', size: percentValue(meterItem.value), totalPercent: totalPercent() }">
228
+ </ng-container>
229
+ <ng-container *ngIf="!meterTemplate">
230
+ <span class="p-metergroup-meter" [ngStyle]="meterStyle(meterItem)"></span>
231
+ </ng-container>
232
+ </ng-container>
233
+ </div>
234
+ <ng-container *ngTemplateOutlet="endTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
235
+ @if(labelPosition === 'end') {
236
+ <p-meterGroupLabel *ngIf="!labelTemplate" [value]="value" [labelPosition]="labelPosition" [labelOrientation]="labelOrientation" [min]="min" [max]="max" [iconTemplate]="iconTemplate" />
237
+ <ng-container *ngTemplateOutlet="labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
238
+ }
239
+ </div>
240
+ `,
241
+ changeDetection: ChangeDetectionStrategy.OnPush,
242
+ encapsulation: ViewEncapsulation.None
243
+ }]
244
+ }], propDecorators: { value: [{
245
+ type: Input
246
+ }], min: [{
247
+ type: Input
248
+ }], max: [{
249
+ type: Input
250
+ }], orientation: [{
251
+ type: Input
252
+ }], labelPosition: [{
253
+ type: Input
254
+ }], labelOrientation: [{
255
+ type: Input
256
+ }], style: [{
257
+ type: Input
258
+ }], styleClass: [{
259
+ type: Input
260
+ }], templates: [{
261
+ type: ContentChildren,
262
+ args: [PrimeTemplate]
263
+ }] } });
264
+ export class MeterGroupModule {
265
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
266
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupModule, declarations: [MeterGroup, MeterGroupLabel], imports: [CommonModule, SharedModule], exports: [MeterGroup, SharedModule] });
267
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupModule, imports: [CommonModule, SharedModule, SharedModule] });
268
+ }
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupModule, decorators: [{
270
+ type: NgModule,
271
+ args: [{
272
+ imports: [CommonModule, SharedModule],
273
+ exports: [MeterGroup, SharedModule],
274
+ declarations: [MeterGroup, MeterGroupLabel]
275
+ }]
276
+ }] });
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0ZXJncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZXRlcmdyb3VwL21ldGVyZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBcUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hPLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQWtCekMsTUFBTSxPQUFPLGVBQWU7SUFDZixLQUFLLEdBQVUsSUFBSSxDQUFDO0lBRXBCLGFBQWEsR0FBb0IsS0FBSyxDQUFDO0lBRXZDLGdCQUFnQixHQUE4QixZQUFZLENBQUM7SUFFM0QsR0FBRyxDQUFTO0lBRVosR0FBRyxDQUFTO0lBRVosWUFBWSxDQUErQjtJQUVwQixTQUFTLENBQXVDO0lBRWhGLElBQUksVUFBVTtRQUNWLE9BQU87WUFDSCxpQ0FBaUMsRUFBRSxJQUFJO1lBQ3ZDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxVQUFVO1lBQ3BFLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxZQUFZO1NBQzNFLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYyxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzt1R0F2QnpELGVBQWU7MkZBQWYsZUFBZSwyT0FhUCxhQUFhLDZCQTFCcEI7Ozs7Ozs7Ozs7O0tBV1Q7OzJGQUVRLGVBQWU7a0JBZjNCLFNB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QUFVLEVBQUUsWUFBWSxDQUFDO29CQUNuQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIElucHV0LCBOZ01vZHVsZSwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgZWZmZWN0LCBmb3J3YXJkUmVmLCBpbmplY3QsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IE1ldGVySXRlbSB9IGZyb20gJy4vbWV0ZXJncm91cC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbWV0ZXJHcm91cExhYmVsJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8b2wgW25nQ2xhc3NdPVwibGFiZWxDbGFzc1wiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBsYWJlbEl0ZW0gb2YgdmFsdWU7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiBwYXJlbnRJbnN0YW5jZS50cmFja0J5Rm5cIiBjbGFzcz1cInAtbWV0ZXJncm91cC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibGFiZWxJdGVtLmljb25cIiBbY2xhc3NdPVwibGFiZWxJdGVtLmljb25cIiBbbmdDbGFzc109XCJ7ICdwLW1ldGVyZ3JvdXAtbGFiZWwtaWNvbic6IHRydWUgfVwiIFtuZ1N0eWxlXT1cInsgY29sb3I6IGxhYmVsSXRlbS5jb2xvciB9XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFsYWJlbEl0ZW0uaWNvblwiIGNsYXNzPVwicC1tZXRlcmdyb3VwLWxhYmVsLW1hcmtlclwiIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZENvbG9yOiBsYWJlbEl0ZW0uY29sb3IgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbGFiZWxJdGVtLCBpY29uOiBsYWJlbEl0ZW0uaWNvbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1ldGVyZ3JvdXAtbGFiZWwtdGV4dFwiPnt7IGxhYmVsSXRlbS5sYWJlbCB9fSAoe3sgcGFyZW50SW5zdGFuY2U/LnBlcmNlbnRWYWx1ZShsYWJlbEl0ZW0udmFsdWUpIH19KTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBNZXRlckdyb3VwTGFiZWwge1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnlbXSA9IG51bGw7XG5cbiAgICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnc3RhcnQnIHwgJ2VuZCcgPSAnZW5kJztcblxuICAgIEBJbnB1dCgpIGxhYmVsT3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICBASW5wdXQoKSBtaW46IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIGdldCBsYWJlbENsYXNzKCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtbGFiZWxzIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtbGFiZWxzLXZlcnRpY2FsJzogdGhpcy5sYWJlbE9yaWVudGF0aW9uID09PSAndmVydGljYWwnLFxuICAgICAgICAgICAgJ3AtbWV0ZXJncm91cC1sYWJlbHMtaG9yaXpvbnRhbCc6IHRoaXMubGFiZWxPcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcGFyZW50SW5zdGFuY2U6IE1ldGVyR3JvdXAgPSBpbmplY3QoZm9yd2FyZFJlZigoKSA9PiBNZXRlckdyb3VwKSk7XG59XG4vKipcbiAqIE1ldGVyR3JvdXAgZGlzcGxheXMgc2NhbGFyIG1lYXN1cmVtZW50cyB3aXRoaW4gYSBrbm93biByYW5nZS5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tZXRlckdyb3VwJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIiByb2xlPVwibWV0ZXJcIiBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCIgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ0b3RhbFBlcmNlbnQoKVwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIEBpZihsYWJlbFBvc2l0aW9uID09PSdzdGFydCcpIHtcbiAgICAgICAgICAgIDxwLW1ldGVyR3JvdXBMYWJlbCAqbmdJZj1cIiFsYWJlbFRlbXBsYXRlXCIgW3ZhbHVlXT1cInZhbHVlXCIgW2xhYmVsUG9zaXRpb25dPVwibGFiZWxQb3NpdGlvblwiIFtsYWJlbE9yaWVudGF0aW9uXT1cImxhYmVsT3JpZW50YXRpb25cIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW2ljb25UZW1wbGF0ZV09XCJpY29uVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXJ0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWV0ZXJncm91cC1tZXRlcnNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZXRlckl0ZW0gb2YgdmFsdWU7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1ldGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXRlckl0ZW0sIGluZGV4OiBpbmRleCwgb3JpZW50YXRpb246IHRoaXMub3JpZW50YXRpb24sIGNsYXNzOiAncC1tZXRlcmdyb3VwLW1ldGVyJywgc2l6ZTogcGVyY2VudFZhbHVlKG1ldGVySXRlbS52YWx1ZSksIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50KCkgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZXRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWV0ZXJncm91cC1tZXRlclwiIFtuZ1N0eWxlXT1cIm1ldGVyU3R5bGUobWV0ZXJJdGVtKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbmRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZhbHVlLCB0b3RhbFBlcmNlbnQ6IHRvdGFsUGVyY2VudCgpLCBwZXJjZW50YWdlczogcGVyY2VudGFnZXMoKSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICBAaWYobGFiZWxQb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIDxwLW1ldGVyR3JvdXBMYWJlbCAqbmdJZj1cIiFsYWJlbFRlbXBsYXRlXCIgW3ZhbHVlXT1cInZhbHVlXCIgW2xhYmVsUG9zaXRpb25dPVwibGFiZWxQb3NpdGlvblwiIFtsYWJlbE9yaWVudGF0aW9uXT1cImxhYmVsT3JpZW50YXRpb25cIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW2ljb25UZW1wbGF0ZV09XCJpY29uVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTWV0ZXJHcm91cCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgdmFsdWUgb2YgdGhlIG1ldGVyZ3JvdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmFsdWU6IE1ldGVySXRlbVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1pbmludW0gYm91bmRhcnkgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbWluOiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gYm91bmRhcnkgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXIgPSAxMDA7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBsYXlvdXQgb2YgdGhlIGNvbXBvbmVudCwgdmFsaWQgdmFsdWVzIGFyZSAnaG9yaXpvbnRhbCcgYW5kICd2ZXJ0aWNhbCcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBsYWJlbCBwb3NpdGlvbiBvZiB0aGUgY29tcG9uZW50LCB2YWxpZCB2YWx1ZXMgYXJlICdzdGFydCcgYW5kICdlbmQnLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246ICdzdGFydCcgfCAnZW5kJyA9ICdlbmQnO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgbGFiZWwgb3JpZW50YXRpb24gb2YgdGhlIGNvbXBvbmVudCwgdmFsaWQgdmFsdWVzIGFyZSAnaG9yaXpvbnRhbCcgYW5kICd2ZXJ0aWNhbCcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWxPcmllbnRhdGlvbjogc3RyaW5nID0gJ2hvcml6b250YWwnO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJztcbiAgICB9XG5cbiAgICBnZXQgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1tZXRlcmdyb3VwIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtaG9yaXpvbnRhbCc6IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtdmVydGljYWwnOiB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbGFiZWxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIG1ldGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBlbmRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHN0YXJ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBpY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb250YWluZXIgPSB2aWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KTtcblxuICAgIGNvbnRhaW5lckVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IF9jb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcigpO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBEb21IYW5kbGVyLmdldE91dGVySGVpZ2h0KF9jb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMudmVydGljYWwgJiYgKHRoaXMuY29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnKTtcbiAgICB9KTtcblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdsYWJlbCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWxUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21ldGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBlcmNlbnQobWV0ZXIgPSAwKSB7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRPZkl0ZW0gPSAoKG1ldGVyIC0gdGhpcy5taW4pIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pKSAqIDEwMDtcblxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIHBlcmNlbnRPZkl0ZW0pKSk7XG4gICAgfVxuICAgIHBlcmNlbnRWYWx1ZShtZXRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXJjZW50KG1ldGVyKSArICclJztcbiAgICB9XG4gICAgbWV0ZXJTdHlsZSh2YWwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdmFsLmNvbG9yLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB0aGlzLnBlcmNlbnRWYWx1ZSh2YWwudmFsdWUpLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHRoaXMucGVyY2VudFZhbHVlKHZhbC52YWx1ZSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB0b3RhbFBlcmNlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcmNlbnQodGhpcy52YWx1ZS5yZWR1Y2UoKHRvdGFsLCB2YWwpID0+IHRvdGFsICsgdmFsLnZhbHVlLCAwKSk7XG4gICAgfVxuXG4gICAgcGVyY2VudGFnZXMoKSB7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBjb25zdCBzdW1zQXJyYXkgPSBbXTtcblxuICAgICAgICB0aGlzLnZhbHVlLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN1bSArPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgc3Vtc0FycmF5LnB1c2goc3VtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN1bXNBcnJheTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTWV0ZXJHcm91cCwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtNZXRlckdyb3VwLCBNZXRlckdyb3VwTGFiZWxdXG59KVxuZXhwb3J0IGNsYXNzIE1ldGVyR3JvdXBNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1tZXRlcmdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL21ldGVyZ3JvdXAvcHJpbWVuZy1tZXRlcmdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './metergroup';
2
+ export * from './metergroup.interface';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZXRlcmdyb3VwL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWV0ZXJncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL21ldGVyZ3JvdXAuaW50ZXJmYWNlJztcbiJdfQ==