@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
package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import moment from "moment";
|
|
2
|
-
import { DateInput } from "../date-input.types";
|
|
3
|
-
import { DateInputSelectionStrategyBase } from "./date-input-selection-strategy-base";
|
|
4
|
-
/**
|
|
5
|
-
* Selection strategy for the 'range' selection mode.
|
|
6
|
-
*/
|
|
7
|
-
export class RangeSelectionStrategy extends DateInputSelectionStrategyBase {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this.selectionViewMode = 'day';
|
|
11
|
-
this.validViewModes = ['day', 'month', 'year'];
|
|
12
|
-
this.showSecondaryTextbox = true;
|
|
13
|
-
this.showSecondaryCalendar = true;
|
|
14
|
-
}
|
|
15
|
-
formatSelection(selection) {
|
|
16
|
-
if (!selection) {
|
|
17
|
-
return { textbox: null, textbox2: null };
|
|
18
|
-
}
|
|
19
|
-
// We use the 'll' moment medium format here to make sure the formatted date is formatted according to the user's locale
|
|
20
|
-
if (DateInput.isSelectionSingleDate(selection)) {
|
|
21
|
-
return { textbox: moment(selection).format('ll'), textbox2: null };
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
const start = selection.start ? moment(selection.start).format('ll') : null;
|
|
25
|
-
const end = selection.end ? moment(selection.end).format('ll') : null;
|
|
26
|
-
return { textbox: start, textbox2: end };
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
parseTextboxValues(value, parseFormats, opts) {
|
|
30
|
-
let start = this.parseString(value.textbox, parseFormats, opts);
|
|
31
|
-
let end = this.parseString(value.textbox2, parseFormats, opts);
|
|
32
|
-
// If the start date is after the end date, we need to clear out the invalid date. This is different from the last 7/28 days strategies
|
|
33
|
-
// because we don't have a fixed range to automatically adjust the dates to. If the user is changing the begin date or end date and ends
|
|
34
|
-
// up crossing the other date, we should clear out the date that's not being changed so that the user can enter a valid range using the
|
|
35
|
-
// begin/end date they just entered.
|
|
36
|
-
if (start && end && moment(start).isAfter(end)) {
|
|
37
|
-
if (opts?.parseFromEnd) {
|
|
38
|
-
start = null;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
end = null;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
if (!start && !end) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
return { start, end };
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
getSelectionFromDate(date, existingSelection) {
|
|
52
|
-
if (DateInput.isSelectionRange(existingSelection)) {
|
|
53
|
-
const { start, end } = existingSelection;
|
|
54
|
-
if (start && !end) {
|
|
55
|
-
// If the selected date is before the existing start date, set it as the new start date and use the existing start date as the end date
|
|
56
|
-
return moment(date).isBefore(start) ? { start: date, end: start } : { start, end: date };
|
|
57
|
-
}
|
|
58
|
-
if (end && !start) {
|
|
59
|
-
// If the selected date is after the existing end date, set it as the new end date and use the existing end date as the start date
|
|
60
|
-
return moment(date).isBefore(end) ? { start: date, end } : { start: end, end: date };
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
else if (DateInput.isSelectionSingleDate(existingSelection)) {
|
|
64
|
-
// If the selected date is before the existing date, set it as the new start date and use the existing date as the end date
|
|
65
|
-
return moment(date).isBefore(existingSelection) ? { start: date, end: existingSelection } : { start: existingSelection, end: date };
|
|
66
|
-
}
|
|
67
|
-
// If no selection exists or we already have a complete selection, start a new one with the selected date as the start date.
|
|
68
|
-
return { start: date, end: null };
|
|
69
|
-
}
|
|
70
|
-
getNewSelectionFromExisting(previousSelection) {
|
|
71
|
-
if (DateInput.isSelectionRange(previousSelection)) {
|
|
72
|
-
// If we have a range, just return it as is. We don't have a fixed range to adjust the dates to.
|
|
73
|
-
// Even if it's incomplete, the user will still be able to select the remaining date.
|
|
74
|
-
return previousSelection;
|
|
75
|
-
}
|
|
76
|
-
else if (DateInput.isSelectionSingleDate(previousSelection)) {
|
|
77
|
-
// If we have a single date selection, use it as the start date for the new one.
|
|
78
|
-
return { start: previousSelection, end: null };
|
|
79
|
-
}
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
getSelectionForQuickSelectDate(date, existingSelection) {
|
|
83
|
-
// If we have a valid range, we'll shift the range to the date provided, using it as the end date
|
|
84
|
-
// The new selection will have the same length as the previous.
|
|
85
|
-
if (DateInput.isSelectionRange(existingSelection) && existingSelection.start && existingSelection.end) {
|
|
86
|
-
const length = moment(existingSelection.end).diff(existingSelection.start, 'days');
|
|
87
|
-
return {
|
|
88
|
-
start: moment(date).subtract(length, 'days').toDate(),
|
|
89
|
-
end: date
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
// If we only have a single date, we'll use the date provided as the end date.
|
|
93
|
-
// The user will be able to select the start date.
|
|
94
|
-
return { start: null, end: date };
|
|
95
|
-
}
|
|
96
|
-
getNextSelection(selection) {
|
|
97
|
-
// We can only determine the next selection if we have a valid range
|
|
98
|
-
if (DateInput.isSelectionRange(selection) && selection.start && selection.end) {
|
|
99
|
-
// Shift the range forward by the number of days between the start and end dates
|
|
100
|
-
const length = moment(selection.end).diff(selection.start, 'days');
|
|
101
|
-
return {
|
|
102
|
-
start: moment(selection.end).add(1, 'days').toDate(),
|
|
103
|
-
end: moment(selection.end).add(1 + length, 'days').toDate()
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
// This shouldn't happen since the next stepper is disabled if the selection only has one date.
|
|
107
|
-
// If it does, just return the selection as-is.
|
|
108
|
-
return selection;
|
|
109
|
-
}
|
|
110
|
-
getPreviousSelection(selection) {
|
|
111
|
-
// We can only determine the previous selection if we have a valid range
|
|
112
|
-
if (DateInput.isSelectionRange(selection) && selection.start && selection.end) {
|
|
113
|
-
// Shift the range back by the number of days between the start and end dates
|
|
114
|
-
const length = moment(selection.end).diff(selection.start, 'days');
|
|
115
|
-
return {
|
|
116
|
-
start: moment(selection.start).subtract(1 + length, 'days').toDate(),
|
|
117
|
-
end: moment(selection.start).subtract(1, 'days').toDate()
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
// This shouldn't happen since the previous stepper is disabled if the selection only has one date.
|
|
121
|
-
// If it does, just return the selection as-is.
|
|
122
|
-
return selection;
|
|
123
|
-
}
|
|
124
|
-
getPrimaryCalendarView(selection, minDate, maxDate, currentView) {
|
|
125
|
-
let viewDate;
|
|
126
|
-
if (DateInput.isSelectionRange(selection)) {
|
|
127
|
-
let start = selection.start ? moment(selection.start) : null;
|
|
128
|
-
let end = selection.end ? moment(selection.end) : null;
|
|
129
|
-
// Since we're in range mode, the primary calendar is mostly concerned with the start date
|
|
130
|
-
if (start) {
|
|
131
|
-
// If we have a start date in the selection and it's before the min date, shift the view to the min date.
|
|
132
|
-
if (start.isBefore(minDate, 'month')) {
|
|
133
|
-
viewDate = minDate;
|
|
134
|
-
// If the start is after the max date, shift the view to the max date.
|
|
135
|
-
}
|
|
136
|
-
else if (start.isSameOrAfter(maxDate, 'month')) {
|
|
137
|
-
// the secondary calendar will show the max date month.
|
|
138
|
-
// The primary calendar will show the month before the max date.
|
|
139
|
-
viewDate = moment(maxDate).subtract(1, 'month').toDate();
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
viewDate = start.toDate();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
else if (end && end.isSameOrBefore(minDate, 'month')) {
|
|
146
|
-
// If we don't have a start date, and the end date is the same month or before the min date, shift the view to the min date.
|
|
147
|
-
viewDate = minDate;
|
|
148
|
-
}
|
|
149
|
-
else if (end && end.isSameOrBefore(new Date(), 'month')) {
|
|
150
|
-
// If we don't have a start date, and the end date is the same month or before the current month, shift the view to the month before the end
|
|
151
|
-
viewDate = moment(end).subtract(1, 'month').toDate();
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
// Otherwise, show the current month.
|
|
155
|
-
viewDate = new Date();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
viewDate = selection || new Date();
|
|
160
|
-
}
|
|
161
|
-
// If the current calendar view mode is valid for the selection mode, use it, otherwise use the selection view mode
|
|
162
|
-
// This prevents the calendar from changing view modes as the user types/blurs the textboxes as long as the view mode is valid
|
|
163
|
-
const viewMode = this.validViewModes.includes(currentView.mode) ? currentView.mode : this.selectionViewMode;
|
|
164
|
-
return { mode: viewMode, date: viewDate };
|
|
165
|
-
}
|
|
166
|
-
getSecondaryCalendarView(selection, minDate, maxDate, currentView) {
|
|
167
|
-
let viewDate;
|
|
168
|
-
if (DateInput.isSelectionRange(selection)) {
|
|
169
|
-
let start = selection.start ? moment(selection.start) : null;
|
|
170
|
-
let end = selection.end ? moment(selection.end) : null;
|
|
171
|
-
// The secondary calendar is primarily concerned with the end date in the selection.
|
|
172
|
-
if (end) {
|
|
173
|
-
if (end.isAfter(maxDate, 'month')) {
|
|
174
|
-
// If the end date is after the max date, shift the view to the max date.
|
|
175
|
-
viewDate = maxDate;
|
|
176
|
-
}
|
|
177
|
-
else if (end.isSameOrBefore(minDate, 'month')) {
|
|
178
|
-
// If the end date is the same month or before the min date, shift the view to show
|
|
179
|
-
// the month after the min date. The primary calendar will show the min date month.
|
|
180
|
-
viewDate = moment(minDate).add(1, 'month').toDate();
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
// Otherwise, show the end date month.
|
|
184
|
-
viewDate = end.toDate();
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
else if (start && start.isSameOrAfter(maxDate, 'month')) {
|
|
188
|
-
// If we don't have an end date, and the start date is after the max date, show the max date month
|
|
189
|
-
viewDate = maxDate;
|
|
190
|
-
}
|
|
191
|
-
else if (start && start.isSameOrAfter(new Date(), 'month')) {
|
|
192
|
-
// If we don't have an end date, and the start date is on or after the current month,
|
|
193
|
-
// show the month after the start date.
|
|
194
|
-
viewDate = moment(start).add(1, 'month').toDate();
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
// Otherwise, show the current month.
|
|
198
|
-
viewDate = new Date();
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
viewDate = selection || new Date();
|
|
203
|
-
}
|
|
204
|
-
// If the current calendar view mode is valid for the selection mode, use it, otherwise use the selection view mode
|
|
205
|
-
// This prevents the calendar from changing view modes as the user types/blurs the textboxes as long as the view mode is valid
|
|
206
|
-
const viewMode = this.validViewModes.includes(currentView.mode) ? currentView.mode : this.selectionViewMode;
|
|
207
|
-
return { mode: viewMode, date: viewDate };
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0aW9uLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC1zZWxlY3Rpb24tc3RyYXRlZ2llcy9yYW5nZS1zZWxlY3Rpb24tc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0Rjs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSw4QkFBOEI7SUFBMUU7O1FBQ2tCLHNCQUFpQixHQUFzQixLQUFLLENBQUM7UUFDN0MsbUJBQWMsR0FBd0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7SUEyTS9DLENBQUM7SUF6TUMsZUFBZSxDQUFDLFNBQXNDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzQyxDQUFDO1FBRUQsd0hBQXdIO1FBQ3hILElBQUksU0FBUyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNyRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxL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LE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BELENBQUM7aUJBQU0sQ0FBQztnQkFDTixxQ0FBcUM7Z0JBQ3JDLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLFFBQVEsR0FBRyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBRUQsbUhBQW1IO1FBQ25ILDhIQUE4SDtRQUM5SCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUU1RyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDNUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gXCIuLi8uLi9jYWxlbmRhci9jYWxlbmRhci50eXBlc1wiO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSBcIi4uL2RhdGUtaW5wdXQudHlwZXNcIjtcbmltcG9ydCB7IERhdGVJbnB1dFNlbGVjdGlvblN0cmF0ZWd5QmFzZSB9IGZyb20gXCIuL2RhdGUtaW5wdXQtc2VsZWN0aW9uLXN0cmF0ZWd5LWJhc2VcIjtcblxuLyoqXG4gKiBTZWxlY3Rpb24gc3RyYXRlZ3kgZm9yIHRoZSAncmFuZ2UnIHNlbGVjdGlvbiBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgUmFuZ2VTZWxlY3Rpb25TdHJhdGVneSBleHRlbmRzIERhdGVJbnB1dFNlbGVjdGlvblN0cmF0ZWd5QmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25WaWV3TW9kZTogQ2FsZW5kYXIuVmlld01vZGUgPSAnZGF5JztcbiAgcHVibGljIHJlYWRvbmx5IHZhbGlkVmlld01vZGVzOiBDYWxlbmRhci5WaWV3TW9kZVtdID0gWydkYXknLCAnbW9udGgnLCAneWVhciddO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1NlY29uZGFyeVRleHRib3ggPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1NlY29uZGFyeUNhbGVuZGFyID0gdHJ1ZTtcblxuICBmb3JtYXRTZWxlY3Rpb24oc2VsZWN0aW9uPzogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwpOiBEYXRlSW5wdXQuVGV4dGJveEdyb3VwWyd2YWx1ZSddIHtcbiAgICBpZiAoIXNlbGVjdGlvbikge1xuICAgICAgcmV0dXJuIHsgdGV4dGJveDogbnVsbCwgdGV4dGJveDI6IG51bGwgfTtcbiAgICB9XG5cbiAgICAvLyBXZSB1c2UgdGhlICdsbCcgbW9tZW50IG1lZGl1bSBmb3JtYXQgaGVyZSB0byBtYWtlIHN1cmUgdGhlIGZvcm1hdHRlZCBkYXRlIGlzIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyBsb2NhbGVcbiAgICBpZiAoRGF0ZUlucHV0LmlzU2VsZWN0aW9uU2luZ2xlRGF0ZShzZWxlY3Rpb24pKSB7XG4gICAgICByZXR1cm4geyB0ZXh0Ym94OiBtb21lbnQoc2VsZWN0aW9uKS5mb3JtYXQoJ2xsJyksIHRleHRib3gyOiBudWxsIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0ID8gbW9tZW50KHNlbGVjdGlvbi5zdGFydCkuZm9ybWF0KCdsbCcpIDogbnVsbDtcbiAgICAgIGNvbnN0IGVuZCA9IHNlbGVjdGlvbi5lbmQgPyBtb21lbnQoc2VsZWN0aW9uLmVuZCkuZm9ybWF0KCdsbCcpIDogbnVsbDtcblxuICAgICAgcmV0dXJuIHsgdGV4dGJveDogc3RhcnQsIHRleHRib3gyOiBlbmQgfTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVRleHRib3hWYWx1ZXModmFsdWU6IERhdGVJbnB1dC5UZXh0Ym94R3JvdXBbJ3ZhbHVlJ10sIHBhcnNlRm9ybWF0czogc3RyaW5nW10sIG9wdHM/OiBEYXRlSW5wdXQuUGFyc2luZ09wdGlvbnMpOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCB7XG4gICAgbGV0IHN0YXJ0ID0gdGhpcy5wYXJzZVN0cmluZyh2YWx1ZS50ZXh0Ym94LCBwYXJzZUZvcm1hdHMsIG9wdHMpO1xuICAgIGxldCBlbmQgPSB0aGlzLnBhcnNlU3RyaW5nKHZhbHVlLnRleHRib3gyLCBwYXJzZUZvcm1hdHMsIG9wdHMpO1xuXG4gICAgLy8gSWYgdGhlIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgdGhlIGVuZCBkYXRlLCB3ZSBuZWVkIHRvIGNsZWFyIG91dCB0aGUgaW52YWxpZCBkYXRlLiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBsYXN0IDcvMjggZGF5cyBzdHJhdGVnaWVzXG4gICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGEgZml4ZWQgcmFuZ2UgdG8gYXV0b21hdGljYWxseSBhZGp1c3QgdGhlIGRhdGVzIHRvLiBJZiB0aGUgdXNlciBpcyBjaGFuZ2luZyB0aGUgYmVnaW4gZGF0ZSBvciBlbmQgZGF0ZSBhbmQgZW5kc1xuICAgIC8vIHVwIGNyb3NzaW5nIHRoZSBvdGhlciBkYXRlLCB3ZSBzaG91bGQgY2xlYXIgb3V0IHRoZSBkYXRlIHRoYXQncyBub3QgYmVpbmcgY2hhbmdlZCBzbyB0aGF0IHRoZSB1c2VyIGNhbiBlbnRlciBhIHZhbGlkIHJhbmdlIHVzaW5nIHRoZVxuICAgIC8vIGJlZ2luL2VuZCBkYXRlIHRoZXkganVzdCBlbnRlcmVkLlxuICAgIGlmIChzdGFydCAmJiBlbmQgJiYgbW9tZW50KHN0YXJ0KS5pc0FmdGVyKGVuZCkpIHtcbiAgICAgIGlmIChvcHRzPy5wYXJzZUZyb21FbmQpIHtcbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXN0YXJ0ICYmICFlbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBzdGFydCwgZW5kIH07XG4gICAgfVxuICB9XG5cbiAgZ2V0U2VsZWN0aW9uRnJvbURhdGUoZGF0ZTogRGF0ZSwgZXhpc3RpbmdTZWxlY3Rpb246IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsKTogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwge1xuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShleGlzdGluZ1NlbGVjdGlvbikpIHtcbiAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gZXhpc3RpbmdTZWxlY3Rpb247XG4gICAgICBpZiAoc3RhcnQgJiYgIWVuZCkge1xuICAgICAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgZGF0ZSBpcyBiZWZvcmUgdGhlIGV4aXN0aW5nIHN0YXJ0IGRhdGUsIHNldCBpdCBhcyB0aGUgbmV3IHN0YXJ0IGRhdGUgYW5kIHVzZSB0aGUgZXhpc3Rpbmcgc3RhcnQgZGF0ZSBhcyB0aGUgZW5kIGRhdGVcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc0JlZm9yZShzdGFydCkgPyB7IHN0YXJ0OiBkYXRlLCBlbmQ6IHN0YXJ0IH0gOiB7IHN0YXJ0LCBlbmQ6IGRhdGUgfTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmQgJiYgIXN0YXJ0KSB7XG4gICAgICAgIC8vIElmIHRoZSBzZWxlY3RlZCBkYXRlIGlzIGFmdGVyIHRoZSBleGlzdGluZyBlbmQgZGF0ZSwgc2V0IGl0IGFzIHRoZSBuZXcgZW5kIGRhdGUgYW5kIHVzZSB0aGUgZXhpc3RpbmcgZW5kIGRhdGUgYXMgdGhlIHN0YXJ0IGRhdGVcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc0JlZm9yZShlbmQpID8geyBzdGFydDogZGF0ZSwgZW5kIH0gOiB7IHN0YXJ0OiBlbmQsIGVuZDogZGF0ZSB9O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRGF0ZUlucHV0LmlzU2VsZWN0aW9uU2luZ2xlRGF0ZShleGlzdGluZ1NlbGVjdGlvbikpIHtcbiAgICAgIC8vIElmIHRoZSBzZWxlY3RlZCBkYXRlIGlzIGJlZm9yZSB0aGUgZXhpc3RpbmcgZGF0ZSwgc2V0IGl0IGFzIHRoZSBuZXcgc3RhcnQgZGF0ZSBhbmQgdXNlIHRoZSBleGlzdGluZyBkYXRlIGFzIHRoZSBlbmQgZGF0ZVxuICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc0JlZm9yZShleGlzdGluZ1NlbGVjdGlvbikgPyB7IHN0YXJ0OiBkYXRlLCBlbmQ6IGV4aXN0aW5nU2VsZWN0aW9uIH0gOiB7IHN0YXJ0OiBleGlzdGluZ1NlbGVjdGlvbiwgZW5kOiBkYXRlIH07XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gc2VsZWN0aW9uIGV4aXN0cyBvciB3ZSBhbHJlYWR5IGhhdmUgYSBjb21wbGV0ZSBzZWxlY3Rpb24sIHN0YXJ0IGEgbmV3IG9uZSB3aXRoIHRoZSBzZWxlY3RlZCBkYXRlIGFzIHRoZSBzdGFydCBkYXRlLlxuICAgIHJldHVybiB7IHN0YXJ0OiBkYXRlLCBlbmQ6IG51bGwgfTtcbiAgfVxuXG4gIGdldE5ld1NlbGVjdGlvbkZyb21FeGlzdGluZyhwcmV2aW91c1NlbGVjdGlvbj86IERhdGVJbnB1dC5TZWxlY3Rpb24pOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCB7XG4gICAgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblJhbmdlKHByZXZpb3VzU2VsZWN0aW9uKSkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBhIHJhbmdlLCBqdXN0IHJldHVybiBpdCBhcyBpcy4gV2UgZG9uJ3QgaGF2ZSBhIGZpeGVkIHJhbmdlIHRvIGFkanVzdCB0aGUgZGF0ZXMgdG8uXG4gICAgICAvLyBFdmVuIGlmIGl0J3MgaW5jb21wbGV0ZSwgdGhlIHVzZXIgd2lsbCBzdGlsbCBiZSBhYmxlIHRvIHNlbGVjdCB0aGUgcmVtYWluaW5nIGRhdGUuXG4gICAgICByZXR1cm4gcHJldmlvdXNTZWxlY3Rpb247XG4gICAgfSBlbHNlIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25TaW5nbGVEYXRlKHByZXZpb3VzU2VsZWN0aW9uKSkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBhIHNpbmdsZSBkYXRlIHNlbGVjdGlvbiwgdXNlIGl0IGFzIHRoZSBzdGFydCBkYXRlIGZvciB0aGUgbmV3IG9uZS5cbiAgICAgIHJldHVybiB7IHN0YXJ0OiBwcmV2aW91c1NlbGVjdGlvbiwgZW5kOiBudWxsIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRTZWxlY3Rpb25Gb3JRdWlja1NlbGVjdERhdGUoZGF0ZTogRGF0ZSwgZXhpc3RpbmdTZWxlY3Rpb24/OiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCk6IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsIHtcbiAgICAvLyBJZiB3ZSBoYXZlIGEgdmFsaWQgcmFuZ2UsIHdlJ2xsIHNoaWZ0IHRoZSByYW5nZSB0byB0aGUgZGF0ZSBwcm92aWRlZCwgdXNpbmcgaXQgYXMgdGhlIGVuZCBkYXRlXG4gICAgLy8gVGhlIG5ldyBzZWxlY3Rpb24gd2lsbCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgcHJldmlvdXMuXG4gICAgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblJhbmdlKGV4aXN0aW5nU2VsZWN0aW9uKSAmJiBleGlzdGluZ1NlbGVjdGlvbi5zdGFydCAmJiBleGlzdGluZ1NlbGVjdGlvbi5lbmQpIHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IG1vbWVudChleGlzdGluZ1NlbGVjdGlvbi5lbmQpLmRpZmYoZXhpc3RpbmdTZWxlY3Rpb24uc3RhcnQsICdkYXlzJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogbW9tZW50KGRhdGUpLnN1YnRyYWN0KGxlbmd0aCwgJ2RheXMnKS50b0RhdGUoKSxcbiAgICAgICAgZW5kOiBkYXRlXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIElmIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBkYXRlLCB3ZSdsbCB1c2UgdGhlIGRhdGUgcHJvdmlkZWQgYXMgdGhlIGVuZCBkYXRlLlxuICAgIC8vIFRoZSB1c2VyIHdpbGwgYmUgYWJsZSB0byBzZWxlY3QgdGhlIHN0YXJ0IGRhdGUuXG4gICAgcmV0dXJuIHsgc3RhcnQ6IG51bGwsIGVuZDogZGF0ZSB9O1xuICB9XG5cbiAgZ2V0TmV4dFNlbGVjdGlvbihzZWxlY3Rpb246IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsKTogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwge1xuICAgIC8vIFdlIGNhbiBvbmx5IGRldGVybWluZSB0aGUgbmV4dCBzZWxlY3Rpb24gaWYgd2UgaGF2ZSBhIHZhbGlkIHJhbmdlXG4gICAgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblJhbmdlKHNlbGVjdGlvbikgJiYgc2VsZWN0aW9uLnN0YXJ0ICYmIHNlbGVjdGlvbi5lbmQpIHtcbiAgICAgIC8vIFNoaWZ0IHRoZSByYW5nZSBmb3J3YXJkIGJ5IHRoZSBudW1iZXIgb2YgZGF5cyBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzXG4gICAgICBjb25zdCBsZW5ndGggPSBtb21lbnQoc2VsZWN0aW9uLmVuZCkuZGlmZihzZWxlY3Rpb24uc3RhcnQsICdkYXlzJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogbW9tZW50KHNlbGVjdGlvbi5lbmQpLmFkZCgxLCAnZGF5cycpLnRvRGF0ZSgpLFxuICAgICAgICBlbmQ6IG1vbWVudChzZWxlY3Rpb24uZW5kKS5hZGQoMSArIGxlbmd0aCwgJ2RheXMnKS50b0RhdGUoKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gc2luY2UgdGhlIG5leHQgc3RlcHBlciBpcyBkaXNhYmxlZCBpZiB0aGUgc2VsZWN0aW9uIG9ubHkgaGFzIG9uZSBkYXRlLlxuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSBzZWxlY3Rpb24gYXMtaXMuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGdldFByZXZpb3VzU2VsZWN0aW9uKHNlbGVjdGlvbjogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwpOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCB7XG4gICAgLy8gV2UgY2FuIG9ubHkgZGV0ZXJtaW5lIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24gaWYgd2UgaGF2ZSBhIHZhbGlkIHJhbmdlXG4gICAgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblJhbmdlKHNlbGVjdGlvbikgJiYgc2VsZWN0aW9uLnN0YXJ0ICYmIHNlbGVjdGlvbi5lbmQpIHtcbiAgICAgIC8vIFNoaWZ0IHRoZSByYW5nZSBiYWNrIGJ5IHRoZSBudW1iZXIgb2YgZGF5cyBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzXG4gICAgICBjb25zdCBsZW5ndGggPSBtb21lbnQoc2VsZWN0aW9uLmVuZCkuZGlmZihzZWxlY3Rpb24uc3RhcnQsICdkYXlzJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogbW9tZW50KHNlbGVjdGlvbi5zdGFydCkuc3VidHJhY3QoMSArIGxlbmd0aCwgJ2RheXMnKS50b0RhdGUoKSxcbiAgICAgICAgZW5kOiBtb21lbnQoc2VsZWN0aW9uLnN0YXJ0KS5zdWJ0cmFjdCgxLCAnZGF5cycpLnRvRGF0ZSgpXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBzaW5jZSB0aGUgcHJldmlvdXMgc3RlcHBlciBpcyBkaXNhYmxlZCBpZiB0aGUgc2VsZWN0aW9uIG9ubHkgaGFzIG9uZSBkYXRlLlxuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSBzZWxlY3Rpb24gYXMtaXMuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGdldFByaW1hcnlDYWxlbmRhclZpZXcoc2VsZWN0aW9uOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCwgbWluRGF0ZTogRGF0ZSwgbWF4RGF0ZTogRGF0ZSwgY3VycmVudFZpZXc6IENhbGVuZGFyLlZpZXcpOiBDYWxlbmRhci5WaWV3IHtcbiAgICBsZXQgdmlld0RhdGU6IERhdGU7XG4gICAgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblJhbmdlKHNlbGVjdGlvbikpIHtcbiAgICAgIGxldCBzdGFydCA9IHNlbGVjdGlvbi5zdGFydCA/IG1vbWVudChzZWxlY3Rpb24uc3RhcnQpIDogbnVsbDtcbiAgICAgIGxldCBlbmQgPSBzZWxlY3Rpb24uZW5kID8gbW9tZW50KHNlbGVjdGlvbi5lbmQpIDogbnVsbDtcblxuICAgICAgLy8gU2luY2Ugd2UncmUgaW4gcmFuZ2UgbW9kZSwgdGhlIHByaW1hcnkgY2FsZW5kYXIgaXMgbW9zdGx5IGNvbmNlcm5lZCB3aXRoIHRoZSBzdGFydCBkYXRlXG4gICAgICBpZiAoc3RhcnQpIHtcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHN0YXJ0IGRhdGUgaW4gdGhlIHNlbGVjdGlvbiBhbmQgaXQncyBiZWZvcmUgdGhlIG1pbiBkYXRlLCBzaGlmdCB0aGUgdmlldyB0byB0aGUgbWluIGRhdGUuXG4gICAgICAgIGlmIChzdGFydC5pc0JlZm9yZShtaW5EYXRlLCAnbW9udGgnKSkge1xuICAgICAgICAgIHZpZXdEYXRlID0gbWluRGF0ZTtcbiAgICAgICAgICAvLyBJZiB0aGUgc3RhcnQgaXMgYWZ0ZXIgdGhlIG1heCBkYXRlLCBzaGlmdCB0aGUgdmlldyB0byB0aGUgbWF4IGRhdGUuXG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQuaXNTYW1lT3JBZnRlcihtYXhEYXRlLCAnbW9udGgnKSkge1xuICAgICAgICAgIC8vIHRoZSBzZWNvbmRhcnkgY2FsZW5kYXIgd2lsbCBzaG93IHRoZSBtYXggZGF0ZSBtb250aC5cbiAgICAgICAgICAvLyBUaGUgcHJpbWFyeSBjYWxlbmRhciB3aWxsIHNob3cgdGhlIG1vbnRoIGJlZm9yZSB0aGUgbWF4IGRhdGUuXG4gICAgICAgICAgdmlld0RhdGUgPSBtb21lbnQobWF4RGF0ZSkuc3VidHJhY3QoMSwgJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlld0RhdGUgPSBzdGFydC50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbmQgJiYgZW5kLmlzU2FtZU9yQmVmb3JlKG1pbkRhdGUsICdtb250aCcpKSB7XG4gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzdGFydCBkYXRlLCBhbmQgdGhlIGVuZCBkYXRlIGlzIHRoZSBzYW1lIG1vbnRoIG9yIGJlZm9yZSB0aGUgbWluIGRhdGUsIHNoaWZ0IHRoZSB2aWV3IHRvIHRoZSBtaW4gZGF0ZS5cbiAgICAgICAgdmlld0RhdGUgPSBtaW5EYXRlO1xuICAgICAgfSBlbHNlIGlmIChlbmQgJiYgZW5kLmlzU2FtZU9yQmVmb3JlKG5ldyBEYXRlKCksICdtb250aCcpKSB7XG4gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzdGFydCBkYXRlLCBhbmQgdGhlIGVuZCBkYXRlIGlzIHRoZSBzYW1lIG1vbnRoIG9yIGJlZm9yZSB0aGUgY3VycmVudCBtb250aCwgc2hpZnQgdGhlIHZpZXcgdG8gdGhlIG1vbnRoIGJlZm9yZSB0aGUgZW5kXG4gICAgICAgIHZpZXdEYXRlID0gbW9tZW50KGVuZCkuc3VidHJhY3QoMSwgJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UsIHNob3cgdGhlIGN1cnJlbnQgbW9udGguXG4gICAgICAgIHZpZXdEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmlld0RhdGUgPSBzZWxlY3Rpb24gfHwgbmV3IERhdGUoKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudCBjYWxlbmRhciB2aWV3IG1vZGUgaXMgdmFsaWQgZm9yIHRoZSBzZWxlY3Rpb24gbW9kZSwgdXNlIGl0LCBvdGhlcndpc2UgdXNlIHRoZSBzZWxlY3Rpb24gdmlldyBtb2RlXG4gICAgLy8gVGhpcyBwcmV2ZW50cyB0aGUgY2FsZW5kYXIgZnJvbSBjaGFuZ2luZyB2aWV3IG1vZGVzIGFzIHRoZSB1c2VyIHR5cGVzL2JsdXJzIHRoZSB0ZXh0Ym94ZXMgYXMgbG9uZyBhcyB0aGUgdmlldyBtb2RlIGlzIHZhbGlkXG4gICAgY29uc3Qgdmlld01vZGUgPSB0aGlzLnZhbGlkVmlld01vZGVzLmluY2x1ZGVzKGN1cnJlbnRWaWV3Lm1vZGUpID8gY3VycmVudFZpZXcubW9kZSA6IHRoaXMuc2VsZWN0aW9uVmlld01vZGU7XG5cbiAgICByZXR1cm4geyBtb2RlOiB2aWV3TW9kZSwgZGF0ZTogdmlld0RhdGUgfTtcbiAgfVxuXG4gIGdldFNlY29uZGFyeUNhbGVuZGFyVmlldyhzZWxlY3Rpb246IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsLCBtaW5EYXRlOiBEYXRlLCBtYXhEYXRlOiBEYXRlLCBjdXJyZW50VmlldzogQ2FsZW5kYXIuVmlldyk6IENhbGVuZGFyLlZpZXcge1xuICAgIGxldCB2aWV3RGF0ZTogRGF0ZTtcblxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb24pKSB7XG4gICAgICBsZXQgc3RhcnQgPSBzZWxlY3Rpb24uc3RhcnQgPyBtb21lbnQoc2VsZWN0aW9uLnN0YXJ0KSA6IG51bGw7XG4gICAgICBsZXQgZW5kID0gc2VsZWN0aW9uLmVuZCA/IG1vbWVudChzZWxlY3Rpb24uZW5kKSA6IG51bGw7XG5cbiAgICAgIC8vIFRoZSBzZWNvbmRhcnkgY2FsZW5kYXIgaXMgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIHRoZSBlbmQgZGF0ZSBpbiB0aGUgc2VsZWN0aW9uLlxuICAgICAgaWYgKGVuZCkge1xuICAgICAgICBpZiAoZW5kLmlzQWZ0ZXIobWF4RGF0ZSwgJ21vbnRoJykpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZW5kIGRhdGUgaXMgYWZ0ZXIgdGhlIG1heCBkYXRlLCBzaGlmdCB0aGUgdmlldyB0byB0aGUgbWF4IGRhdGUuXG4gICAgICAgICAgdmlld0RhdGUgPSBtYXhEYXRlO1xuICAgICAgICB9IGVsc2UgaWYgKGVuZC5pc1NhbWVPckJlZm9yZShtaW5EYXRlLCAnbW9udGgnKSkge1xuICAgICAgICAgIC8vIElmIHRoZSBlbmQgZGF0ZSBpcyB0aGUgc2FtZSBtb250aCBvciBiZWZvcmUgdGhlIG1pbiBkYXRlLCBzaGlmdCB0aGUgdmlldyB0byBzaG93XG4gICAgICAgICAgLy8gdGhlIG1vbnRoIGFmdGVyIHRoZSBtaW4gZGF0ZS4gVGhlIHByaW1hcnkgY2FsZW5kYXIgd2lsbCBzaG93IHRoZSBtaW4gZGF0ZSBtb250aC5cbiAgICAgICAgICB2aWV3RGF0ZSA9IG1vbWVudChtaW5EYXRlKS5hZGQoMSwgJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlLCBzaG93IHRoZSBlbmQgZGF0ZSBtb250aC5cbiAgICAgICAgICB2aWV3RGF0ZSA9IGVuZC50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdGFydCAmJiBzdGFydC5pc1NhbWVPckFmdGVyKG1heERhdGUsICdtb250aCcpKSB7XG4gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYW4gZW5kIGRhdGUsIGFuZCB0aGUgc3RhcnQgZGF0ZSBpcyBhZnRlciB0aGUgbWF4IGRhdGUsIHNob3cgdGhlIG1heCBkYXRlIG1vbnRoXG4gICAgICAgIHZpZXdEYXRlID0gbWF4RGF0ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQgJiYgc3RhcnQuaXNTYW1lT3JBZnRlcihuZXcgRGF0ZSgpLCAnbW9udGgnKSkge1xuICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFuIGVuZCBkYXRlLCBhbmQgdGhlIHN0YXJ0IGRhdGUgaXMgb24gb3IgYWZ0ZXIgdGhlIGN1cnJlbnQgbW9udGgsXG4gICAgICAgIC8vIHNob3cgdGhlIG1vbnRoIGFmdGVyIHRoZSBzdGFydCBkYXRlLlxuICAgICAgICB2aWV3RGF0ZSA9IG1vbWVudChzdGFydCkuYWRkKDEsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBzaG93IHRoZSBjdXJyZW50IG1vbnRoLlxuICAgICAgICB2aWV3RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZpZXdEYXRlID0gc2VsZWN0aW9uIHx8IG5ldyBEYXRlKCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgY2FsZW5kYXIgdmlldyBtb2RlIGlzIHZhbGlkIGZvciB0aGUgc2VsZWN0aW9uIG1vZGUsIHVzZSBpdCwgb3RoZXJ3aXNlIHVzZSB0aGUgc2VsZWN0aW9uIHZpZXcgbW9kZVxuICAgIC8vIFRoaXMgcHJldmVudHMgdGhlIGNhbGVuZGFyIGZyb20gY2hhbmdpbmcgdmlldyBtb2RlcyBhcyB0aGUgdXNlciB0eXBlcy9ibHVycyB0aGUgdGV4dGJveGVzIGFzIGxvbmcgYXMgdGhlIHZpZXcgbW9kZSBpcyB2YWxpZFxuICAgIGNvbnN0IHZpZXdNb2RlID0gdGhpcy52YWxpZFZpZXdNb2Rlcy5pbmNsdWRlcyhjdXJyZW50Vmlldy5tb2RlKSA/IGN1cnJlbnRWaWV3Lm1vZGUgOiB0aGlzLnNlbGVjdGlvblZpZXdNb2RlO1xuXG4gICAgcmV0dXJuIHsgbW9kZTogdmlld01vZGUsIGRhdGU6IHZpZXdEYXRlIH07XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import moment from "moment";
|
|
2
|
-
import { DateInput } from "../date-input.types";
|
|
3
|
-
import { DateInputSelectionStrategyBase } from "./date-input-selection-strategy-base";
|
|
4
|
-
/**
|
|
5
|
-
* Selection strategy for the 'year' selection mode.
|
|
6
|
-
*/
|
|
7
|
-
export class YearSelectionStrategy extends DateInputSelectionStrategyBase {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this.selectionViewMode = 'year';
|
|
11
|
-
this.validViewModes = ['year'];
|
|
12
|
-
this.showSecondaryTextbox = false;
|
|
13
|
-
this.showSecondaryCalendar = false;
|
|
14
|
-
}
|
|
15
|
-
formatSelection(selection) {
|
|
16
|
-
if (!selection) {
|
|
17
|
-
return { textbox: null, textbox2: null };
|
|
18
|
-
}
|
|
19
|
-
// Only one date is needed for formatting since the ranges span a single year.
|
|
20
|
-
// There shouldn't be any case where there's only a single date but it's covered anyway.
|
|
21
|
-
const date = DateInput.isSelectionRange(selection) ? selection.start : selection;
|
|
22
|
-
return { textbox: moment(date).format('YYYY'), textbox2: null };
|
|
23
|
-
}
|
|
24
|
-
parseString(value, parseFormats, opts) {
|
|
25
|
-
// Including 'YY' and 'YYYY' as valid formats for year input. These aren't included in the default parse
|
|
26
|
-
// formats because they cause issues with the default date parsing.
|
|
27
|
-
return super.parseString(value, ['YY', 'YYYY', ...parseFormats], opts);
|
|
28
|
-
}
|
|
29
|
-
parseTextboxValues(value, parseFormats, opts) {
|
|
30
|
-
// Only a single textbox is used in year mode
|
|
31
|
-
const date = this.parseString(value.textbox, parseFormats, opts);
|
|
32
|
-
if (!date) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
return this.getSelectionFromDate(date);
|
|
36
|
-
}
|
|
37
|
-
getSelectionFromDate(date) {
|
|
38
|
-
return {
|
|
39
|
-
start: moment(date).startOf('year').toDate(),
|
|
40
|
-
end: moment(date).endOf('year').toDate()
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
getNewSelectionFromExisting(previousSelection) {
|
|
44
|
-
if (DateInput.isSelectionRange(previousSelection)) {
|
|
45
|
-
// Base the year range off of the existing selection's end date, falling back to the start date
|
|
46
|
-
const date = previousSelection.end || previousSelection.start;
|
|
47
|
-
if (date) {
|
|
48
|
-
return this.getSelectionFromDate(date);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else if (DateInput.isSelectionSingleDate(previousSelection)) {
|
|
52
|
-
// If the previous selection was a single date, make the range that year
|
|
53
|
-
return this.getSelectionFromDate(previousSelection);
|
|
54
|
-
}
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
getSelectionForQuickSelectDate(date) {
|
|
58
|
-
return this.getSelectionFromDate(date);
|
|
59
|
-
}
|
|
60
|
-
getNextSelection(selection) {
|
|
61
|
-
// Move the selection to the next year
|
|
62
|
-
if (DateInput.isSelectionRange(selection) && selection.start) {
|
|
63
|
-
const date = moment(selection.start).add(1, 'year');
|
|
64
|
-
return this.getSelectionFromDate(date.toDate());
|
|
65
|
-
}
|
|
66
|
-
// This shouldn't happen since the next stepper is disabled if the selection only has one date.
|
|
67
|
-
// If it does, just return the selection as-is.
|
|
68
|
-
return selection;
|
|
69
|
-
}
|
|
70
|
-
getPreviousSelection(selection) {
|
|
71
|
-
// Move the selection to the previous year
|
|
72
|
-
if (DateInput.isSelectionRange(selection) && selection.start) {
|
|
73
|
-
const date = moment(selection.start).subtract(1, 'year');
|
|
74
|
-
return this.getSelectionFromDate(date.toDate());
|
|
75
|
-
}
|
|
76
|
-
// This shouldn't happen since the previous stepper is disabled if the selection only has one date.
|
|
77
|
-
// If it does, just return the selection as-is.
|
|
78
|
-
return selection;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci1zZWxlY3Rpb24tc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LXNlbGVjdGlvbi1zdHJhdGVnaWVzL3llYXItc2VsZWN0aW9uLXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEY7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsOEJBQThCO0lBQXpFOztRQUNrQixzQkFBaUIsR0FBc0IsTUFBTSxDQUFDO1FBQzlDLG1CQUFjLEdBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztJQStFaEQsQ0FBQztJQTdFQyxlQUFlLENBQUMsU0FBc0M7UUFDcEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzNDLENBQUM7UUFFRCw4RUFBOEU7UUFDOUUsd0ZBQXdGO1FBQ3hGLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbEUs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QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSBcIi4uLy4uL2NhbGVuZGFyL2NhbGVuZGFyLnR5cGVzXCI7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi4vZGF0ZS1pbnB1dC50eXBlc1wiO1xuaW1wb3J0IHsgRGF0ZUlucHV0U2VsZWN0aW9uU3RyYXRlZ3lCYXNlIH0gZnJvbSBcIi4vZGF0ZS1pbnB1dC1zZWxlY3Rpb24tc3RyYXRlZ3ktYmFzZVwiO1xuXG4vKipcbiAqIFNlbGVjdGlvbiBzdHJhdGVneSBmb3IgdGhlICd5ZWFyJyBzZWxlY3Rpb24gbW9kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFllYXJTZWxlY3Rpb25TdHJhdGVneSBleHRlbmRzIERhdGVJbnB1dFNlbGVjdGlvblN0cmF0ZWd5QmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25WaWV3TW9kZTogQ2FsZW5kYXIuVmlld01vZGUgPSAneWVhcic7XG4gIHB1YmxpYyByZWFkb25seSB2YWxpZFZpZXdNb2RlczogQ2FsZW5kYXIuVmlld01vZGVbXSA9IFsneWVhciddO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1NlY29uZGFyeVRleHRib3ggPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dTZWNvbmRhcnlDYWxlbmRhciA9IGZhbHNlO1xuXG4gIGZvcm1hdFNlbGVjdGlvbihzZWxlY3Rpb24/OiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCk6IERhdGVJbnB1dC5UZXh0Ym94R3JvdXBbJ3ZhbHVlJ10ge1xuICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICByZXR1cm4geyB0ZXh0Ym94OiBudWxsLCB0ZXh0Ym94MjogbnVsbCB9O1xuICAgIH1cblxuICAgIC8vIE9ubHkgb25lIGRhdGUgaXMgbmVlZGVkIGZvciBmb3JtYXR0aW5nIHNpbmNlIHRoZSByYW5nZXMgc3BhbiBhIHNpbmdsZSB5ZWFyLlxuICAgIC8vIFRoZXJlIHNob3VsZG4ndCBiZSBhbnkgY2FzZSB3aGVyZSB0aGVyZSdzIG9ubHkgYSBzaW5nbGUgZGF0ZSBidXQgaXQncyBjb3ZlcmVkIGFueXdheS5cbiAgICBjb25zdCBkYXRlID0gRGF0ZUlucHV0LmlzU2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uKSA/IHNlbGVjdGlvbi5zdGFydCA6IHNlbGVjdGlvbjtcbiAgICByZXR1cm4geyB0ZXh0Ym94OiBtb21lbnQoZGF0ZSkuZm9ybWF0KCdZWVlZJyksIHRleHRib3gyOiBudWxsIH07XG4gIH1cblxuICBwYXJzZVN0cmluZyh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyc2VGb3JtYXRzOiBzdHJpbmdbXSwgb3B0cz86IERhdGVJbnB1dC5QYXJzaW5nT3B0aW9ucyk6IERhdGUgfCBudWxsIHtcbiAgICAvLyBJbmNsdWRpbmcgJ1lZJyBhbmQgJ1lZWVknIGFzIHZhbGlkIGZvcm1hdHMgZm9yIHllYXIgaW5wdXQuIFRoZXNlIGFyZW4ndCBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdCBwYXJzZVxuICAgIC8vIGZvcm1hdHMgYmVjYXVzZSB0aGV5IGNhdXNlIGlzc3VlcyB3aXRoIHRoZSBkZWZhdWx0IGRhdGUgcGFyc2luZy5cbiAgICByZXR1cm4gc3VwZXIucGFyc2VTdHJpbmcodmFsdWUsIFsnWVknLCAnWVlZWScsIC4uLnBhcnNlRm9ybWF0c10sIG9wdHMpO1xuICB9XG5cbiAgcGFyc2VUZXh0Ym94VmFsdWVzKHZhbHVlOiBEYXRlSW5wdXQuVGV4dGJveEdyb3VwWyd2YWx1ZSddLCBwYXJzZUZvcm1hdHM6IHN0cmluZ1tdLCBvcHRzPzogRGF0ZUlucHV0LlBhcnNpbmdPcHRpb25zKTogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwge1xuICAgIC8vIE9ubHkgYSBzaW5nbGUgdGV4dGJveCBpcyB1c2VkIGluIHllYXIgbW9kZVxuICAgIGNvbnN0IGRhdGUgPSB0aGlzLnBhcnNlU3RyaW5nKHZhbHVlLnRleHRib3gsIHBhcnNlRm9ybWF0cywgb3B0cyk7XG5cbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGlvbkZyb21EYXRlKGRhdGUpO1xuICB9XG5cbiAgZ2V0U2VsZWN0aW9uRnJvbURhdGUoZGF0ZTogRGF0ZSk6IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IG1vbWVudChkYXRlKS5zdGFydE9mKCd5ZWFyJykudG9EYXRlKCksXG4gICAgICBlbmQ6IG1vbWVudChkYXRlKS5lbmRPZigneWVhcicpLnRvRGF0ZSgpXG4gICAgfTtcbiAgfVxuXG4gIGdldE5ld1NlbGVjdGlvbkZyb21FeGlzdGluZyhwcmV2aW91c1NlbGVjdGlvbj86IERhdGVJbnB1dC5TZWxlY3Rpb24pOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCB7XG4gICAgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblJhbmdlKHByZXZpb3VzU2VsZWN0aW9uKSkge1xuICAgICAgLy8gQmFzZSB0aGUgeWVhciByYW5nZSBvZmYgb2YgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbidzIGVuZCBkYXRlLCBmYWxsaW5nIGJhY2sgdG8gdGhlIHN0YXJ0IGRhdGVcbiAgICAgIGNvbnN0IGRhdGUgPSBwcmV2aW91c1NlbGVjdGlvbi5lbmQgfHwgcHJldmlvdXNTZWxlY3Rpb24uc3RhcnQ7XG4gICAgICBpZiAoZGF0ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3Rpb25Gcm9tRGF0ZShkYXRlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblNpbmdsZURhdGUocHJldmlvdXNTZWxlY3Rpb24pKSB7XG4gICAgICAvLyBJZiB0aGUgcHJldmlvdXMgc2VsZWN0aW9uIHdhcyBhIHNpbmdsZSBkYXRlLCBtYWtlIHRoZSByYW5nZSB0aGF0IHllYXJcbiAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGlvbkZyb21EYXRlKHByZXZpb3VzU2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbkZvclF1aWNrU2VsZWN0RGF0ZShkYXRlOiBEYXRlKTogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGlvbkZyb21EYXRlKGRhdGUpO1xuICB9XG5cbiAgZ2V0TmV4dFNlbGVjdGlvbihzZWxlY3Rpb246IERhdGVJbnB1dC5TZWxlY3Rpb24pOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCB7XG4gICAgLy8gTW92ZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSBuZXh0IHllYXJcbiAgICBpZiAoRGF0ZUlucHV0LmlzU2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uKSAmJiBzZWxlY3Rpb24uc3RhcnQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoc2VsZWN0aW9uLnN0YXJ0KS5hZGQoMSwgJ3llYXInKTtcbiAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGlvbkZyb21EYXRlKGRhdGUudG9EYXRlKCkpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBzaW5jZSB0aGUgbmV4dCBzdGVwcGVyIGlzIGRpc2FibGVkIGlmIHRoZSBzZWxlY3Rpb24gb25seSBoYXMgb25lIGRhdGUuXG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHNlbGVjdGlvbiBhcy1pcy5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNTZWxlY3Rpb24oc2VsZWN0aW9uOiBEYXRlSW5wdXQuU2VsZWN0aW9uKTogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwge1xuICAgIC8vIE1vdmUgdGhlIHNlbGVjdGlvbiB0byB0aGUgcHJldmlvdXMgeWVhclxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb24pICYmIHNlbGVjdGlvbi5zdGFydCkge1xuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudChzZWxlY3Rpb24uc3RhcnQpLnN1YnRyYWN0KDEsICd5ZWFyJyk7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3Rpb25Gcm9tRGF0ZShkYXRlLnRvRGF0ZSgpKTtcbiAgICB9XG4gICAgXG4gICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIHNpbmNlIHRoZSBwcmV2aW91cyBzdGVwcGVyIGlzIGRpc2FibGVkIGlmIHRoZSBzZWxlY3Rpb24gb25seSBoYXMgb25lIGRhdGUuXG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHNlbGVjdGlvbiBhcy1pcy5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG59XG4iXX0=
|