@progressio_resources/gravity-design-system 2.6.21 → 2.6.23
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/esm2022/lib/components/gravity-calendar-v2/datepicker/base/bs-datepicker-container.mjs +66 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.component.mjs +129 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.config.mjs +14 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.callbacks.mjs +13 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.component.mjs +210 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.config.mjs +46 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.component.mjs +130 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.config.mjs +18 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.component.mjs +218 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.config.mjs +18 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component.mjs +134 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component.mjs +33 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.mjs +44 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component.mjs +190 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component.mjs +33 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-datepicker-day-decorator.directive.mjs +30 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.mjs +54 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.mjs +49 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.mjs +50 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/datepicker-animations.mjs +16 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/calc-days-calendar.mjs +16 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/flag-days-calendar.mjs +53 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/flag-months-calendar.mjs +39 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/flag-years-calendar.mjs +36 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/format-days-calendar.mjs +23 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/format-months-calendar.mjs +23 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/format-years-calendar.mjs +43 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/view-mode.mjs +4 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/models/index.mjs +7 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/_defaults.mjs +6 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.actions.mjs +64 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.effects.mjs +128 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.reducer.mjs +301 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.state.mjs +16 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.store.mjs +20 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/utils/bs-calendar-utils.mjs +74 -0
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/utils/matrix-utils.mjs +14 -0
- package/esm2022/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.mjs +227 -0
- package/esm2022/lib/gravity-design-system.module.mjs +47 -3
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/progressio_resources-gravity-design-system.mjs +2458 -33
- package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
- package/lib/components/gravity-calendar-v2/datepicker/base/bs-datepicker-container.d.ts +41 -0
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.component.d.ts +40 -0
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.config.d.ts +6 -0
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.callbacks.d.ts +6 -0
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.component.d.ts +64 -0
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.config.d.ts +53 -0
- package/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.component.d.ts +37 -0
- package/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.config.d.ts +7 -0
- package/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.component.d.ts +61 -0
- package/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.config.d.ts +7 -0
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component.d.ts +34 -0
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component.d.ts +14 -0
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.d.ts +16 -0
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component.d.ts +40 -0
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component.d.ts +14 -0
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-datepicker-day-decorator.directive.d.ts +7 -0
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.d.ts +23 -0
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.d.ts +19 -0
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.d.ts +19 -0
- package/lib/components/gravity-calendar-v2/datepicker/datepicker-animations.d.ts +3 -0
- package/lib/components/gravity-calendar-v2/datepicker/engine/calc-days-calendar.d.ts +2 -0
- package/lib/components/gravity-calendar-v2/datepicker/engine/flag-days-calendar.d.ts +12 -0
- package/lib/components/gravity-calendar-v2/datepicker/engine/flag-months-calendar.d.ts +12 -0
- package/lib/components/gravity-calendar-v2/datepicker/engine/flag-years-calendar.d.ts +13 -0
- package/lib/components/gravity-calendar-v2/datepicker/engine/format-days-calendar.d.ts +2 -0
- package/lib/components/gravity-calendar-v2/datepicker/engine/format-months-calendar.d.ts +2 -0
- package/lib/components/gravity-calendar-v2/datepicker/engine/format-years-calendar.d.ts +4 -0
- package/lib/components/gravity-calendar-v2/datepicker/engine/view-mode.d.ts +2 -0
- package/lib/components/gravity-calendar-v2/datepicker/models/index.d.ts +86 -0
- package/lib/components/gravity-calendar-v2/datepicker/reducer/_defaults.d.ts +3 -0
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.actions.d.ts +34 -0
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.effects.d.ts +34 -0
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.reducer.d.ts +3 -0
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.state.d.ts +34 -0
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.store.d.ts +8 -0
- package/lib/components/gravity-calendar-v2/datepicker/utils/bs-calendar-utils.d.ts +13 -0
- package/lib/components/gravity-calendar-v2/datepicker/utils/matrix-utils.d.ts +9 -0
- package/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.d.ts +49 -0
- package/lib/gravity-design-system.module.d.ts +43 -29
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/lib/styles/components/_datepicker-v2.scss +9 -0
- package/src/lib/styles/gravity-design-system.scss +1 -0
package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.effects.mjs
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { combineLatest } from 'rxjs';
|
|
3
|
+
import { filter, map } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./bs-datepicker.actions";
|
|
6
|
+
export class BsDatepickerEffects {
|
|
7
|
+
constructor(_actions) {
|
|
8
|
+
this._actions = _actions;
|
|
9
|
+
this._subs = [];
|
|
10
|
+
}
|
|
11
|
+
init(_bsDatepickerStore) {
|
|
12
|
+
this._store = _bsDatepickerStore;
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
/** setters */
|
|
16
|
+
setValue(value) {
|
|
17
|
+
this._store?.dispatch(this._actions.select(value));
|
|
18
|
+
}
|
|
19
|
+
setRangeValue(value) {
|
|
20
|
+
this._store?.dispatch(this._actions.selectRange(value));
|
|
21
|
+
}
|
|
22
|
+
setMinDate(value) {
|
|
23
|
+
this._store?.dispatch(this._actions.minDate(value));
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
setMaxDate(value) {
|
|
27
|
+
this._store?.dispatch(this._actions.maxDate(value));
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
setDisabled(value) {
|
|
31
|
+
this._store?.dispatch(this._actions.isDisabled(value));
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
/* Set rendering options */
|
|
35
|
+
setOptions(_config) {
|
|
36
|
+
const _options = Object.assign({ locale: 'en' }, _config);
|
|
37
|
+
this._store?.dispatch(this._actions.setOptions(_options));
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
/** view to mode bindings */
|
|
41
|
+
setBindings(container) {
|
|
42
|
+
if (!this._store)
|
|
43
|
+
return this;
|
|
44
|
+
container.daysCalendar$ = this._store.select(state => state.flaggedMonths).pipe(filter(months => !!months));
|
|
45
|
+
container.monthsCalendar = this._store.select(state => state.flaggedMonthsCalendar).pipe(filter(months => !!months));
|
|
46
|
+
container.yearsCalendar = this._store.select(state => state.yearsCalendarFlagged).pipe(filter(years => !!years));
|
|
47
|
+
container.viewMode = this._store.select(state => state.view?.mode);
|
|
48
|
+
container.options$ = combineLatest([this._store.select(state => state.displayMonths)]).pipe(map((latest) => ({ displayMonths: latest[0] })));
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
/** event handlers */
|
|
52
|
+
setEventHandlers(container) {
|
|
53
|
+
container.setViewMode = (event) => {
|
|
54
|
+
this._store?.dispatch(this._actions.changeViewMode(event));
|
|
55
|
+
};
|
|
56
|
+
container.navigateTo = (event) => {
|
|
57
|
+
this._store?.dispatch(this._actions.navigateStep(event.step));
|
|
58
|
+
};
|
|
59
|
+
container.dayHoverHandler = (event) => {
|
|
60
|
+
const _cell = event.cell;
|
|
61
|
+
if (_cell.isOtherMonth || _cell.isDisabled)
|
|
62
|
+
return;
|
|
63
|
+
this._store?.dispatch(this._actions.hoverDay(event));
|
|
64
|
+
_cell.isHovered = event.isHovered;
|
|
65
|
+
};
|
|
66
|
+
container.monthHoverHandler = (event) => {
|
|
67
|
+
event.cell.isHovered = event.isHovered;
|
|
68
|
+
};
|
|
69
|
+
container.yearHoverHandler = (event) => {
|
|
70
|
+
event.cell.isHovered = event.isHovered;
|
|
71
|
+
};
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
registerDatepickerSideEffects() {
|
|
75
|
+
if (!this._store)
|
|
76
|
+
return this;
|
|
77
|
+
this._subs.push(this._store.select(state => state.view).subscribe(() => {
|
|
78
|
+
this._store?.dispatch(this._actions.calculate());
|
|
79
|
+
}));
|
|
80
|
+
// format calendar values on month model change
|
|
81
|
+
this._subs.push(this._store
|
|
82
|
+
.select(state => state.monthsModel)
|
|
83
|
+
.pipe(filter(monthModel => !!monthModel))
|
|
84
|
+
.subscribe(() => this._store?.dispatch(this._actions.format())));
|
|
85
|
+
// flag day values
|
|
86
|
+
this._subs.push(this._store
|
|
87
|
+
.select(state => state.formattedMonths)
|
|
88
|
+
.pipe(filter(month => !!month))
|
|
89
|
+
.subscribe(() => this._store?.dispatch(this._actions.flag())));
|
|
90
|
+
// flag day values
|
|
91
|
+
this._subs.push(this._store
|
|
92
|
+
.select(state => state.selectedDate)
|
|
93
|
+
.pipe(filter(selectedDate => !!selectedDate))
|
|
94
|
+
.subscribe(() => this._store?.dispatch(this._actions.flag())));
|
|
95
|
+
// flag for date range picker
|
|
96
|
+
this._subs.push(this._store
|
|
97
|
+
.select(state => state.selectedRange)
|
|
98
|
+
.pipe(filter(selectedRange => !!selectedRange))
|
|
99
|
+
.subscribe(() => this._store?.dispatch(this._actions.flag())));
|
|
100
|
+
// monthsCalendar
|
|
101
|
+
this._subs.push(this._store
|
|
102
|
+
.select(state => state.monthsCalendar)
|
|
103
|
+
.subscribe(() => this._store?.dispatch(this._actions.flag())));
|
|
104
|
+
// years calendar
|
|
105
|
+
this._subs.push(this._store
|
|
106
|
+
.select(state => state.yearsCalendarModel)
|
|
107
|
+
.pipe(filter(state => !!state))
|
|
108
|
+
.subscribe(() => this._store?.dispatch(this._actions.flag())));
|
|
109
|
+
// on hover
|
|
110
|
+
this._subs.push(this._store
|
|
111
|
+
.select(state => state.hoveredDate)
|
|
112
|
+
.pipe(filter(hoveredDate => !!hoveredDate))
|
|
113
|
+
.subscribe(() => this._store?.dispatch(this._actions.flag())));
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
destroy() {
|
|
117
|
+
for (const sub of this._subs) {
|
|
118
|
+
sub.unsubscribe();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BsDatepickerEffects, deps: [{ token: i1.BsDatepickerActions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
122
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BsDatepickerEffects, providedIn: 'platform' }); }
|
|
123
|
+
}
|
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BsDatepickerEffects, decorators: [{
|
|
125
|
+
type: Injectable,
|
|
126
|
+
args: [{ providedIn: 'platform' }]
|
|
127
|
+
}], ctorParameters: function () { return [{ type: i1.BsDatepickerActions }]; } });
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXBpY2tlci5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LWNhbGVuZGFyLXYyL2RhdGVwaWNrZXIvcmVkdWNlci9icy1kYXRlcGlja2VyLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsYUFBYSxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFvQjNDLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFBb0IsUUFBNkI7UUFBN0IsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFGekMsVUFBSyxHQUFtQixFQUFFLENBQUM7SUFHbkMsQ0FBQztJQUVELElBQUksQ0FBQyxrQkFBcUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxjQUFjO0lBRWQsUUFBUSxDQUFDLEtBQVk7UUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXdDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxD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SUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2IsSUFBSSxDQUFDLE1BQU07YUFDUixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDMUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNoRSxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTztRQUNMLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUM1QixHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDOytHQXBLVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQURQLFVBQVU7OzRGQUN0QixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0JzRGF0ZXBpY2tlckFic3RyYWN0Q29tcG9uZW50fSBmcm9tICcuLi9iYXNlL2JzLWRhdGVwaWNrZXItY29udGFpbmVyJztcbmltcG9ydCB7QnNEYXRlcGlja2VyQ29uZmlnfSBmcm9tICcuLi9icy1kYXRlcGlja2VyLmNvbmZpZyc7XG5cbmltcG9ydCB7XG4gIEJzRGF0ZXBpY2tlclZpZXdNb2RlLFxuICBCc05hdmlnYXRpb25FdmVudCxcbiAgQ2VsbEhvdmVyRXZlbnQsXG4gIERhdGVwaWNrZXJSZW5kZXJPcHRpb25zLFxuICBEYXlzQ2FsZW5kYXJWaWV3TW9kZWwsXG4gIERheVZpZXdNb2RlbCxcbiAgTW9udGhzQ2FsZW5kYXJWaWV3TW9kZWwsXG4gIFllYXJzQ2FsZW5kYXJWaWV3TW9kZWxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7QnNEYXRlcGlja2VyQWN0aW9uc30gZnJvbSAnLi9icy1kYXRlcGlja2VyLmFjdGlvbnMnO1xuaW1wb3J0IHtCc0RhdGVwaWNrZXJTdG9yZX0gZnJvbSAnLi9icy1kYXRlcGlja2VyLnN0b3JlJztcblxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3BsYXRmb3JtJ30pXG5leHBvcnQgY2xhc3MgQnNEYXRlcGlja2VyRWZmZWN0cyB7XG4gIHZpZXdNb2RlPzogT2JzZXJ2YWJsZTxCc0RhdGVwaWNrZXJWaWV3TW9kZT47XG4gIGRheXNDYWxlbmRhcj86IE9ic2VydmFibGU8RGF5c0NhbGVuZGFyVmlld01vZGVsW10+O1xuICBtb250aHNDYWxlbmRhcj86IE9ic2VydmFibGU8TW9udGhzQ2FsZW5kYXJWaWV3TW9kZWxbXT47XG4gIHllYXJzQ2FsZW5kYXI/OiBPYnNlcnZhYmxlPFllYXJzQ2FsZW5kYXJWaWV3TW9kZWxbXT47XG4gIG9wdGlvbnM/OiBPYnNlcnZhYmxlPERhdGVwaWNrZXJSZW5kZXJPcHRpb25zPjtcblxuICBwcml2YXRlIF9zdG9yZT86IEJzRGF0ZXBpY2tlclN0b3JlO1xuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjdGlvbnM6IEJzRGF0ZXBpY2tlckFjdGlvbnMpIHtcbiAgfVxuXG4gIGluaXQoX2JzRGF0ZXBpY2tlclN0b3JlOiBCc0RhdGVwaWNrZXJTdG9yZSk6IEJzRGF0ZXBpY2tlckVmZmVjdHMge1xuICAgIHRoaXMuX3N0b3JlID0gX2JzRGF0ZXBpY2tlclN0b3JlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIHNldHRlcnMgKi9cblxuICBzZXRWYWx1ZSh2YWx1ZT86IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLl9zdG9yZT8uZGlzcGF0Y2godGhpcy5fYWN0aW9ucy5zZWxlY3QodmFsdWUpKTtcbiAgfVxuXG4gIHNldFJhbmdlVmFsdWUodmFsdWU/OiAoRGF0ZSB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX3N0b3JlPy5kaXNwYXRjaCh0aGlzLl9hY3Rpb25zLnNlbGVjdFJhbmdlKHZhbHVlKSk7XG4gIH1cblxuICBzZXRNaW5EYXRlKHZhbHVlPzogRGF0ZSk6IEJzRGF0ZXBpY2tlckVmZmVjdHMge1xuICAgIHRoaXMuX3N0b3JlPy5kaXNwYXRjaCh0aGlzLl9hY3Rpb25zLm1pbkRhdGUodmFsdWUpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldE1heERhdGUodmFsdWU/OiBEYXRlKTogQnNEYXRlcGlja2VyRWZmZWN0cyB7XG4gICAgdGhpcy5fc3RvcmU/LmRpc3BhdGNoKHRoaXMuX2FjdGlvbnMubWF4RGF0ZSh2YWx1ZSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0RGlzYWJsZWQodmFsdWU/OiBib29sZWFuKTogQnNEYXRlcGlja2VyRWZmZWN0cyB7XG4gICAgdGhpcy5fc3RvcmU/LmRpc3BhdGNoKHRoaXMuX2FjdGlvbnMuaXNEaXNhYmxlZCh2YWx1ZSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyogU2V0IHJlbmRlcmluZyBvcHRpb25zICovXG4gIHNldE9wdGlvbnMoX2NvbmZpZzogQnNEYXRlcGlja2VyQ29uZmlnKTogQnNEYXRlcGlja2VyRWZmZWN0cyB7XG4gICAgY29uc3QgX29wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtsb2NhbGU6ICdlbid9LCBfY29uZmlnKTtcbiAgICB0aGlzLl9zdG9yZT8uZGlzcGF0Y2godGhpcy5fYWN0aW9ucy5zZXRPcHRpb25zKF9vcHRpb25zKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogdmlldyB0byBtb2RlIGJpbmRpbmdzICovXG4gIHNldEJpbmRpbmdzKGNvbnRhaW5lcjogQnNEYXRlcGlja2VyQWJzdHJhY3RDb21wb25lbnQpOiBCc0RhdGVwaWNrZXJFZmZlY3RzIHtcbiAgICBpZiAoIXRoaXMuX3N0b3JlKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnRhaW5lci5kYXlzQ2FsZW5kYXIkID0gdGhpcy5fc3RvcmUuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmZsYWdnZWRNb250aHMpLnBpcGUoZmlsdGVyKG1vbnRocyA9PiAhIW1vbnRocykpO1xuICAgIGNvbnRhaW5lci5tb250aHNDYWxlbmRhciA9IHRoaXMuX3N0b3JlLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5mbGFnZ2VkTW9udGhzQ2FsZW5kYXIpLnBpcGUoZmlsdGVyKG1vbnRocyA9PiAhIW1vbnRocykpO1xuICAgIGNvbnRhaW5lci55ZWFyc0NhbGVuZGFyID0gdGhpcy5fc3RvcmUuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnllYXJzQ2FsZW5kYXJGbGFnZ2VkKS5waXBlKGZpbHRlcih5ZWFycyA9PiAhIXllYXJzKSk7XG4gICAgY29udGFpbmVyLnZpZXdNb2RlID0gdGhpcy5fc3RvcmUuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnZpZXc/Lm1vZGUpO1xuICAgIGNvbnRhaW5lci5vcHRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX3N0b3JlLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5kaXNwbGF5TW9udGhzKV0pLnBpcGUobWFwKChsYXRlc3QpID0+ICh7ZGlzcGxheU1vbnRoczogbGF0ZXN0WzBdfSkpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIGV2ZW50IGhhbmRsZXJzICovXG4gIHNldEV2ZW50SGFuZGxlcnMoY29udGFpbmVyOiBCc0RhdGVwaWNrZXJBYnN0cmFjdENvbXBvbmVudCk6IEJzRGF0ZXBpY2tlckVmZmVjdHMge1xuICAgIGNvbnRhaW5lci5zZXRWaWV3TW9kZSA9IChldmVudDogQnNEYXRlcGlja2VyVmlld01vZGUpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuX3N0b3JlPy5kaXNwYXRjaCh0aGlzLl9hY3Rpb25zLmNoYW5nZVZpZXdNb2RlKGV2ZW50KSk7XG4gICAgfTtcblxuICAgIGNvbnRhaW5lci5uYXZpZ2F0ZVRvID0gKGV2ZW50OiBCc05hdmlnYXRpb25FdmVudCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5fc3RvcmU/LmRpc3BhdGNoKHRoaXMuX2FjdGlvbnMubmF2aWdhdGVTdGVwKGV2ZW50LnN0ZXApKTtcbiAgICB9O1xuXG4gICAgY29udGFpbmVyLmRheUhvdmVySGFuZGxlciA9IChldmVudDogQ2VsbEhvdmVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IF9jZWxsID0gZXZlbnQuY2VsbCBhcyBEYXlWaWV3TW9kZWw7XG5cbiAgICAgIGlmIChfY2VsbC5pc090aGVyTW9udGggfHwgX2NlbGwuaXNEaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICB0aGlzLl9zdG9yZT8uZGlzcGF0Y2godGhpcy5fYWN0aW9ucy5ob3ZlckRheShldmVudCkpO1xuICAgICAgX2NlbGwuaXNIb3ZlcmVkID0gZXZlbnQuaXNIb3ZlcmVkO1xuICAgIH07XG5cbiAgICBjb250YWluZXIubW9udGhIb3ZlckhhbmRsZXIgPSAoZXZlbnQ6IENlbGxIb3ZlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBldmVudC5jZWxsLmlzSG92ZXJlZCA9IGV2ZW50LmlzSG92ZXJlZDtcbiAgICB9O1xuXG4gICAgY29udGFpbmVyLnllYXJIb3ZlckhhbmRsZXIgPSAoZXZlbnQ6IENlbGxIb3ZlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBldmVudC5jZWxsLmlzSG92ZXJlZCA9IGV2ZW50LmlzSG92ZXJlZDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZWdpc3RlckRhdGVwaWNrZXJTaWRlRWZmZWN0cygpOiBCc0RhdGVwaWNrZXJFZmZlY3RzIHtcbiAgICBpZiAoIXRoaXMuX3N0b3JlKSByZXR1cm4gdGhpcztcblxuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS52aWV3KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdG9yZT8uZGlzcGF0Y2godGhpcy5fYWN0aW9ucy5jYWxjdWxhdGUoKSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBmb3JtYXQgY2FsZW5kYXIgdmFsdWVzIG9uIG1vbnRoIG1vZGVsIGNoYW5nZVxuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuX3N0b3JlXG4gICAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUubW9udGhzTW9kZWwpXG4gICAgICAgIC5waXBlKGZpbHRlcihtb250aE1vZGVsID0+ICEhbW9udGhNb2RlbCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc3RvcmU/LmRpc3BhdGNoKHRoaXMuX2FjdGlvbnMuZm9ybWF0KCkpKVxuICAgICk7XG5cbiAgICAvLyBmbGFnIGRheSB2YWx1ZXNcbiAgICB0aGlzLl9zdWJzLnB1c2goXG4gICAgICB0aGlzLl9zdG9yZVxuICAgICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmZvcm1hdHRlZE1vbnRocylcbiAgICAgICAgLnBpcGUoZmlsdGVyKG1vbnRoID0+ICEhbW9udGgpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3N0b3JlPy5kaXNwYXRjaCh0aGlzLl9hY3Rpb25zLmZsYWcoKSkpXG4gICAgKTtcblxuICAgIC8vIGZsYWcgZGF5IHZhbHVlc1xuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuX3N0b3JlXG4gICAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2VsZWN0ZWREYXRlKVxuICAgICAgICAucGlwZShmaWx0ZXIoc2VsZWN0ZWREYXRlID0+ICEhc2VsZWN0ZWREYXRlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9zdG9yZT8uZGlzcGF0Y2godGhpcy5fYWN0aW9ucy5mbGFnKCkpKVxuICAgICk7XG5cbiAgICAvLyBmbGFnIGZvciBkYXRlIHJhbmdlIHBpY2tlclxuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuX3N0b3JlXG4gICAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2VsZWN0ZWRSYW5nZSlcbiAgICAgICAgLnBpcGUoZmlsdGVyKHNlbGVjdGVkUmFuZ2UgPT4gISFzZWxlY3RlZFJhbmdlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9zdG9yZT8uZGlzcGF0Y2godGhpcy5fYWN0aW9ucy5mbGFnKCkpKVxuICAgICk7XG5cbiAgICAvLyBtb250aHNDYWxlbmRhclxuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuX3N0b3JlXG4gICAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUubW9udGhzQ2FsZW5kYXIpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc3RvcmU/LmRpc3BhdGNoKHRoaXMuX2FjdGlvbnMuZmxhZygpKSlcbiAgICApO1xuXG4gICAgLy8geWVhcnMgY2FsZW5kYXJcbiAgICB0aGlzLl9zdWJzLnB1c2goXG4gICAgICB0aGlzLl9zdG9yZVxuICAgICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnllYXJzQ2FsZW5kYXJNb2RlbClcbiAgICAgICAgLnBpcGUoZmlsdGVyKHN0YXRlID0+ICEhc3RhdGUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3N0b3JlPy5kaXNwYXRjaCh0aGlzLl9hY3Rpb25zLmZsYWcoKSkpXG4gICAgKTtcblxuICAgIC8vIG9uIGhvdmVyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxuICAgICAgdGhpcy5fc3RvcmVcbiAgICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5ob3ZlcmVkRGF0ZSlcbiAgICAgICAgLnBpcGUoZmlsdGVyKGhvdmVyZWREYXRlID0+ICEhaG92ZXJlZERhdGUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3N0b3JlPy5kaXNwYXRjaCh0aGlzLl9hY3Rpb25zLmZsYWcoKSkpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLl9zdWJzKSB7XG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.reducer.mjs
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import { initialDatepickerState } from './bs-datepicker.state';
|
|
2
|
+
import { BsDatepickerActions } from './bs-datepicker.actions';
|
|
3
|
+
import { calcDaysCalendar } from '../engine/calc-days-calendar';
|
|
4
|
+
import { formatDaysCalendar } from '../engine/format-days-calendar';
|
|
5
|
+
import { flagDaysCalendar } from '../engine/flag-days-calendar';
|
|
6
|
+
import { getLocale, isAfter, isArray, isBefore, isDateValid, isSame, setFullDate, shiftDate, startOf } from 'ngx-bootstrap/chronos';
|
|
7
|
+
import { canSwitchMode } from '../engine/view-mode';
|
|
8
|
+
import { formatMonthsCalendar } from '../engine/format-months-calendar';
|
|
9
|
+
import { flagMonthsCalendar } from '../engine/flag-months-calendar';
|
|
10
|
+
import { formatYearsCalendar, initialYearShift, yearsPerCalendar } from '../engine/format-years-calendar';
|
|
11
|
+
import { flagYearsCalendar } from '../engine/flag-years-calendar';
|
|
12
|
+
import { getYearsCalendarInitialDate } from '../utils/bs-calendar-utils';
|
|
13
|
+
export function bsDatepickerReducer(state = initialDatepickerState, action) {
|
|
14
|
+
switch (action.type) {
|
|
15
|
+
case BsDatepickerActions.CALCULATE: {
|
|
16
|
+
return calculateReducer(state);
|
|
17
|
+
}
|
|
18
|
+
case BsDatepickerActions.FORMAT: {
|
|
19
|
+
return formatReducer(state);
|
|
20
|
+
}
|
|
21
|
+
case BsDatepickerActions.FLAG: {
|
|
22
|
+
return flagReducer(state);
|
|
23
|
+
}
|
|
24
|
+
case BsDatepickerActions.NAVIGATE_OFFSET: {
|
|
25
|
+
return navigateOffsetReducer(state, action);
|
|
26
|
+
}
|
|
27
|
+
case BsDatepickerActions.NAVIGATE_TO: {
|
|
28
|
+
const payload = action.payload;
|
|
29
|
+
if (!state.view || !payload.unit)
|
|
30
|
+
return state;
|
|
31
|
+
const date = setFullDate(state.view.date, payload.unit);
|
|
32
|
+
let newState;
|
|
33
|
+
let mode;
|
|
34
|
+
if (canSwitchMode(payload.viewMode, state.minMode)) {
|
|
35
|
+
mode = payload.viewMode;
|
|
36
|
+
newState = { view: { date, mode } };
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
mode = state.view.mode;
|
|
40
|
+
newState = { selectedDate: date, view: { date, mode } };
|
|
41
|
+
}
|
|
42
|
+
return Object.assign({}, state, newState);
|
|
43
|
+
}
|
|
44
|
+
case BsDatepickerActions.CHANGE_VIEWMODE: {
|
|
45
|
+
if (!canSwitchMode(action.payload, state.minMode) || !state.view)
|
|
46
|
+
return state;
|
|
47
|
+
const date = state.view.date;
|
|
48
|
+
const mode = action.payload;
|
|
49
|
+
const newState = { view: { date, mode } };
|
|
50
|
+
return Object.assign({}, state, newState);
|
|
51
|
+
}
|
|
52
|
+
case BsDatepickerActions.HOVER: {
|
|
53
|
+
return Object.assign({}, state, { hoveredDate: action.payload });
|
|
54
|
+
}
|
|
55
|
+
case BsDatepickerActions.SELECT: {
|
|
56
|
+
if (!state.view)
|
|
57
|
+
return state;
|
|
58
|
+
const newState = {
|
|
59
|
+
selectedDate: action.payload,
|
|
60
|
+
view: state.view
|
|
61
|
+
};
|
|
62
|
+
const mode = state.view.mode;
|
|
63
|
+
const _date = action.payload || state.view.date;
|
|
64
|
+
const date = getViewDate(_date, state.minDate, state.maxDate);
|
|
65
|
+
newState.view = { mode, date };
|
|
66
|
+
return Object.assign({}, state, newState);
|
|
67
|
+
}
|
|
68
|
+
case BsDatepickerActions.SET_OPTIONS: {
|
|
69
|
+
if (!state.view)
|
|
70
|
+
return state;
|
|
71
|
+
const newState = action.payload;
|
|
72
|
+
// preserve view mode
|
|
73
|
+
const mode = newState.minMode ? newState.minMode : state.view.mode;
|
|
74
|
+
const _viewDate = isDateValid(newState.value) && newState.value || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0] || state.view.date;
|
|
75
|
+
const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);
|
|
76
|
+
newState.view = { mode, date };
|
|
77
|
+
// update selected value
|
|
78
|
+
if (newState.value) {
|
|
79
|
+
// if new value is array we work with date range
|
|
80
|
+
if (isArray(newState.value)) {
|
|
81
|
+
newState.selectedRange = newState.value;
|
|
82
|
+
}
|
|
83
|
+
// if new value is a date -> datepicker
|
|
84
|
+
if (newState.value instanceof Date) {
|
|
85
|
+
newState.selectedDate = newState.value;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return Object.assign({}, state, newState);
|
|
89
|
+
}
|
|
90
|
+
// date range picker
|
|
91
|
+
case BsDatepickerActions.SELECT_RANGE: {
|
|
92
|
+
if (!state.view)
|
|
93
|
+
return state;
|
|
94
|
+
const newState = {
|
|
95
|
+
selectedRange: action.payload,
|
|
96
|
+
view: state.view
|
|
97
|
+
};
|
|
98
|
+
const mode = state.view.mode;
|
|
99
|
+
const _date = action.payload && action.payload[0] || state.view.date;
|
|
100
|
+
const date = getViewDate(_date, state.minDate, state.maxDate);
|
|
101
|
+
newState.view = { mode, date };
|
|
102
|
+
return Object.assign({}, state, newState);
|
|
103
|
+
}
|
|
104
|
+
case BsDatepickerActions.SET_MIN_DATE: {
|
|
105
|
+
return Object.assign({}, state, {
|
|
106
|
+
minDate: action.payload
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
case BsDatepickerActions.SET_MAX_DATE: {
|
|
110
|
+
return Object.assign({}, state, {
|
|
111
|
+
maxDate: action.payload
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
case BsDatepickerActions.SET_IS_DISABLED: {
|
|
115
|
+
return Object.assign({}, state, {
|
|
116
|
+
isDisabled: action.payload
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
default:
|
|
120
|
+
return state;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function calculateReducer(state) {
|
|
124
|
+
if (!state.view)
|
|
125
|
+
return state;
|
|
126
|
+
// how many calendars
|
|
127
|
+
let displayMonths = state.displayMonths;
|
|
128
|
+
// use selected date on initial rendering if set
|
|
129
|
+
let viewDate = state.view.date;
|
|
130
|
+
if (state.view.mode === 'day' && state.monthViewOptions) {
|
|
131
|
+
state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();
|
|
132
|
+
let monthsModel = new Array(displayMonths);
|
|
133
|
+
for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {
|
|
134
|
+
monthsModel[monthIndex] = calcDaysCalendar(viewDate, state.monthViewOptions);
|
|
135
|
+
viewDate = shiftDate(viewDate, { month: 1 });
|
|
136
|
+
}
|
|
137
|
+
// Check if parameter enabled and check if it's not months navigation event
|
|
138
|
+
if (state.preventChangeToNextMonth && state.flaggedMonths && state.hoveredDate) {
|
|
139
|
+
const viewMonth = calcDaysCalendar(state.view.date, state.monthViewOptions);
|
|
140
|
+
// Check if viewed right month same as in flaggedMonths state, then override months model with flaggedMonths
|
|
141
|
+
if (state.flaggedMonths.length >= 2) {
|
|
142
|
+
if (state.flaggedMonths[1].month.getMonth() === viewMonth.month.getMonth()) {
|
|
143
|
+
monthsModel = state.flaggedMonths.map((item) => {
|
|
144
|
+
return state.monthViewOptions ? calcDaysCalendar(item.month, state.monthViewOptions) : null;
|
|
145
|
+
}).filter(item => item !== null);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
monthsModel = state.flaggedMonths.map((item) => {
|
|
150
|
+
return state.monthViewOptions ? calcDaysCalendar(item.month, state.monthViewOptions) : null;
|
|
151
|
+
}).filter(item => item !== null);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return Object.assign({}, state, { monthsModel });
|
|
155
|
+
}
|
|
156
|
+
if (state.view.mode === 'month') {
|
|
157
|
+
const monthsCalendar = new Array(displayMonths);
|
|
158
|
+
for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {
|
|
159
|
+
monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));
|
|
160
|
+
viewDate = shiftDate(viewDate, { year: 1 });
|
|
161
|
+
}
|
|
162
|
+
return Object.assign({}, state, { monthsCalendar });
|
|
163
|
+
}
|
|
164
|
+
if (state.view.mode === 'year') {
|
|
165
|
+
const yearsCalendarModel = new Array(displayMonths);
|
|
166
|
+
for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {
|
|
167
|
+
yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state), state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined, state.selectedDate ? state.selectedDate : new Date());
|
|
168
|
+
viewDate = shiftDate(viewDate, { year: yearsPerCalendar });
|
|
169
|
+
}
|
|
170
|
+
return Object.assign({}, state, { yearsCalendarModel });
|
|
171
|
+
}
|
|
172
|
+
return state;
|
|
173
|
+
}
|
|
174
|
+
function formatReducer(state) {
|
|
175
|
+
if (!state.view)
|
|
176
|
+
return state;
|
|
177
|
+
if (state.view.mode === 'day' && state.monthsModel) {
|
|
178
|
+
const formattedMonths = state.monthsModel.map((month, monthIndex) => formatDaysCalendar(month, getFormatOptions(state), monthIndex));
|
|
179
|
+
return Object.assign({}, state, { formattedMonths });
|
|
180
|
+
}
|
|
181
|
+
// how many calendars
|
|
182
|
+
const displayMonths = state.displayMonths || 1;
|
|
183
|
+
// check initial rendering
|
|
184
|
+
// use selected date on initial rendering if set
|
|
185
|
+
let viewDate = state.view.date;
|
|
186
|
+
if (state.view.mode === 'month') {
|
|
187
|
+
const monthsCalendar = new Array(displayMonths);
|
|
188
|
+
for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {
|
|
189
|
+
monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));
|
|
190
|
+
viewDate = shiftDate(viewDate, { year: 1 });
|
|
191
|
+
}
|
|
192
|
+
return Object.assign({}, state, { monthsCalendar });
|
|
193
|
+
}
|
|
194
|
+
if (state.view.mode === 'year') {
|
|
195
|
+
const yearsCalendarModel = new Array(displayMonths);
|
|
196
|
+
for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {
|
|
197
|
+
yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state), undefined, state.selectedDate ? state.selectedDate : new Date());
|
|
198
|
+
viewDate = shiftDate(viewDate, { year: 16 });
|
|
199
|
+
}
|
|
200
|
+
return Object.assign({}, state, { yearsCalendarModel });
|
|
201
|
+
}
|
|
202
|
+
return state;
|
|
203
|
+
}
|
|
204
|
+
function flagReducer(state) {
|
|
205
|
+
if (!state.view)
|
|
206
|
+
return state;
|
|
207
|
+
const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;
|
|
208
|
+
if (state.formattedMonths && state.view.mode === 'day') {
|
|
209
|
+
const flaggedMonths = state.formattedMonths.map((formattedMonth, monthIndex) => flagDaysCalendar(formattedMonth, {
|
|
210
|
+
isDisabled: state.isDisabled,
|
|
211
|
+
minDate: state.minDate,
|
|
212
|
+
maxDate: state.maxDate,
|
|
213
|
+
hoveredDate: state.hoveredDate,
|
|
214
|
+
selectedDate: state.selectedDate,
|
|
215
|
+
selectedRange: state.selectedRange,
|
|
216
|
+
displayMonths,
|
|
217
|
+
monthIndex
|
|
218
|
+
}));
|
|
219
|
+
return Object.assign({}, state, { flaggedMonths });
|
|
220
|
+
}
|
|
221
|
+
if (state.view.mode === 'month' && state.monthsCalendar) {
|
|
222
|
+
const flaggedMonthsCalendar = state.monthsCalendar.map((formattedMonth, monthIndex) => flagMonthsCalendar(formattedMonth, {
|
|
223
|
+
isDisabled: state.isDisabled,
|
|
224
|
+
minDate: state.minDate,
|
|
225
|
+
maxDate: state.maxDate,
|
|
226
|
+
hoveredMonth: state.hoveredMonth,
|
|
227
|
+
selectedDate: state.selectedDate,
|
|
228
|
+
selectedRange: state.selectedRange,
|
|
229
|
+
displayMonths,
|
|
230
|
+
monthIndex
|
|
231
|
+
}));
|
|
232
|
+
return Object.assign({}, state, { flaggedMonthsCalendar });
|
|
233
|
+
}
|
|
234
|
+
if (state.view.mode === 'year' && state.yearsCalendarModel) {
|
|
235
|
+
const yearsCalendarFlagged = state.yearsCalendarModel.map((formattedMonth, yearIndex) => flagYearsCalendar(formattedMonth, {
|
|
236
|
+
isDisabled: state.isDisabled,
|
|
237
|
+
minDate: state.minDate,
|
|
238
|
+
maxDate: state.maxDate,
|
|
239
|
+
hoveredYear: state.hoveredYear,
|
|
240
|
+
selectedDate: state.selectedDate,
|
|
241
|
+
selectedRange: state.selectedRange,
|
|
242
|
+
displayMonths,
|
|
243
|
+
yearIndex
|
|
244
|
+
}));
|
|
245
|
+
return Object.assign({}, state, { yearsCalendarFlagged });
|
|
246
|
+
}
|
|
247
|
+
return state;
|
|
248
|
+
}
|
|
249
|
+
function navigateOffsetReducer(state, action) {
|
|
250
|
+
if (!state.view)
|
|
251
|
+
return state;
|
|
252
|
+
const date = shiftViewDate(state, action);
|
|
253
|
+
if (!date)
|
|
254
|
+
return state;
|
|
255
|
+
const newState = {
|
|
256
|
+
view: { mode: state.view.mode, date }
|
|
257
|
+
};
|
|
258
|
+
return Object.assign({}, state, newState);
|
|
259
|
+
}
|
|
260
|
+
function shiftViewDate(state, action) {
|
|
261
|
+
if (!state.view)
|
|
262
|
+
return undefined;
|
|
263
|
+
if (state.view.mode === 'year' && state.minMode === 'year') {
|
|
264
|
+
const initialDate = getYearsCalendarInitialDate(state, 0);
|
|
265
|
+
if (initialDate) {
|
|
266
|
+
const middleDate = shiftDate(initialDate, { year: -initialYearShift });
|
|
267
|
+
return shiftDate(middleDate, action.payload);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return shiftDate(startOf(state.view.date, 'month'), action.payload);
|
|
271
|
+
}
|
|
272
|
+
function getFormatOptions(state) {
|
|
273
|
+
return {
|
|
274
|
+
locale: state.locale,
|
|
275
|
+
monthTitle: state.monthTitle,
|
|
276
|
+
yearTitle: state.yearTitle,
|
|
277
|
+
dayLabel: state.dayLabel,
|
|
278
|
+
monthLabel: state.monthLabel,
|
|
279
|
+
yearLabel: state.yearLabel
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* if view date is provided (bsValue|ngModel) it should be shown
|
|
284
|
+
* if view date is not provider:
|
|
285
|
+
* if minDate>currentDate (default view value), show minDate
|
|
286
|
+
* if maxDate<currentDate(default view value) show maxDate
|
|
287
|
+
*/
|
|
288
|
+
function getViewDate(viewDate, minDate, maxDate) {
|
|
289
|
+
const _date = Array.isArray(viewDate) ? viewDate[0] : viewDate;
|
|
290
|
+
if (minDate && isAfter(minDate, _date, 'day'))
|
|
291
|
+
return minDate;
|
|
292
|
+
if (maxDate && isBefore(maxDate, _date, 'day'))
|
|
293
|
+
return maxDate;
|
|
294
|
+
return _date;
|
|
295
|
+
}
|
|
296
|
+
function isDisplayOneMonth(viewDate, minDate, maxDate) {
|
|
297
|
+
if (maxDate && isSame(maxDate, viewDate, 'day'))
|
|
298
|
+
return true;
|
|
299
|
+
return minDate && maxDate && minDate.getMonth() === maxDate.getMonth();
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXBpY2tlci5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LWNhbGVuZGFyLXYyL2RhdGVwaWNrZXIvcmVkdWNlci9icy1kYXRlcGlja2VyLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEyQyxzQkFBc0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXZHLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULE9BQU8sRUFDUixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQVVoRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUd2RSxNQUFNLFVBQVUsbUJBQW1C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LENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QnNEYXRlcGlja2VyU3RhdGUsIEJzRGF0ZXBpY2tlclZpZXdTdGF0ZSwgaW5pdGlhbERhdGVwaWNrZXJTdGF0ZX0gZnJvbSAnLi9icy1kYXRlcGlja2VyLnN0YXRlJztcbmltcG9ydCB7QWN0aW9ufSBmcm9tICduZ3gtYm9vdHN0cmFwL21pbmktbmdyeCc7XG5pbXBvcnQge0JzRGF0ZXBpY2tlckFjdGlvbnN9IGZyb20gJy4vYnMtZGF0ZXBpY2tlci5hY3Rpb25zJztcbmltcG9ydCB7Y2FsY0RheXNDYWxlbmRhcn0gZnJvbSAnLi4vZW5naW5lL2NhbGMtZGF5cy1jYWxlbmRhcic7XG5pbXBvcnQge2Zvcm1hdERheXNDYWxlbmRhcn0gZnJvbSAnLi4vZW5naW5lL2Zvcm1hdC1kYXlzLWNhbGVuZGFyJztcbmltcG9ydCB7ZmxhZ0RheXNDYWxlbmRhcn0gZnJvbSAnLi4vZW5naW5lL2ZsYWctZGF5cy1jYWxlbmRhcic7XG5pbXBvcnQge1xuICBnZXRMb2NhbGUsXG4gIGlzQWZ0ZXIsXG4gIGlzQXJyYXksXG4gIGlzQmVmb3JlLFxuICBpc0RhdGVWYWxpZCxcbiAgaXNTYW1lLFxuICBzZXRGdWxsRGF0ZSxcbiAgc2hpZnREYXRlLFxuICBzdGFydE9mXG59IGZyb20gJ25neC1ib290c3RyYXAvY2hyb25vcyc7XG5pbXBvcnQge2NhblN3aXRjaE1vZGV9IGZyb20gJy4uL2VuZ2luZS92aWV3LW1vZGUnO1xuaW1wb3J0IHtmb3JtYXRNb250aHNDYWxlbmRhcn0gZnJvbSAnLi4vZW5naW5lL2Zvcm1hdC1tb250aHMtY2FsZW5kYXInO1xuaW1wb3J0IHtmbGFnTW9udGhzQ2FsZW5kYXJ9IGZyb20gJy4uL2VuZ2luZS9mbGFnLW1vbnRocy1jYWxlbmRhcic7XG5pbXBvcnQge2Zvcm1hdFllYXJzQ2FsZW5kYXIsIGluaXRpYWxZZWFyU2hpZnQsIHllYXJzUGVyQ2FsZW5kYXJ9IGZyb20gJy4uL2VuZ2luZS9mb3JtYXQteWVhcnMtY2FsZW5kYXInO1xuaW1wb3J0IHtmbGFnWWVhcnNDYWxlbmRhcn0gZnJvbSAnLi4vZW5naW5lL2ZsYWcteWVhcnMtY2FsZW5kYXInO1xuaW1wb3J0IHtcbiAgQnNEYXRlcGlja2VyVmlld01vZGUsXG4gIEJzVmlld05hdmlnYXRpb25FdmVudCxcbiAgRGF0ZXBpY2tlckZvcm1hdE9wdGlvbnMsXG4gIERheXNDYWxlbmRhck1vZGVsLFxuICBEYXlzQ2FsZW5kYXJWaWV3TW9kZWwsXG4gIE1vbnRoc0NhbGVuZGFyVmlld01vZGVsLFxuICBZZWFyc0NhbGVuZGFyVmlld01vZGVsXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge2dldFllYXJzQ2FsZW5kYXJJbml0aWFsRGF0ZX0gZnJvbSAnLi4vdXRpbHMvYnMtY2FsZW5kYXItdXRpbHMnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBic0RhdGVwaWNrZXJSZWR1Y2VyKHN0YXRlOiBCc0RhdGVwaWNrZXJTdGF0ZSA9IGluaXRpYWxEYXRlcGlja2VyU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogQnNEYXRlcGlja2VyU3RhdGUge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBCc0RhdGVwaWNrZXJBY3Rpb25zLkNBTENVTEFURToge1xuICAgICAgcmV0dXJuIGNhbGN1bGF0ZVJlZHVjZXIoc3RhdGUpO1xuICAgIH1cblxuICAgIGNhc2UgQnNEYXRlcGlja2VyQWN0aW9ucy5GT1JNQVQ6IHtcbiAgICAgIHJldHVybiBmb3JtYXRSZWR1Y2VyKHN0YXRlKTtcbiAgICB9XG5cbiAgICBjYXNlIEJzRGF0ZXBpY2tlckFjdGlvbnMuRkxBRzoge1xuICAgICAgcmV0dXJuIGZsYWdSZWR1Y2VyKHN0YXRlKTtcbiAgICB9XG5cbiAgICBjYXNlIEJzRGF0ZXBpY2tlckFjdGlvbnMuTkFWSUdBVEVfT0ZGU0VUOiB7XG4gICAgICByZXR1cm4gbmF2aWdhdGVPZmZzZXRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuICAgIH1cblxuICAgIGNhc2UgQnNEYXRlcGlja2VyQWN0aW9ucy5OQVZJR0FURV9UTzoge1xuICAgICAgY29uc3QgcGF5bG9hZDogQnNWaWV3TmF2aWdhdGlvbkV2ZW50ID0gYWN0aW9uLnBheWxvYWQ7XG5cbiAgICAgIGlmICghc3RhdGUudmlldyB8fCAhcGF5bG9hZC51bml0KSByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSBzZXRGdWxsRGF0ZShzdGF0ZS52aWV3LmRhdGUsIHBheWxvYWQudW5pdCk7XG5cbiAgICAgIGxldCBuZXdTdGF0ZTtcbiAgICAgIGxldCBtb2RlOiBCc0RhdGVwaWNrZXJWaWV3TW9kZTtcblxuICAgICAgaWYgKGNhblN3aXRjaE1vZGUocGF5bG9hZC52aWV3TW9kZSwgc3RhdGUubWluTW9kZSkpIHtcbiAgICAgICAgbW9kZSA9IHBheWxvYWQudmlld01vZGU7XG4gICAgICAgIG5ld1N0YXRlID0ge3ZpZXc6IHtkYXRlLCBtb2RlfX07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb2RlID0gc3RhdGUudmlldy5tb2RlO1xuICAgICAgICBuZXdTdGF0ZSA9IHtzZWxlY3RlZERhdGU6IGRhdGUsIHZpZXc6IHtkYXRlLCBtb2RlfX07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgbmV3U3RhdGUpO1xuICAgIH1cblxuICAgIGNhc2UgQnNEYXRlcGlja2VyQWN0aW9ucy5DSEFOR0VfVklFV01PREU6IHtcbiAgICAgIGlmICghY2FuU3dpdGNoTW9kZShhY3Rpb24ucGF5bG9hZCwgc3RhdGUubWluTW9kZSkgfHwgIXN0YXRlLnZpZXcpIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgZGF0ZTogRGF0ZSA9IHN0YXRlLnZpZXcuZGF0ZTtcbiAgICAgIGNvbnN0IG1vZGUgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge3ZpZXc6IHtkYXRlLCBtb2RlfX07XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgbmV3U3RhdGUpO1xuICAgIH1cblxuICAgIGNhc2UgQnNEYXRlcGlja2VyQWN0aW9ucy5IT1ZFUjoge1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7aG92ZXJlZERhdGU6IGFjdGlvbi5wYXlsb2FkfSk7XG4gICAgfVxuXG4gICAgY2FzZSBCc0RhdGVwaWNrZXJBY3Rpb25zLlNFTEVDVDoge1xuICAgICAgaWYgKCFzdGF0ZS52aWV3KSByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBzZWxlY3RlZERhdGU6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICB2aWV3OiBzdGF0ZS52aWV3XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtb2RlID0gc3RhdGUudmlldy5tb2RlO1xuICAgICAgY29uc3QgX2RhdGUgPSBhY3Rpb24ucGF5bG9hZCB8fCBzdGF0ZS52aWV3LmRhdGU7XG4gICAgICBjb25zdCBkYXRlOiBEYXRlID0gZ2V0Vmlld0RhdGUoX2RhdGUsIHN0YXRlLm1pbkRhdGUsIHN0YXRlLm1heERhdGUpO1xuICAgICAgbmV3U3RhdGUudmlldyA9IHttb2RlLCBkYXRlfTtcblxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBuZXdTdGF0ZSk7XG4gICAgfVxuXG4gICAgY2FzZSBCc0RhdGVwaWNrZXJBY3Rpb25zLlNFVF9PUFRJT05TOiB7XG4gICAgICBpZiAoIXN0YXRlLnZpZXcpIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgbmV3U3RhdGUgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIC8vIHByZXNlcnZlIHZpZXcgbW9kZVxuICAgICAgY29uc3QgbW9kZSA9IG5ld1N0YXRlLm1pbk1vZGUgPyBuZXdTdGF0ZS5taW5Nb2RlIDogc3RhdGUudmlldy5tb2RlO1xuICAgICAgY29uc3QgX3ZpZXdEYXRlID0gaXNEYXRlVmFsaWQobmV3U3RhdGUudmFsdWUpICYmIG5ld1N0YXRlLnZhbHVlIHx8IGlzQXJyYXkobmV3U3RhdGUudmFsdWUpICYmIGlzRGF0ZVZhbGlkKG5ld1N0YXRlLnZhbHVlWzBdKSAmJiBuZXdTdGF0ZS52YWx1ZVswXSB8fCBzdGF0ZS52aWV3LmRhdGU7XG4gICAgICBjb25zdCBkYXRlOiBEYXRlID0gZ2V0Vmlld0RhdGUoX3ZpZXdEYXRlLCBuZXdTdGF0ZS5taW5EYXRlLCBuZXdTdGF0ZS5tYXhEYXRlKTtcbiAgICAgIG5ld1N0YXRlLnZpZXcgPSB7bW9kZSwgZGF0ZX07XG5cbiAgICAgIC8vIHVwZGF0ZSBzZWxlY3RlZCB2YWx1ZVxuICAgICAgaWYgKG5ld1N0YXRlLnZhbHVlKSB7XG4gICAgICAgIC8vIGlmIG5ldyB2YWx1ZSBpcyBhcnJheSB3ZSB3b3JrIHdpdGggZGF0ZSByYW5nZVxuICAgICAgICBpZiAoaXNBcnJheShuZXdTdGF0ZS52YWx1ZSkpIHtcbiAgICAgICAgICBuZXdTdGF0ZS5zZWxlY3RlZFJhbmdlID0gbmV3U3RhdGUudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBuZXcgdmFsdWUgaXMgYSBkYXRlIC0+IGRhdGVwaWNrZXJcbiAgICAgICAgaWYgKG5ld1N0YXRlLnZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgIG5ld1N0YXRlLnNlbGVjdGVkRGF0ZSA9IG5ld1N0YXRlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgbmV3U3RhdGUpO1xuICAgIH1cblxuICAgIC8vIGRhdGUgcmFuZ2UgcGlja2VyXG4gICAgY2FzZSBCc0RhdGVwaWNrZXJBY3Rpb25zLlNFTEVDVF9SQU5HRToge1xuICAgICAgaWYgKCFzdGF0ZS52aWV3KSByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBzZWxlY3RlZFJhbmdlOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgdmlldzogc3RhdGUudmlld1xuICAgICAgfTtcblxuICAgICAgY29uc3QgbW9kZSA9IHN0YXRlLnZpZXcubW9kZTtcbiAgICAgIGNvbnN0IF9kYXRlID0gYWN0aW9uLnBheWxvYWQgJiYgYWN0aW9uLnBheWxvYWRbMF0gfHwgc3RhdGUudmlldy5kYXRlO1xuICAgICAgY29uc3QgZGF0ZTogRGF0ZSA9IGdldFZpZXdEYXRlKF9kYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIG5ld1N0YXRlLnZpZXcgPSB7bW9kZSwgZGF0ZX07XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgbmV3U3RhdGUpO1xuICAgIH1cblxuICAgIGNhc2UgQnNEYXRlcGlja2VyQWN0aW9ucy5TRVRfTUlOX0RBVEU6IHtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwge1xuICAgICAgICBtaW5EYXRlOiBhY3Rpb24ucGF5bG9hZFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBCc0RhdGVwaWNrZXJBY3Rpb25zLlNFVF9NQVhfREFURToge1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7XG4gICAgICAgIG1heERhdGU6IGFjdGlvbi5wYXlsb2FkXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjYXNlIEJzRGF0ZXBpY2tlckFjdGlvbnMuU0VUX0lTX0RJU0FCTEVEOiB7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogYWN0aW9uLnBheWxvYWRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUmVkdWNlcihzdGF0ZTogQnNEYXRlcGlja2VyU3RhdGUpOiBCc0RhdGVwaWNrZXJTdGF0ZSB7XG4gIGlmICghc3RhdGUudmlldykgcmV0dXJuIHN0YXRlO1xuXG4gIC8vIGhvdyBtYW55IGNhbGVuZGFyc1xuICBsZXQgZGlzcGxheU1vbnRoczogbnVtYmVyID0gc3RhdGUuZGlzcGxheU1vbnRocztcblxuICAvLyB1c2Ugc2VsZWN0ZWQgZGF0ZSBvbiBpbml0aWFsIHJlbmRlcmluZyBpZiBzZXRcbiAgbGV0IHZpZXdEYXRlOiBEYXRlID0gc3RhdGUudmlldy5kYXRlO1xuXG4gIGlmIChzdGF0ZS52aWV3Lm1vZGUgPT09ICdkYXknICYmIHN0YXRlLm1vbnRoVmlld09wdGlvbnMpIHtcbiAgICBzdGF0ZS5tb250aFZpZXdPcHRpb25zLmZpcnN0RGF5T2ZXZWVrID0gZ2V0TG9jYWxlKHN0YXRlLmxvY2FsZSkuZmlyc3REYXlPZldlZWsoKTtcblxuICAgIGxldCBtb250aHNNb2RlbCA9IG5ldyBBcnJheShkaXNwbGF5TW9udGhzKTtcbiAgICBmb3IgKGxldCBtb250aEluZGV4OiBudW1iZXIgPSAwOyBtb250aEluZGV4IDwgZGlzcGxheU1vbnRoczsgbW9udGhJbmRleCsrKSB7XG4gICAgICBtb250aHNNb2RlbFttb250aEluZGV4XSA9IGNhbGNEYXlzQ2FsZW5kYXIodmlld0RhdGUsIHN0YXRlLm1vbnRoVmlld09wdGlvbnMpO1xuICAgICAgdmlld0RhdGUgPSBzaGlmdERhdGUodmlld0RhdGUsIHttb250aDogMX0pO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHBhcmFtZXRlciBlbmFibGVkIGFuZCBjaGVjayBpZiBpdCdzIG5vdCBtb250aHMgbmF2aWdhdGlvbiBldmVudFxuICAgIGlmIChzdGF0ZS5wcmV2ZW50Q2hhbmdlVG9OZXh0TW9udGggJiYgc3RhdGUuZmxhZ2dlZE1vbnRocyAmJiBzdGF0ZS5ob3ZlcmVkRGF0ZSkge1xuICAgICAgY29uc3Qgdmlld01vbnRoOiBEYXlzQ2FsZW5kYXJNb2RlbCA9IGNhbGNEYXlzQ2FsZW5kYXIoc3RhdGUudmlldy5kYXRlLCBzdGF0ZS5tb250aFZpZXdPcHRpb25zKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgdmlld2VkIHJpZ2h0IG1vbnRoIHNhbWUgYXMgaW4gZmxhZ2dlZE1vbnRocyBzdGF0ZSwgdGhlbiBvdmVycmlkZSBtb250aHMgbW9kZWwgd2l0aCBmbGFnZ2VkTW9udGhzXG4gICAgICBpZiAoc3RhdGUuZmxhZ2dlZE1vbnRocy5sZW5ndGggPj0gMikge1xuICAgICAgICBpZiAoc3RhdGUuZmxhZ2dlZE1vbnRoc1sxXS5tb250aC5nZXRNb250aCgpID09PSB2aWV3TW9udGgubW9udGguZ2V0TW9udGgoKSkge1xuICAgICAgICAgIG1vbnRoc01vZGVsID0gc3RhdGUuZmxhZ2dlZE1vbnRocy5tYXAoKGl0ZW06IERheXNDYWxlbmRhclZpZXdNb2RlbCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLm1vbnRoVmlld09wdGlvbnMgPyBjYWxjRGF5c0NhbGVuZGFyKGl0ZW0ubW9udGgsIHN0YXRlLm1vbnRoVmlld09wdGlvbnMpIDogbnVsbDtcbiAgICAgICAgICB9KS5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW9udGhzTW9kZWwgPSBzdGF0ZS5mbGFnZ2VkTW9udGhzLm1hcCgoaXRlbTogRGF5c0NhbGVuZGFyVmlld01vZGVsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlLm1vbnRoVmlld09wdGlvbnMgPyBjYWxjRGF5c0NhbGVuZGFyKGl0ZW0ubW9udGgsIHN0YXRlLm1vbnRoVmlld09wdGlvbnMpIDogbnVsbDtcbiAgICAgICAgfSkuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7bW9udGhzTW9kZWx9KTtcbiAgfVxuXG4gIGlmIChzdGF0ZS52aWV3Lm1vZGUgPT09ICdtb250aCcpIHtcbiAgICBjb25zdCBtb250aHNDYWxlbmRhciA9IG5ldyBBcnJheShkaXNwbGF5TW9udGhzKTtcblxuICAgIGZvciAobGV0IGNhbGVuZGFySW5kZXg6IG51bWJlciA9IDA7IGNhbGVuZGFySW5kZXggPCBkaXNwbGF5TW9udGhzOyBjYWxlbmRhckluZGV4KyspIHtcbiAgICAgIG1vbnRoc0NhbGVuZGFyW2NhbGVuZGFySW5kZXhdID0gZm9ybWF0TW9udGhzQ2FsZW5kYXIodmlld0RhdGUsIGdldEZvcm1hdE9wdGlvbnMoc3RhdGUpKTtcbiAgICAgIHZpZXdEYXRlID0gc2hpZnREYXRlKHZpZXdEYXRlLCB7eWVhcjogMX0pO1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwge21vbnRoc0NhbGVuZGFyfSk7XG4gIH1cblxuICBpZiAoc3RhdGUudmlldy5tb2RlID09PSAneWVhcicpIHtcbiAgICBjb25zdCB5ZWFyc0NhbGVuZGFyTW9kZWwgPSBuZXcgQXJyYXkoZGlzcGxheU1vbnRocyk7XG5cbiAgICBmb3IgKGxldCBjYWxlbmRhckluZGV4OiBudW1iZXIgPSAwOyBjYWxlbmRhckluZGV4IDwgZGlzcGxheU1vbnRoczsgY2FsZW5kYXJJbmRleCsrKSB7XG4gICAgICB5ZWFyc0NhbGVuZGFyTW9kZWxbY2FsZW5kYXJJbmRleF0gPSBmb3JtYXRZZWFyc0NhbGVuZGFyKHZpZXdEYXRlLCBnZXRGb3JtYXRPcHRpb25zKHN0YXRlKSwgc3RhdGUubWluTW9kZSA9PT0gJ3llYXInID8gZ2V0WWVhcnNDYWxlbmRhckluaXRpYWxEYXRlKHN0YXRlLCBjYWxlbmRhckluZGV4KSA6IHVuZGVmaW5lZCwgc3RhdGUuc2VsZWN0ZWREYXRlID8gc3RhdGUuc2VsZWN0ZWREYXRlIDogbmV3IERhdGUoKSk7XG4gICAgICB2aWV3RGF0ZSA9IHNoaWZ0RGF0ZSh2aWV3RGF0ZSwge3llYXI6IHllYXJzUGVyQ2FsZW5kYXJ9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHt5ZWFyc0NhbGVuZGFyTW9kZWx9KTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0UmVkdWNlcihzdGF0ZTogQnNEYXRlcGlja2VyU3RhdGUpOiBCc0RhdGVwaWNrZXJTdGF0ZSB7XG4gIGlmICghc3RhdGUudmlldykgcmV0dXJuIHN0YXRlO1xuXG4gIGlmIChzdGF0ZS52aWV3Lm1vZGUgPT09ICdkYXknICYmIHN0YXRlLm1vbnRoc01vZGVsKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkTW9udGhzOiBEYXlzQ2FsZW5kYXJWaWV3TW9kZWxbXSA9IHN0YXRlLm1vbnRoc01vZGVsLm1hcCgobW9udGg6IERheXNDYWxlbmRhck1vZGVsLCBtb250aEluZGV4OiBudW1iZXIpID0+IGZvcm1hdERheXNDYWxlbmRhcihtb250aCwgZ2V0Rm9ybWF0T3B0aW9ucyhzdGF0ZSksIG1vbnRoSW5kZXgpKTtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwge2Zvcm1hdHRlZE1vbnRoc30pO1xuICB9XG5cbiAgLy8gaG93IG1hbnkgY2FsZW5kYXJzXG4gIGNvbnN0IGRpc3BsYXlNb250aHM6IG51bWJlciA9IHN0YXRlLmRpc3BsYXlNb250aHMgfHwgMTtcblxuICAvLyBjaGVjayBpbml0aWFsIHJlbmRlcmluZ1xuICAvLyB1c2Ugc2VsZWN0ZWQgZGF0ZSBvbiBpbml0aWFsIHJlbmRlcmluZyBpZiBzZXRcbiAgbGV0IHZpZXdEYXRlOiBEYXRlID0gc3RhdGUudmlldy5kYXRlO1xuXG4gIGlmIChzdGF0ZS52aWV3Lm1vZGUgPT09ICdtb250aCcpIHtcbiAgICBjb25zdCBtb250aHNDYWxlbmRhciA9IG5ldyBBcnJheShkaXNwbGF5TW9udGhzKTtcbiAgICBmb3IgKGxldCBjYWxlbmRhckluZGV4OiBudW1iZXIgPSAwOyBjYWxlbmRhckluZGV4IDwgZGlzcGxheU1vbnRoczsgY2FsZW5kYXJJbmRleCsrKSB7XG4gICAgICBtb250aHNDYWxlbmRhcltjYWxlbmRhckluZGV4XSA9IGZvcm1hdE1vbnRoc0NhbGVuZGFyKHZpZXdEYXRlLCBnZXRGb3JtYXRPcHRpb25zKHN0YXRlKSk7XG4gICAgICB2aWV3RGF0ZSA9IHNoaWZ0RGF0ZSh2aWV3RGF0ZSwge3llYXI6IDF9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHttb250aHNDYWxlbmRhcn0pO1xuICB9XG5cbiAgaWYgKHN0YXRlLnZpZXcubW9kZSA9PT0gJ3llYXInKSB7XG4gICAgY29uc3QgeWVhcnNDYWxlbmRhck1vZGVsID0gbmV3IEFycmF5KGRpc3BsYXlNb250aHMpO1xuXG4gICAgZm9yIChsZXQgY2FsZW5kYXJJbmRleDogbnVtYmVyID0gMDsgY2FsZW5kYXJJbmRleCA8IGRpc3BsYXlNb250aHM7IGNhbGVuZGFySW5kZXgrKykge1xuICAgICAgeWVhcnNDYWxlbmRhck1vZGVsW2NhbGVuZGFySW5kZXhdID0gZm9ybWF0WWVhcnNDYWxlbmRhcih2aWV3RGF0ZSwgZ2V0Rm9ybWF0T3B0aW9ucyhzdGF0ZSksIHVuZGVmaW5lZCwgc3RhdGUuc2VsZWN0ZWREYXRlID8gc3RhdGUuc2VsZWN0ZWREYXRlIDogbmV3IERhdGUoKSk7XG4gICAgICB2aWV3RGF0ZSA9IHNoaWZ0RGF0ZSh2aWV3RGF0ZSwge3llYXI6IDE2fSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7eWVhcnNDYWxlbmRhck1vZGVsfSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIGZsYWdSZWR1Y2VyKHN0YXRlOiBCc0RhdGVwaWNrZXJTdGF0ZSk6IEJzRGF0ZXBpY2tlclN0YXRlIHtcbiAgaWYgKCFzdGF0ZS52aWV3KSByZXR1cm4gc3RhdGU7XG5cbiAgY29uc3QgZGlzcGxheU1vbnRoczogbnVtYmVyID0gaXNEaXNwbGF5T25lTW9udGgoc3RhdGUudmlldy5kYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKSA/IDEgOiBzdGF0ZS5kaXNwbGF5TW9udGhzO1xuICBpZiAoc3RhdGUuZm9ybWF0dGVkTW9udGhzICYmIHN0YXRlLnZpZXcubW9kZSA9PT0gJ2RheScpIHtcbiAgICBjb25zdCBmbGFnZ2VkTW9udGhzOiBEYXlzQ2FsZW5kYXJWaWV3TW9kZWxbXSA9IHN0YXRlLmZvcm1hdHRlZE1vbnRocy5tYXAoKGZvcm1hdHRlZE1vbnRoOiBEYXlzQ2FsZW5kYXJWaWV3TW9kZWwsIG1vbnRoSW5kZXg6IG51bWJlcikgPT5cbiAgICAgIGZsYWdEYXlzQ2FsZW5kYXIoZm9ybWF0dGVkTW9udGgsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogc3RhdGUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWluRGF0ZTogc3RhdGUubWluRGF0ZSxcbiAgICAgICAgbWF4RGF0ZTogc3RhdGUubWF4RGF0ZSxcbiAgICAgICAgaG92ZXJlZERhdGU6IHN0YXRlLmhvdmVyZWREYXRlLFxuICAgICAgICBzZWxlY3RlZERhdGU6IHN0YXRlLnNlbGVjdGVkRGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSYW5nZTogc3RhdGUuc2VsZWN0ZWRSYW5nZSxcbiAgICAgICAgZGlzcGxheU1vbnRocyxcbiAgICAgICAgbW9udGhJbmRleFxuICAgICAgfSkpO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7ZmxhZ2dlZE1vbnRoc30pO1xuICB9XG5cbiAgaWYgKHN0YXRlLnZpZXcubW9kZSA9PT0gJ21vbnRoJyAmJiBzdGF0ZS5tb250aHNDYWxlbmRhcikge1xuICAgIGNvbnN0IGZsYWdnZWRNb250aHNDYWxlbmRhcjogTW9udGhzQ2FsZW5kYXJWaWV3TW9kZWxbXSA9IHN0YXRlLm1vbnRoc0NhbGVuZGFyLm1hcCgoZm9ybWF0dGVkTW9udGg6IE1vbnRoc0NhbGVuZGFyVmlld01vZGVsLCBtb250aEluZGV4OiBudW1iZXIpID0+XG4gICAgICBmbGFnTW9udGhzQ2FsZW5kYXIoZm9ybWF0dGVkTW9udGgsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogc3RhdGUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWluRGF0ZTogc3RhdGUubWluRGF0ZSxcbiAgICAgICAgbWF4RGF0ZTogc3RhdGUubWF4RGF0ZSxcbiAgICAgICAgaG92ZXJlZE1vbnRoOiBzdGF0ZS5ob3ZlcmVkTW9udGgsXG4gICAgICAgIHNlbGVjdGVkRGF0ZTogc3RhdGUuc2VsZWN0ZWREYXRlLFxuICAgICAgICBzZWxlY3RlZFJhbmdlOiBzdGF0ZS5zZWxlY3RlZFJhbmdlLFxuICAgICAgICBkaXNwbGF5TW9udGhzLFxuICAgICAgICBtb250aEluZGV4XG4gICAgICB9KSk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtmbGFnZ2VkTW9udGhzQ2FsZW5kYXJ9KTtcbiAgfVxuXG4gIGlmIChzdGF0ZS52aWV3Lm1vZGUgPT09ICd5ZWFyJyAmJiBzdGF0ZS55ZWFyc0NhbGVuZGFyTW9kZWwpIHtcbiAgICBjb25zdCB5ZWFyc0NhbGVuZGFyRmxhZ2dlZDogWWVhcnNDYWxlbmRhclZpZXdNb2RlbFtdID0gc3RhdGUueWVhcnNDYWxlbmRhck1vZGVsLm1hcCgoZm9ybWF0dGVkTW9udGg6IFllYXJzQ2FsZW5kYXJWaWV3TW9kZWwsIHllYXJJbmRleDogbnVtYmVyKSA9PlxuICAgICAgZmxhZ1llYXJzQ2FsZW5kYXIoZm9ybWF0dGVkTW9udGgsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogc3RhdGUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWluRGF0ZTogc3RhdGUubWluRGF0ZSxcbiAgICAgICAgbWF4RGF0ZTogc3RhdGUubWF4RGF0ZSxcbiAgICAgICAgaG92ZXJlZFllYXI6IHN0YXRlLmhvdmVyZWRZZWFyLFxuICAgICAgICBzZWxlY3RlZERhdGU6IHN0YXRlLnNlbGVjdGVkRGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSYW5nZTogc3RhdGUuc2VsZWN0ZWRSYW5nZSxcbiAgICAgICAgZGlzcGxheU1vbnRocyxcbiAgICAgICAgeWVhckluZGV4XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHt5ZWFyc0NhbGVuZGFyRmxhZ2dlZH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5mdW5jdGlvbiBuYXZpZ2F0ZU9mZnNldFJlZHVjZXIoc3RhdGU6IEJzRGF0ZXBpY2tlclN0YXRlLCBhY3Rpb246IEFjdGlvbik6IEJzRGF0ZXBpY2tlclN0YXRlIHtcbiAgaWYgKCFzdGF0ZS52aWV3KSByZXR1cm4gc3RhdGU7XG5cbiAgY29uc3QgZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCA9IHNoaWZ0Vmlld0RhdGUoc3RhdGUsIGFjdGlvbik7XG4gIGlmICghZGF0ZSkgcmV0dXJuIHN0YXRlO1xuXG4gIGNvbnN0IG5ld1N0YXRlOiB7IHZpZXc6IEJzRGF0ZXBpY2tlclZpZXdTdGF0ZSB9ID0ge1xuICAgIHZpZXc6IHttb2RlOiBzdGF0ZS52aWV3Lm1vZGUsIGRhdGV9XG4gIH07XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBuZXdTdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0Vmlld0RhdGUoc3RhdGU6IEJzRGF0ZXBpY2tlclN0YXRlLCBhY3Rpb246IEFjdGlvbik6IERhdGUgfCB1bmRlZmluZWQge1xuICBpZiAoIXN0YXRlLnZpZXcpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgaWYgKHN0YXRlLnZpZXcubW9kZSA9PT0gJ3llYXInICYmIHN0YXRlLm1pbk1vZGUgPT09ICd5ZWFyJykge1xuICAgIGNvbnN0IGluaXRpYWxEYXRlOiBEYXRlIHwgdW5kZWZpbmVkID0gZ2V0WWVhcnNDYWxlbmRhckluaXRpYWxEYXRlKHN0YXRlLCAwKTtcblxuICAgIGlmIChpbml0aWFsRGF0ZSkge1xuICAgICAgY29uc3QgbWlkZGxlRGF0ZSA9IHNoaWZ0RGF0ZShpbml0aWFsRGF0ZSwge3llYXI6IC1pbml0aWFsWWVhclNoaWZ0fSk7XG4gICAgICByZXR1cm4gc2hpZnREYXRlKG1pZGRsZURhdGUsIGFjdGlvbi5wYXlsb2FkKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2hpZnREYXRlKHN0YXJ0T2Yoc3RhdGUudmlldy5kYXRlLCAnbW9udGgnKSwgYWN0aW9uLnBheWxvYWQpO1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtYXRPcHRpb25zKHN0YXRlOiBCc0RhdGVwaWNrZXJTdGF0ZSk6IERhdGVwaWNrZXJGb3JtYXRPcHRpb25zIHtcbiAgcmV0dXJuIHtcbiAgICBsb2NhbGU6IHN0YXRlLmxvY2FsZSxcblxuICAgIG1vbnRoVGl0bGU6IHN0YXRlLm1vbnRoVGl0bGUsXG4gICAgeWVhclRpdGxlOiBzdGF0ZS55ZWFyVGl0bGUsXG5cbiAgICBkYXlMYWJlbDogc3RhdGUuZGF5TGFiZWwsXG4gICAgbW9udGhMYWJlbDogc3RhdGUubW9udGhMYWJlbCxcbiAgICB5ZWFyTGFiZWw6IHN0YXRlLnllYXJMYWJlbFxuICB9O1xufVxuXG4vKipcbiAqIGlmIHZpZXcgZGF0ZSBpcyBwcm92aWRlZCAoYnNWYWx1ZXxuZ01vZGVsKSBpdCBzaG91bGQgYmUgc2hvd25cbiAqIGlmIHZpZXcgZGF0ZSBpcyBub3QgcHJvdmlkZXI6XG4gKiBpZiBtaW5EYXRlPmN1cnJlbnREYXRlIChkZWZhdWx0IHZpZXcgdmFsdWUpLCBzaG93IG1pbkRhdGVcbiAqIGlmIG1heERhdGU8Y3VycmVudERhdGUoZGVmYXVsdCB2aWV3IHZhbHVlKSBzaG93IG1heERhdGVcbiAqL1xuZnVuY3Rpb24gZ2V0Vmlld0RhdGUodmlld0RhdGU6IERhdGUgfCBEYXRlW10sIG1pbkRhdGU/OiBEYXRlLCBtYXhEYXRlPzogRGF0ZSk6IERhdGUge1xuICBjb25zdCBfZGF0ZTogRGF0ZSA9IEFycmF5LmlzQXJyYXkodmlld0RhdGUpID8gdmlld0RhdGVbMF0gOiB2aWV3RGF0ZTtcblxuICBpZiAobWluRGF0ZSAmJiBpc0FmdGVyKG1pbkRhdGUsIF9kYXRlLCAnZGF5JykpIHJldHVybiBtaW5EYXRlO1xuICBpZiAobWF4RGF0ZSAmJiBpc0JlZm9yZShtYXhEYXRlLCBfZGF0ZSwgJ2RheScpKSByZXR1cm4gbWF4RGF0ZTtcblxuICByZXR1cm4gX2RhdGU7XG59XG5cbmZ1bmN0aW9uIGlzRGlzcGxheU9uZU1vbnRoKHZpZXdEYXRlOiBEYXRlLCBtaW5EYXRlPzogRGF0ZSwgbWF4RGF0ZT86IERhdGUpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgaWYgKG1heERhdGUgJiYgaXNTYW1lKG1heERhdGUsIHZpZXdEYXRlLCAnZGF5JykpIHJldHVybiB0cnVlO1xuXG4gIHJldHVybiBtaW5EYXRlICYmIG1heERhdGUgJiYgbWluRGF0ZS5nZXRNb250aCgpID09PSBtYXhEYXRlLmdldE1vbnRoKCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defaultMonthOptions } from './_defaults';
|
|
2
|
+
import { BsDatepickerConfig } from '../bs-datepicker.config';
|
|
3
|
+
export class BsDatepickerState {
|
|
4
|
+
constructor() {
|
|
5
|
+
// DatepickerRenderOptions
|
|
6
|
+
this.displayMonths = 1;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
const _initialView = { date: new Date(), mode: 'day' };
|
|
10
|
+
export const initialDatepickerState = Object.assign(new BsDatepickerConfig(), {
|
|
11
|
+
locale: 'en',
|
|
12
|
+
view: _initialView,
|
|
13
|
+
selectedRange: [],
|
|
14
|
+
monthViewOptions: defaultMonthOptions
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXBpY2tlci5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1jYWxlbmRhci12Mi9kYXRlcGlja2VyL3JlZHVjZXIvYnMtZGF0ZXBpY2tlci5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFPM0QsTUFBTSxPQUFPLGlCQUFpQjtJQUE5QjtRQW9DRSwwQkFBMEI7UUFDMUIsa0JBQWEsR0FBVyxDQUFDLENBQUM7SUFXNUIsQ0FBQztDQUFBO0FBRUQsTUFBTSxZQUFZLEdBQTBCLEVBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFzQixNQUFNLENBQUMsTUFBTSxDQUNwRSxJQUFJLGtCQUFrQixFQUFFLEVBQ3hCO0lBQ0UsTUFBTSxFQUFFLElBQUk7SUFDWixJQUFJLEVBQUUsWUFBWTtJQUNsQixhQUFhLEVBQUUsRUFBRTtJQUNqQixnQkFBZ0IsRUFBRSxtQkFBbUI7Q0FDdEMsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQnNEYXRlcGlja2VyVmlld01vZGUsXG4gIERhdGVwaWNrZXJGb3JtYXRPcHRpb25zLFxuICBEYXRlcGlja2VyUmVuZGVyT3B0aW9ucyxcbiAgRGF5c0NhbGVuZGFyTW9kZWwsXG4gIERheXNDYWxlbmRhclZpZXdNb2RlbCxcbiAgTW9udGhzQ2FsZW5kYXJWaWV3TW9kZWwsXG4gIE1vbnRoVmlld09wdGlvbnMsXG4gIFllYXJzQ2FsZW5kYXJWaWV3TW9kZWxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7ZGVmYXVsdE1vbnRoT3B0aW9uc30gZnJvbSAnLi9fZGVmYXVsdHMnO1xuaW1wb3J0IHtCc0RhdGVwaWNrZXJDb25maWd9IGZyb20gJy4uL2JzLWRhdGVwaWNrZXIuY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBCc0RhdGVwaWNrZXJWaWV3U3RhdGUge1xuICBkYXRlOiBEYXRlO1xuICBtb2RlOiBCc0RhdGVwaWNrZXJWaWV3TW9kZTtcbn1cblxuZXhwb3J0IGNsYXNzIEJzRGF0ZXBpY2tlclN0YXRlIGltcGxlbWVudHMgRGF0ZXBpY2tlclJlbmRlck9wdGlvbnMsIERhdGVwaWNrZXJGb3JtYXRPcHRpb25zIHtcbiAgLy8gZGF0ZSBwaWNrZXJcbiAgc2VsZWN0ZWREYXRlPzogRGF0ZTtcbiAgLy8gZGF0ZXJhbmdlIHBpY2tlclxuICBzZWxlY3RlZFJhbmdlPzogRGF0ZVtdO1xuXG4gIC8vIGluaXRpYWwgZGF0ZSBvZiBjYWxlbmRhciwgdG9kYXkgYnkgZGVmYXVsdFxuICB2aWV3PzogQnNEYXRlcGlja2VyVmlld1N0YXRlO1xuXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvLyBib3VuZHNcbiAgbWluRGF0ZT86IERhdGU7XG4gIG1heERhdGU/OiBEYXRlO1xuICBtaW5Nb2RlPzogQnNEYXRlcGlja2VyVmlld01vZGU7XG5cbiAgaG92ZXJlZERhdGU/OiBEYXRlO1xuICBob3ZlcmVkTW9udGg/OiBEYXRlO1xuICBob3ZlcmVkWWVhcj86IERhdGU7XG5cbiAgLy8gZGF5cyBjYWxlbmRhclxuICBtb250aHNNb2RlbD86IERheXNDYWxlbmRhck1vZGVsW107XG4gIGZvcm1hdHRlZE1vbnRocz86IERheXNDYWxlbmRhclZpZXdNb2RlbFtdO1xuICBmbGFnZ2VkTW9udGhzPzogRGF5c0NhbGVuZGFyVmlld01vZGVsW107XG4gIHByZXZlbnRDaGFuZ2VUb05leHRNb250aD86IGJvb2xlYW47IC8vIGRhdGVSYW5nZVBpY2tlciBvbmx5O1xuXG4gIC8vIG1vbnRocyBjYWxlbmRhclxuICBtb250aHNDYWxlbmRhcj86IE1vbnRoc0NhbGVuZGFyVmlld01vZGVsW107XG4gIGZsYWdnZWRNb250aHNDYWxlbmRhcj86IE1vbnRoc0NhbGVuZGFyVmlld01vZGVsW107XG5cbiAgLy8geWVhcnMgY2FsZW5kYXJcbiAgeWVhcnNDYWxlbmRhck1vZGVsPzogWWVhcnNDYWxlbmRhclZpZXdNb2RlbFtdO1xuICB5ZWFyc0NhbGVuZGFyRmxhZ2dlZD86IFllYXJzQ2FsZW5kYXJWaWV3TW9kZWxbXTtcblxuICAvLyBvcHRpb25zXG4gIG1vbnRoVmlld09wdGlvbnM/OiBNb250aFZpZXdPcHRpb25zO1xuXG4gIC8vIERhdGVwaWNrZXJSZW5kZXJPcHRpb25zXG4gIGRpc3BsYXlNb250aHM6IG51bWJlciA9IDE7XG5cbiAgLy8gRGF0ZXBpY2tlckZvcm1hdE9wdGlvbnNcbiAgbG9jYWxlPzogc3RyaW5nO1xuXG4gIG1vbnRoVGl0bGU/OiBzdHJpbmc7XG4gIHllYXJUaXRsZT86IHN0cmluZztcblxuICBkYXlMYWJlbD86IHN0cmluZztcbiAgbW9udGhMYWJlbD86IHN0cmluZztcbiAgeWVhckxhYmVsPzogc3RyaW5nO1xufVxuXG5jb25zdCBfaW5pdGlhbFZpZXc6IEJzRGF0ZXBpY2tlclZpZXdTdGF0ZSA9IHtkYXRlOiBuZXcgRGF0ZSgpLCBtb2RlOiAnZGF5J307XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsRGF0ZXBpY2tlclN0YXRlOiBCc0RhdGVwaWNrZXJTdGF0ZSA9IE9iamVjdC5hc3NpZ24oXG4gIG5ldyBCc0RhdGVwaWNrZXJDb25maWcoKSxcbiAge1xuICAgIGxvY2FsZTogJ2VuJyxcbiAgICB2aWV3OiBfaW5pdGlhbFZpZXcsXG4gICAgc2VsZWN0ZWRSYW5nZTogW10sXG4gICAgbW9udGhWaWV3T3B0aW9uczogZGVmYXVsdE1vbnRoT3B0aW9uc1xuICB9XG4pO1xuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { MiniState, MiniStore } from 'ngx-bootstrap/mini-ngrx';
|
|
3
|
+
import { initialDatepickerState } from './bs-datepicker.state';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { bsDatepickerReducer } from './bs-datepicker.reducer';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class BsDatepickerStore extends MiniStore {
|
|
8
|
+
constructor() {
|
|
9
|
+
const _dispatcher = new BehaviorSubject({ type: '[datepicker] dispatcher init' });
|
|
10
|
+
const state = new MiniState(initialDatepickerState, _dispatcher, bsDatepickerReducer);
|
|
11
|
+
super(_dispatcher, bsDatepickerReducer, state);
|
|
12
|
+
}
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BsDatepickerStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BsDatepickerStore, providedIn: 'platform' }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BsDatepickerStore, decorators: [{
|
|
17
|
+
type: Injectable,
|
|
18
|
+
args: [{ providedIn: 'platform' }]
|
|
19
|
+
}], ctorParameters: function () { return []; } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXBpY2tlci5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1jYWxlbmRhci12Mi9kYXRlcGlja2VyL3JlZHVjZXIvYnMtZGF0ZXBpY2tlci5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBUyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxFQUFvQixzQkFBc0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7O0FBRzVELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUE0QjtJQUVqRTtRQUNFLE1BQU0sV0FBVyxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUMsSUFBSSxFQUFFLDhCQUE4QixFQUFDLENBQUMsQ0FBQztRQUN4RixNQUFNLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBb0Isc0JBQXNCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDekcsS0FBSyxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOytHQU5VLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREwsVUFBVTs7NEZBQ3RCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3Rpb24sIE1pbmlTdGF0ZSwgTWluaVN0b3JlfSBmcm9tICduZ3gtYm9vdHN0cmFwL21pbmktbmdyeCc7XG5pbXBvcnQge0JzRGF0ZXBpY2tlclN0YXRlLCBpbml0aWFsRGF0ZXBpY2tlclN0YXRlfSBmcm9tICcuL2JzLWRhdGVwaWNrZXIuc3RhdGUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtic0RhdGVwaWNrZXJSZWR1Y2VyfSBmcm9tICcuL2JzLWRhdGVwaWNrZXIucmVkdWNlcic7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncGxhdGZvcm0nfSlcbmV4cG9ydCBjbGFzcyBCc0RhdGVwaWNrZXJTdG9yZSBleHRlbmRzIE1pbmlTdG9yZTxCc0RhdGVwaWNrZXJTdGF0ZT4ge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IF9kaXNwYXRjaGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBY3Rpb24+KHt0eXBlOiAnW2RhdGVwaWNrZXJdIGRpc3BhdGNoZXIgaW5pdCd9KTtcbiAgICBjb25zdCBzdGF0ZSA9IG5ldyBNaW5pU3RhdGU8QnNEYXRlcGlja2VyU3RhdGU+KGluaXRpYWxEYXRlcGlja2VyU3RhdGUsIF9kaXNwYXRjaGVyLCBic0RhdGVwaWNrZXJSZWR1Y2VyKTtcbiAgICBzdXBlcihfZGlzcGF0Y2hlciwgYnNEYXRlcGlja2VyUmVkdWNlciwgc3RhdGUpO1xuICB9XG59XG4iXX0=
|