@energycap/components 0.44.8 → 0.44.9-Angular19Upgrade.20260217-1620

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 (145) hide show
  1. package/fesm2022/energycap-components.mjs +379 -354
  2. package/fesm2022/energycap-components.mjs.map +1 -1
  3. package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
  4. package/lib/controls/date-input/date-input.component.d.ts +1 -1
  5. package/lib/controls/form-control-base.d.ts +1 -1
  6. package/lib/core/date-time-helper.d.ts +2 -2
  7. package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
  8. package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
  9. package/lib/display/resizable/resizable-base.d.ts +1 -1
  10. package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
  11. package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
  12. package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
  13. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
  14. package/package.json +1 -3
  15. package/schematics/utilities/typescript.js +3 -4
  16. package/schematics/utilities/typescript.js.map +1 -1
  17. package/schematics/utilities/workspace.d.ts +0 -8
  18. package/schematics/utilities/workspace.js +48 -71
  19. package/schematics/utilities/workspace.js.map +1 -1
  20. package/esm2022/energycap-components.mjs +0 -5
  21. package/esm2022/lib/components.module.mjs +0 -425
  22. package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
  23. package/esm2022/lib/controls/button/button.component.mjs +0 -114
  24. package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
  25. package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
  26. package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
  27. package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
  28. package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
  29. package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
  30. package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
  31. package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
  32. package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
  33. package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
  34. package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
  35. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
  36. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
  37. package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
  38. package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
  39. package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
  40. package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
  41. package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
  42. package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
  43. package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
  44. package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
  45. package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
  46. package/esm2022/lib/controls/form-control-base.mjs +0 -151
  47. package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
  48. package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
  49. package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
  50. package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
  51. package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
  52. package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
  53. package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
  54. package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
  55. package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
  56. package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
  57. package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
  58. package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
  59. package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
  60. package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
  61. package/esm2022/lib/controls/select/select.component.mjs +0 -88
  62. package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
  63. package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
  64. package/esm2022/lib/core/cache.service.mjs +0 -105
  65. package/esm2022/lib/core/custom-validators.mjs +0 -29
  66. package/esm2022/lib/core/date-time-helper.mjs +0 -228
  67. package/esm2022/lib/core/error.service.mjs +0 -61
  68. package/esm2022/lib/core/router-helper.service.mjs +0 -111
  69. package/esm2022/lib/core/scroll.service.mjs +0 -89
  70. package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
  71. package/esm2022/lib/core/telemetry.service.mjs +0 -38
  72. package/esm2022/lib/core/validation-message.service.mjs +0 -185
  73. package/esm2022/lib/core/validation-patterns.mjs +0 -31
  74. package/esm2022/lib/core/window.service.mjs +0 -186
  75. package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
  76. package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
  77. package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
  78. package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
  79. package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
  80. package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
  81. package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
  82. package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
  83. package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
  84. package/esm2022/lib/display/help/help-types.mjs +0 -2
  85. package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
  86. package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
  87. package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
  88. package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
  89. package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
  90. package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
  91. package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
  92. package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
  93. package/esm2022/lib/display/splash/splash.component.mjs +0 -61
  94. package/esm2022/lib/display/splash/splash.service.mjs +0 -35
  95. package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
  96. package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
  97. package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
  98. package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
  99. package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
  100. package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
  101. package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
  102. package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
  103. package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
  104. package/esm2022/lib/display/table/table.component.mjs +0 -257
  105. package/esm2022/lib/display/tags/tag.mjs +0 -18
  106. package/esm2022/lib/display/tags/tags.component.mjs +0 -82
  107. package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
  108. package/esm2022/lib/display/toast/toast-types.mjs +0 -8
  109. package/esm2022/lib/display/toast/toast.service.mjs +0 -35
  110. package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
  111. package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
  112. package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
  113. package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
  114. package/esm2022/lib/display/tree/tree.component.mjs +0 -139
  115. package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
  116. package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
  117. package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
  118. package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
  119. package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
  120. package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
  121. package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
  122. package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
  123. package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
  124. package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
  125. package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
  126. package/esm2022/lib/shared/display.mjs +0 -6
  127. package/esm2022/lib/shared/form-group.helper.mjs +0 -67
  128. package/esm2022/lib/shared/json-helper.mjs +0 -19
  129. package/esm2022/lib/shared/lodash-helper.mjs +0 -52
  130. package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
  131. package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
  132. package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
  133. package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
  134. package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
  135. package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
  136. package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
  137. package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
  138. package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
  139. package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
  140. package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
  141. package/esm2022/lib/shared/user-preference.service.mjs +0 -17
  142. package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
  143. package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
  144. package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
  145. package/esm2022/public-api.mjs +0 -115
