@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.
- package/fesm2022/energycap-components.mjs +379 -354
- package/fesm2022/energycap-components.mjs.map +1 -1
- package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
- package/lib/controls/date-input/date-input.component.d.ts +1 -1
- package/lib/controls/form-control-base.d.ts +1 -1
- package/lib/core/date-time-helper.d.ts +2 -2
- package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
- package/lib/display/resizable/resizable-base.d.ts +1 -1
- package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
- package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
- package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
- package/package.json +1 -3
- package/schematics/utilities/typescript.js +3 -4
- package/schematics/utilities/typescript.js.map +1 -1
- package/schematics/utilities/workspace.d.ts +0 -8
- package/schematics/utilities/workspace.js +48 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/esm2022/energycap-components.mjs +0 -5
- package/esm2022/lib/components.module.mjs +0 -425
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
- package/esm2022/lib/controls/button/button.component.mjs +0 -114
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
- package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -228
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
- package/esm2022/lib/core/telemetry.service.mjs +0 -38
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/validation-patterns.mjs +0 -31
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
- package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
- package/esm2022/lib/display/help/help-types.mjs +0 -2
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
- package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
- package/esm2022/lib/display/splash/splash.component.mjs +0 -61
- package/esm2022/lib/display/splash/splash.service.mjs +0 -35
- package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
- package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -257
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -82
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast-types.mjs +0 -8
- package/esm2022/lib/display/toast/toast.service.mjs +0 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tree/tree.component.mjs +0 -139
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
- package/esm2022/lib/shared/user-preference.service.mjs +0 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
- 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
|