@porscheinformatik/clr-addons 18.2.4 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstract-form-component/abstract-form-component.d.ts +1 -1
- package/daterangepicker/directives/abstract-container.component.d.ts +1 -1
- package/fesm2022/clr-addons.mjs +520 -592
- package/fesm2022/clr-addons.mjs.map +1 -1
- package/multilingual/abstract-multilingual.d.ts +1 -1
- package/package.json +6 -8
- package/esm2022/abstract-form-component/abstract-form-component.mjs +0 -100
- package/esm2022/abstract-form-component/control-id.service.mjs +0 -31
- package/esm2022/abstract-form-component/form.module.mjs +0 -21
- package/esm2022/abstract-form-component/index.mjs +0 -3
- package/esm2022/abstract-form-component/label.mjs +0 -37
- package/esm2022/action-panel/action-panel-container-content.mjs +0 -22
- package/esm2022/action-panel/action-panel-container-footer.mjs +0 -22
- package/esm2022/action-panel/action-panel-container.mjs +0 -35
- package/esm2022/action-panel/action-panel.mjs +0 -80
- package/esm2022/action-panel/action-panel.module.mjs +0 -36
- package/esm2022/action-panel/index.mjs +0 -6
- package/esm2022/autocomplete-off/autocomplete-off.directive.mjs +0 -21
- package/esm2022/autocomplete-off/autocomplete-off.module.mjs +0 -21
- package/esm2022/autocomplete-off/index.mjs +0 -3
- package/esm2022/back-button/back-button.mjs +0 -27
- package/esm2022/back-button/back-button.module.mjs +0 -25
- package/esm2022/back-button/index.mjs +0 -8
- package/esm2022/brand-avatar/brand-avatar.mjs +0 -77
- package/esm2022/brand-avatar/brand-avatar.module.mjs +0 -24
- package/esm2022/brand-avatar/index.mjs +0 -8
- package/esm2022/breadcrumb/breadcrumb-model.interface.mjs +0 -7
- package/esm2022/breadcrumb/breadcrumb.mjs +0 -37
- package/esm2022/breadcrumb/breadcrumb.module.mjs +0 -27
- package/esm2022/breadcrumb/breadcrumb.service.mjs +0 -25
- package/esm2022/breadcrumb/index.mjs +0 -10
- package/esm2022/clr-addons.mjs +0 -5
- package/esm2022/clr-addons.module.mjs +0 -152
- package/esm2022/clr-control-warning/if-warning.directive.mjs +0 -73
- package/esm2022/clr-control-warning/if-warning.module.mjs +0 -20
- package/esm2022/clr-control-warning/index.mjs +0 -3
- package/esm2022/collapse-expand-section/collapse-expand-section.mjs +0 -88
- package/esm2022/collapse-expand-section/collapse-expand-section.module.mjs +0 -25
- package/esm2022/collapse-expand-section/index.mjs +0 -8
- package/esm2022/content-panel/content-panel-container-content.mjs +0 -22
- package/esm2022/content-panel/content-panel-container-footer.mjs +0 -22
- package/esm2022/content-panel/content-panel-container.mjs +0 -35
- package/esm2022/content-panel/content-panel.mjs +0 -81
- package/esm2022/content-panel/content-panel.module.mjs +0 -36
- package/esm2022/content-panel/index.mjs +0 -11
- package/esm2022/data-list-validator/data-list-predefined-validator.directive.mjs +0 -33
- package/esm2022/data-list-validator/data-list-validator.module.mjs +0 -21
- package/esm2022/data-list-validator/data-list.validator.mjs +0 -35
- package/esm2022/data-list-validator/index.mjs +0 -9
- package/esm2022/datagrid/datagrid-state-persistence/column-hidden-state-persistence.directive.mjs +0 -80
- package/esm2022/datagrid/datagrid-state-persistence/datagrid-field.directive.mjs +0 -20
- package/esm2022/datagrid/datagrid-state-persistence/datagrid-state-persistence-model.interface.mjs +0 -2
- package/esm2022/datagrid/datagrid-state-persistence/datagrid-state-persistence.module.mjs +0 -18
- package/esm2022/datagrid/datagrid-state-persistence/index.mjs +0 -7
- package/esm2022/datagrid/datagrid-state-persistence/state-persistence-key.directive.mjs +0 -308
- package/esm2022/datagrid/datagrid-state-persistence/state-persistence-options.interface.mjs +0 -2
- package/esm2022/datagrid/date-filter/date-filter.component.mjs +0 -210
- package/esm2022/datagrid/date-filter/date-filter.module.mjs +0 -22
- package/esm2022/datagrid/date-filter/index.mjs +0 -3
- package/esm2022/datagrid/date-filter/nested-property.mjs +0 -37
- package/esm2022/datagrid/enum-filter/enum-filter.component.mjs +0 -148
- package/esm2022/datagrid/enum-filter/enum-filter.module.mjs +0 -20
- package/esm2022/datagrid/enum-filter/index.mjs +0 -3
- package/esm2022/datagrid/index.mjs +0 -4
- package/esm2022/date-time-container/date-time-container.mjs +0 -53
- package/esm2022/date-time-container/date-time-module.mjs +0 -26
- package/esm2022/date-time-container/index.mjs +0 -9
- package/esm2022/date-time-container/time-input.mjs +0 -21
- package/esm2022/daterangepicker/daterange.constants.mjs +0 -27
- package/esm2022/daterangepicker/daterangepicker.module.mjs +0 -60
- package/esm2022/daterangepicker/directives/abstract-container.component.mjs +0 -104
- package/esm2022/daterangepicker/directives/datepicker/datepicker.component.mjs +0 -100
- package/esm2022/daterangepicker/directives/daterangepicker/daterangepicker.directive.mjs +0 -329
- package/esm2022/daterangepicker/directives/daterangepicker-container/daterangepicker-container.component.mjs +0 -321
- package/esm2022/daterangepicker/directives/if-daterange-error.directive.mjs +0 -94
- package/esm2022/daterangepicker/directives/timepicker/timepicker.component.mjs +0 -54
- package/esm2022/daterangepicker/index.mjs +0 -17
- package/esm2022/daterangepicker/interfaces/daterange-preset.interface.mjs +0 -2
- package/esm2022/daterangepicker/interfaces/daterange.interface.mjs +0 -2
- package/esm2022/daterangepicker/interfaces/timerange-preset.interface.mjs +0 -2
- package/esm2022/daterangepicker/interfaces/timerange.interface.mjs +0 -2
- package/esm2022/daterangepicker/models/day.model.mjs +0 -99
- package/esm2022/daterangepicker/models/popover-positions.model.mjs +0 -66
- package/esm2022/daterangepicker/models/time.model.mjs +0 -82
- package/esm2022/daterangepicker/providers/daterange-control-state.service.mjs +0 -62
- package/esm2022/daterangepicker/providers/daterange-parsing.service.mjs +0 -226
- package/esm2022/daterangepicker/providers/daterange.service.mjs +0 -66
- package/esm2022/daterangepicker/providers/opened-datepickers-tracker.service.mjs +0 -36
- package/esm2022/daterangepicker/validators/daterange-max.validator.mjs +0 -85
- package/esm2022/daterangepicker/validators/daterange-min.validator.mjs +0 -85
- package/esm2022/daterangepicker/validators/daterange-order.validator.mjs +0 -82
- package/esm2022/daterangepicker/validators/daterange-required.validator.mjs +0 -71
- package/esm2022/dot-pager/dot-pager.mjs +0 -58
- package/esm2022/dot-pager/dot-pager.module.mjs +0 -25
- package/esm2022/dot-pager/index.mjs +0 -8
- package/esm2022/dropdown/clr-dropdown-overflow.directive.mjs +0 -117
- package/esm2022/dropdown/clr-dropdown-overflow.module.mjs +0 -21
- package/esm2022/dropdown/index.mjs +0 -8
- package/esm2022/flow-bar/flow-bar.mjs +0 -163
- package/esm2022/flow-bar/flow-bar.module.mjs +0 -26
- package/esm2022/flow-bar/index.mjs +0 -8
- package/esm2022/generic-quick-list/generic-quick-list.mjs +0 -98
- package/esm2022/generic-quick-list/generic-quick-list.module.mjs +0 -24
- package/esm2022/generic-quick-list/index.mjs +0 -8
- package/esm2022/history/history-model.interface.mjs +0 -8
- package/esm2022/history/history-pinned.mjs +0 -60
- package/esm2022/history/history.mjs +0 -91
- package/esm2022/history/history.module.mjs +0 -27
- package/esm2022/history/history.provider.mjs +0 -8
- package/esm2022/history/history.service.mjs +0 -236
- package/esm2022/history/index.mjs +0 -12
- package/esm2022/icons/index.mjs +0 -8
- package/esm2022/icons/shapes.mjs +0 -5575
- package/esm2022/icons/svg-tag-generator.mjs +0 -39
- package/esm2022/index.mjs +0 -41
- package/esm2022/letter-avatar/index.mjs +0 -8
- package/esm2022/letter-avatar/letter-avatar.mjs +0 -52
- package/esm2022/letter-avatar/letter-avatar.module.mjs +0 -24
- package/esm2022/location-bar/index.mjs +0 -6
- package/esm2022/location-bar/location-bar-node/location-bar-node.component.mjs +0 -150
- package/esm2022/location-bar/location-bar-search/location-bar-search.component.mjs +0 -74
- package/esm2022/location-bar/location-bar.component.mjs +0 -64
- package/esm2022/location-bar/location-bar.model.mjs +0 -63
- package/esm2022/location-bar/location-bar.module.mjs +0 -55
- package/esm2022/location-bar/location-bar.provider.mjs +0 -18
- package/esm2022/location-bar/location-bar.search.model.mjs +0 -2
- package/esm2022/main-nav-group/index.mjs +0 -9
- package/esm2022/main-nav-group/main-nav-group-item.mjs +0 -27
- package/esm2022/main-nav-group/main-nav-group.mjs +0 -154
- package/esm2022/main-nav-group/main-nav-group.module.mjs +0 -26
- package/esm2022/multilingual/abstract-multilingual.mjs +0 -133
- package/esm2022/multilingual/index.mjs +0 -11
- package/esm2022/multilingual/multilingual-input/multilingual-input.mjs +0 -42
- package/esm2022/multilingual/multilingual-selector.mjs +0 -84
- package/esm2022/multilingual/multilingual-textarea/multilingual-textarea.mjs +0 -44
- package/esm2022/multilingual/multilingual-validators.mjs +0 -104
- package/esm2022/multilingual/multilingual.module.mjs +0 -49
- package/esm2022/notification/index.mjs +0 -10
- package/esm2022/notification/notification-ref.mjs +0 -61
- package/esm2022/notification/notification.mjs +0 -134
- package/esm2022/notification/notification.module.mjs +0 -24
- package/esm2022/notification/notification.service.mjs +0 -92
- package/esm2022/notification/scheduler-utils.mjs +0 -52
- package/esm2022/numericfield/index.mjs +0 -9
- package/esm2022/numericfield/numeric-field-validators.mjs +0 -140
- package/esm2022/numericfield/numeric-field.mjs +0 -280
- package/esm2022/numericfield/numeric-field.module.mjs +0 -26
- package/esm2022/paged-search-result-list/index.mjs +0 -8
- package/esm2022/paged-search-result-list/paged-search-result-list.mjs +0 -67
- package/esm2022/paged-search-result-list/paged-search-result-list.module.mjs +0 -26
- package/esm2022/pager/index.mjs +0 -8
- package/esm2022/pager/pager.mjs +0 -137
- package/esm2022/pager/pager.module.mjs +0 -25
- package/esm2022/progress-spinner/index.mjs +0 -8
- package/esm2022/progress-spinner/progress-spinner.mjs +0 -78
- package/esm2022/progress-spinner/progress-spinner.module.mjs +0 -23
- package/esm2022/quick-list/add-option.mjs +0 -78
- package/esm2022/quick-list/add-option.service.mjs +0 -7
- package/esm2022/quick-list/index.mjs +0 -9
- package/esm2022/quick-list/quick-list.mjs +0 -128
- package/esm2022/quick-list/quick-list.module.mjs +0 -26
- package/esm2022/readonly/index.mjs +0 -8
- package/esm2022/readonly/readonly.directive.mjs +0 -149
- package/esm2022/readonly/readonly.module.mjs +0 -16
- package/esm2022/searchfield/index.mjs +0 -8
- package/esm2022/searchfield/search-field.mjs +0 -104
- package/esm2022/searchfield/search-field.module.mjs +0 -25
- package/esm2022/treetable/index.mjs +0 -14
- package/esm2022/treetable/renderer/cell-renderer.mjs +0 -28
- package/esm2022/treetable/renderer/header-renderer.mjs +0 -41
- package/esm2022/treetable/renderer/index.mjs +0 -5
- package/esm2022/treetable/renderer/main-renderer.mjs +0 -103
- package/esm2022/treetable/renderer/row-renderer.mjs +0 -20
- package/esm2022/treetable/treetable-action-overflow.mjs +0 -94
- package/esm2022/treetable/treetable-cell.mjs +0 -23
- package/esm2022/treetable/treetable-column.mjs +0 -23
- package/esm2022/treetable/treetable-placeholder.mjs +0 -30
- package/esm2022/treetable/treetable-row.mjs +0 -100
- package/esm2022/treetable/treetable.mjs +0 -79
- package/esm2022/treetable/treetable.module.mjs +0 -63
- package/esm2022/util/escape.util.mjs +0 -20
- package/esm2022/util/index.mjs +0 -8
- package/esm2022/util/numeric.format.util.mjs +0 -99
- package/esm2022/view-edit-section/index.mjs +0 -8
- package/esm2022/view-edit-section/view-edit-section.mjs +0 -154
- package/esm2022/view-edit-section/view-edit-section.module.mjs +0 -25
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9pbnRlcmZhY2VzL3RpbWVyYW5nZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE51bGxhYmxlVGltZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3RpbWUubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZXJhbmdlIH0gZnJvbSAnLi9kYXRlcmFuZ2UuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBUaW1lcmFuZ2UgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVyYW5nZSBleHRlbmRzIERhdGVyYW5nZSB7XG4gIGZyb21UaW1lOiBOdWxsYWJsZVRpbWVNb2RlbDtcbiAgdG9UaW1lOiBOdWxsYWJsZVRpbWVNb2RlbDtcbn1cblxuLyoqXG4gKiBUaW1lcmFuZ2UuXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxhYmxlVGltZXJhbmdlID0gVGltZXJhbmdlIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiJdfQ==
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Day model.
|
|
3
|
-
* Takes care of keeping records of full days, without the times & timezone issues.
|
|
4
|
-
*/
|
|
5
|
-
export class DayModel {
|
|
6
|
-
constructor(...args) {
|
|
7
|
-
if (args[0] instanceof Date) {
|
|
8
|
-
const date = args[0];
|
|
9
|
-
this.year = date.getFullYear();
|
|
10
|
-
this.month = date.getMonth();
|
|
11
|
-
this.date = date.getDate();
|
|
12
|
-
}
|
|
13
|
-
else if (typeof args[0] === 'string') {
|
|
14
|
-
const [year, month, day] = args[0].split('-').map(n => parseInt(n, 10));
|
|
15
|
-
this.year = year;
|
|
16
|
-
this.month = month - 1;
|
|
17
|
-
this.date = day;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
this.year = args[0];
|
|
21
|
-
this.month = args[1];
|
|
22
|
-
this.date = args[2];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Checks if the passed value is equal to current day model.
|
|
27
|
-
* @param value - Day model.
|
|
28
|
-
* @returns Wether value is equal to current day model.
|
|
29
|
-
*/
|
|
30
|
-
isEqual(value) {
|
|
31
|
-
if (value) {
|
|
32
|
-
return this.year === value.year && this.month === value.month && this.date === value.date;
|
|
33
|
-
}
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Increment day model with date value.
|
|
38
|
-
* @param value - Incremental date value.
|
|
39
|
-
* @returns Updated day model with incremented date value.
|
|
40
|
-
*/
|
|
41
|
-
incrementBy(value) {
|
|
42
|
-
// Creating new Javascript Date object to increment because
|
|
43
|
-
// it will automatically take care of switching to next or previous
|
|
44
|
-
// months & years without we having to worry about it.
|
|
45
|
-
const date = new Date(this.year, this.month, this.date + value);
|
|
46
|
-
this.year = date.getFullYear();
|
|
47
|
-
this.month = date.getMonth();
|
|
48
|
-
this.date = date.getDate();
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Checks if current day model is after value.
|
|
53
|
-
* @param value - Day model.
|
|
54
|
-
* @returns Wether current day model is after value.
|
|
55
|
-
*/
|
|
56
|
-
isAfter(value) {
|
|
57
|
-
return this.toDate() > value.toDate();
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Checks if current day model is before value.
|
|
61
|
-
* @param value - Day model.
|
|
62
|
-
* @returns Wether current day model is before value.
|
|
63
|
-
*/
|
|
64
|
-
isBefore(value) {
|
|
65
|
-
return this.toDate() < value.toDate();
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Clones the current day model.
|
|
69
|
-
* @returns Cloned day model.
|
|
70
|
-
*/
|
|
71
|
-
clone() {
|
|
72
|
-
return new DayModel(this.year, this.month, this.date);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Convert to Javascript Date object.
|
|
76
|
-
* @returns Javascript Date object.
|
|
77
|
-
*/
|
|
78
|
-
toDate() {
|
|
79
|
-
return new Date(this.year, this.month, this.date);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* To HTML5 date spec string.
|
|
83
|
-
* See https://clarity.design/documentation/datepicker
|
|
84
|
-
* @returns Date as HTML5 spec string.
|
|
85
|
-
*/
|
|
86
|
-
toHTML5SpecDateString() {
|
|
87
|
-
// The clarity date picker uses the format 'YYYY-MM-DD'.
|
|
88
|
-
return `${this.year}-${this.pad(this.month + 1)}-${this.pad(this.date)}`;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* String padding with zeros.
|
|
92
|
-
* @param num - Number to pad.
|
|
93
|
-
* @returns Padded string.
|
|
94
|
-
*/
|
|
95
|
-
pad(num) {
|
|
96
|
-
return num < 10 ? `0${num}` : `${num}`;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0ZXJhbmdlcGlja2VyL21vZGVscy9kYXkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUEyQm5CLFlBQW1CLEdBQUcsSUFBbUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEdBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFlO1FBQzVCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzVGLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLEtBQWE7UUFDOUIsMkRBQTJEO1FBQzNELG1FQUFtRTtRQUNuRSxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxLQUFlO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSztRQUNWLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHFCQUFxQjtRQUMxQix3REFBd0Q7UUFDeEQsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxHQUFHLENBQUMsR0FBVztRQUNyQixPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEYXkgbW9kZWwuXG4gKiBUYWtlcyBjYXJlIG9mIGtlZXBpbmcgcmVjb3JkcyBvZiBmdWxsIGRheXMsIHdpdGhvdXQgdGhlIHRpbWVzICYgdGltZXpvbmUgaXNzdWVzLlxuICovXG5leHBvcnQgY2xhc3MgRGF5TW9kZWwge1xuICAvKiogWWVhci4gKi9cbiAgcHJpdmF0ZSB5ZWFyITogbnVtYmVyO1xuXG4gIC8qKiBNb250aCwgemVyby1pbmRleGVkLiAqL1xuICBwcml2YXRlIG1vbnRoITogbnVtYmVyO1xuXG4gIC8qKiBEYXRlIG9mIHRoZSBtb250aC4gKi9cbiAgcHJpdmF0ZSBkYXRlITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGRheSBtb2RlbC5cbiAgICogQHBhcmFtIHllYXIgLSBUaGUgZnVsbCB5ZWFyLlxuICAgKiBAcGFyYW0gbW9udGggLSBUaGUgbW9udGggYXMgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMSAoSmFudWFyeSB0byBEZWNlbWJlcikuXG4gICAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgYXMgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCAzMS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGRheSBtb2RlbC5cbiAgICogQHBhcmFtIGRhdGUgLSBKYXZhc2NyaXB0IERhdGUgb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGRhdGU6IERhdGUpO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBkYXkgbW9kZWwuXG4gICAqIEBwYXJhbSBkYXRlIC0gRGF0ZSBzdHJpbmcgaW4gYHl5eXktbW0tZGRgIGZvcm1hdC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRlOiBzdHJpbmcpO1xuICBwdWJsaWMgY29uc3RydWN0b3IoLi4uYXJnczogQXJyYXk8bnVtYmVyIHwgRGF0ZSB8IHN0cmluZz4pIHtcbiAgICBpZiAoYXJnc1swXSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSBhcmdzWzBdO1xuICAgICAgdGhpcy55ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgdGhpcy5tb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICAgIHRoaXMuZGF0ZSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSBhcmdzWzBdLnNwbGl0KCctJykubWFwKG4gPT4gcGFyc2VJbnQobiwgMTApKTtcbiAgICAgIHRoaXMueWVhciA9IHllYXI7XG4gICAgICB0aGlzLm1vbnRoID0gbW9udGggLSAxO1xuICAgICAgdGhpcy5kYXRlID0gZGF5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnllYXIgPSBhcmdzWzBdO1xuICAgICAgdGhpcy5tb250aCA9IGFyZ3NbMV0gYXMgbnVtYmVyO1xuICAgICAgdGhpcy5kYXRlID0gYXJnc1syXSBhcyBudW1iZXI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgcGFzc2VkIHZhbHVlIGlzIGVxdWFsIHRvIGN1cnJlbnQgZGF5IG1vZGVsLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBEYXkgbW9kZWwuXG4gICAqIEByZXR1cm5zIFdldGhlciB2YWx1ZSBpcyBlcXVhbCB0byBjdXJyZW50IGRheSBtb2RlbC5cbiAgICovXG4gIHB1YmxpYyBpc0VxdWFsKHZhbHVlOiBEYXlNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMueWVhciA9PT0gdmFsdWUueWVhciAmJiB0aGlzLm1vbnRoID09PSB2YWx1ZS5tb250aCAmJiB0aGlzLmRhdGUgPT09IHZhbHVlLmRhdGU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmNyZW1lbnQgZGF5IG1vZGVsIHdpdGggZGF0ZSB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIC0gSW5jcmVtZW50YWwgZGF0ZSB2YWx1ZS5cbiAgICogQHJldHVybnMgVXBkYXRlZCBkYXkgbW9kZWwgd2l0aCBpbmNyZW1lbnRlZCBkYXRlIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGluY3JlbWVudEJ5KHZhbHVlOiBudW1iZXIpOiBEYXlNb2RlbCB7XG4gICAgLy8gQ3JlYXRpbmcgbmV3IEphdmFzY3JpcHQgRGF0ZSBvYmplY3QgdG8gaW5jcmVtZW50IGJlY2F1c2VcbiAgICAvLyBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgdGFrZSBjYXJlIG9mIHN3aXRjaGluZyB0byBuZXh0IG9yIHByZXZpb3VzXG4gICAgLy8gbW9udGhzICYgeWVhcnMgd2l0aG91dCB3ZSBoYXZpbmcgdG8gd29ycnkgYWJvdXQgaXQuXG4gICAgY29uc3QgZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgdGhpcy5kYXRlICsgdmFsdWUpO1xuICAgIHRoaXMueWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB0aGlzLm1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMuZGF0ZSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjdXJyZW50IGRheSBtb2RlbCBpcyBhZnRlciB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIC0gRGF5IG1vZGVsLlxuICAgKiBAcmV0dXJucyBXZXRoZXIgY3VycmVudCBkYXkgbW9kZWwgaXMgYWZ0ZXIgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgaXNBZnRlcih2YWx1ZTogRGF5TW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b0RhdGUoKSA+IHZhbHVlLnRvRGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjdXJyZW50IGRheSBtb2RlbCBpcyBiZWZvcmUgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIERheSBtb2RlbC5cbiAgICogQHJldHVybnMgV2V0aGVyIGN1cnJlbnQgZGF5IG1vZGVsIGlzIGJlZm9yZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBpc0JlZm9yZSh2YWx1ZTogRGF5TW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b0RhdGUoKSA8IHZhbHVlLnRvRGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb25lcyB0aGUgY3VycmVudCBkYXkgbW9kZWwuXG4gICAqIEByZXR1cm5zIENsb25lZCBkYXkgbW9kZWwuXG4gICAqL1xuICBwdWJsaWMgY2xvbmUoKTogRGF5TW9kZWwge1xuICAgIHJldHVybiBuZXcgRGF5TW9kZWwodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCB0aGlzLmRhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gSmF2YXNjcmlwdCBEYXRlIG9iamVjdC5cbiAgICogQHJldHVybnMgSmF2YXNjcmlwdCBEYXRlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyB0b0RhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgdGhpcy5kYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUbyBIVE1MNSBkYXRlIHNwZWMgc3RyaW5nLlxuICAgKiBTZWUgaHR0cHM6Ly9jbGFyaXR5LmRlc2lnbi9kb2N1bWVudGF0aW9uL2RhdGVwaWNrZXJcbiAgICogQHJldHVybnMgRGF0ZSBhcyBIVE1MNSBzcGVjIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyB0b0hUTUw1U3BlY0RhdGVTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAvLyBUaGUgY2xhcml0eSBkYXRlIHBpY2tlciB1c2VzIHRoZSBmb3JtYXQgJ1lZWVktTU0tREQnLlxuICAgIHJldHVybiBgJHt0aGlzLnllYXJ9LSR7dGhpcy5wYWQodGhpcy5tb250aCArIDEpfS0ke3RoaXMucGFkKHRoaXMuZGF0ZSl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJpbmcgcGFkZGluZyB3aXRoIHplcm9zLlxuICAgKiBAcGFyYW0gbnVtIC0gTnVtYmVyIHRvIHBhZC5cbiAgICogQHJldHVybnMgUGFkZGVkIHN0cmluZy5cbiAgICovXG4gIHByaXZhdGUgcGFkKG51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbnVtIDwgMTAgPyBgMCR7bnVtfWAgOiBgJHtudW19YDtcbiAgfVxufVxuXG4vKipcbiAqIERheSBtb2RlbC5cbiAqIFRha2VzIGNhcmUgb2Yga2VlcGluZyByZWNvcmRzIG9mIGZ1bGwgZGF5cywgd2l0aG91dCB0aGUgdGltZXMgJiB0aW1lem9uZSBpc3N1ZXMuXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxhYmxlRGF5TW9kZWwgPSBEYXlNb2RlbCB8IHVuZGVmaW5lZCB8IG51bGw7XG4iXX0=
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { ClrAlignment, ClrAxis, ClrSide } from '@clr/angular';
|
|
2
|
-
/**
|
|
3
|
-
* Popover positions.
|
|
4
|
-
* https://github.com/vmware-clarity/ng-clarity/blob/f1a668086bf88bcf5ef1cd36b0d150e45e88def7/projects/angular/src/utils/popover/enums/positions.enum.ts
|
|
5
|
-
*/
|
|
6
|
-
export class PopoverPositions {
|
|
7
|
-
static { this.options = [
|
|
8
|
-
'bottom-left',
|
|
9
|
-
'bottom-right',
|
|
10
|
-
'left-bottom',
|
|
11
|
-
'left-top',
|
|
12
|
-
'right-bottom',
|
|
13
|
-
'right-top',
|
|
14
|
-
'top-left',
|
|
15
|
-
'top-right',
|
|
16
|
-
]; }
|
|
17
|
-
static { this['bottom-left'] = {
|
|
18
|
-
axis: ClrAxis.VERTICAL,
|
|
19
|
-
side: ClrSide.AFTER,
|
|
20
|
-
anchor: ClrAlignment.START,
|
|
21
|
-
content: ClrAlignment.START,
|
|
22
|
-
}; }
|
|
23
|
-
static { this['bottom-right'] = {
|
|
24
|
-
axis: ClrAxis.VERTICAL,
|
|
25
|
-
side: ClrSide.AFTER,
|
|
26
|
-
anchor: ClrAlignment.END,
|
|
27
|
-
content: ClrAlignment.END,
|
|
28
|
-
}; }
|
|
29
|
-
static { this['left-bottom'] = {
|
|
30
|
-
axis: ClrAxis.HORIZONTAL,
|
|
31
|
-
side: ClrSide.BEFORE,
|
|
32
|
-
anchor: ClrAlignment.START,
|
|
33
|
-
content: ClrAlignment.START,
|
|
34
|
-
}; }
|
|
35
|
-
static { this['left-top'] = {
|
|
36
|
-
axis: ClrAxis.HORIZONTAL,
|
|
37
|
-
side: ClrSide.BEFORE,
|
|
38
|
-
anchor: ClrAlignment.CENTER,
|
|
39
|
-
content: ClrAlignment.END,
|
|
40
|
-
}; }
|
|
41
|
-
static { this['right-bottom'] = {
|
|
42
|
-
axis: ClrAxis.HORIZONTAL,
|
|
43
|
-
side: ClrSide.AFTER,
|
|
44
|
-
anchor: ClrAlignment.START,
|
|
45
|
-
content: ClrAlignment.START,
|
|
46
|
-
}; }
|
|
47
|
-
static { this['right-top'] = {
|
|
48
|
-
axis: ClrAxis.HORIZONTAL,
|
|
49
|
-
side: ClrSide.AFTER,
|
|
50
|
-
anchor: ClrAlignment.CENTER,
|
|
51
|
-
content: ClrAlignment.END,
|
|
52
|
-
}; }
|
|
53
|
-
static { this['top-left'] = {
|
|
54
|
-
axis: ClrAxis.VERTICAL,
|
|
55
|
-
side: ClrSide.BEFORE,
|
|
56
|
-
anchor: ClrAlignment.START,
|
|
57
|
-
content: ClrAlignment.START,
|
|
58
|
-
}; }
|
|
59
|
-
static { this['top-right'] = {
|
|
60
|
-
axis: ClrAxis.VERTICAL,
|
|
61
|
-
side: ClrSide.BEFORE,
|
|
62
|
-
anchor: ClrAlignment.END,
|
|
63
|
-
content: ClrAlignment.END,
|
|
64
|
-
}; }
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1wb3NpdGlvbnMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9kYXRlcmFuZ2VwaWNrZXIvbW9kZWxzL3BvcG92ZXItcG9zaXRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFzQixPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjthQUNiLFlBQU8sR0FBRztRQUN0QixhQUFhO1FBQ2IsY0FBYztRQUNkLGFBQWE7UUFDYixVQUFVO1FBQ1YsY0FBYztRQUNkLFdBQVc7UUFDWCxVQUFVO1FBQ1YsV0FBVztLQUNaLENBQUM7YUFFWSxtQkFBYSxHQUF1QjtRQUNoRCxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVE7UUFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ25CLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSztRQUMxQixPQUFPLEVBQUUsWUFBWSxDQUFDLEtBQUs7S0FDNUIsQ0FBQzthQUVZLG9CQUFjLEdBQXVCO1FBQ2pELElBQUksRUFBRSxPQUFPLENBQUMsUUFBUTtRQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDbkIsTUFBTSxFQUFFLFlBQVksQ0FBQyxHQUFHO1FBQ3hCLE9BQU8sRUFBRSxZQUFZLENBQUMsR0FBRztLQUMxQixDQUFDO2FBRVksbUJBQWEsR0FBdUI7UUFDaEQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtRQUNwQixNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUs7UUFDMUIsT0FBTyxFQUFFLFlBQVksQ0FBQyxLQUFLO0tBQzVCLENBQUM7YUFFWSxnQkFBVSxHQUF1QjtRQUM3QyxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDeEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQ3BCLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTTtRQUMzQixPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUc7S0FDMUIsQ0FBQzthQUVZLG9CQUFjLEdBQXVCO1FBQ2pELElBQUksRUFBRSxPQUFPLENBQUMsVUFBVTtRQUN4QixJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDbkIsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLO1FBQzFCLE9BQU8sRUFBRSxZQUFZLENBQUMsS0FBSztLQUM1QixDQUFDO2FBRVksaUJBQVcsR0FBdUI7UUFDOUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSztRQUNuQixNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU07UUFDM0IsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHO0tBQzFCLENBQUM7YUFFWSxnQkFBVSxHQUF1QjtRQUM3QyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVE7UUFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQ3BCLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSztRQUMxQixPQUFPLEVBQUUsWUFBWSxDQUFDLEtBQUs7S0FDNUIsQ0FBQzthQUVZLGlCQUFXLEdBQXVCO1FBQzlDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUTtRQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDcEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxHQUFHO1FBQ3hCLE9BQU8sRUFBRSxZQUFZLENBQUMsR0FBRztLQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xyQWxpZ25tZW50LCBDbHJBeGlzLCBDbHJQb3BvdmVyUG9zaXRpb24sIENsclNpZGUgfSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuXG4vKipcbiAqIFBvcG92ZXIgcG9zaXRpb25zLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3Ztd2FyZS1jbGFyaXR5L25nLWNsYXJpdHkvYmxvYi9mMWE2NjgwODZiZjg4YmNmNWVmMWNkMzZiMGQxNTBlNDVlODhkZWY3L3Byb2plY3RzL2FuZ3VsYXIvc3JjL3V0aWxzL3BvcG92ZXIvZW51bXMvcG9zaXRpb25zLmVudW0udHNcbiAqL1xuZXhwb3J0IGNsYXNzIFBvcG92ZXJQb3NpdGlvbnMge1xuICBwdWJsaWMgc3RhdGljIG9wdGlvbnMgPSBbXG4gICAgJ2JvdHRvbS1sZWZ0JyxcbiAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAnbGVmdC1ib3R0b20nLFxuICAgICdsZWZ0LXRvcCcsXG4gICAgJ3JpZ2h0LWJvdHRvbScsXG4gICAgJ3JpZ2h0LXRvcCcsXG4gICAgJ3RvcC1sZWZ0JyxcbiAgICAndG9wLXJpZ2h0JyxcbiAgXTtcblxuICBwdWJsaWMgc3RhdGljICdib3R0b20tbGVmdCc6IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLlZFUlRJQ0FMLFxuICAgIHNpZGU6IENsclNpZGUuQUZURVIsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LlNUQVJULFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgJ2JvdHRvbS1yaWdodCc6IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLlZFUlRJQ0FMLFxuICAgIHNpZGU6IENsclNpZGUuQUZURVIsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuRU5ELFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5FTkQsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyAnbGVmdC1ib3R0b20nOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5IT1JJWk9OVEFMLFxuICAgIHNpZGU6IENsclNpZGUuQkVGT1JFLFxuICAgIGFuY2hvcjogQ2xyQWxpZ25tZW50LlNUQVJULFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5TVEFSVCxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljICdsZWZ0LXRvcCc6IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLkhPUklaT05UQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5CRUZPUkUsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuQ0VOVEVSLFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5FTkQsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyAncmlnaHQtYm90dG9tJzogQ2xyUG9wb3ZlclBvc2l0aW9uID0ge1xuICAgIGF4aXM6IENsckF4aXMuSE9SSVpPTlRBTCxcbiAgICBzaWRlOiBDbHJTaWRlLkFGVEVSLFxuICAgIGFuY2hvcjogQ2xyQWxpZ25tZW50LlNUQVJULFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5TVEFSVCxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljICdyaWdodC10b3AnOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5IT1JJWk9OVEFMLFxuICAgIHNpZGU6IENsclNpZGUuQUZURVIsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuQ0VOVEVSLFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5FTkQsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyAndG9wLWxlZnQnOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5WRVJUSUNBTCxcbiAgICBzaWRlOiBDbHJTaWRlLkJFRk9SRSxcbiAgICBhbmNob3I6IENsckFsaWdubWVudC5TVEFSVCxcbiAgICBjb250ZW50OiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyAndG9wLXJpZ2h0JzogQ2xyUG9wb3ZlclBvc2l0aW9uID0ge1xuICAgIGF4aXM6IENsckF4aXMuVkVSVElDQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5CRUZPUkUsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuRU5ELFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5FTkQsXG4gIH07XG59XG5cbi8qKlxuICogUG9wb3ZlciBwb3NpdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUG9wb3ZlclBvc2l0aW9uID0gKHR5cGVvZiBQb3BvdmVyUG9zaXRpb25zLm9wdGlvbnMpW251bWJlcl07XG4iXX0=
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Time model.
|
|
3
|
-
* Takes care of keeping records of full time.
|
|
4
|
-
*/
|
|
5
|
-
export class TimeModel {
|
|
6
|
-
constructor(...args) {
|
|
7
|
-
if (args[0] instanceof Date) {
|
|
8
|
-
const date = args[0];
|
|
9
|
-
this.hours = date.getHours();
|
|
10
|
-
this.minutes = date.getMinutes();
|
|
11
|
-
this.seconds = date.getSeconds();
|
|
12
|
-
}
|
|
13
|
-
else if (typeof args[0] === 'string') {
|
|
14
|
-
const [hours, minutes, seconds] = args[0].split(':').map(n => parseInt(n));
|
|
15
|
-
this.hours = hours;
|
|
16
|
-
this.minutes = minutes;
|
|
17
|
-
this.seconds = seconds;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
this.hours = args[0];
|
|
21
|
-
this.minutes = args[1];
|
|
22
|
-
this.seconds = args[2];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Checks if the passed value is equal to current time model.
|
|
27
|
-
* @param value - Time model.
|
|
28
|
-
* @returns Whether value is equal to current time model.
|
|
29
|
-
*/
|
|
30
|
-
isEqual(value) {
|
|
31
|
-
if (value) {
|
|
32
|
-
return this.hours === value.hours && this.minutes === value.minutes && this.seconds === value.seconds;
|
|
33
|
-
}
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Checks if current time model is after value.
|
|
38
|
-
* @param value - time model.
|
|
39
|
-
* @returns Whether current time model is after value.
|
|
40
|
-
*/
|
|
41
|
-
isAfter(value) {
|
|
42
|
-
return this.toDate() > value.toDate();
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Checks if current time model is before value.
|
|
46
|
-
* @param value - Time model.
|
|
47
|
-
* @returns Whether current time model is before value.
|
|
48
|
-
*/
|
|
49
|
-
isBefore(value) {
|
|
50
|
-
return this.toDate() < value.toDate();
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Clones the current odel.
|
|
54
|
-
* @returns Cloned model.
|
|
55
|
-
*/
|
|
56
|
-
clone() {
|
|
57
|
-
return new TimeModel(this.hours, this.minutes, this.seconds);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Convert to Javascript Date object.
|
|
61
|
-
* @returns Javascript Date object.
|
|
62
|
-
*/
|
|
63
|
-
toDate() {
|
|
64
|
-
return new Date(new Date().setHours(this.hours, this.minutes, this.seconds ? this.seconds : 0));
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* To HTML5 time spec string.
|
|
68
|
-
* @returns Time as HTML5 spec string.
|
|
69
|
-
*/
|
|
70
|
-
toHTML5SpecTimeString() {
|
|
71
|
-
// The clarity time picker uses the format 'hh:mm:ss'.
|
|
72
|
-
if (this.seconds) {
|
|
73
|
-
return this.pad(this.hours) + ':' + this.pad(this.minutes) + ':' + this.pad(this.seconds);
|
|
74
|
-
}
|
|
75
|
-
// The clarity time picker uses the format 'hh:mm'.
|
|
76
|
-
return this.pad(this.hours) + ':' + this.pad(this.minutes);
|
|
77
|
-
}
|
|
78
|
-
pad(num) {
|
|
79
|
-
return num < 10 ? `0${num}` : `${num}`;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9tb2RlbHMvdGltZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQXdCcEIsWUFBbUIsR0FBRyxJQUFtQztRQUN2RCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksR0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFnQjtRQUM3QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4RyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsS0FBZ0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLO1FBQ1YsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0kscUJBQXFCO1FBQzFCLHNEQUFzRDtRQUN0RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELG1EQUFtRDtRQUNuRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sR0FBRyxDQUFDLEdBQVc7UUFDckIsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGltZSBtb2RlbC5cbiAqIFRha2VzIGNhcmUgb2Yga2VlcGluZyByZWNvcmRzIG9mIGZ1bGwgdGltZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRpbWVNb2RlbCB7XG4gIHByaXZhdGUgaG91cnMhOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBtaW51dGVzITogbnVtYmVyO1xuXG4gIHByaXZhdGUgc2Vjb25kcyE6IG51bWJlcjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRpbWUgbW9kZWwuXG4gICAqIEBwYXJhbSBob3VycyAtIFRoZSBmdWxsIGhvdXJzICgwLTIzKS5cbiAgICogQHBhcmFtIG1pbnV0ZXMgLSBUaGUgbWludXRlc1xuICAgKiBAcGFyYW0gc2Vjb25kcyAtIFRoZSBzZWNvbmRzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoaG91cnM6IG51bWJlciwgbWludXRlczogbnVtYmVyLCBzZWNvbmRzOiBudW1iZXIpO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiB0aW1lIG1vZGVsLlxuICAgKiBAcGFyYW0gZGF0ZSAtIEphdmFzY3JpcHQgRGF0ZSBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoZGF0ZTogRGF0ZSk7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGltZSBtb2RlbC5cbiAgICogQHBhcmFtIGRhdGUgLSB0aW1lIHN0cmluZyBpbiBgaGg6bW06c3NgIGZvcm1hdC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRlOiBzdHJpbmcpO1xuICBwdWJsaWMgY29uc3RydWN0b3IoLi4uYXJnczogQXJyYXk8bnVtYmVyIHwgRGF0ZSB8IHN0cmluZz4pIHtcbiAgICBpZiAoYXJnc1swXSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSBhcmdzWzBdO1xuICAgICAgdGhpcy5ob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICAgIHRoaXMubWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpO1xuICAgICAgdGhpcy5zZWNvbmRzID0gZGF0ZS5nZXRTZWNvbmRzKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSBhcmdzWzBdLnNwbGl0KCc6JykubWFwKG4gPT4gcGFyc2VJbnQobikpO1xuICAgICAgdGhpcy5ob3VycyA9IGhvdXJzO1xuICAgICAgdGhpcy5taW51dGVzID0gbWludXRlcztcbiAgICAgIHRoaXMuc2Vjb25kcyA9IHNlY29uZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG91cnMgPSBhcmdzWzBdIGFzIG51bWJlcjtcbiAgICAgIHRoaXMubWludXRlcyA9IGFyZ3NbMV0gYXMgbnVtYmVyO1xuICAgICAgdGhpcy5zZWNvbmRzID0gYXJnc1syXSBhcyBudW1iZXI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgcGFzc2VkIHZhbHVlIGlzIGVxdWFsIHRvIGN1cnJlbnQgdGltZSBtb2RlbC5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGltZSBtb2RlbC5cbiAgICogQHJldHVybnMgV2hldGhlciB2YWx1ZSBpcyBlcXVhbCB0byBjdXJyZW50IHRpbWUgbW9kZWwuXG4gICAqL1xuICBwdWJsaWMgaXNFcXVhbCh2YWx1ZTogVGltZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ob3VycyA9PT0gdmFsdWUuaG91cnMgJiYgdGhpcy5taW51dGVzID09PSB2YWx1ZS5taW51dGVzICYmIHRoaXMuc2Vjb25kcyA9PT0gdmFsdWUuc2Vjb25kcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjdXJyZW50IHRpbWUgbW9kZWwgaXMgYWZ0ZXIgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIHRpbWUgbW9kZWwuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgY3VycmVudCB0aW1lIG1vZGVsIGlzIGFmdGVyIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGlzQWZ0ZXIodmFsdWU6IFRpbWVNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpID4gdmFsdWUudG9EYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGN1cnJlbnQgdGltZSBtb2RlbCBpcyBiZWZvcmUgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRpbWUgbW9kZWwuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgY3VycmVudCB0aW1lIG1vZGVsIGlzIGJlZm9yZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBpc0JlZm9yZSh2YWx1ZTogVGltZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9EYXRlKCkgPCB2YWx1ZS50b0RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9uZXMgdGhlIGN1cnJlbnQgb2RlbC5cbiAgICogQHJldHVybnMgQ2xvbmVkIG1vZGVsLlxuICAgKi9cbiAgcHVibGljIGNsb25lKCk6IFRpbWVNb2RlbCB7XG4gICAgcmV0dXJuIG5ldyBUaW1lTW9kZWwodGhpcy5ob3VycywgdGhpcy5taW51dGVzLCB0aGlzLnNlY29uZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gSmF2YXNjcmlwdCBEYXRlIG9iamVjdC5cbiAgICogQHJldHVybnMgSmF2YXNjcmlwdCBEYXRlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyB0b0RhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnModGhpcy5ob3VycywgdGhpcy5taW51dGVzLCB0aGlzLnNlY29uZHMgPyB0aGlzLnNlY29uZHMgOiAwKSk7XG4gIH1cblxuICAvKipcbiAgICogVG8gSFRNTDUgdGltZSBzcGVjIHN0cmluZy5cbiAgICogQHJldHVybnMgVGltZSBhcyBIVE1MNSBzcGVjIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyB0b0hUTUw1U3BlY1RpbWVTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAvLyBUaGUgY2xhcml0eSB0aW1lIHBpY2tlciB1c2VzIHRoZSBmb3JtYXQgJ2hoOm1tOnNzJy5cbiAgICBpZiAodGhpcy5zZWNvbmRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYWQodGhpcy5ob3VycykgKyAnOicgKyB0aGlzLnBhZCh0aGlzLm1pbnV0ZXMpICsgJzonICsgdGhpcy5wYWQodGhpcy5zZWNvbmRzKTtcbiAgICB9XG4gICAgLy8gVGhlIGNsYXJpdHkgdGltZSBwaWNrZXIgdXNlcyB0aGUgZm9ybWF0ICdoaDptbScuXG4gICAgcmV0dXJuIHRoaXMucGFkKHRoaXMuaG91cnMpICsgJzonICsgdGhpcy5wYWQodGhpcy5taW51dGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFkKG51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbnVtIDwgMTAgPyBgMCR7bnVtfWAgOiBgJHtudW19YDtcbiAgfVxufVxuXG4vKipcbiAqIFRpbWUgbW9kZWwuXG4gKiBUYWtlcyBjYXJlIG9mIGtlZXBpbmcgcmVjb3JkcyBvZiBmdWxsIHRpbWUuXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxhYmxlVGltZU1vZGVsID0gVGltZU1vZGVsIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiJdfQ==
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Daterange control state service.
|
|
5
|
-
* Stores data for communication between daterange container and input.
|
|
6
|
-
*/
|
|
7
|
-
export class DaterangeControlStateService {
|
|
8
|
-
constructor() {
|
|
9
|
-
/** Disabled control state. */
|
|
10
|
-
this.disabled = false;
|
|
11
|
-
/** Focused. */
|
|
12
|
-
this.focused = false;
|
|
13
|
-
/** List of validation errors. */
|
|
14
|
-
this.errors = null;
|
|
15
|
-
this._invalid = false;
|
|
16
|
-
this._touched = false;
|
|
17
|
-
/**
|
|
18
|
-
* Event triggered when status changes.
|
|
19
|
-
*/
|
|
20
|
-
this.statusChange = new EventEmitter();
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Control invalid status.
|
|
24
|
-
* @returns Control invalid status.
|
|
25
|
-
*/
|
|
26
|
-
get invalid() {
|
|
27
|
-
return this._invalid;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Touched.
|
|
31
|
-
* @returns Touched.
|
|
32
|
-
*/
|
|
33
|
-
get touched() {
|
|
34
|
-
return this._touched;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Update status.
|
|
38
|
-
* Only for valid & invalid status changes.
|
|
39
|
-
* And only if there was a real change.
|
|
40
|
-
* Also updates errors list.
|
|
41
|
-
* Emits `statusChange` event.
|
|
42
|
-
* @param control
|
|
43
|
-
*/
|
|
44
|
-
updateStatus(control) {
|
|
45
|
-
this._touched = control.touched;
|
|
46
|
-
// We only care about valid & invalid status changes.
|
|
47
|
-
// There is an bug where `ClrDaterangepickerDirective.writeValue` is called twice with same value (`null`).
|
|
48
|
-
// Setting ` && (control.touched || control.dirty)` in next if-statement will hide the errors,
|
|
49
|
-
// but the control will still be invalid with errors (just hidden).
|
|
50
|
-
if (['VALID', 'INVALID'].includes(control.status)) {
|
|
51
|
-
this.errors = control.errors;
|
|
52
|
-
this._invalid = control.invalid;
|
|
53
|
-
this.statusChange.emit(this._invalid);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeControlStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
57
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeControlStateService }); }
|
|
58
|
-
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeControlStateService, decorators: [{
|
|
60
|
-
type: Injectable
|
|
61
|
-
}] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLWNvbnRyb2wtc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9wcm92aWRlcnMvZGF0ZXJhbmdlLWNvbnRyb2wtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHekQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQUR6QztRQUVFLDhCQUE4QjtRQUN2QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXhCLGVBQWU7UUFDUixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGlDQUFpQztRQUMxQixXQUFNLEdBQTRCLElBQUksQ0FBQztRQUV0QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBU2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUErQnpCOztXQUVHO1FBQ0ksaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0tBQ25EO0lBM0NDOzs7T0FHRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxZQUFZLENBQUMsT0FBd0I7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRWhDLHFEQUFxRDtRQUNyRCwyR0FBMkc7UUFDM0csOEZBQThGO1FBQzlGLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQzs4R0FoRFUsNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBEYXRlcmFuZ2UgY29udHJvbCBzdGF0ZSBzZXJ2aWNlLlxuICogU3RvcmVzIGRhdGEgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiBkYXRlcmFuZ2UgY29udGFpbmVyIGFuZCBpbnB1dC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2Uge1xuICAvKiogRGlzYWJsZWQgY29udHJvbCBzdGF0ZS4gKi9cbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqIEZvY3VzZWQuICovXG4gIHB1YmxpYyBmb2N1c2VkID0gZmFsc2U7XG5cbiAgLyoqIExpc3Qgb2YgdmFsaWRhdGlvbiBlcnJvcnMuICovXG4gIHB1YmxpYyBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9pbnZhbGlkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBDb250cm9sIGludmFsaWQgc3RhdHVzLlxuICAgKiBAcmV0dXJucyBDb250cm9sIGludmFsaWQgc3RhdHVzLlxuICAgKi9cbiAgcHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG91Y2hlZCA9IGZhbHNlO1xuICAvKipcbiAgICogVG91Y2hlZC5cbiAgICogQHJldHVybnMgVG91Y2hlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgdG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdG91Y2hlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc3RhdHVzLlxuICAgKiBPbmx5IGZvciB2YWxpZCAmIGludmFsaWQgc3RhdHVzIGNoYW5nZXMuXG4gICAqIEFuZCBvbmx5IGlmIHRoZXJlIHdhcyBhIHJlYWwgY2hhbmdlLlxuICAgKiBBbHNvIHVwZGF0ZXMgZXJyb3JzIGxpc3QuXG4gICAqIEVtaXRzIGBzdGF0dXNDaGFuZ2VgIGV2ZW50LlxuICAgKiBAcGFyYW0gY29udHJvbFxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVN0YXR1cyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICB0aGlzLl90b3VjaGVkID0gY29udHJvbC50b3VjaGVkO1xuXG4gICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHZhbGlkICYgaW52YWxpZCBzdGF0dXMgY2hhbmdlcy5cbiAgICAvLyBUaGVyZSBpcyBhbiBidWcgd2hlcmUgYENsckRhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZS53cml0ZVZhbHVlYCBpcyBjYWxsZWQgdHdpY2Ugd2l0aCBzYW1lIHZhbHVlIChgbnVsbGApLlxuICAgIC8vIFNldHRpbmcgYCAmJiAoY29udHJvbC50b3VjaGVkIHx8IGNvbnRyb2wuZGlydHkpYCBpbiBuZXh0IGlmLXN0YXRlbWVudCB3aWxsIGhpZGUgdGhlIGVycm9ycyxcbiAgICAvLyBidXQgdGhlIGNvbnRyb2wgd2lsbCBzdGlsbCBiZSBpbnZhbGlkIHdpdGggZXJyb3JzIChqdXN0IGhpZGRlbikuXG4gICAgaWYgKFsnVkFMSUQnLCAnSU5WQUxJRCddLmluY2x1ZGVzKGNvbnRyb2wuc3RhdHVzKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSBjb250cm9sLmVycm9ycztcbiAgICAgIHRoaXMuX2ludmFsaWQgPSBjb250cm9sLmludmFsaWQ7XG4gICAgICB0aGlzLnN0YXR1c0NoYW5nZS5lbWl0KHRoaXMuX2ludmFsaWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCB0cmlnZ2VyZWQgd2hlbiBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0dXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG59XG4iXX0=
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { FormatWidth, getLocaleDateFormat } from '@angular/common';
|
|
2
|
-
import { Inject, Injectable, LOCALE_ID } from '@angular/core';
|
|
3
|
-
import { BIG_ENDIAN, DELIMITER_REGEX, LITTLE_ENDIAN, LITTLE_ENDIAN_REGEX, MIDDLE_ENDIAN, MIDDLE_ENDIAN_REGEX, SEPARATOR_TEXT_DEFAULT, USER_INPUT_REGEX, } from '../daterange.constants';
|
|
4
|
-
import { DayModel } from '../models/day.model';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
/**
|
|
7
|
-
* Daterange parsing service.
|
|
8
|
-
* Heavy inspired by `date-io.service.ts` from Clarity.
|
|
9
|
-
* https://github.com/vmware-clarity/ng-clarity/blob/a21fe726fe91ae3c929b8f016359afe354bb89c6/projects/angular/src/forms/datepicker/providers/date-io.service.ts
|
|
10
|
-
*/
|
|
11
|
-
export class DaterangeParsingService {
|
|
12
|
-
/** Locale format. */
|
|
13
|
-
get localeFormat() {
|
|
14
|
-
return (this.localeDisplayFormat.format[0] +
|
|
15
|
-
this.localeDelimiter[0] +
|
|
16
|
-
this.localeDisplayFormat.format[1] +
|
|
17
|
-
this.localeDelimiter[1] +
|
|
18
|
-
this.localeDisplayFormat.format[2]);
|
|
19
|
-
}
|
|
20
|
-
constructor(locale) {
|
|
21
|
-
this.locale = locale;
|
|
22
|
-
this.localeDelimiter = [];
|
|
23
|
-
const localeFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);
|
|
24
|
-
const format = localeFormat.toLocaleLowerCase();
|
|
25
|
-
if (LITTLE_ENDIAN_REGEX.test(format)) {
|
|
26
|
-
this.localeDisplayFormat = LITTLE_ENDIAN;
|
|
27
|
-
}
|
|
28
|
-
else if (MIDDLE_ENDIAN_REGEX.test(format)) {
|
|
29
|
-
this.localeDisplayFormat = MIDDLE_ENDIAN;
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
this.localeDisplayFormat = BIG_ENDIAN;
|
|
33
|
-
}
|
|
34
|
-
// Splitting it by date, month and year, leaves us with the delimiters.
|
|
35
|
-
// E.g. `"dd/MM/y".split(/d+|m+|y+/i)` results in `["", "/", "/", ""]`.
|
|
36
|
-
const delimiters = localeFormat.split(DELIMITER_REGEX);
|
|
37
|
-
this.localeDelimiter = [delimiters[1], delimiters[2]];
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Convert daterange to locale friendly text.
|
|
41
|
-
* @param daterange - Daterange.
|
|
42
|
-
* @param separator - Separator between 'from' and 'to' dates.
|
|
43
|
-
* @returns Friendly daterange text.
|
|
44
|
-
*/
|
|
45
|
-
toLocaleString(daterange, separator = SEPARATOR_TEXT_DEFAULT) {
|
|
46
|
-
if (daterange == null) {
|
|
47
|
-
return '';
|
|
48
|
-
}
|
|
49
|
-
const { from, to } = daterange;
|
|
50
|
-
if (from == null || to == null) {
|
|
51
|
-
return '';
|
|
52
|
-
}
|
|
53
|
-
const fromDate = from.toDate();
|
|
54
|
-
const toDate = to.toDate();
|
|
55
|
-
const fromDateStr = this.toLocaleDisplayFormatString(fromDate);
|
|
56
|
-
const toDateStr = this.toLocaleDisplayFormatString(toDate);
|
|
57
|
-
return fromDateStr + separator + toDateStr;
|
|
58
|
-
}
|
|
59
|
-
toLocaleStringWithTime(daterange, separator = SEPARATOR_TEXT_DEFAULT) {
|
|
60
|
-
if (daterange == null) {
|
|
61
|
-
return '';
|
|
62
|
-
}
|
|
63
|
-
const { from, to, fromTime, toTime } = daterange;
|
|
64
|
-
if (from == null || to == null) {
|
|
65
|
-
return '';
|
|
66
|
-
}
|
|
67
|
-
const fromDate = from.toDate();
|
|
68
|
-
const toDate = to.toDate();
|
|
69
|
-
const fromDateStr = this.toLocaleDisplayFormatString(fromDate);
|
|
70
|
-
const toDateStr = this.toLocaleDisplayFormatString(toDate);
|
|
71
|
-
if (fromTime === null || toTime === null) {
|
|
72
|
-
return fromDateStr + separator + toDateStr;
|
|
73
|
-
}
|
|
74
|
-
return fromDateStr + ' ' + this.toTimeString(fromTime) + separator + toDateStr + ' ' + this.toTimeString(toTime);
|
|
75
|
-
}
|
|
76
|
-
toTimeString(time) {
|
|
77
|
-
return time?.toHTML5SpecTimeString();
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Convert date to locale display format string.
|
|
81
|
-
* @param date - Javascript Date object.
|
|
82
|
-
* @returns Locale display format string.
|
|
83
|
-
*/
|
|
84
|
-
toLocaleDisplayFormatString(date) {
|
|
85
|
-
const dateNo = date.getDate();
|
|
86
|
-
const monthNo = date.getMonth() + 1;
|
|
87
|
-
const yearNo = date.getFullYear();
|
|
88
|
-
const dateStr = this.pad(dateNo);
|
|
89
|
-
const monthStr = this.pad(monthNo);
|
|
90
|
-
const delim1 = this.localeDelimiter[0];
|
|
91
|
-
const delim2 = this.localeDelimiter[1];
|
|
92
|
-
if (this.localeDisplayFormat === LITTLE_ENDIAN) {
|
|
93
|
-
return dateStr + delim1 + monthStr + delim2 + yearNo;
|
|
94
|
-
}
|
|
95
|
-
else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {
|
|
96
|
-
return monthStr + delim1 + dateStr + delim2 + yearNo;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
return yearNo + delim1 + monthStr + delim2 + dateStr;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* String padding with zeros.
|
|
104
|
-
* @param num - Number to pad.
|
|
105
|
-
* @returns Padded string.
|
|
106
|
-
*/
|
|
107
|
-
pad(num) {
|
|
108
|
-
return num < 10 ? `0${num}` : `${num}`;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Parse daterange string to daterange object.
|
|
112
|
-
* @param daterangeString - Daterange string.
|
|
113
|
-
* @param separator - Separator text.
|
|
114
|
-
* @returns Daterange object.
|
|
115
|
-
*/
|
|
116
|
-
parse(daterangeString, separator = SEPARATOR_TEXT_DEFAULT) {
|
|
117
|
-
if (daterangeString == null || daterangeString === '') {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
const [fromString, toString] = daterangeString.split(separator);
|
|
121
|
-
const from = this.getDayModelFromDateString(fromString);
|
|
122
|
-
const to = this.getDayModelFromDateString(toString);
|
|
123
|
-
if (from == null && to == null) {
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
return { from, to };
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Get `DayModel` from date string.
|
|
130
|
-
* @param dateString - Date string.
|
|
131
|
-
* @returns DayModel.
|
|
132
|
-
*/
|
|
133
|
-
getDayModelFromDateString(dateString) {
|
|
134
|
-
if (dateString == null || dateString === '') {
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
|
-
const dateParts = dateString.match(USER_INPUT_REGEX);
|
|
138
|
-
if (dateParts == null || dateParts.length !== 3) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
const [firstPart, secondPart, thirdPart] = dateParts;
|
|
142
|
-
if (this.localeDisplayFormat === LITTLE_ENDIAN) {
|
|
143
|
-
// secondPart is month && firstPart is date.
|
|
144
|
-
return this.getDayModelFromDateParts(thirdPart, secondPart, firstPart);
|
|
145
|
-
}
|
|
146
|
-
else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {
|
|
147
|
-
// firstPart is month && secondPart is date.
|
|
148
|
-
return this.getDayModelFromDateParts(thirdPart, firstPart, secondPart);
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
// secondPart is month && thirdPart is date.
|
|
152
|
-
return this.getDayModelFromDateParts(firstPart, secondPart, thirdPart);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Get `DayModel` from date string parts.
|
|
157
|
-
* @param yearString - Year string.
|
|
158
|
-
* @param monthString - Month string.
|
|
159
|
-
* @param dateString - Date string.
|
|
160
|
-
* @returns DayModel.
|
|
161
|
-
*/
|
|
162
|
-
getDayModelFromDateParts(yearString, monthString, dateString) {
|
|
163
|
-
// Check for valid date part strings.
|
|
164
|
-
let year = parseInt(yearString);
|
|
165
|
-
if (isNaN(year)) {
|
|
166
|
-
return null;
|
|
167
|
-
}
|
|
168
|
-
let month = parseInt(monthString);
|
|
169
|
-
if (isNaN(month)) {
|
|
170
|
-
return null;
|
|
171
|
-
}
|
|
172
|
-
const date = parseInt(dateString);
|
|
173
|
-
if (isNaN(date)) {
|
|
174
|
-
return null;
|
|
175
|
-
}
|
|
176
|
-
// Convert year to 4 digit year.
|
|
177
|
-
year = this.parseToFourDigitYear(year);
|
|
178
|
-
if (year == null) {
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
// Month is zero-indexed.
|
|
182
|
-
month -= 1;
|
|
183
|
-
// Creating new Javascript Date object, because it will automatically take care of
|
|
184
|
-
// switching to next or previous months & years without we having to worry about it.
|
|
185
|
-
const parsedDate = new Date(year, month, date);
|
|
186
|
-
if (isNaN(parsedDate.getTime())) {
|
|
187
|
-
return null;
|
|
188
|
-
}
|
|
189
|
-
return new DayModel(parsedDate);
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Takes in a year and if it is a 2 digit year, returns the corresponding 4 digit year.
|
|
193
|
-
* Window of 80 years before and 20 years after the present year.
|
|
194
|
-
* Credit: https://github.com/globalizejs/globalize/blob/e1b31cd6a4f1cff75b185b68b7a32220aac5196f/src/date/parse.js
|
|
195
|
-
* @param year - Year.
|
|
196
|
-
* @returns Four-digit year.
|
|
197
|
-
*/
|
|
198
|
-
parseToFourDigitYear(year) {
|
|
199
|
-
// Impossible years.
|
|
200
|
-
if (year > 9999 || (year > 100 && year < 999) || year < 10) {
|
|
201
|
-
return null;
|
|
202
|
-
}
|
|
203
|
-
if (year > 999) {
|
|
204
|
-
return year;
|
|
205
|
-
}
|
|
206
|
-
const currYear = new Date().getFullYear();
|
|
207
|
-
const century = Math.floor(currYear / 100) * 100;
|
|
208
|
-
let result = year + century;
|
|
209
|
-
if (result > currYear + 20) {
|
|
210
|
-
result = result - 100;
|
|
211
|
-
}
|
|
212
|
-
return result;
|
|
213
|
-
}
|
|
214
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeParsingService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
215
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeParsingService, providedIn: 'root' }); }
|
|
216
|
-
}
|
|
217
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeParsingService, decorators: [{
|
|
218
|
-
type: Injectable,
|
|
219
|
-
args: [{
|
|
220
|
-
providedIn: 'root',
|
|
221
|
-
}]
|
|
222
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
223
|
-
type: Inject,
|
|
224
|
-
args: [LOCALE_ID]
|
|
225
|
-
}] }] });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLXBhcnNpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9wcm92aWRlcnMvZGF0ZXJhbmdlLXBhcnNpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFDTCxVQUFVLEVBQ1YsZUFBZSxFQUVmLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUFFLFFBQVEsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQzs7QUFJakU7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMscUJBQXFCO0lBQ3JCLElBQVcsWUFBWTtRQUNyQixPQUFPLENBQ0wsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUF1RCxNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWJyRCxvQkFBZSxHQUFrQixFQUFFLENBQUM7UUFjbEQsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1B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MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1hdFdpZHRoLCBnZXRMb2NhbGVEYXRlRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEJJR19FTkRJQU4sXG4gIERFTElNSVRFUl9SRUdFWCxcbiAgSW5wdXREYXRlRGlzcGxheUZvcm1hdCxcbiAgTElUVExFX0VORElBTixcbiAgTElUVExFX0VORElBTl9SRUdFWCxcbiAgTUlERExFX0VORElBTixcbiAgTUlERExFX0VORElBTl9SRUdFWCxcbiAgU0VQQVJBVE9SX1RFWFRfREVGQVVMVCxcbiAgVVNFUl9JTlBVVF9SRUdFWCxcbn0gZnJvbSAnLi4vZGF0ZXJhbmdlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBOdWxsYWJsZURhdGVyYW5nZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0ZXJhbmdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXlNb2RlbCwgTnVsbGFibGVEYXlNb2RlbCB9IGZyb20gJy4uL21vZGVscy9kYXkubW9kZWwnO1xuaW1wb3J0IHsgTnVsbGFibGVUaW1lcmFuZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RpbWVyYW5nZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGltZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3RpbWUubW9kZWwnO1xuXG4vKipcbiAqIERhdGVyYW5nZSBwYXJzaW5nIHNlcnZpY2UuXG4gKiBIZWF2eSBpbnNwaXJlZCBieSBgZGF0ZS1pby5zZXJ2aWNlLnRzYCBmcm9tIENsYXJpdHkuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdm13YXJlLWNsYXJpdHkvbmctY2xhcml0eS9ibG9iL2EyMWZlNzI2ZmU5MWFlM2M5MjliOGYwMTYzNTlhZmUzNTRiYjg5YzYvcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvZGF0ZXBpY2tlci9wcm92aWRlcnMvZGF0ZS1pby5zZXJ2aWNlLnRzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcmFuZ2VQYXJzaW5nU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhbGVEaXNwbGF5Rm9ybWF0OiBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0O1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWxlRGVsaW1pdGVyOiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgLyoqIExvY2FsZSBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXQgbG9jYWxlRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdC5mb3JtYXRbMF0gK1xuICAgICAgdGhpcy5sb2NhbGVEZWxpbWl0ZXJbMF0gK1xuICAgICAgdGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0LmZvcm1hdFsxXSArXG4gICAgICB0aGlzLmxvY2FsZURlbGltaXRlclsxXSArXG4gICAgICB0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQuZm9ybWF0WzJdXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSByZWFkb25seSBsb2NhbGU6IHN0cmluZykge1xuICAgIGNvbnN0IGxvY2FsZUZvcm1hdCA9IGdldExvY2FsZURhdGVGb3JtYXQodGhpcy5sb2NhbGUsIEZvcm1hdFdpZHRoLlNob3J0KTtcbiAgICBjb25zdCBmb3JtYXQ6IHN0cmluZyA9IGxvY2FsZUZvcm1hdC50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKExJVFRMRV9FTkRJQU5fUkVHRVgudGVzdChmb3JtYXQpKSB7XG4gICAgICB0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQgPSBMSVRUTEVfRU5ESUFOO1xuICAgIH0gZWxzZSBpZiAoTUlERExFX0VORElBTl9SRUdFWC50ZXN0KGZvcm1hdCkpIHtcbiAgICAgIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdCA9IE1JRERMRV9FTkRJQU47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdCA9IEJJR19FTkRJQU47XG4gICAgfVxuXG4gICAgLy8gU3BsaXR0aW5nIGl0IGJ5IGRhdGUsIG1vbnRoIGFuZCB5ZWFyLCBsZWF2ZXMgdXMgd2l0aCB0aGUgZGVsaW1pdGVycy5cbiAgICAvLyBFLmcuIGBcImRkL01NL3lcIi5zcGxpdCgvZCt8bSt8eSsvaSlgIHJlc3VsdHMgaW4gYFtcIlwiLCBcIi9cIiwgXCIvXCIsIFwiXCJdYC5cbiAgICBjb25zdCBkZWxpbWl0ZXJzOiBBcnJheTxzdHJpbmc+ID0gbG9jYWxlRm9ybWF0LnNwbGl0KERFTElNSVRFUl9SRUdFWCk7XG4gICAgdGhpcy5sb2NhbGVEZWxpbWl0ZXIgPSBbZGVsaW1pdGVyc1sxXSwgZGVsaW1pdGVyc1syXV07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBkYXRlcmFuZ2UgdG8gbG9jYWxlIGZyaWVuZGx5IHRleHQuXG4gICAqIEBwYXJhbSBkYXRlcmFuZ2UgLSBEYXRlcmFuZ2UuXG4gICAqIEBwYXJhbSBzZXBhcmF0b3IgLSBTZXBhcmF0b3IgYmV0d2VlbiAnZnJvbScgYW5kICd0bycgZGF0ZXMuXG4gICAqIEByZXR1cm5zIEZyaWVuZGx5IGRhdGVyYW5nZSB0ZXh0LlxuICAgKi9cbiAgcHVibGljIHRvTG9jYWxlU3RyaW5nKGRhdGVyYW5nZTogTnVsbGFibGVEYXRlcmFuZ2UsIHNlcGFyYXRvcjogc3RyaW5nID0gU0VQQVJBVE9SX1RFWFRfREVGQVVMVCk6IHN0cmluZyB7XG4gICAgaWYgKGRhdGVyYW5nZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID0gZGF0ZXJhbmdlO1xuICAgIGlmIChmcm9tID09IG51bGwgfHwgdG8gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGZyb21EYXRlID0gZnJvbS50b0RhdGUoKTtcbiAgICBjb25zdCB0b0RhdGUgPSB0by50b0RhdGUoKTtcblxuICAgIGNvbnN0IGZyb21EYXRlU3RyID0gdGhpcy50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoZnJvbURhdGUpO1xuICAgIGNvbnN0IHRvRGF0ZVN0ciA9IHRoaXMudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKHRvRGF0ZSk7XG5cbiAgICByZXR1cm4gZnJvbURhdGVTdHIgKyBzZXBhcmF0b3IgKyB0b0RhdGVTdHI7XG4gIH1cblxuICBwdWJsaWMgdG9Mb2NhbGVTdHJpbmdXaXRoVGltZShcbiAgICBkYXRlcmFuZ2U6IE51bGxhYmxlRGF0ZXJhbmdlIHwgTnVsbGFibGVUaW1lcmFuZ2UsXG4gICAgc2VwYXJhdG9yOiBzdHJpbmcgPSBTRVBBUkFUT1JfVEVYVF9ERUZBVUxUXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGRhdGVyYW5nZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgeyBmcm9tLCB0bywgZnJvbVRpbWUsIHRvVGltZSB9ID0gZGF0ZXJhbmdlIGFzIE51bGxhYmxlVGltZXJhbmdlO1xuICAgIGlmIChmcm9tID09IG51bGwgfHwgdG8gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGZyb21EYXRlID0gZnJvbS50b0RhdGUoKTtcbiAgICBjb25zdCB0b0RhdGUgPSB0by50b0RhdGUoKTtcblxuICAgIGNvbnN0IGZyb21EYXRlU3RyID0gdGhpcy50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoZnJvbURhdGUpO1xuICAgIGNvbnN0IHRvRGF0ZVN0ciA9IHRoaXMudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKHRvRGF0ZSk7XG5cbiAgICBpZiAoZnJvbVRpbWUgPT09IG51bGwgfHwgdG9UaW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZnJvbURhdGVTdHIgKyBzZXBhcmF0b3IgKyB0b0RhdGVTdHI7XG4gICAgfVxuICAgIHJldHVybiBmcm9tRGF0ZVN0ciArICcgJyArIHRoaXMudG9UaW1lU3RyaW5nKGZyb21UaW1lKSArIHNlcGFyYXRvciArIHRvRGF0ZVN0ciArICcgJyArIHRoaXMudG9UaW1lU3RyaW5nKHRvVGltZSk7XG4gIH1cblxuICBwcml2YXRlIHRvVGltZVN0cmluZyh0aW1lOiBUaW1lTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aW1lPy50b0hUTUw1U3BlY1RpbWVTdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGRhdGUgdG8gbG9jYWxlIGRpc3BsYXkgZm9ybWF0IHN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgLSBKYXZhc2NyaXB0IERhdGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBMb2NhbGUgZGlzcGxheSBmb3JtYXQgc3RyaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSB0b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZU5vOiBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBtb250aE5vOiBudW1iZXIgPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgIGNvbnN0IHllYXJObzogbnVtYmVyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgY29uc3QgZGF0ZVN0cjogc3RyaW5nID0gdGhpcy5wYWQoZGF0ZU5vKTtcbiAgICBjb25zdCBtb250aFN0cjogc3RyaW5nID0gdGhpcy5wYWQobW9udGhObyk7XG5cbiAgICBjb25zdCBkZWxpbTEgPSB0aGlzLmxvY2FsZURlbGltaXRlclswXTtcbiAgICBjb25zdCBkZWxpbTIgPSB0aGlzLmxvY2FsZURlbGltaXRlclsxXTtcblxuICAgIGlmICh0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQgPT09IExJVFRMRV9FTkRJQU4pIHtcbiAgICAgIHJldHVybiBkYXRlU3RyICsgZGVsaW0xICsgbW9udGhTdHIgKyBkZWxpbTIgKyB5ZWFyTm87XG4gICAgfSBlbHNlIGlmICh0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQgPT09IE1JRERMRV9FTkRJQU4pIHtcbiAgICAgIHJldHVybiBtb250aFN0ciArIGRlbGltMSArIGRhdGVTdHIgKyBkZWxpbTIgKyB5ZWFyTm87XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB5ZWFyTm8gKyBkZWxpbTEgKyBtb250aFN0ciArIGRlbGltMiArIGRhdGVTdHI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0cmluZyBwYWRkaW5nIHdpdGggemVyb3MuXG4gICAqIEBwYXJhbSBudW0gLSBOdW1iZXIgdG8gcGFkLlxuICAgKiBAcmV0dXJucyBQYWRkZWQgc3RyaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBwYWQobnVtOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBudW0gPCAxMCA/IGAwJHtudW19YCA6IGAke251bX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGRhdGVyYW5nZSBzdHJpbmcgdG8gZGF0ZXJhbmdlIG9iamVjdC5cbiAgICogQHBhcmFtIGRhdGVyYW5nZVN0cmluZyAtIERhdGVyYW5nZSBzdHJpbmcuXG4gICAqIEBwYXJhbSBzZXBhcmF0b3IgLSBTZXBhcmF0b3IgdGV4dC5cbiAgICogQHJldHVybnMgRGF0ZXJhbmdlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBwYXJzZShkYXRlcmFuZ2VTdHJpbmc6IHN0cmluZywgc2VwYXJhdG9yOiBzdHJpbmcgPSBTRVBBUkFUT1JfVEVYVF9ERUZBVUxUKTogTnVsbGFibGVEYXRlcmFuZ2Uge1xuICAgIGlmIChkYXRlcmFuZ2VTdHJpbmcgPT0gbnVsbCB8fCBkYXRlcmFuZ2VTdHJpbmcgPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBbZnJvbVN0cmluZywgdG9TdHJpbmddID0gZGF0ZXJhbmdlU3RyaW5nLnNwbGl0KHNlcGFyYXRvcik7XG4gICAgY29uc3QgZnJvbSA9IHRoaXMuZ2V0RGF5TW9kZWxGcm9tRGF0ZVN0cmluZyhmcm9tU3RyaW5nKTtcbiAgICBjb25zdCB0byA9IHRoaXMuZ2V0RGF5TW9kZWxGcm9tRGF0ZVN0cmluZyh0b1N0cmluZyk7XG5cbiAgICBpZiAoZnJvbSA9PSBudWxsICYmIHRvID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7IGZyb20sIHRvIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGBEYXlNb2RlbGAgZnJvbSBkYXRlIHN0cmluZy5cbiAgICogQHBhcmFtIGRhdGVTdHJpbmcgLSBEYXRlIHN0cmluZy5cbiAgICogQHJldHVybnMgRGF5TW9kZWwuXG4gICAqL1xuICBwcml2YXRlIGdldERheU1vZGVsRnJvbURhdGVTdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKTogTnVsbGFibGVEYXlNb2RlbCB7XG4gICAgaWYgKGRhdGVTdHJpbmcgPT0gbnVsbCB8fCBkYXRlU3RyaW5nID09PSAnJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZVBhcnRzOiBSZWdFeHBNYXRjaEFycmF5ID0gZGF0ZVN0cmluZy5tYXRjaChVU0VSX0lOUFVUX1JFR0VYKTtcbiAgICBpZiAoZGF0ZVBhcnRzID09IG51bGwgfHwgZGF0ZVBhcnRzLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZpcnN0UGFydCwgc2Vjb25kUGFydCwgdGhpcmRQYXJ0XSA9IGRhdGVQYXJ0cztcbiAgICBpZiAodGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0ID09PSBMSVRUTEVfRU5ESUFOKSB7XG4gICAgICAvLyBzZWNvbmRQYXJ0IGlzIG1vbnRoICYmIGZpcnN0UGFydCBpcyBkYXRlLlxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF5TW9kZWxGcm9tRGF0ZVBhcnRzKHRoaXJkUGFydCwgc2Vjb25kUGFydCwgZmlyc3RQYXJ0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdCA9PT0gTUlERExFX0VORElBTikge1xuICAgICAgLy8gZmlyc3RQYXJ0IGlzIG1vbnRoICYmIHNlY29uZFBhcnQgaXMgZGF0ZS5cbiAgICAgIHJldHVybiB0aGlzLmdldERheU1vZGVsRnJvbURhdGVQYXJ0cyh0aGlyZFBhcnQsIGZpcnN0UGFydCwgc2Vjb25kUGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlY29uZFBhcnQgaXMgbW9udGggJiYgdGhpcmRQYXJ0IGlzIGRhdGUuXG4gICAgICByZXR1cm4gdGhpcy5nZXREYXlNb2RlbEZyb21EYXRlUGFydHMoZmlyc3RQYXJ0LCBzZWNvbmRQYXJ0LCB0aGlyZFBhcnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYERheU1vZGVsYCBmcm9tIGRhdGUgc3RyaW5nIHBhcnRzLlxuICAgKiBAcGFyYW0geWVhclN0cmluZyAtIFllYXIgc3RyaW5nLlxuICAgKiBAcGFyYW0gbW9udGhTdHJpbmcgLSBNb250aCBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlU3RyaW5nIC0gRGF0ZSBzdHJpbmcuXG4gICAqIEByZXR1cm5zIERheU1vZGVsLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXREYXlNb2RlbEZyb21EYXRlUGFydHMoeWVhclN0cmluZzogc3RyaW5nLCBtb250aFN0cmluZzogc3RyaW5nLCBkYXRlU3RyaW5nOiBzdHJpbmcpOiBOdWxsYWJsZURheU1vZGVsIHtcbiAgICAvLyBDaGVjayBmb3IgdmFsaWQgZGF0ZSBwYXJ0IHN0cmluZ3MuXG4gICAgbGV0IHllYXI6IG51bWJlciA9IHBhcnNlSW50KHllYXJTdHJpbmcpO1xuICAgIGlmIChpc05hTih5ZWFyKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGxldCBtb250aDogbnVtYmVyID0gcGFyc2VJbnQobW9udGhTdHJpbmcpO1xuICAgIGlmIChpc05hTihtb250aCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkYXRlOiBudW1iZXIgPSBwYXJzZUludChkYXRlU3RyaW5nKTtcbiAgICBpZiAoaXNOYU4oZGF0ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgeWVhciB0byA0IGRpZ2l0IHllYXIuXG4gICAgeWVhciA9IHRoaXMucGFyc2VUb0ZvdXJEaWdpdFllYXIoeWVhcik7XG4gICAgaWYgKHllYXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gTW9udGggaXMgemVyby1pbmRleGVkLlxuICAgIG1vbnRoIC09IDE7XG5cbiAgICAvLyBDcmVhdGluZyBuZXcgSmF2YXNjcmlwdCBEYXRlIG9iamVjdCwgYmVjYXVzZSBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgdGFrZSBjYXJlIG9mXG4gICAgLy8gc3dpdGNoaW5nIHRvIG5leHQgb3IgcHJldmlvdXMgbW9udGhzICYgeWVhcnMgd2l0aG91dCB3ZSBoYXZpbmcgdG8gd29ycnkgYWJvdXQgaXQuXG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcbiAgICBpZiAoaXNOYU4ocGFyc2VkRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERheU1vZGVsKHBhcnNlZERhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2VzIGluIGEgeWVhciBhbmQgaWYgaXQgaXMgYSAyIGRpZ2l0IHllYXIsIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgNCBkaWdpdCB5ZWFyLlxuICAgKiBXaW5kb3cgb2YgODAgeWVhcnMgYmVmb3JlIGFuZCAyMCB5ZWFycyBhZnRlciB0aGUgcHJlc2VudCB5ZWFyLlxuICAgKiBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nbG9iYWxpemVqcy9nbG9iYWxpemUvYmxvYi9lMWIzMWNkNmE0ZjFjZmY3NWIxODViNjhiN2EzMjIyMGFhYzUxOTZmL3NyYy9kYXRlL3BhcnNlLmpzXG4gICAqIEBwYXJhbSB5ZWFyIC0gWWVhci5cbiAgICogQHJldHVybnMgRm91ci1kaWdpdCB5ZWFyLlxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVRvRm91ckRpZ2l0WWVhcih5ZWFyOiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICAvLyBJbXBvc3NpYmxlIHllYXJzLlxuICAgIGlmICh5ZWFyID4gOTk5OSB8fCAoeWVhciA+IDEwMCAmJiB5ZWFyIDwgOTk5KSB8fCB5ZWFyIDwgMTApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh5ZWFyID4gOTk5KSB7XG4gICAgICByZXR1cm4geWVhcjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyWWVhcjogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IGNlbnR1cnk6IG51bWJlciA9IE1hdGguZmxvb3IoY3VyclllYXIgLyAxMDApICogMTAwO1xuICAgIGxldCByZXN1bHQ6IG51bWJlciA9IHllYXIgKyBjZW50dXJ5O1xuICAgIGlmIChyZXN1bHQgPiBjdXJyWWVhciArIDIwKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgLSAxMDA7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|