@@ -1,228 +0,0 @@
1
- import moment from 'moment';
2
- /**
3
- * Helper class that provides common date constants and helpful date functions
4
- */
5
- export class DateTimeHelper {
6
- ///////////////////////////////////////////////////////
7
- // CONSTANTS
8
- ///////////////////////////////////////////////////////
9
- static { this.beginningOfTime = new Date(1899, 11, 31); }
10
- /** 3000-01-01 */
11
- static { this.endOfTime = new Date(3000, 0, 1); }
12
- /** 3000-01-01 UTC */
13
- static { this.endOfTimeUTC = moment.utc('3000-01-01').toDate(); }
14
- /** Default effective date for new AccountMeter relationships: 2010-01-01 */
15
- static { this.defaultAccountMeterEffectiveDate = new Date(2010, 0, 1); }
16
- /** The default date that a newly created account becomes effective: 2010-01-01 */
17
- static { this.defaultAccountServiceEffectiveDate = new Date(2010, 0, 1); }
18
- /** Minimum date for all datepickers: 1980-01-01 */
19
- static { this.minDatePickerDate = new Date(1980, 0, 1); }
20
- /** Maximum date for all datepickers: 3000-01-01 11:59:59 PM to allow for local time offset working in for 3000-01-01 dates, which we store in the db to represent "end of time" */
21
- static { this.maxDatePickerDate = new Date(3000, 0, 1, 23, 59, 59); }
22
- /** Timestamp formats */
23
- static { this.defaultDateFormat = "yyyy-MM-dd"; }
24
- static { this.defaultTimeFormat = "HH:mm:ss"; }
25
- static { this.defaultTimestampFormat = `${DateTimeHelper.defaultDateFormat} ${DateTimeHelper.defaultTimeFormat}`; }
26
- /** List of valid bill import date formats
27
- * Warning! Do not use these for actual formatting of dates
28
- */
29
- static { this.billImportFormatDateFormats = [
30
- { label: "mm/dd/yyyy", value: "mm/dd/yyyy" }, { label: "Month dd yyyy", value: "Month dd yyyy" },
31
- { label: "dd/mm/yyyy", value: "dd/mm/yyyy" }, { label: "dd Month yyyy", value: "dd Month yyyy" }, { label: "yyyymmdd", value: "yyyymmdd" }
32
- ]; }
33
- /**
34
- * User input formats that we will parse into a date
35
- * when the users date format preference has month before day
36
- */
37
- static { this.monthFirstParseFormats = [
38
- "yyyy/MM/dd",
39
- "MM/dd/yyyy",
40
- "MMddyyyy",
41
- "MM/dd/yy",
42
- "MMddyy",
43
- "MM/dd",
44
- "yyyy.MM.dd",
45
- "MM.dd.yyyy",
46
- "MM.dd.yy",
47
- "MM.dd",
48
- "yyyy-MM-dd",
49
- "MM-dd-yyyy",
50
- "MM-dd-yy",
51
- "MM-dd",
52
- "yyyyMMdd"
53
- ]; }
54
- /**
55
- * User input formats that we will parse into a date
56
- * when the users date format preference has month before day.
57
- * To be used with moment.js. Moment ignores non-alphanumeric characters
58
- * so dates like 2020/09/10 will be parsed the same as 2020-09-10
59
- */
60
- static { this.momentMonthFirstParseFormats = [
61
- 'M-D',
62
- 'MM-DD',
63
- 'M-D-YY',
64
- 'MM-DD-YY',
65
- 'MMDDYYYY',
66
- 'YYYYMMDD',
67
- 'YYYY-MM-DD',
68
- 'MM-DD-YYYY'
69
- ]; }
70
- /**
71
- * User input formats that we will parse into a date
72
- * when the users date format preference has day before month
73
- */
74
- static { this.dateFirstParseFormats = [
75
- "yyyy/dd/MM",
76
- "dd/MM/yyyy",
77
- "ddMMyyyy",
78
- "dd/MM/yy",
79
- "ddMMyy",
80
- "dd/MM",
81
- "yyyy.dd.MM",
82
- "dd.MM.yyyy",
83
- "dd.MM.yy",
84
- "dd.MM",
85
- "yyyy-dd-MM",
86
- "dd-MM-yyyy",
87
- "dd-MM-yy",
88
- "dd-MM",
89
- "yyyyDDmm"
90
- ]; }
91
- /**
92
- * User input formats that we will parse into a date
93
- * when the users date format preference has day before month.
94
- * To be used with moment.js. Moment ignores non-alphanumeric characters
95
- * so dates like 2020/09/10 will be parsed the same as 2020-09-10
96
- */
97
- static { this.momentDateFirstParseFormats = [
98
- 'D-M',
99
- 'DD-MM',
100
- 'D-M-YY',
101
- 'DD-MM-YY',
102
- 'DDMMYYYY',
103
- 'YYYYMMDD',
104
- 'YYYY-MM-DD',
105
- 'DD-MM-YYYY'
106
- ]; }
107
- /**
108
- * Formats used to parse dates that are in the medium or long format by moment js.
109
- * These are shared by date-first and month-first date formats. The date can't be
110
- * parsed differently based on the date preference since the month is not numeric.
111
- * This is not an exhaustive list of formats, but it should cover most common formats.
112
- */
113
- static { this.momentMedAndLongDateFormats = [
114
- 'DD MMM',
115
- 'MMM DD',
116
- 'DD MMM YY',
117
- 'DD MMM YYYY',
118
- 'DD MMMM YYYY',
119
- 'MMM D, YY',
120
- 'MMM D, YYYY',
121
- 'MMM DD, YYYY',
122
- 'MMMM D, YYYY',
123
- 'MMMM DD, YYYY',
124
- 'MMM YY',
125
- 'MMM YYYY',
126
- 'MMMM YYYY',
127
- 'MMM, YY',
128
- 'MMM, YYYY',
129
- 'MMMM, YYYY',
130
- ]; }
131
- /**
132
- * Format to display the time portion of a datetime
133
- */
134
- static { this.timeFormat = 'HH:mm:ss'; }
135
- ///////////////////////////////////////////////////////
136
- // METHODS
137
- ///////////////////////////////////////////////////////
138
- /**
139
- * Return true if @see date is equal to the @see endOfTime
140
- */
141
- static isEndOfTime(date, timeZoneOffset = false) {
142
- const endOfTime = timeZoneOffset ? this.endOfTimeUTC : this.endOfTime;
143
- return this.isSameDay(date, endOfTime);
144
- }
145
- /**
146
- * Compare two dates and return true if they represent the same year, month, and day (time is ignored).
147
- */
148
- static isSameDay(date1, date2) {
149
- return moment(date1).isSame(moment(date2), 'day');
150
- }
151
- /**
152
- * Get the parse formats based on the given date format. If no date format is
153
- * given, or we don't recognize the format, return the month first parse formats.
154
- *
155
- */
156
- static getParseFormats(dateFormat) {
157
- let map = {
158
- 'MM/DD/YYYY': this.monthFirstParseFormats,
159
- 'MM-DD-YYYY': this.monthFirstParseFormats,
160
- 'DD/MM/YYYY': this.dateFirstParseFormats,
161
- 'DD-MM-YYYY': this.dateFirstParseFormats,
162
- 'YYYY/MM/DD': this.monthFirstParseFormats,
163
- 'YYYY-MM-DD': this.monthFirstParseFormats
164
- };
165
- return dateFormat ? map[dateFormat] : this.monthFirstParseFormats;
166
- }
167
- /**
168
- * Get the moment parse formats based on the given date format. If no date format is
169
- * given, or we don't recognize the format, return the month first parse formats.
170
- */
171
- static getMomentParseFormats(dateFormat) {
172
- let map = {
173
- 'MM/DD/YYYY': [...this.momentMonthFirstParseFormats, ...this.momentMedAndLongDateFormats],
174
- 'MM-DD-YYYY': [...this.momentMonthFirstParseFormats, ...this.momentMedAndLongDateFormats],
175
- 'DD/MM/YYYY': [...this.momentDateFirstParseFormats, ...this.momentMedAndLongDateFormats],
176
- 'DD-MM-YYYY': [...this.momentDateFirstParseFormats, ...this.momentMedAndLongDateFormats],
177
- 'YYYY/MM/DD': [...this.momentMonthFirstParseFormats, ...this.momentMedAndLongDateFormats],
178
- 'YYYY-MM-DD': [...this.momentMonthFirstParseFormats, ...this.momentMedAndLongDateFormats]
179
- };
180
- return dateFormat ? map[dateFormat] : this.momentMonthFirstParseFormats;
181
- }
182
- /**
183
- * Get relationship start date (favoring date in partialFormState if exists)
184
- * * return default account-meter effective date if no start date found
185
- *
186
- */
187
- static getAccountMeterStartDate(partialFormState, accountMeter) {
188
- let startDate = partialFormState.effectiveFrom || accountMeter.startDate;
189
- return startDate ? new Date(startDate) : DateTimeHelper.defaultAccountMeterEffectiveDate;
190
- }
191
- /**
192
- * Get relationship end date (favoring date in partialFormState if exists)
193
- * * return null if no stored date or end date is 1/1/3000
194
- */
195
- static getAccountMeterEndDate(partialFormState, accountMeter) {
196
- let endDate = partialFormState.effectiveTo || accountMeter.endDate;
197
- if (endDate && !DateTimeHelper.isEndOfTime(endDate)) {
198
- return new Date(endDate);
199
- }
200
- return null;
201
- }
202
- static isDateBetween(date, startDate, endDate, includeStart, includeEnd) {
203
- let inclusivity = '()';
204
- if (includeStart && includeEnd) {
205
- inclusivity = '[]';
206
- }
207
- else if (includeStart) {
208
- inclusivity = '[)';
209
- }
210
- else if (includeEnd) {
211
- inclusivity = '(]';
212
- }
213
- // If a start date is not provide, we'll use our beginning of time instead
214
- startDate = startDate || this.beginningOfTime;
215
- // If an end date is not provided, we'll use our end of time instead
216
- endDate = endDate || this.endOfTime;
217
- return moment(date).isBetween(startDate, endDate, 'day', inclusivity);
218
- }
219
- static stringToDate(dateString) {
220
- if (dateString === null || dateString === undefined) {
221
- return dateString;
222
- }
223
- else {
224
- return moment(dateString).toDate();
225
- }
226
- }
227
- }
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL2RhdGUtdGltZS1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBSTVCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFFdkIsdURBQXVEO0lBQ3ZELFlBQVk7SUFDWix1REFBdUQ7YUFFekMsb0JBQWUsR0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTNELGlCQUFpQjthQUNILGNBQVMsR0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXJELHFCQUFxQjthQUNQLGlCQUFZLEdBQVMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUVyRSw0RUFBNEU7YUFDOUQscUNBQWdDLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU1RSxrRkFBa0Y7YUFDcEUsdUNBQWtDLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU5RSxtREFBbUQ7YUFDckMsc0JBQWlCLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU3RCxtTEFBbUw7YUFDckssc0JBQWlCLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztJQUVwRSx3QkFBd0I7YUFDVixzQkFBaUIsR0FBVyxZQUFZLENBQUM7YUFDekMsc0JBQWlCLEdBQVcsVUFB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U0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBcUM7UUFDOUQsSUFBSSxVQUFVLEtBQUssSUFBSSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG50eXBlIERhdGVGb3JtYXRNYXAgPSB7IFtmb3JtYXQ6IHN0cmluZ106IHN0cmluZ1tdIH07XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIHRoYXQgcHJvdmlkZXMgY29tbW9uIGRhdGUgY29uc3RhbnRzIGFuZCBoZWxwZnVsIGRhdGUgZnVuY3Rpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlVGltZUhlbHBlciB7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQ09OU1RBTlRTXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgcHVibGljIHN0YXRpYyBiZWdpbm5pbmdPZlRpbWU6IERhdGUgPSBuZXcgRGF0ZSgxODk5LDExLDMxKTtcbiAgICAgXG4gICAgLyoqIDMwMDAtMDEtMDEgKi9cbiAgICBwdWJsaWMgc3RhdGljIGVuZE9mVGltZTogRGF0ZSA9IG5ldyBEYXRlKDMwMDAsIDAsIDEpO1xuXG4gICAgLyoqIDMwMDAtMDEtMDEgVVRDICovXG4gICAgcHVibGljIHN0YXRpYyBlbmRPZlRpbWVVVEM6IERhdGUgPSBtb21lbnQudXRjKCczMDAwLTAxLTAxJykudG9EYXRlKCk7XG5cbiAgICAvKiogRGVmYXVsdCBlZmZlY3RpdmUgZGF0ZSBmb3IgbmV3IEFjY291bnRNZXRlciByZWxhdGlvbnNoaXBzOiAyMDEwLTAxLTAxICovXG4gICAgcHVibGljIHN0YXRpYyBkZWZhdWx0QWNjb3VudE1ldGVyRWZmZWN0aXZlRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKDIwMTAsIDAsIDEpO1xuXG4gICAgLyoqIFRoZSBkZWZhdWx0IGRhdGUgdGhhdCBhIG5ld2x5IGNyZWF0ZWQgYWNjb3VudCBiZWNvbWVzIGVmZmVjdGl2ZTogMjAxMC0wMS0wMSAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZGVmYXVsdEFjY291bnRTZXJ2aWNlRWZmZWN0aXZlRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKDIwMTAsIDAsIDEpO1xuXG4gICAgLyoqIE1pbmltdW0gZGF0ZSBmb3IgYWxsIGRhdGVwaWNrZXJzOiAxOTgwLTAxLTAxICovXG4gICAgcHVibGljIHN0YXRpYyBtaW5EYXRlUGlja2VyRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKDE5ODAsIDAsIDEpO1xuXG4gICAgLyoqIE1heGltdW0gZGF0ZSBmb3IgYWxsIGRhdGVwaWNrZXJzOiAzMDAwLTAxLTAxIDExOjU5OjU5IFBNIHRvIGFsbG93IGZvciBsb2NhbCB0aW1lIG9mZnNldCB3b3JraW5nIGluIGZvciAzMDAwLTAxLTAxIGRhdGVzLCB3aGljaCB3ZSBzdG9yZSBpbiB0aGUgZGIgdG8gcmVwcmVzZW50IFwiZW5kIG9mIHRpbWVcIiAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbWF4RGF0ZVBpY2tlckRhdGU6IERhdGUgPSBuZXcgRGF0ZSgzMDAwLDAsMSwyMyw1OSw1OSk7XG5cbiAgICAvKiogVGltZXN0YW1wIGZvcm1hdHMgKi9cbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHREYXRlRm9ybWF0OiBzdHJpbmcgPSBcInl5eXktTU0tZGRcIjtcbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRUaW1lRm9ybWF0OiBzdHJpbmcgPSBcIkhIOm1tOnNzXCI7XG4gICAgcHVibGljIHN0YXRpYyBkZWZhdWx0VGltZXN0YW1wRm9ybWF0OiBzdHJpbmcgPSBgJHtEYXRlVGltZUhlbHBlci5kZWZhdWx0RGF0ZUZvcm1hdH0gJHtEYXRlVGltZUhlbHBlci5kZWZhdWx0VGltZUZvcm1hdH1gO1xuXG4gICAgLyoqIExpc3Qgb2YgdmFsaWQgYmlsbCBpbXBvcnQgZGF0ZSBmb3JtYXRzXG4gICAgICogIFdhcm5pbmchIERvIG5vdCB1c2UgdGhlc2UgZm9yIGFjdHVhbCBmb3JtYXR0aW5nIG9mIGRhdGVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBiaWxsSW1wb3J0Rm9ybWF0RGF0ZUZvcm1hdHMgPSBbXG4gICAgICAgIHsgbGFiZWw6IFwibW0vZGQveXl5eVwiLCB2YWx1ZTogXCJtbS9kZC95eXl5XCIgfSwgeyBsYWJlbDogXCJNb250aCBkZCB5eXl5XCIsIHZhbHVlOiBcIk1vbnRoIGRkIHl5eXlcIiB9LCBcbiAgICAgICAgeyBsYWJlbDogXCJkZC9tbS95eXl5XCIsIHZhbHVlOiBcImRkL21tL3l5eXlcIiB9LCB7IGxhYmVsOiBcImRkIE1vbnRoIHl5eXlcIiwgdmFsdWU6IFwiZGQgTW9udGggeXl5eVwiIH0sIHsgbGFiZWw6IFwieXl5eW1tZGRcIiwgdmFsdWU6IFwieXl5eW1tZGRcIiB9XTtcblxuICAgIC8qKlxuICAgICAqIFVzZXIgaW5wdXQgZm9ybWF0cyB0aGF0IHdlIHdpbGwgcGFyc2UgaW50byBhIGRhdGVcbiAgICAgKiB3aGVuIHRoZSB1c2VycyBkYXRlIGZvcm1hdCBwcmVmZXJlbmNlIGhhcyBtb250aCBiZWZvcmUgZGF5XG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBtb250aEZpcnN0UGFyc2VGb3JtYXRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgXCJ5eXl5L01NL2RkXCIsXG4gICAgICAgIFwiTU0vZGQveXl5eVwiLFxuICAgICAgICBcIk1NZGR5eXl5XCIsXG4gICAgICAgIFwiTU0vZGQveXlcIixcbiAgICAgICAgXCJNTWRkeXlcIixcbiAgICAgICAgXCJNTS9kZFwiLFxuICAgICAgICBcInl5eXkuTU0uZGRcIixcbiAgICAgICAgXCJNTS5kZC55eXl5XCIsXG4gICAgICAgIFwiTU0uZGQueXlcIixcbiAgICAgICAgXCJNTS5kZFwiLFxuICAgICAgICBcInl5eXktTU0tZGRcIixcbiAgICAgICAgXCJNTS1kZC15eXl5XCIsXG4gICAgICAgIFwiTU0tZGQteXlcIixcbiAgICAgICAgXCJNTS1kZFwiLFxuICAgICAgICBcInl5eXlNTWRkXCJcbiAgICBdO1xuXG4gICAgLyoqXG4gICAgICogVXNlciBpbnB1dCBmb3JtYXRzIHRoYXQgd2Ugd2lsbCBwYXJzZSBpbnRvIGEgZGF0ZVxuICAgICAqIHdoZW4gdGhlIHVzZXJzIGRhdGUgZm9ybWF0IHByZWZlcmVuY2UgaGFzIG1vbnRoIGJlZm9yZSBkYXkuXG4gICAgICogVG8gYmUgdXNlZCB3aXRoIG1vbWVudC5qcy4gTW9tZW50IGlnbm9yZXMgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzXG4gICAgICogc28gZGF0ZXMgbGlrZSAyMDIwLzA5LzEwIHdpbGwgYmUgcGFyc2VkIHRoZSBzYW1lIGFzIDIwMjAtMDktMTBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG1vbWVudE1vbnRoRmlyc3RQYXJzZUZvcm1hdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAnTS1EJyxcbiAgICAgICAgJ01NLUREJyxcbiAgICAgICAgJ00tRC1ZWScsXG4gICAgICAgICdNTS1ERC1ZWScsXG4gICAgICAgICdNTUREWVlZWScsXG4gICAgICAgICdZWVlZTU1ERCcsXG4gICAgICAgICdZWVlZLU1NLUREJyxcbiAgICAgICAgJ01NLURELVlZWVknXG4gICAgXTtcblxuICAgIC8qKlxuICAgICAqIFVzZXIgaW5wdXQgZm9ybWF0cyB0aGF0IHdlIHdpbGwgcGFyc2UgaW50byBhIGRhdGVcbiAgICAgKiB3aGVuIHRoZSB1c2VycyBkYXRlIGZvcm1hdCBwcmVmZXJlbmNlIGhhcyBkYXkgYmVmb3JlIG1vbnRoXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBkYXRlRmlyc3RQYXJzZUZvcm1hdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICBcInl5eXkvZGQvTU1cIixcbiAgICAgICAgXCJkZC9NTS95eXl5XCIsXG4gICAgICAgIFwiZGRNTXl5eXlcIixcbiAgICAgICAgXCJkZC9NTS95eVwiLFxuICAgICAgICBcImRkTU15eVwiLFxuICAgICAgICBcImRkL01NXCIsXG4gICAgICAgIFwieXl5eS5kZC5NTVwiLFxuICAgICAgICBcImRkLk1NLnl5eXlcIixcbiAgICAgICAgXCJkZC5NTS55eVwiLFxuICAgICAgICBcImRkLk1NXCIsXG4gICAgICAgIFwieXl5eS1kZC1NTVwiLFxuICAgICAgICBcImRkLU1NLXl5eXlcIixcbiAgICAgICAgXCJkZC1NTS15eVwiLFxuICAgICAgICBcImRkLU1NXCIsXG4gICAgICAgIFwieXl5eUREbW1cIlxuICAgIF07XG5cbiAgICAvKipcbiAgICAgKiBVc2VyIGlucHV0IGZvcm1hdHMgdGhhdCB3ZSB3aWxsIHBhcnNlIGludG8gYSBkYXRlXG4gICAgICogd2hlbiB0aGUgdXNlcnMgZGF0ZSBmb3JtYXQgcHJlZmVyZW5jZSBoYXMgZGF5IGJlZm9yZSBtb250aC5cbiAgICAgKiBUbyBiZSB1c2VkIHdpdGggbW9tZW50LmpzLiBNb21lbnQgaWdub3JlcyBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnNcbiAgICAgKiBzbyBkYXRlcyBsaWtlIDIwMjAvMDkvMTAgd2lsbCBiZSBwYXJzZWQgdGhlIHNhbWUgYXMgMjAyMC0wOS0xMFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbW9tZW50RGF0ZUZpcnN0UGFyc2VGb3JtYXRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgJ0QtTScsXG4gICAgICAgICdERC1NTScsXG4gICAgICAgICdELU0tWVknLFxuICAgICAgICAnREQtTU0tWVknLFxuICAgICAgICAnRERNTVlZWVknLFxuICAgICAgICAnWVlZWU1NREQnLFxuICAgICAgICAnWVlZWS1NTS1ERCcsXG4gICAgICAgICdERC1NTS1ZWVlZJ1xuICAgIF07XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIHVzZWQgdG8gcGFyc2UgZGF0ZXMgdGhhdCBhcmUgaW4gdGhlIG1lZGl1bSBvciBsb25nIGZvcm1hdCBieSBtb21lbnQganMuXG4gICAgICogVGhlc2UgYXJlIHNoYXJlZCBieSBkYXRlLWZpcnN0IGFuZCBtb250aC1maXJzdCBkYXRlIGZvcm1hdHMuIFRoZSBkYXRlIGNhbid0IGJlXG4gICAgICogcGFyc2VkIGRpZmZlcmVudGx5IGJhc2VkIG9uIHRoZSBkYXRlIHByZWZlcmVuY2Ugc2luY2UgdGhlIG1vbnRoIGlzIG5vdCBudW1lcmljLlxuICAgICAqIFRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCBvZiBmb3JtYXRzLCBidXQgaXQgc2hvdWxkIGNvdmVyIG1vc3QgY29tbW9uIGZvcm1hdHMuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBtb21lbnRNZWRBbmRMb25nRGF0ZUZvcm1hdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAnREQgTU1NJyxcbiAgICAgICAgJ01NTSBERCcsXG4gICAgICAgICdERCBNTU0gWVknLFxuICAgICAgICAnREQgTU1NIFlZWVknLFxuICAgICAgICAnREQgTU1NTSBZWVlZJyxcbiAgICAgICAgJ01NTSBELCBZWScsXG4gICAgICAgICdNTU0gRCwgWVlZWScsXG4gICAgICAgICdNTU0gREQsIFlZWVknLFxuICAgICAgICAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgJ01NTU0gREQsIFlZWVknLFxuICAgICAgICAnTU1NIFlZJyxcbiAgICAgICAgJ01NTSBZWVlZJyxcbiAgICAgICAgJ01NTU0gWVlZWScsXG4gICAgICAgICdNTU0sIFlZJyxcbiAgICAgICAgJ01NTSwgWVlZWScsXG4gICAgICAgICdNTU1NLCBZWVlZJyxcbiAgICBdO1xuXG4gICAgLyoqXG4gICAgICogRm9ybWF0IHRvIGRpc3BsYXkgdGhlIHRpbWUgcG9ydGlvbiBvZiBhIGRhdGV0aW1lXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0aW1lRm9ybWF0OiBzdHJpbmcgPSAnSEg6bW06c3MnO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIE1FVEhPRFNcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBAc2VlIGRhdGUgaXMgZXF1YWwgdG8gdGhlIEBzZWUgZW5kT2ZUaW1lXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpc0VuZE9mVGltZShkYXRlOiBEYXRlIHwgbW9tZW50Lk1vbWVudCB8IHN0cmluZywgdGltZVpvbmVPZmZzZXQ6IGJvb2xlYW4gPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlbmRPZlRpbWUgPSB0aW1lWm9uZU9mZnNldCA/IHRoaXMuZW5kT2ZUaW1lVVRDIDogdGhpcy5lbmRPZlRpbWU7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZURheShkYXRlLCBlbmRPZlRpbWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZSB0d28gZGF0ZXMgYW5kIHJldHVybiB0cnVlIGlmIHRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIHllYXIsIG1vbnRoLCBhbmQgZGF5ICh0aW1lIGlzIGlnbm9yZWQpLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNTYW1lRGF5KGRhdGUxOiBEYXRlIHwgbW9tZW50Lk1vbWVudCB8IHN0cmluZywgZGF0ZTI6IERhdGUgfCBtb21lbnQuTW9tZW50IHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBtb21lbnQoZGF0ZTEpLmlzU2FtZShtb21lbnQoZGF0ZTIpLCAnZGF5Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwYXJzZSBmb3JtYXRzIGJhc2VkIG9uIHRoZSBnaXZlbiBkYXRlIGZvcm1hdC4gSWYgbm8gZGF0ZSBmb3JtYXQgaXNcbiAgICAgKiBnaXZlbiwgb3Igd2UgZG9uJ3QgcmVjb2duaXplIHRoZSBmb3JtYXQsIHJldHVybiB0aGUgbW9udGggZmlyc3QgcGFyc2UgZm9ybWF0cy5cbiAgICAgKiBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldFBhcnNlRm9ybWF0cyhkYXRlRm9ybWF0Pzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IG1hcDogRGF0ZUZvcm1hdE1hcCA9IHtcbiAgICAgICAgICAgICdNTS9ERC9ZWVlZJzogdGhpcy5tb250aEZpcnN0UGFyc2VGb3JtYXRzLFxuICAgICAgICAgICAgJ01NLURELVlZWVknOiB0aGlzLm1vbnRoRmlyc3RQYXJzZUZvcm1hdHMsXG4gICAgICAgICAgICAnREQvTU0vWVlZWSc6IHRoaXMuZGF0ZUZpcnN0UGFyc2VGb3JtYXRzLFxuICAgICAgICAgICAgJ0RELU1NLVlZWVknOiB0aGlzLmRhdGVGaXJzdFBhcnNlRm9ybWF0cyxcbiAgICAgICAgICAgICdZWVlZL01NL0REJzogdGhpcy5tb250aEZpcnN0UGFyc2VGb3JtYXRzLFxuICAgICAgICAgICAgJ1lZWVktTU0tREQnOiB0aGlzLm1vbnRoRmlyc3RQYXJzZUZvcm1hdHNcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gZGF0ZUZvcm1hdCA/IG1hcFtkYXRlRm9ybWF0XSA6IHRoaXMubW9udGhGaXJzdFBhcnNlRm9ybWF0cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIG1vbWVudCBwYXJzZSBmb3JtYXRzIGJhc2VkIG9uIHRoZSBnaXZlbiBkYXRlIGZvcm1hdC4gSWYgbm8gZGF0ZSBmb3JtYXQgaXNcbiAgICAgKiBnaXZlbiwgb3Igd2UgZG9uJ3QgcmVjb2duaXplIHRoZSBmb3JtYXQsIHJldHVybiB0aGUgbW9udGggZmlyc3QgcGFyc2UgZm9ybWF0cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldE1vbWVudFBhcnNlRm9ybWF0cyhkYXRlRm9ybWF0Pzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IG1hcDogRGF0ZUZvcm1hdE1hcCA9IHtcbiAgICAgICAgICAgICdNTS9ERC9ZWVlZJzogWy4uLnRoaXMubW9tZW50TW9udGhGaXJzdFBhcnNlRm9ybWF0cywgLi4udGhpcy5tb21lbnRNZWRBbmRMb25nRGF0ZUZvcm1hdHNdLFxuICAgICAgICAgICAgJ01NLURELVlZWVknOiBbLi4udGhpcy5tb21lbnRNb250aEZpcnN0UGFyc2VGb3JtYXRzLCAuLi50aGlzLm1vbWVudE1lZEFuZExvbmdEYXRlRm9ybWF0c10sXG4gICAgICAgICAgICAnREQvTU0vWVlZWSc6IFsuLi50aGlzLm1vbWVudERhdGVGaXJzdFBhcnNlRm9ybWF0cywgLi4udGhpcy5tb21lbnRNZWRBbmRMb25nRGF0ZUZvcm1hdHNdLFxuICAgICAgICAgICAgJ0RELU1NLVlZWVknOiBbLi4udGhpcy5tb21lbnREYXRlRmlyc3RQYXJzZUZvcm1hdHMsIC4uLnRoaXMubW9tZW50TWVkQW5kTG9uZ0RhdGVGb3JtYXRzXSxcbiAgICAgICAgICAgICdZWVlZL01NL0REJzogWy4uLnRoaXMubW9tZW50TW9udGhGaXJzdFBhcnNlRm9ybWF0cywgLi4udGhpcy5tb21lbnRNZWRBbmRMb25nRGF0ZUZvcm1hdHNdLFxuICAgICAgICAgICAgJ1lZWVktTU0tREQnOiBbLi4udGhpcy5tb21lbnRNb250aEZpcnN0UGFyc2VGb3JtYXRzLCAuLi50aGlzLm1vbWVudE1lZEFuZExvbmdEYXRlRm9ybWF0c11cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gZGF0ZUZvcm1hdCA/IG1hcFtkYXRlRm9ybWF0XSA6IHRoaXMubW9tZW50TW9udGhGaXJzdFBhcnNlRm9ybWF0cztcbiAgICB9XG5cblxuXG4gICAgLyoqXG4gICAgICogR2V0IHJlbGF0aW9uc2hpcCBzdGFydCBkYXRlIChmYXZvcmluZyBkYXRlIGluIHBhcnRpYWxGb3JtU3RhdGUgaWYgZXhpc3RzKVxuICAgICAqICogcmV0dXJuIGRlZmF1bHQgYWNjb3VudC1tZXRlciBlZmZlY3RpdmUgZGF0ZSBpZiBubyBzdGFydCBkYXRlIGZvdW5kXG4gICAgICogXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRBY2NvdW50TWV0ZXJTdGFydERhdGUocGFydGlhbEZvcm1TdGF0ZTogYW55LCBhY2NvdW50TWV0ZXI6IHsgc3RhcnREYXRlOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCB9KTogRGF0ZSB7XG4gICAgICAgIGxldCBzdGFydERhdGUgPSBwYXJ0aWFsRm9ybVN0YXRlLmVmZmVjdGl2ZUZyb20gfHwgYWNjb3VudE1ldGVyLnN0YXJ0RGF0ZTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0RGF0ZSA/IG5ldyBEYXRlKHN0YXJ0RGF0ZSkgOiBEYXRlVGltZUhlbHBlci5kZWZhdWx0QWNjb3VudE1ldGVyRWZmZWN0aXZlRGF0ZTtcbiAgICB9XG5cbiAgICBcbiAgICAvKipcbiAgICAgKiBHZXQgcmVsYXRpb25zaGlwIGVuZCBkYXRlIChmYXZvcmluZyBkYXRlIGluIHBhcnRpYWxGb3JtU3RhdGUgaWYgZXhpc3RzKVxuICAgICAqICogcmV0dXJuIG51bGwgaWYgbm8gc3RvcmVkIGRhdGUgb3IgZW5kIGRhdGUgaXMgMS8xLzMwMDBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEFjY291bnRNZXRlckVuZERhdGUocGFydGlhbEZvcm1TdGF0ZTogYW55LCBhY2NvdW50TWV0ZXI6IHsgZW5kRGF0ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQgfSk6IERhdGUgfCBudWxsIHtcbiAgICAgICAgbGV0IGVuZERhdGUgPSBwYXJ0aWFsRm9ybVN0YXRlLmVmZmVjdGl2ZVRvIHx8IGFjY291bnRNZXRlci5lbmREYXRlO1xuICAgICAgICBpZiAoZW5kRGF0ZSAmJiAhRGF0ZVRpbWVIZWxwZXIuaXNFbmRPZlRpbWUoZW5kRGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShlbmREYXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIHN0YXRpYyBpc0RhdGVCZXR3ZWVuKFxuICAgICAgICBkYXRlOiBEYXRlLCBcbiAgICAgICAgc3RhcnREYXRlPzogRGF0ZSB8IG51bGwsIFxuICAgICAgICBlbmREYXRlPzogRGF0ZSB8IG51bGwsIFxuICAgICAgICBpbmNsdWRlU3RhcnQ/OiBib29sZWFuLCBcbiAgICAgICAgaW5jbHVkZUVuZD86IGJvb2xlYW5cbiAgICApOmJvb2xlYW4ge1xuICAgICAgICBsZXQgaW5jbHVzaXZpdHk6ICcoKScgfCAnWyknIHwgJyhdJyB8ICdbXScgPSAnKCknO1xuICAgICAgICBpZiAoaW5jbHVkZVN0YXJ0ICYmIGluY2x1ZGVFbmQgKSB7XG4gICAgICAgICAgICBpbmNsdXNpdml0eSA9ICdbXSc7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZVN0YXJ0KSB7XG4gICAgICAgICAgICBpbmNsdXNpdml0eSA9ICdbKSc7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZUVuZCkge1xuICAgICAgICAgICAgaW5jbHVzaXZpdHkgPSAnKF0nO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgYSBzdGFydCBkYXRlIGlzIG5vdCBwcm92aWRlLCB3ZSdsbCB1c2Ugb3VyIGJlZ2lubmluZyBvZiB0aW1lIGluc3RlYWRcbiAgICAgICAgc3RhcnREYXRlID0gc3RhcnREYXRlIHx8IHRoaXMuYmVnaW5uaW5nT2ZUaW1lO1xuXG4gICAgICAgIC8vIElmIGFuIGVuZCBkYXRlIGlzIG5vdCBwcm92aWRlZCwgd2UnbGwgdXNlIG91ciBlbmQgb2YgdGltZSBpbnN0ZWFkXG4gICAgICAgIGVuZERhdGUgPSBlbmREYXRlIHx8IHRoaXMuZW5kT2ZUaW1lO1xuXG4gICAgICAgIHJldHVybiBtb21lbnQoZGF0ZSkuaXNCZXR3ZWVuKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgJ2RheScsIGluY2x1c2l2aXR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHN0cmluZ1RvRGF0ZShkYXRlU3RyaW5nOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgaWYgKGRhdGVTdHJpbmcgPT09IG51bGwgfHwgZGF0ZVN0cmluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkYXRlU3RyaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlU3RyaW5nKS50b0RhdGUoKTtcbiAgICAgIH0gICAgICBcbiAgICB9XG59Il19
@@ -1,61 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export function isApiError(errorResponse) {
4
- // errorResponse is typed HttpErrorResponse if the api returns an error
5
- if (errorResponse.error && errorResponse.error.hasOwnProperty('status') && errorResponse.error.status.hasOwnProperty('message')) {
6
- return true;
7
- }
8
- // BillCAPture APIs return errors in a different format
9
- if (errorResponse.error && errorResponse.error.hasOwnProperty('Message')) {
10
- return true;
11
- }
12
- return false;
13
- }
14
- export class ErrorService {
15
- constructor() { }
16
- /**
17
- * Parse an error that comes from the API for use inside the forms
18
- * In most cases this isn't required because the error handler will do it automatically,
19
- * but if you need to analyze the error message you can use this to extract it safely.
20
- * NOTE: Because it can be used for comparison the result is not translated. You must translate
21
- * it before providing it to the user.
22
- * @param error The error object from the API
23
- */
24
- parseApiError(errorResponse, unknownErrorDefault) {
25
- if (typeof errorResponse === 'string') {
26
- return errorResponse;
27
- }
28
- // errorResponse is typed HttpErrorResponse if the api returns an error
29
- let apiErrorMessage = unknownErrorDefault || 'DefaultUnknownError_SC';
30
- if (errorResponse && isApiError(errorResponse)) {
31
- try {
32
- apiErrorMessage = errorResponse.error.status?.message || errorResponse.error.Message;
33
- }
34
- catch (error) {
35
- //log the real error to the console (for developers) but just return the generic error to the user
36
- this.logConsoleError(error);
37
- }
38
- }
39
- else {
40
- this.logConsoleError(errorResponse);
41
- }
42
- return apiErrorMessage;
43
- }
44
- /**
45
- * Just a safe wrapper around console.error in case the browser doesn't have one exposed
46
- */
47
- logConsoleError(error) {
48
- if (console && typeof (console.error) === 'function') {
49
- console.error('unknown error:', error);
50
- }
51
- }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
53
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ErrorService, providedIn: 'root' }); }
54
- }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ErrorService, decorators: [{
56
- type: Injectable,
57
- args: [{
58
- providedIn: 'root'
59
- }]
60
- }], ctorParameters: () => [] });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL2Vycm9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxVQUFVLFVBQVUsQ0FBQyxhQUFrQjtJQUMzQyx1RUFBdUU7SUFDdkUsSUFBSSxhQUFhLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ2hJLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHVEQUF1RDtJQUN2RCxJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFLRCxNQUFNLE9BQU8sWUFBWTtJQUV2QixnQkFBZ0IsQ0FBQztJQUVqQjs7Ozs7OztPQU9HO0lBQ0ksYUFBYSxDQUFDLGFBQWtCLEVBQUUsbUJBQTRCO1FBQ25FLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEMsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztRQUVELHVFQUF1RTtRQUN2RSxJQUFJLGVBQWUsR0FBVyxtQkFBbUIsSUFBSSx3QkFBd0IsQ0FBQztRQUU5RSxJQUFJLGFBQWEsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUM7Z0JBQ0gsZUFBZSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN2RixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixrR0FBa0c7Z0JBQ2xHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZSxDQUFDLEtBQVU7UUFDL0IsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyRCxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDOytHQXpDVSxZQUFZO21IQUFaLFlBQVksY0FGWCxNQUFNOzs0RkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5leHBvcnQgZnVuY3Rpb24gaXNBcGlFcnJvcihlcnJvclJlc3BvbnNlOiBhbnkpOiBib29sZWFuIHtcbiAgLy8gZXJyb3JSZXNwb25zZSBpcyB0eXBlZCBIdHRwRXJyb3JSZXNwb25zZSBpZiB0aGUgYXBpIHJldHVybnMgYW4gZXJyb3JcbiAgaWYgKGVycm9yUmVzcG9uc2UuZXJyb3IgJiYgZXJyb3JSZXNwb25zZS5lcnJvci5oYXNPd25Qcm9wZXJ0eSgnc3RhdHVzJykgJiYgZXJyb3JSZXNwb25zZS5lcnJvci5zdGF0dXMuaGFzT3duUHJvcGVydHkoJ21lc3NhZ2UnKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gQmlsbENBUHR1cmUgQVBJcyByZXR1cm4gZXJyb3JzIGluIGEgZGlmZmVyZW50IGZvcm1hdFxuICBpZiAoZXJyb3JSZXNwb25zZS5lcnJvciAmJiBlcnJvclJlc3BvbnNlLmVycm9yLmhhc093blByb3BlcnR5KCdNZXNzYWdlJykpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRXJyb3JTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBlcnJvciB0aGF0IGNvbWVzIGZyb20gdGhlIEFQSSBmb3IgdXNlIGluc2lkZSB0aGUgZm9ybXNcbiAgICogSW4gbW9zdCBjYXNlcyB0aGlzIGlzbid0IHJlcXVpcmVkIGJlY2F1c2UgdGhlIGVycm9yIGhhbmRsZXIgd2lsbCBkbyBpdCBhdXRvbWF0aWNhbGx5LFxuICAgKiBidXQgaWYgeW91IG5lZWQgdG8gYW5hbHl6ZSB0aGUgZXJyb3IgbWVzc2FnZSB5b3UgY2FuIHVzZSB0aGlzIHRvIGV4dHJhY3QgaXQgc2FmZWx5LlxuICAgKiBOT1RFOiBCZWNhdXNlIGl0IGNhbiBiZSB1c2VkIGZvciBjb21wYXJpc29uIHRoZSByZXN1bHQgaXMgbm90IHRyYW5zbGF0ZWQuIFlvdSBtdXN0IHRyYW5zbGF0ZVxuICAgKiBpdCBiZWZvcmUgcHJvdmlkaW5nIGl0IHRvIHRoZSB1c2VyLlxuICAgKiBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIG9iamVjdCBmcm9tIHRoZSBBUElcbiAgICovXG4gIHB1YmxpYyBwYXJzZUFwaUVycm9yKGVycm9yUmVzcG9uc2U6IGFueSwgdW5rbm93bkVycm9yRGVmYXVsdD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBlcnJvclJlc3BvbnNlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGVycm9yUmVzcG9uc2U7XG4gICAgfVxuXG4gICAgLy8gZXJyb3JSZXNwb25zZSBpcyB0eXBlZCBIdHRwRXJyb3JSZXNwb25zZSBpZiB0aGUgYXBpIHJldHVybnMgYW4gZXJyb3JcbiAgICBsZXQgYXBpRXJyb3JNZXNzYWdlOiBzdHJpbmcgPSB1bmtub3duRXJyb3JEZWZhdWx0IHx8ICdEZWZhdWx0VW5rbm93bkVycm9yX1NDJztcblxuICAgIGlmIChlcnJvclJlc3BvbnNlICYmIGlzQXBpRXJyb3IoZXJyb3JSZXNwb25zZSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFwaUVycm9yTWVzc2FnZSA9IGVycm9yUmVzcG9uc2UuZXJyb3Iuc3RhdHVzPy5tZXNzYWdlIHx8IGVycm9yUmVzcG9uc2UuZXJyb3IuTWVzc2FnZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vbG9nIHRoZSByZWFsIGVycm9yIHRvIHRoZSBjb25zb2xlIChmb3IgZGV2ZWxvcGVycykgYnV0IGp1c3QgcmV0dXJuIHRoZSBnZW5lcmljIGVycm9yIHRvIHRoZSB1c2VyXG4gICAgICAgIHRoaXMubG9nQ29uc29sZUVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dDb25zb2xlRXJyb3IoZXJyb3JSZXNwb25zZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFwaUVycm9yTWVzc2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBKdXN0IGEgc2FmZSB3cmFwcGVyIGFyb3VuZCBjb25zb2xlLmVycm9yIGluIGNhc2UgdGhlIGJyb3dzZXIgZG9lc24ndCBoYXZlIG9uZSBleHBvc2VkXG4gICAqL1xuICBwdWJsaWMgbG9nQ29uc29sZUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoY29uc29sZSAmJiB0eXBlb2YgKGNvbnNvbGUuZXJyb3IpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCd1bmtub3duIGVycm9yOicsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,111 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import { convertToParamMap, NavigationEnd, NavigationStart } from "@angular/router";
3
- import { filter } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- export class RouterHelper {
6
- /**
7
- * Traverses the pathFromRoot and combines all of the route parameters into
8
- * one Params object and returns it
9
- * @param route - ActivatedRouteSnapshot
10
- * @see https://angular.io/api/router/ActivatedRouteSnapshot#pathFromRoot
11
- */
12
- getFullRouteParams(route) {
13
- const params = {};
14
- route.pathFromRoot.forEach(snapshot => {
15
- snapshot.paramMap.keys.forEach(key => {
16
- params[key] = snapshot.paramMap.get(key);
17
- });
18
- });
19
- return params;
20
- }
21
- /**
22
- * Traverses the pathFromRoot and combines all of the route paramters into
23
- * one ParamMap and returns it
24
- * @param route - ActivatedRouteSnapshot
25
- * @see https://angular.io/api/router/ActivatedRouteSnapshot#pathFromRoot
26
- */
27
- getFullRouteParamMap(route) {
28
- const params = this.getFullRouteParams(route);
29
- return convertToParamMap(params);
30
- }
31
- /**
32
- * Traverses the pathFromRoot and combines all of the route paths into
33
- * a url from root to the provided activated route.
34
- * @param route - ActivatedRouteSnapshot
35
- * @see https://angular.io/api/router/ActivatedRouteSnapshot#pathFromRoot
36
- */
37
- serializeUrlFromRoot(route) {
38
- let url = '';
39
- const paths = [];
40
- route.pathFromRoot.forEach(r => {
41
- r.url.forEach(s => {
42
- paths.push(s.path);
43
- });
44
- });
45
- url = paths.join('/');
46
- return url;
47
- }
48
- /**
49
- * Look at the first two child activated routes of a page route and combine the
50
- * url segments of each. These will contain the paths for the current view that
51
- * correspond to a primary and secondary tab. Assumes the URL structure is
52
- * /{page}/{primary}/{secondary}
53
- * @param pageRoute - The ActivatedRoute for the 'page' portion of the url. E.g. meter/:meterId
54
- */
55
- getViewUrlSegments(pageRoute) {
56
- let segments = [];
57
- const primaryViewRoute = pageRoute.firstChild;
58
- if (primaryViewRoute) {
59
- segments = segments.concat(primaryViewRoute.snapshot.url);
60
- const secondaryViewRoute = primaryViewRoute.firstChild;
61
- if (secondaryViewRoute) {
62
- segments = segments.concat(secondaryViewRoute.snapshot.url);
63
- }
64
- }
65
- return segments;
66
- }
67
- /**
68
- * Returns the 'last firstChild' of the provided route tree
69
- * @param route - ActivatedRoute
70
- */
71
- getLastRouteDescendant(route) {
72
- while (route.firstChild) {
73
- route = route.firstChild;
74
- }
75
- return route;
76
- }
77
- /**
78
- * Wrap code that will force the user to navigate based on some network call in a piece of logic that will cancel the action if there is another
79
- * navigation event while we wait for the call to complete. This is a common problem with trying to pick a default child when a user switches between modules.
80
- * @param asyncCall The async code to execute while watching for router navigation events. This code always executed and the result is returned
81
- * @param doIfNoNavigation The code to execute only if no navigation events happen while asyncCall is executing. It is passed the result of the async call
82
- * @param router The router instance to listen for navigation events.
83
- */
84
- async executeWithNavigationWatcher(asyncCall, doIfNoNavigation, router) {
85
- let eventOccurred = false;
86
- let subscription = router.events.pipe(filter(e => e instanceof NavigationStart || e instanceof NavigationEnd)).subscribe(() => {
87
- eventOccurred = true;
88
- });
89
- try {
90
- let result = await asyncCall();
91
- if (!eventOccurred) {
92
- await doIfNoNavigation(result);
93
- }
94
- subscription.unsubscribe();
95
- return result;
96
- }
97
- catch (error) {
98
- subscription.unsubscribe();
99
- throw error;
100
- }
101
- }
102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
103
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterHelper, providedIn: 'root' }); }
104
- }
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterHelper, decorators: [{
106
- type: Injectable,
107
- args: [{
108
- providedIn: 'root'
109
- }]
110
- }] });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUvcm91dGVyLWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUEwQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUF3QyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xLLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLeEMsTUFBTSxPQUFPLFlBQVk7SUFDdkI7Ozs7O09BS0c7SUFDSSxrQkFBa0IsQ0FBQyxLQUE2QjtRQUNyRCxNQUFNLE1BQU0sR0FBVyxFQUFFLENBQUM7UUFDMUIsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLG9CQUFvQixDQUFDLEtBQTZCO1FBQ3ZELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLG9CQUFvQixDQUFDLEtBQTZCO1FBQ3ZELElBQUksR0FBRyxHQUFVLEVBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQkFBa0IsQ0FBQyxTQUF5QjtRQUNqRCxJQUFJLFFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBRWhDLE1BQU0sZ0JBQWdCLEdBQTBCLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDckUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxRCxNQUFNLGtCQUFrQixHQUEwQixnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7WUFDOUUsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUN2QixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksc0JBQXNCLENBQUMsS0FBcUI7UUFDakQsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDM0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBSSxTQUEyQixFQUFFLGdCQUE4QyxFQUFFLE1BQWM7UUFDdEksSUFBSSxhQUFhLEdBQVksS0FBSyxDQUFDO1FBQ25DLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNuQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksZUFBZSxJQUFJLENBQUMsWUFBWSxhQUFhLENBQUMsQ0FDeEUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2YsYUFBYSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQztZQUNILElBQUksTUFBTSxHQUFHLE1BQU0sU0FBUyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixNQUFNLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsT0FBTyxNQUFNLENBQUM7UUFFaEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzsrR0ExR1UsWUFBWTttSEFBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBjb252ZXJ0VG9QYXJhbU1hcCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBQYXJhbU1hcCwgUGFyYW1zLCBSb3V0ZXIsIFVybFNlZ21lbnQgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlckhlbHBlciB7XG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIHBhdGhGcm9tUm9vdCBhbmQgY29tYmluZXMgYWxsIG9mIHRoZSByb3V0ZSBwYXJhbWV0ZXJzIGludG9cbiAgICogb25lIFBhcmFtcyBvYmplY3QgYW5kIHJldHVybnMgaXRcbiAgICogQHBhcmFtIHJvdXRlIC0gQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuICAgKiBAc2VlIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvcm91dGVyL0FjdGl2YXRlZFJvdXRlU25hcHNob3QjcGF0aEZyb21Sb290XG4gICAqL1xuICBwdWJsaWMgZ2V0RnVsbFJvdXRlUGFyYW1zKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXM6IFBhcmFtcyA9IHt9O1xuICAgIHJvdXRlLnBhdGhGcm9tUm9vdC5mb3JFYWNoKHNuYXBzaG90ID0+IHtcbiAgICAgIHNuYXBzaG90LnBhcmFtTWFwLmtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBwYXJhbXNba2V5XSA9IHNuYXBzaG90LnBhcmFtTWFwLmdldChrZXkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIHBhdGhGcm9tUm9vdCBhbmQgY29tYmluZXMgYWxsIG9mIHRoZSByb3V0ZSBwYXJhbXRlcnMgaW50b1xuICAgKiBvbmUgUGFyYW1NYXAgYW5kIHJldHVybnMgaXRcbiAgICogQHBhcmFtIHJvdXRlIC0gQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuICAgKiBAc2VlIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvcm91dGVyL0FjdGl2YXRlZFJvdXRlU25hcHNob3QjcGF0aEZyb21Sb290XG4gICAqL1xuICBwdWJsaWMgZ2V0RnVsbFJvdXRlUGFyYW1NYXAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBQYXJhbU1hcCB7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRGdWxsUm91dGVQYXJhbXMocm91dGUpO1xuICAgIHJldHVybiBjb252ZXJ0VG9QYXJhbU1hcChwYXJhbXMpO1xuICB9XG4gIFxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBwYXRoRnJvbVJvb3QgYW5kIGNvbWJpbmVzIGFsbCBvZiB0aGUgcm91dGUgcGF0aHMgaW50b1xuICAgKiBhIHVybCBmcm9tIHJvb3QgdG8gdGhlIHByb3ZpZGVkIGFjdGl2YXRlZCByb3V0ZS5cbiAgICogQHBhcmFtIHJvdXRlIC0gQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuICAgKiBAc2VlIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvcm91dGVyL0FjdGl2YXRlZFJvdXRlU25hcHNob3QjcGF0aEZyb21Sb290XG4gICAqL1xuICBwdWJsaWMgc2VyaWFsaXplVXJsRnJvbVJvb3Qocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xuICAgIGxldCB1cmw6c3RyaW5nID0gJyc7XG4gICAgY29uc3QgcGF0aHM6IHN0cmluZ1tdID0gW107XG4gICAgcm91dGUucGF0aEZyb21Sb290LmZvckVhY2gociA9PiB7XG4gICAgICByLnVybC5mb3JFYWNoKHMgPT4ge1xuICAgICAgICBwYXRocy5wdXNoKHMucGF0aCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB1cmwgPSBwYXRocy5qb2luKCcvJyk7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rIGF0IHRoZSBmaXJzdCB0d28gY2hpbGQgYWN0aXZhdGVkIHJvdXRlcyBvZiBhIHBhZ2Ugcm91dGUgYW5kIGNvbWJpbmUgdGhlIFxuICAgKiB1cmwgc2VnbWVudHMgb2YgZWFjaC4gVGhlc2Ugd2lsbCBjb250YWluIHRoZSBwYXRocyBmb3IgdGhlIGN1cnJlbnQgdmlldyB0aGF0XG4gICAqIGNvcnJlc3BvbmQgdG8gYSBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgdGFiLiBBc3N1bWVzIHRoZSBVUkwgc3RydWN0dXJlIGlzIFxuICAgKiAve3BhZ2V9L3twcmltYXJ5fS97c2Vjb25kYXJ5fVxuICAgKiBAcGFyYW0gcGFnZVJvdXRlIC0gVGhlIEFjdGl2YXRlZFJvdXRlIGZvciB0aGUgJ3BhZ2UnIHBvcnRpb24gb2YgdGhlIHVybC4gRS5nLiBtZXRlci86bWV0ZXJJZFxuICAgKi9cbiAgcHVibGljIGdldFZpZXdVcmxTZWdtZW50cyhwYWdlUm91dGU6IEFjdGl2YXRlZFJvdXRlKTogVXJsU2VnbWVudFtdIHtcbiAgICBsZXQgc2VnbWVudHM6IFVybFNlZ21lbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgcHJpbWFyeVZpZXdSb3V0ZTogQWN0aXZhdGVkUm91dGUgfCBudWxsID0gcGFnZVJvdXRlLmZpcnN0Q2hpbGQ7XG4gICAgaWYgKHByaW1hcnlWaWV3Um91dGUpIHtcbiAgICAgIHNlZ21lbnRzID0gc2VnbWVudHMuY29uY2F0KHByaW1hcnlWaWV3Um91dGUuc25hcHNob3QudXJsKTtcbiAgICAgIGNvbnN0IHNlY29uZGFyeVZpZXdSb3V0ZTogQWN0aXZhdGVkUm91dGUgfCBudWxsID0gcHJpbWFyeVZpZXdSb3V0ZS5maXJzdENoaWxkO1xuICAgICAgaWYgKHNlY29uZGFyeVZpZXdSb3V0ZSkge1xuICAgICAgICBzZWdtZW50cyA9IHNlZ21lbnRzLmNvbmNhdChzZWNvbmRhcnlWaWV3Um91dGUuc25hcHNob3QudXJsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2VnbWVudHM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgJ2xhc3QgZmlyc3RDaGlsZCcgb2YgdGhlIHByb3ZpZGVkIHJvdXRlIHRyZWVcbiAgICogQHBhcmFtIHJvdXRlIC0gQWN0aXZhdGVkUm91dGVcbiAgICovXG4gIHB1YmxpYyBnZXRMYXN0Um91dGVEZXNjZW5kYW50KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IEFjdGl2YXRlZFJvdXRlIHtcbiAgICB3aGlsZSAocm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgcm91dGUgPSByb3V0ZS5maXJzdENoaWxkO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICAvKipcbiAgICogV3JhcCBjb2RlIHRoYXQgd2lsbCBmb3JjZSB0aGUgdXNlciB0byBuYXZpZ2F0ZSBiYXNlZCBvbiBzb21lIG5ldHdvcmsgY2FsbCBpbiBhIHBpZWNlIG9mIGxvZ2ljIHRoYXQgd2lsbCBjYW5jZWwgdGhlIGFjdGlvbiBpZiB0aGVyZSBpcyBhbm90aGVyXG4gICAqIG5hdmlnYXRpb24gZXZlbnQgd2hpbGUgd2Ugd2FpdCBmb3IgdGhlIGNhbGwgdG8gY29tcGxldGUuIFRoaXMgaXMgYSBjb21tb24gcHJvYmxlbSB3aXRoIHRyeWluZyB0byBwaWNrIGEgZGVmYXVsdCBjaGlsZCB3aGVuIGEgdXNlciBzd2l0Y2hlcyBiZXR3ZWVuIG1vZHVsZXMuXG4gICAqIEBwYXJhbSBhc3luY0NhbGwgVGhlIGFzeW5jIGNvZGUgdG8gZXhlY3V0ZSB3aGlsZSB3YXRjaGluZyBmb3Igcm91dGVyIG5hdmlnYXRpb24gZXZlbnRzLiBUaGlzIGNvZGUgYWx3YXlzIGV4ZWN1dGVkIGFuZCB0aGUgcmVzdWx0IGlzIHJldHVybmVkXG4gICAqIEBwYXJhbSBkb0lmTm9OYXZpZ2F0aW9uIFRoZSBjb2RlIHRvIGV4ZWN1dGUgb25seSBpZiBubyBuYXZpZ2F0aW9uIGV2ZW50cyBoYXBwZW4gd2hpbGUgYXN5bmNDYWxsIGlzIGV4ZWN1dGluZy4gSXQgaXMgcGFzc2VkIHRoZSByZXN1bHQgb2YgdGhlIGFzeW5jIGNhbGxcbiAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyIGluc3RhbmNlIHRvIGxpc3RlbiBmb3IgbmF2aWdhdGlvbiBldmVudHMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZXhlY3V0ZVdpdGhOYXZpZ2F0aW9uV2F0Y2hlcjxUPihhc3luY0NhbGw6ICgpID0+IFByb21pc2U8VD4sIGRvSWZOb05hdmlnYXRpb246IChyZXN1bHQ6IFQpID0+IFByb21pc2U8dm9pZD4sIHJvdXRlcjogUm91dGVyKTogUHJvbWlzZTxUPiB7XG4gICAgbGV0IGV2ZW50T2NjdXJyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgc3Vic2NyaXB0aW9uID0gcm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCB8fCBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBldmVudE9jY3VycmVkID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYXN5bmNDYWxsKCk7XG4gICAgICBpZiAoIWV2ZW50T2NjdXJyZWQpIHtcbiAgICAgICAgYXdhaXQgZG9JZk5vTmF2aWdhdGlvbihyZXN1bHQpO1xuICAgICAgfVxuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,89 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export class ScrollService {
4
- constructor() { }
5
- /**
6
- * Given a container and the target element to scroll to, we will set the scroll top on
7
- * the container to bring the target into view.
8
- *
9
- * @param scrollContainerSelector A valid CSS selector string for the scroll container.
10
- * @param targetElementSelector A valid CSS selector string for the target element.
11
- * @param topPadding The amount of space to leave above the target
12
- * to keep it from being pinned to the top of the scrollContainer. Defaults
13
- * to 32px, the default height of a menu item.
14
- */
15
- scrollToItem(scrollContainerSelector, targetElementSelector, topPadding = 32) {
16
- let scrollContainer = document.querySelector(scrollContainerSelector);
17
- if (!scrollContainer) {
18
- return;
19
- }
20
- let targetElement = scrollContainer.querySelector(targetElementSelector);
21
- if (!targetElement) {
22
- return;
23
- }
24
- let targetRect = targetElement.getBoundingClientRect();
25
- let containerRect = scrollContainer.getBoundingClientRect();
26
- // Only scroll if the target is outside of the view bounds of the container
27
- if (targetRect.bottom > containerRect.bottom || targetRect.top < containerRect.top) {
28
- scrollContainer.scrollTop =
29
- (targetRect.top - containerRect.top) + scrollContainer.scrollTop - topPadding;
30
- }
31
- }
32
- /**
33
- * Return the value of the scrollTop property for an HTMLElement that matches the selector
34
- * @param scrollContainerSelector A valid CSS selector
35
- */
36
- getCurrentScrollPosition(scrollContainerSelector) {
37
- let scrollContainer = document.querySelector(scrollContainerSelector);
38
- if (scrollContainer) {
39
- return scrollContainer.scrollTop;
40
- }
41
- else {
42
- console.error(`Scroll container '${scrollContainerSelector}' does not exist.`);
43
- return 0;
44
- }
45
- }
46
- /**
47
- * Set the scrollTop of an HTMLElement that matches the selector to a specific position
48
- * @param scrollContainerSelector A valid CSS selector
49
- * @param position
50
- */
51
- scrollToPosition(scrollContainerSelector, position) {
52
- let scrollContainer = document.querySelector(scrollContainerSelector);
53
- if (scrollContainer) {
54
- scrollContainer.scrollTop = position;
55
- }
56
- else {
57
- console.error(`Scroll container '${scrollContainerSelector}' does not exist.`);
58
- }
59
- }
60
- /**
61
- * Given a container and the target element to scroll to, we will set the scroll top on
62
- * the container to bring the target into view, with the item in the center of the scroll container.
63
- *
64
- * @param scrollContainerSelector A valid CSS selector string for the scroll container.
65
- * @param targetElementSelector A valid CSS selector string for the target element.
66
- */
67
- scrollItemCentered(scrollContainerSelector, targetElementSelector) {
68
- try {
69
- let scrollContainer = document.querySelector(scrollContainerSelector);
70
- if (scrollContainer) {
71
- let containerHeight = scrollContainer.getBoundingClientRect().height;
72
- // Pad the top with half of the height of the container to put the target in the middle
73
- this.scrollToItem(scrollContainerSelector, targetElementSelector, containerHeight * .5);
74
- }
75
- }
76
- catch (error) {
77
- console.error(`Error scrolling target into view. Container selector: ${scrollContainerSelector}. Target selector: ${targetElementSelector}`, error);
78
- }
79
- }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
81
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollService, providedIn: 'root' }); }
82
- }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollService, decorators: [{
84
- type: Injectable,
85
- args: [{
86
- providedIn: 'root'
87
- }]
88
- }], ctorParameters: () => [] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29yZS9zY3JvbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sYUFBYTtJQUV0QixnQkFBZ0IsQ0FBQztJQUVqQjs7Ozs7Ozs7O09BU0c7SUFDSSxZQUFZLENBQUMsdUJBQStCLEVBQUUscUJBQTZCLEVBQUUsVUFBVSxHQUFHLEVBQUU7UUFDL0YsSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksYUFBYSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLFVBQVUsR0FBRyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN2RCxJQUFJLGFBQWEsR0FBRyxlQUFlLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU1RCwyRUFBMkU7UUFDM0UsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakYsZUFBZSxDQUFDLFNBQVM7Z0JBQ3JCLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7UUFDdEYsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSx3QkFBd0IsQ0FBQyx1QkFBK0I7UUFDM0QsSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEIsT0FBTyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsdUJBQXVCLG1CQUFtQixDQUFDLENBQUM7WUFDL0UsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyx1QkFBK0IsRUFBRSxRQUFnQjtRQUNyRSxJQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdEUsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNsQixlQUFlLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLHVCQUF1QixtQkFBbUIsQ0FBQyxDQUFDO1FBQ25GLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksa0JBQWtCLENBQUMsdUJBQStCLEVBQUUscUJBQTZCO1FBQ3BGLElBQUksQ0FBQztZQUNELElBQUksZUFBZSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUN0RSxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLGVBQWUsR0FBRyxlQUFlLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JFLHVGQUF1RjtnQkFDdkYsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUE7WUFDM0YsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyx5REFBeUQsdUJBQXVCLHVCQUF1QixxQkFBcUIsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pKLENBQUM7SUFDTCxDQUFDOytHQWhGUSxhQUFhO21IQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgY29udGFpbmVyIGFuZCB0aGUgdGFyZ2V0IGVsZW1lbnQgdG8gc2Nyb2xsIHRvLCB3ZSB3aWxsIHNldCB0aGUgc2Nyb2xsIHRvcCBvblxuICAgICAqICB0aGUgY29udGFpbmVyIHRvIGJyaW5nIHRoZSB0YXJnZXQgaW50byB2aWV3LlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjcm9sbENvbnRhaW5lclNlbGVjdG9yIEEgdmFsaWQgQ1NTIHNlbGVjdG9yIHN0cmluZyBmb3IgdGhlIHNjcm9sbCBjb250YWluZXIuXG4gICAgICogQHBhcmFtIHRhcmdldEVsZW1lbnRTZWxlY3RvciBBIHZhbGlkIENTUyBzZWxlY3RvciBzdHJpbmcgZm9yIHRoZSB0YXJnZXQgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0gdG9wUGFkZGluZyBUaGUgYW1vdW50IG9mIHNwYWNlIHRvIGxlYXZlIGFib3ZlIHRoZSB0YXJnZXRcbiAgICAgKiB0byBrZWVwIGl0IGZyb20gYmVpbmcgcGlubmVkIHRvIHRoZSB0b3Agb2YgdGhlIHNjcm9sbENvbnRhaW5lci4gRGVmYXVsdHNcbiAgICAgKiB0byAzMnB4LCB0aGUgZGVmYXVsdCBoZWlnaHQgb2YgYSBtZW51IGl0ZW0uXG4gICAgICovXG4gICAgcHVibGljIHNjcm9sbFRvSXRlbShzY3JvbGxDb250YWluZXJTZWxlY3Rvcjogc3RyaW5nLCB0YXJnZXRFbGVtZW50U2VsZWN0b3I6IHN0cmluZywgdG9wUGFkZGluZyA9IDMyKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JvbGxDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNjcm9sbENvbnRhaW5lclNlbGVjdG9yKTtcbiAgICAgICAgaWYgKCFzY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdGFyZ2V0RWxlbWVudCA9IHNjcm9sbENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKHRhcmdldEVsZW1lbnRTZWxlY3Rvcik7XG4gICAgICAgIGlmICghdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRhcmdldFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBsZXQgY29udGFpbmVyUmVjdCA9IHNjcm9sbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAvLyBPbmx5IHNjcm9sbCBpZiB0aGUgdGFyZ2V0IGlzIG91dHNpZGUgb2YgdGhlIHZpZXcgYm91bmRzIG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgaWYgKHRhcmdldFJlY3QuYm90dG9tID4gY29udGFpbmVyUmVjdC5ib3R0b20gfHwgdGFyZ2V0UmVjdC50b3AgPCBjb250YWluZXJSZWN0LnRvcCkge1xuICAgICAgICAgICAgc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCA9XG4gICAgICAgICAgICAgICAgKHRhcmdldFJlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3ApICsgc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCAtIHRvcFBhZGRpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBzY3JvbGxUb3AgcHJvcGVydHkgZm9yIGFuIEhUTUxFbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3JcbiAgICAgKiBAcGFyYW0gc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IgQSB2YWxpZCBDU1Mgc2VsZWN0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFNjcm9sbFBvc2l0aW9uKHNjcm9sbENvbnRhaW5lclNlbGVjdG9yOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBsZXQgc2Nyb2xsQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzY3JvbGxDb250YWluZXJTZWxlY3Rvcik7XG4gICAgICAgIGlmIChzY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBzY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgU2Nyb2xsIGNvbnRhaW5lciAnJHtzY3JvbGxDb250YWluZXJTZWxlY3Rvcn0nIGRvZXMgbm90IGV4aXN0LmApO1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHNjcm9sbFRvcCBvZiBhbiBIVE1MRWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yIHRvIGEgc3BlY2lmaWMgcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IgQSB2YWxpZCBDU1Mgc2VsZWN0b3JcbiAgICAgKiBAcGFyYW0gcG9zaXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgc2Nyb2xsVG9Qb3NpdGlvbihzY3JvbGxDb250YWluZXJTZWxlY3Rvcjogc3RyaW5nLCBwb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JvbGxDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNjcm9sbENvbnRhaW5lclNlbGVjdG9yKTtcbiAgICAgICAgaWYgKHNjcm9sbENvbnRhaW5lcikge1xuICAgICAgICAgICAgc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCA9IHBvc2l0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgU2Nyb2xsIGNvbnRhaW5lciAnJHtzY3JvbGxDb250YWluZXJTZWxlY3Rvcn0nIGRvZXMgbm90IGV4aXN0LmApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEdpdmVuIGEgY29udGFpbmVyIGFuZCB0aGUgdGFyZ2V0IGVsZW1lbnQgdG8gc2Nyb2xsIHRvLCB3ZSB3aWxsIHNldCB0aGUgc2Nyb2xsIHRvcCBvblxuICAgICAqICB0aGUgY29udGFpbmVyIHRvIGJyaW5nIHRoZSB0YXJnZXQgaW50byB2aWV3LCB3aXRoIHRoZSBpdGVtIGluIHRoZSBjZW50ZXIgb2YgdGhlIHNjcm9sbCBjb250YWluZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IgQSB2YWxpZCBDU1Mgc2VsZWN0b3Igc3RyaW5nIGZvciB0aGUgc2Nyb2xsIGNvbnRhaW5lci5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0RWxlbWVudFNlbGVjdG9yIEEgdmFsaWQgQ1NTIHNlbGVjdG9yIHN0cmluZyBmb3IgdGhlIHRhcmdldCBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBzY3JvbGxJdGVtQ2VudGVyZWQoc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZywgdGFyZ2V0RWxlbWVudFNlbGVjdG9yOiBzdHJpbmcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBzY3JvbGxDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNjcm9sbENvbnRhaW5lclNlbGVjdG9yKTtcbiAgICAgICAgICAgIGlmIChzY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29udGFpbmVySGVpZ2h0ID0gc2Nyb2xsQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgICAgICAgICAvLyBQYWQgdGhlIHRvcCB3aXRoIGhhbGYgb2YgdGhlIGhlaWdodCBvZiB0aGUgY29udGFpbmVyIHRvIHB1dCB0aGUgdGFyZ2V0IGluIHRoZSBtaWRkbGVcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvSXRlbShzY3JvbGxDb250YWluZXJTZWxlY3RvciwgdGFyZ2V0RWxlbWVudFNlbGVjdG9yLCBjb250YWluZXJIZWlnaHQgKiAuNSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHNjcm9sbGluZyB0YXJnZXQgaW50byB2aWV3LiBDb250YWluZXIgc2VsZWN0b3I6ICR7c2Nyb2xsQ29udGFpbmVyU2VsZWN0b3J9LiBUYXJnZXQgc2VsZWN0b3I6ICAke3RhcmdldEVsZW1lbnRTZWxlY3Rvcn1gLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /** Default No-op telemetry implementation */
4
- export class TelemetryTrackerService {
5
- trackPageView(pageName, url, properties) { }
6
- trackEvent(name, properties, measurements) { }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TelemetryTrackerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TelemetryTrackerService, providedIn: 'root' }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TelemetryTrackerService, decorators: [{
11
- type: Injectable,
12
- args: [{
13
- providedIn: 'root'
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LXRyYWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL3RlbGVtZXRyeS10cmFja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsNkNBQTZDO0FBQzdDLE1BQU0sT0FBTyx1QkFBdUI7SUFDM0IsYUFBYSxDQUFDLFFBQWdCLEVBQUUsR0FBVSxFQUFFLFVBQStDLElBQUksQ0FBQztJQUNoRyxVQUFVLENBQUMsSUFBWSxFQUFFLFVBQW1DLEVBQUUsWUFBb0MsSUFBSSxDQUFDOytHQUZuRyx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUh0QixNQUFNOzs0RkFHUCx1QkFBdUI7a0JBSm5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbi8qKiBEZWZhdWx0IE5vLW9wIHRlbGVtZXRyeSBpbXBsZW1lbnRhdGlvbiAqL1xuZXhwb3J0IGNsYXNzIFRlbGVtZXRyeVRyYWNrZXJTZXJ2aWNlIHtcbiAgcHVibGljIHRyYWNrUGFnZVZpZXcocGFnZU5hbWU6IHN0cmluZywgdXJsOnN0cmluZywgcHJvcGVydGllcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0pIHsgfVxuICBwdWJsaWMgdHJhY2tFdmVudChuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM/OiB7W2tleTogc3RyaW5nXTpzdHJpbmd9LCBtZWFzdXJlbWVudHM/OiB7W3ZhbDpzdHJpbmddOm51bWJlcn0pIHsgfVxufVxuIl19
@@ -1,38 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "./telemetry-tracker.service";
4
- export class TelemetryService {
5
- constructor(telemetryTrackerService) {
6
- this.telemetryTrackerService = telemetryTrackerService;
7
- }
8
- /**
9
- * Tracks a Page View / State change
10
- *
11
- * @param {string} pageName
12
- * @param {string} url
13
- * @memberof TelemetryService
14
- */
15
- trackPageView(pageName, url, properties) {
16
- this.telemetryTrackerService.trackPageView(pageName, url, properties);
17
- }
18
- /**
19
- * Tracks a generic event
20
- *
21
- * @param {string} name
22
- * @param {{[key: string]:string}} [properties]
23
- * @param {{[val:string]:number}} [measurements]
24
- * @memberof TelemetryService
25
- */
26
- trackEvent(name, properties, measurements) {
27
- this.telemetryTrackerService.trackEvent(name, properties, measurements);
28
- }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TelemetryService, deps: [{ token: i1.TelemetryTrackerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TelemetryService, providedIn: 'root' }); }
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TelemetryService, decorators: [{
33
- type: Injectable,
34
- args: [{
35
- providedIn: 'root'
36
- }]
37
- }], ctorParameters: () => [{ type: i1.TelemetryTrackerService }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29yZS90ZWxlbWV0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUFvQix1QkFBZ0Q7UUFBaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtJQUFHLENBQUM7SUFFeEU7Ozs7OztPQU1HO0lBQ0ksYUFBYSxDQUFDLFFBQWdCLEVBQUUsR0FBVSxFQUFFLFVBQStDO1FBQ2hHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFVBQVUsQ0FBQyxJQUFZLEVBQUUsVUFBbUMsRUFBRSxZQUFvQztRQUN2RyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUUsQ0FBQzsrR0F6QlUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVsZW1ldHJ5VHJhY2tlclNlcnZpY2UgfSBmcm9tICcuL3RlbGVtZXRyeS10cmFja2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbGVtZXRyeVRyYWNrZXJTZXJ2aWNlOiBUZWxlbWV0cnlUcmFja2VyU2VydmljZSkge31cblxuICAvKipcbiAgICogVHJhY2tzIGEgUGFnZSBWaWV3IC8gU3RhdGUgY2hhbmdlIFxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VOYW1lIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIFxuICAgKiBAbWVtYmVyb2YgVGVsZW1ldHJ5U2VydmljZVxuICAgKi9cbiAgcHVibGljIHRyYWNrUGFnZVZpZXcocGFnZU5hbWU6IHN0cmluZywgdXJsOnN0cmluZywgcHJvcGVydGllcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0pIHtcbiAgICB0aGlzLnRlbGVtZXRyeVRyYWNrZXJTZXJ2aWNlLnRyYWNrUGFnZVZpZXcocGFnZU5hbWUsIHVybCwgcHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogVHJhY2tzIGEgZ2VuZXJpYyBldmVudFxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgXG4gICAqIEBwYXJhbSB7e1trZXk6IHN0cmluZ106c3RyaW5nfX0gW3Byb3BlcnRpZXNdIFxuICAgKiBAcGFyYW0ge3tbdmFsOnN0cmluZ106bnVtYmVyfX0gW21lYXN1cmVtZW50c10gXG4gICAqIEBtZW1iZXJvZiBUZWxlbWV0cnlTZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgdHJhY2tFdmVudChuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM/OiB7W2tleTogc3RyaW5nXTpzdHJpbmd9LCBtZWFzdXJlbWVudHM/OiB7W3ZhbDpzdHJpbmddOm51bWJlcn0pIHtcbiAgICB0aGlzLnRlbGVtZXRyeVRyYWNrZXJTZXJ2aWNlLnRyYWNrRXZlbnQobmFtZSwgcHJvcGVydGllcywgbWVhc3VyZW1lbnRzKTtcbiAgfVxufVxuIl19