barsa-calendar 2.2.73 → 2.2.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/barsa-calendar.mjs +87 -87
- package/fesm2022/barsa-calendar.mjs.map +1 -1
- package/lib/calendar-container/calendar-container.component.d.ts +1 -1
- package/lib/calendar-list/calendar-list.component.d.ts +1 -1
- package/lib/calendar-month/calendar-month.component.d.ts +1 -1
- package/lib/calendar-week/calendar-week.component.d.ts +3 -3
- package/lib/month-days/month-days.component.d.ts +1 -1
- package/lib/services/calendar.service.d.ts +1 -1
- package/package.json +3 -5
- package/esm2022/barsa-calendar.mjs +0 -5
- package/esm2022/lib/barsa-calendar.module.mjs +0 -117
- package/esm2022/lib/calendar-container/calendar-container.component.mjs +0 -221
- package/esm2022/lib/calendar-header/calendar-header.component.mjs +0 -66
- package/esm2022/lib/calendar-list/calendar-list.component.mjs +0 -18
- package/esm2022/lib/calendar-list-container/calendar-list-container.component.mjs +0 -29
- package/esm2022/lib/calendar-list-item/calendar-list-item.component.mjs +0 -14
- package/esm2022/lib/calendar-month/calendar-month.component.mjs +0 -249
- package/esm2022/lib/calendar-selection-days/calendar-selection-days.component.mjs +0 -196
- package/esm2022/lib/calendar-week/calendar-week.component.mjs +0 -255
- package/esm2022/lib/constants.mjs +0 -4
- package/esm2022/lib/date-time-picker/date-time-picker.component.mjs +0 -457
- package/esm2022/lib/day-event-list/day-event-list.component.mjs +0 -58
- package/esm2022/lib/day-number-box/day-number-box.component.mjs +0 -105
- package/esm2022/lib/days-in-week.pipe.mjs +0 -18
- package/esm2022/lib/equal-date.pipe.mjs +0 -24
- package/esm2022/lib/event-button/event-button.component.mjs +0 -100
- package/esm2022/lib/event-button-end-arrow/event-button-end-arrow.component.mjs +0 -29
- package/esm2022/lib/event-button-start-arrow/event-button-start-arrow.component.mjs +0 -29
- package/esm2022/lib/event-date.pipe.mjs +0 -25
- package/esm2022/lib/event-preview/event-preview.component.mjs +0 -81
- package/esm2022/lib/event-time.pipe.mjs +0 -23
- package/esm2022/lib/from-to-time.pipe.mjs +0 -24
- package/esm2022/lib/models.mjs +0 -14
- package/esm2022/lib/month-days/month-days.component.mjs +0 -222
- package/esm2022/lib/services/calendar.service.mjs +0 -645
- package/esm2022/public-api.mjs +0 -23
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, Self } from '@angular/core';
|
|
2
|
-
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
3
|
-
import { BaseComponent, DateService, getDateService } from 'barsa-novin-ray-core';
|
|
4
|
-
import { CalendarService } from '../services/calendar.service';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../services/calendar.service";
|
|
7
|
-
import * as i2 from "barsa-novin-ray-core";
|
|
8
|
-
import * as i3 from "@angular/common";
|
|
9
|
-
import * as i4 from "@fundamental-ngx/core/button";
|
|
10
|
-
import * as i5 from "@fundamental-ngx/core/title";
|
|
11
|
-
import * as i6 from "@fundamental-ngx/core/popover";
|
|
12
|
-
import * as i7 from "@fundamental-ngx/core/toolbar";
|
|
13
|
-
import * as i8 from "../calendar-month/calendar-month.component";
|
|
14
|
-
export class CalendarSelectionDaysComponent extends BaseComponent {
|
|
15
|
-
constructor(_calendarService, _portalService) {
|
|
16
|
-
super();
|
|
17
|
-
this._calendarService = _calendarService;
|
|
18
|
-
this.rangeChange = new EventEmitter();
|
|
19
|
-
this.selectionMode = 'day';
|
|
20
|
-
this.months = [];
|
|
21
|
-
this._isMouseDown = false;
|
|
22
|
-
this.rtl$ = _portalService.rtl$;
|
|
23
|
-
this.width$ = _portalService.deviceSize$.pipe(distinctUntilChanged(), map((deviceSize) => {
|
|
24
|
-
switch (deviceSize) {
|
|
25
|
-
case 'l':
|
|
26
|
-
case 'xl':
|
|
27
|
-
return 480;
|
|
28
|
-
case 's':
|
|
29
|
-
return 320;
|
|
30
|
-
default:
|
|
31
|
-
return 480;
|
|
32
|
-
}
|
|
33
|
-
}));
|
|
34
|
-
this.weekDaysMin = this._calendarService.weekDaysMin();
|
|
35
|
-
this._calendarService.setMode('month');
|
|
36
|
-
this.weekDays = this._calendarService.weekDays();
|
|
37
|
-
this.selectedMonth$ = this._calendarService.selected$;
|
|
38
|
-
this.today = this._calendarService.today;
|
|
39
|
-
this.months = this._calendarService.Months;
|
|
40
|
-
this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);
|
|
41
|
-
}
|
|
42
|
-
ngOnChanges(changes) {
|
|
43
|
-
super.ngOnChanges(changes);
|
|
44
|
-
const { monthInfo } = changes;
|
|
45
|
-
if (monthInfo) {
|
|
46
|
-
this._calendarService.loadCalendarMonthInfo(monthInfo.currentValue);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
onMonthSelected(monthName, index) {
|
|
50
|
-
this._calendarService.gotoMonth(monthName, index);
|
|
51
|
-
}
|
|
52
|
-
onYearSelected(year) {
|
|
53
|
-
this._calendarService.gotoYear(+year);
|
|
54
|
-
}
|
|
55
|
-
onPrevTap() {
|
|
56
|
-
if (this.selectionMode === 'day') {
|
|
57
|
-
this._calendarService.loadPrevious();
|
|
58
|
-
}
|
|
59
|
-
else if (this.selectionMode === 'month') {
|
|
60
|
-
this._calendarService.loadPrevYear();
|
|
61
|
-
}
|
|
62
|
-
else if (this.selectionMode === 'year') {
|
|
63
|
-
this._prepareYear(Number(this.years[0]) - 20);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
onNextTap() {
|
|
67
|
-
if (this.selectionMode === 'day') {
|
|
68
|
-
this._calendarService.loadNext();
|
|
69
|
-
}
|
|
70
|
-
else if (this.selectionMode === 'month') {
|
|
71
|
-
this._calendarService.loadNextYear();
|
|
72
|
-
}
|
|
73
|
-
else if (this.selectionMode === 'year') {
|
|
74
|
-
this._prepareYear(Number(this.years[this.years.length - 1]) + 1);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
onToday() {
|
|
78
|
-
this._calendarService.gotoToday();
|
|
79
|
-
}
|
|
80
|
-
onDayMouseMove(day, monthInfo) {
|
|
81
|
-
if (this._isMouseDown) {
|
|
82
|
-
const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);
|
|
83
|
-
this.startSelectedDayIndex = startDay?.index;
|
|
84
|
-
this.endSelectedDayIndex = endDay?.index;
|
|
85
|
-
// console.log('-move-', this.startSelectedDay?.index, this.endSelectedDay?.index);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
onDayMouseDown(day) {
|
|
89
|
-
this._isMouseDown = true;
|
|
90
|
-
this.startSelectedDay = null;
|
|
91
|
-
this.endSelectedDay = null;
|
|
92
|
-
this.startSelectedDay = day;
|
|
93
|
-
this.startSelectedDayIndex = day.index;
|
|
94
|
-
}
|
|
95
|
-
onDayMouseUp(day, monthInfo, popover) {
|
|
96
|
-
this._isMouseDown = false;
|
|
97
|
-
const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);
|
|
98
|
-
this.startSelectedDay = startDay;
|
|
99
|
-
this.endSelectedDay = endDay;
|
|
100
|
-
this._setFirstAndEndDay(monthInfo, popover);
|
|
101
|
-
}
|
|
102
|
-
onDayClick(day, monthInfo, popover) {
|
|
103
|
-
this.startSelectedDay = this.endSelectedDay = day;
|
|
104
|
-
this._setFirstAndEndDay(monthInfo, popover);
|
|
105
|
-
}
|
|
106
|
-
_prepareYear(from) {
|
|
107
|
-
const years = [];
|
|
108
|
-
for (let i = 0; i < 20; i++) {
|
|
109
|
-
years.push(`${from + i}`);
|
|
110
|
-
}
|
|
111
|
-
this.years = years;
|
|
112
|
-
}
|
|
113
|
-
getStartAndEndDay(monthInfo, day) {
|
|
114
|
-
let startDay = null;
|
|
115
|
-
let endDay = null;
|
|
116
|
-
if (this.startSelectedDay && !this.endSelectedDay) {
|
|
117
|
-
if (day && this.startSelectedDay.date > day.date) {
|
|
118
|
-
startDay = day;
|
|
119
|
-
endDay = this.startSelectedDay;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
startDay = this.startSelectedDay;
|
|
123
|
-
endDay = day;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
else if (this.startSelectedDay && this.endSelectedDay) {
|
|
127
|
-
if (day && this.startSelectedDay.date < day.date) {
|
|
128
|
-
startDay = this.startSelectedDay;
|
|
129
|
-
endDay = day;
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
startDay = day;
|
|
133
|
-
endDay = this.endSelectedDay;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
// console.log('-2-', startDay, endDay);
|
|
137
|
-
if (startDay && endDay) {
|
|
138
|
-
const diff = Math.abs(startDay.momentOfDate.diff(endDay.momentOfDate, 'day'));
|
|
139
|
-
if (diff > 6) {
|
|
140
|
-
startDay = monthInfo.days[Math.floor(startDay.index / 7) * 7];
|
|
141
|
-
// const end = endDay.index % 7;
|
|
142
|
-
const indexEnd = Math.ceil((endDay.index + 1) / 7);
|
|
143
|
-
// if (end > 0) {
|
|
144
|
-
// indexEnd++;
|
|
145
|
-
// }
|
|
146
|
-
endDay = monthInfo.days[indexEnd * 7 - 1];
|
|
147
|
-
// console.log('-3-', startDay, endDay);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return { endDay, startDay };
|
|
151
|
-
}
|
|
152
|
-
_setFirstAndEndDay(monthInfo, popover) {
|
|
153
|
-
// console.log('-finish-', this.startSelectedDay, this.endSelectedDay);
|
|
154
|
-
if (this.startSelectedDay && this.endSelectedDay) {
|
|
155
|
-
if (popover) {
|
|
156
|
-
popover.close();
|
|
157
|
-
}
|
|
158
|
-
this.rangeChange.emit({
|
|
159
|
-
startDay: this.startSelectedDay,
|
|
160
|
-
endDay: this.endSelectedDay,
|
|
161
|
-
monthInfo
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalendarSelectionDaysComponent, deps: [{ token: i1.CalendarService, self: true }, { token: i2.PortalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
166
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CalendarSelectionDaysComponent, selector: "bc-calendar-selection-days", inputs: { startSelectedDayIndex: "startSelectedDayIndex", endSelectedDayIndex: "endSelectedDayIndex", monthInfo: "monthInfo", inline: "inline" }, outputs: { rangeChange: "rangeChange" }, providers: [
|
|
167
|
-
{
|
|
168
|
-
provide: DateService,
|
|
169
|
-
useFactory: getDateService
|
|
170
|
-
},
|
|
171
|
-
CalendarService
|
|
172
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (inline) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n} @else {\r\n<button fd-button glyph=\"calendar\" fdType=\"transparent\" [fdPopoverTrigger]=\"popover\"></button>\r\n}\r\n<fd-popover #popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"(deviceSize$ | async) === 's'\">\r\n <fd-popover-body [style.width.px]=\"width$ | async\" class=\"popover-selection-day\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-template\r\n #month\r\n let-selectedMonth\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-popover=\"popover\"\r\n>\r\n <fd-toolbar [fdType]=\"'transparent'\">\r\n <button fd-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"onToday()\"></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"onPrevTap()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"onNextTap()\"\r\n ></button>\r\n <div class=\"month-years-wrapper\" fd-title fd-toolbar-item>\r\n @if (selectionMode === 'day' || selectionMode === 'month') {\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.monthName\"\r\n (click)=\"selectionMode = 'month'\"\r\n ></button>\r\n }\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.year\"\r\n (click)=\"selectionMode = 'year'\"\r\n ></button>\r\n </div>\r\n </fd-toolbar>\r\n @switch (selectionMode) { @case ('month') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (month of months; track month; let i = $index) {\r\n <button\r\n style=\"flex-grow: 1; width: 33%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\r\n [label]=\"month\"\r\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\r\n ></button>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (year of years; track year) {\r\n <button\r\n style=\"flex-grow: 1; width: 25%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\r\n [label]=\"year\"\r\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\r\n ></button>\r\n }\r\n </div>\r\n } @default {\r\n <bc-calendar-month\r\n [style.width]=\"width\"\r\n [containerHeight]=\"height\"\r\n [containerWidth]=\"width\"\r\n [rtl]=\"rtl\"\r\n [monthWeeksCount]=\"6\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [datePicker]=\"true\"\r\n [dateRange]=\"true\"\r\n [days]=\"selectedMonth.days\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event, selectedMonth, popover)\"\r\n (dayMouseMove)=\"onDayMouseMove($event, selectedMonth)\"\r\n (dayMouseUp)=\"onDayMouseUp($event, selectedMonth, popover)\"\r\n (dayMouseDown)=\"onDayMouseDown($event)\"\r\n [startSelectedDayIndex]=\"startSelectedDayIndex\"\r\n [endSelectedDayIndex]=\"endSelectedDayIndex\"\r\n ></bc-calendar-month>\r\n } }\r\n</ng-template>\r\n", styles: [":host ::ng-deep .fd-toolbar{background-color:var(--sapBaseColor);height:2.8rem}\n"], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i6.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i6.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "directive", type: i6.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i8.CalendarMonthComponent, selector: "bc-calendar-month", inputs: ["monthWeeksCount", "weekDays", "weekDaysMin", "today", "containerHeight", "days", "calendarFields", "rtl", "deviceSize", "moDataList", "datePicker", "rangePicker", "canDelete", "canAdd", "canEdit", "canView", "selectedDate", "startSelectedDayIndex", "endSelectedDayIndex"], outputs: ["editEvent", "deleteEvent", "daySelect", "dayClick", "dayMouseMove", "dayMouseUp", "dayMouseDown", "showEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
173
|
-
}
|
|
174
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalendarSelectionDaysComponent, decorators: [{
|
|
175
|
-
type: Component,
|
|
176
|
-
args: [{ selector: 'bc-calendar-selection-days', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
177
|
-
{
|
|
178
|
-
provide: DateService,
|
|
179
|
-
useFactory: getDateService
|
|
180
|
-
},
|
|
181
|
-
CalendarService
|
|
182
|
-
], standalone: false, template: "@if (inline) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n} @else {\r\n<button fd-button glyph=\"calendar\" fdType=\"transparent\" [fdPopoverTrigger]=\"popover\"></button>\r\n}\r\n<fd-popover #popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"(deviceSize$ | async) === 's'\">\r\n <fd-popover-body [style.width.px]=\"width$ | async\" class=\"popover-selection-day\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-template\r\n #month\r\n let-selectedMonth\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-popover=\"popover\"\r\n>\r\n <fd-toolbar [fdType]=\"'transparent'\">\r\n <button fd-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"onToday()\"></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"onPrevTap()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"onNextTap()\"\r\n ></button>\r\n <div class=\"month-years-wrapper\" fd-title fd-toolbar-item>\r\n @if (selectionMode === 'day' || selectionMode === 'month') {\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.monthName\"\r\n (click)=\"selectionMode = 'month'\"\r\n ></button>\r\n }\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.year\"\r\n (click)=\"selectionMode = 'year'\"\r\n ></button>\r\n </div>\r\n </fd-toolbar>\r\n @switch (selectionMode) { @case ('month') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (month of months; track month; let i = $index) {\r\n <button\r\n style=\"flex-grow: 1; width: 33%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\r\n [label]=\"month\"\r\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\r\n ></button>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (year of years; track year) {\r\n <button\r\n style=\"flex-grow: 1; width: 25%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\r\n [label]=\"year\"\r\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\r\n ></button>\r\n }\r\n </div>\r\n } @default {\r\n <bc-calendar-month\r\n [style.width]=\"width\"\r\n [containerHeight]=\"height\"\r\n [containerWidth]=\"width\"\r\n [rtl]=\"rtl\"\r\n [monthWeeksCount]=\"6\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [datePicker]=\"true\"\r\n [dateRange]=\"true\"\r\n [days]=\"selectedMonth.days\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event, selectedMonth, popover)\"\r\n (dayMouseMove)=\"onDayMouseMove($event, selectedMonth)\"\r\n (dayMouseUp)=\"onDayMouseUp($event, selectedMonth, popover)\"\r\n (dayMouseDown)=\"onDayMouseDown($event)\"\r\n [startSelectedDayIndex]=\"startSelectedDayIndex\"\r\n [endSelectedDayIndex]=\"endSelectedDayIndex\"\r\n ></bc-calendar-month>\r\n } }\r\n</ng-template>\r\n", styles: [":host ::ng-deep .fd-toolbar{background-color:var(--sapBaseColor);height:2.8rem}\n"] }]
|
|
183
|
-
}], ctorParameters: () => [{ type: i1.CalendarService, decorators: [{
|
|
184
|
-
type: Self
|
|
185
|
-
}] }, { type: i2.PortalService }], propDecorators: { startSelectedDayIndex: [{
|
|
186
|
-
type: Input
|
|
187
|
-
}], endSelectedDayIndex: [{
|
|
188
|
-
type: Input
|
|
189
|
-
}], monthInfo: [{
|
|
190
|
-
type: Input
|
|
191
|
-
}], inline: [{
|
|
192
|
-
type: Input
|
|
193
|
-
}], rangeChange: [{
|
|
194
|
-
type: Output
|
|
195
|
-
}] } });
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2VsZWN0aW9uLWRheXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci1zZWxlY3Rpb24tZGF5cy9jYWxlbmRhci1zZWxlY3Rpb24tZGF5cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLXNlbGVjdGlvbi1kYXlzL2NhbGVuZGFyLXNlbGVjdGlvbi1kYXlzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLElBQUksRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFpQixNQUFNLHNCQUFzQixDQUFDO0FBRWpHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7OztBQWUvRCxNQUFNLE9BQU8sOEJBQStCLFNBQVEsYUFBYTtJQXlCN0QsWUFBNEIsZ0JBQWlDLEVBQUUsY0FBNkI7UUFDeEYsS0FBSyxFQUFFLENBQUM7UUFEZ0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQXBCbkQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFJcEMsQ0FBQztRQUNMLGtCQUFhLEdBQTZCLEtBQUssQ0FBQztRQVloRCxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRWQsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHekIsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdB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LENBQUMsU0FBUyxFQUFFLE9BQU87UUFDekMsdUVBQXVFO1FBQ3ZFLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMvQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2dCQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWM7Z0JBQzNCLFNBQVM7YUFDWixDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQzsrR0EvS1EsOEJBQThCO21HQUE5Qiw4QkFBOEIsZ1BBVDVCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFVBQVUsRUFBRSxjQUFjO2FBQzdCO1lBQ0QsZUFBZTtTQUNsQixzRUMxQkwsbTVKQXNJQTs7NEZEekdhLDhCQUE4QjtrQkFkMUMsU0FBUzsrQkFDSSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLFdBQVc7NEJBQ3BCLFVBQVUsRUFBRSxjQUFjO3lCQUM3Qjt3QkFDRCxlQUFlO3FCQUNsQixjQUNXLEtBQUs7OzBCQTJCSixJQUFJO3FFQXhCUixxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE91dHB1dCxcclxuICAgIFNlbGYsXHJcbiAgICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgRGF0ZVNlcnZpY2UsIGdldERhdGVTZXJ2aWNlLCBQb3J0YWxTZXJ2aWNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vbnRoSW5mbywgRGF5IH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2FsZW5kYXIuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYy1jYWxlbmRhci1zZWxlY3Rpb24tZGF5cycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItc2VsZWN0aW9uLWRheXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItc2VsZWN0aW9uLWRheXMuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBEYXRlU2VydmljZSxcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogZ2V0RGF0ZVNlcnZpY2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIENhbGVuZGFyU2VydmljZVxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhclNlbGVjdGlvbkRheXNDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICAgIEBJbnB1dCgpIHN0YXJ0U2VsZWN0ZWREYXlJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgZW5kU2VsZWN0ZWREYXlJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgbW9udGhJbmZvOiBDYWxlbmRhck1vbnRoSW5mbztcclxuICAgIEBJbnB1dCgpIGlubGluZTogYm9vbGVhbjtcclxuICAgIEBPdXRwdXQoKSByYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICAgIHN0YXJ0RGF5OiBEYXk7XHJcbiAgICAgICAgZW5kRGF5OiBEYXk7XHJcbiAgICAgICAgbW9udGhJbmZvOiBDYWxlbmRhck1vbnRoSW5mbztcclxuICAgIH0+KCk7XHJcbiAgICBzZWxlY3Rpb25Nb2RlOiAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgPSAnZGF5JztcclxuXHJcbiAgICBlbmRTZWxlY3RlZERheTogRGF5IHwgbnVsbDtcclxuICAgIHN0YXJ0U2VsZWN0ZWREYXk6IERheSB8IG51bGw7XHJcbiAgICB3aWR0aCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgc2VsZWN0ZWRNb250aCQ6IE9ic2VydmFibGU8Q2FsZW5kYXJNb250aEluZm8+O1xyXG4gICAgcnRsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIHRvZGF5OiBEYXRlO1xyXG4gICAgd2Vla0RheXNNaW46IHN0cmluZ1tdO1xyXG4gICAgd2Vla0RheXM6IHN0cmluZ1tdO1xyXG4gICAgZGV2aWNlU2l6ZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICAgIG1vbnRoczogc3RyaW5nW10gPSBbXTtcclxuICAgIHllYXJzOiBzdHJpbmdbXTtcclxuICAgIHByaXZhdGUgX2lzTW91c2VEb3duID0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3RvcihAU2VsZigpIHByaXZhdGUgX2NhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlLCBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5ydGwkID0gX3BvcnRhbFNlcnZpY2UucnRsJDtcclxuICAgICAgICB0aGlzLndpZHRoJCA9IF9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUkLnBpcGUoXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIG1hcCgoZGV2aWNlU2l6ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChkZXZpY2VTaXplKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAneGwnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDgwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3MnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzIwO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0ODA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLndlZWtEYXlzTWluID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLndlZWtEYXlzTWluKCk7XHJcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLnNldE1vZGUoJ21vbnRoJyk7XHJcbiAgICAgICAgdGhpcy53ZWVrRGF5cyA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS53ZWVrRGF5cygpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb250aCQgPSB0aGlzLl9jYWxlbmRhclNlcnZpY2Uuc2VsZWN0ZWQkO1xyXG4gICAgICAgIHRoaXMudG9kYXkgPSB0aGlzLl9jYWxlbmRhclNlcnZpY2UudG9kYXk7XHJcbiAgICAgICAgdGhpcy5tb250aHMgPSB0aGlzLl9jYWxlbmRhclNlcnZpY2UuTW9udGhzO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVZZWFyKHRoaXMuX2NhbGVuZGFyU2VydmljZS5zZWxlY3RlZE1vbnRoLmRhdGVJbmZvLnllYXIpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBjb25zdCB7IG1vbnRoSW5mbyB9ID0gY2hhbmdlcztcclxuICAgICAgICBpZiAobW9udGhJbmZvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sb2FkQ2FsZW5kYXJNb250aEluZm8obW9udGhJbmZvLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25Nb250aFNlbGVjdGVkKG1vbnRoTmFtZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmdvdG9Nb250aChtb250aE5hbWUsIGluZGV4KTtcclxuICAgIH1cclxuICAgIG9uWWVhclNlbGVjdGVkKHllYXI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5nb3RvWWVhcigreWVhcik7XHJcbiAgICB9XHJcblxyXG4gICAgb25QcmV2VGFwKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdkYXknKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sb2FkUHJldmlvdXMoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UubG9hZFByZXZZZWFyKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICd5ZWFyJykge1xyXG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlWWVhcihOdW1iZXIodGhpcy55ZWFyc1swXSkgLSAyMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uTmV4dFRhcCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnZGF5Jykge1xyXG4gICAgICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UubG9hZE5leHQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UubG9hZE5leHRZZWFyKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICd5ZWFyJykge1xyXG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlWWVhcihOdW1iZXIodGhpcy55ZWFyc1t0aGlzLnllYXJzLmxlbmd0aCAtIDFdKSArIDEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblRvZGF5KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5nb3RvVG9kYXkoKTtcclxuICAgIH1cclxuICAgIG9uRGF5TW91c2VNb3ZlKGRheTogRGF5LCBtb250aEluZm86IENhbGVuZGFyTW9udGhJbmZvKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzTW91c2VEb3duKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgZW5kRGF5LCBzdGFydERheSB9ID0gdGhpcy5nZXRTdGFydEFuZEVuZERheShtb250aEluZm8sIGRheSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTZWxlY3RlZERheUluZGV4ID0gc3RhcnREYXk/LmluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLmVuZFNlbGVjdGVkRGF5SW5kZXggPSBlbmREYXk/LmluZGV4O1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnLW1vdmUtJywgdGhpcy5zdGFydFNlbGVjdGVkRGF5Py5pbmRleCwgdGhpcy5lbmRTZWxlY3RlZERheT8uaW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkRheU1vdXNlRG93bihkYXk6IERheSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2lzTW91c2VEb3duID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN0YXJ0U2VsZWN0ZWREYXkgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZW5kU2VsZWN0ZWREYXkgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc3RhcnRTZWxlY3RlZERheSA9IGRheTtcclxuICAgICAgICB0aGlzLnN0YXJ0U2VsZWN0ZWREYXlJbmRleCA9IGRheS5pbmRleDtcclxuICAgIH1cclxuICAgIG9uRGF5TW91c2VVcChkYXk6IERheSwgbW9udGhJbmZvLCBwb3BvdmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faXNNb3VzZURvd24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3QgeyBlbmREYXksIHN0YXJ0RGF5IH0gPSB0aGlzLmdldFN0YXJ0QW5kRW5kRGF5KG1vbnRoSW5mbywgZGF5KTtcclxuICAgICAgICB0aGlzLnN0YXJ0U2VsZWN0ZWREYXkgPSBzdGFydERheTtcclxuICAgICAgICB0aGlzLmVuZFNlbGVjdGVkRGF5ID0gZW5kRGF5O1xyXG4gICAgICAgIHRoaXMuX3NldEZpcnN0QW5kRW5kRGF5KG1vbnRoSW5mbywgcG9wb3Zlcik7XHJcbiAgICB9XHJcbiAgICBvbkRheUNsaWNrKGRheTogRGF5LCBtb250aEluZm8sIHBvcG92ZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN0YXJ0U2VsZWN0ZWREYXkgPSB0aGlzLmVuZFNlbGVjdGVkRGF5ID0gZGF5O1xyXG4gICAgICAgIHRoaXMuX3NldEZpcnN0QW5kRW5kRGF5KG1vbnRoSW5mbywgcG9wb3Zlcik7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9wcmVwYXJlWWVhcihmcm9tOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB5ZWFyczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcclxuICAgICAgICAgICAgeWVhcnMucHVzaChgJHtmcm9tICsgaX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy55ZWFycyA9IHllYXJzO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBnZXRTdGFydEFuZEVuZERheShcclxuICAgICAgICBtb250aEluZm86IENhbGVuZGFyTW9udGhJbmZvLFxyXG4gICAgICAgIGRheTogRGF5IHwgbnVsbFxyXG4gICAgKTogeyBlbmREYXk6IERheSB8IG51bGw7IHN0YXJ0RGF5OiBEYXkgfCBudWxsIH0ge1xyXG4gICAgICAgIGxldCBzdGFydERheTogRGF5IHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgbGV0IGVuZERheTogRGF5IHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRTZWxlY3RlZERheSAmJiAhdGhpcy5lbmRTZWxlY3RlZERheSkge1xyXG4gICAgICAgICAgICBpZiAoZGF5ICYmIHRoaXMuc3RhcnRTZWxlY3RlZERheS5kYXRlID4gZGF5LmRhdGUpIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0RGF5ID0gZGF5O1xyXG4gICAgICAgICAgICAgICAgZW5kRGF5ID0gdGhpcy5zdGFydFNlbGVjdGVkRGF5O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc3RhcnREYXkgPSB0aGlzLnN0YXJ0U2VsZWN0ZWREYXk7XHJcbiAgICAgICAgICAgICAgICBlbmREYXkgPSBkYXk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnRTZWxlY3RlZERheSAmJiB0aGlzLmVuZFNlbGVjdGVkRGF5KSB7XHJcbiAgICAgICAgICAgIGlmIChkYXkgJiYgdGhpcy5zdGFydFNlbGVjdGVkRGF5LmRhdGUgPCBkYXkuZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnREYXkgPSB0aGlzLnN0YXJ0U2VsZWN0ZWREYXk7XHJcbiAgICAgICAgICAgICAgICBlbmREYXkgPSBkYXk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydERheSA9IGRheTtcclxuICAgICAgICAgICAgICAgIGVuZERheSA9IHRoaXMuZW5kU2VsZWN0ZWREYXk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJy0yLScsIHN0YXJ0RGF5LCBlbmREYXkpO1xyXG4gICAgICAgIGlmIChzdGFydERheSAmJiBlbmREYXkpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKHN0YXJ0RGF5Lm1vbWVudE9mRGF0ZS5kaWZmKGVuZERheS5tb21lbnRPZkRhdGUsICdkYXknKSk7XHJcbiAgICAgICAgICAgIGlmIChkaWZmID4gNikge1xyXG4gICAgICAgICAgICAgICAgc3RhcnREYXkgPSBtb250aEluZm8uZGF5c1tNYXRoLmZsb29yKHN0YXJ0RGF5LmluZGV4IC8gNykgKiA3XTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnN0IGVuZCA9IGVuZERheS5pbmRleCAlIDc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleEVuZCA9IE1hdGguY2VpbCgoZW5kRGF5LmluZGV4ICsgMSkgLyA3KTtcclxuICAgICAgICAgICAgICAgIC8vIGlmIChlbmQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgaW5kZXhFbmQrKztcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIGVuZERheSA9IG1vbnRoSW5mby5kYXlzW2luZGV4RW5kICogNyAtIDFdO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJy0zLScsIHN0YXJ0RGF5LCBlbmREYXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7IGVuZERheSwgc3RhcnREYXkgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zZXRGaXJzdEFuZEVuZERheShtb250aEluZm8sIHBvcG92ZXIpOiB2b2lkIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnLWZpbmlzaC0nLCB0aGlzLnN0YXJ0U2VsZWN0ZWREYXksIHRoaXMuZW5kU2VsZWN0ZWREYXkpO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0U2VsZWN0ZWREYXkgJiYgdGhpcy5lbmRTZWxlY3RlZERheSkge1xyXG4gICAgICAgICAgICBpZiAocG9wb3Zlcikge1xyXG4gICAgICAgICAgICAgICAgcG9wb3Zlci5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmFuZ2VDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgICAgICAgICBzdGFydERheTogdGhpcy5zdGFydFNlbGVjdGVkRGF5LFxyXG4gICAgICAgICAgICAgICAgZW5kRGF5OiB0aGlzLmVuZFNlbGVjdGVkRGF5LFxyXG4gICAgICAgICAgICAgICAgbW9udGhJbmZvXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGlubGluZSkge1xyXG48bmctY29udGFpbmVyXHJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgIG1vbnRoO1xyXG4gICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgJGltcGxpY2l0OiBzZWxlY3RlZE1vbnRoJCB8IGFzeW5jLFxyXG4gICAgICAgICAgICB3aWR0aDogd2lkdGgkIHwgYXN5bmMsXHJcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxyXG4gICAgICAgICAgICBydGw6IHJ0bCQgfCBhc3luYyxcclxuICAgICAgICAgICAgd2Vla0RheXM6IHdlZWtEYXlzLFxyXG4gICAgICAgICAgICB3ZWVrRGF5c01pbjogd2Vla0RheXNNaW4sXHJcbiAgICAgICAgICAgIHRvZGF5OiB0b2RheSxcclxuICAgICAgICAgICAgZGV2aWNlU2l6ZTogZGV2aWNlU2l6ZSQgfCBhc3luYyxcclxuICAgICAgICAgICAgcG9wb3ZlcjogcG9wb3ZlclxyXG4gICAgICAgIH1cclxuICAgIFwiXHJcbj5cclxuPC9uZy1jb250YWluZXI+XHJcbn0gQGVsc2Uge1xyXG48YnV0dG9uIGZkLWJ1dHRvbiBnbHlwaD1cImNhbGVuZGFyXCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBbZmRQb3BvdmVyVHJpZ2dlcl09XCJwb3BvdmVyXCI+PC9idXR0b24+XHJcbn1cclxuPGZkLXBvcG92ZXIgI3BvcG92ZXIgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCIgW2ZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiIFttb2JpbGVdPVwiKGRldmljZVNpemUkIHwgYXN5bmMpID09PSAncydcIj5cclxuICAgIDxmZC1wb3BvdmVyLWJvZHkgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoJCB8IGFzeW5jXCIgY2xhc3M9XCJwb3BvdmVyLXNlbGVjdGlvbi1kYXlcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICBtb250aDtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHNlbGVjdGVkTW9udGgkIHwgYXN5bmMsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoJCB8IGFzeW5jLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgIHJ0bDogcnRsJCB8IGFzeW5jLFxyXG4gICAgICAgICAgICAgICAgICAgIHdlZWtEYXlzOiB3ZWVrRGF5cyxcclxuICAgICAgICAgICAgICAgICAgICB3ZWVrRGF5c01pbjogd2Vla0RheXNNaW4sXHJcbiAgICAgICAgICAgICAgICAgICAgdG9kYXk6IHRvZGF5LFxyXG4gICAgICAgICAgICAgICAgICAgIGRldmljZVNpemU6IGRldmljZVNpemUkIHwgYXN5bmMsXHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3ZlcjogcG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxyXG48L2ZkLXBvcG92ZXI+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAgICNtb250aFxyXG4gICAgbGV0LXNlbGVjdGVkTW9udGhcclxuICAgIGxldC13aWR0aD1cIndpZHRoXCJcclxuICAgIGxldC1oZWlnaHQ9XCJoZWlnaHRcIlxyXG4gICAgbGV0LXJ0bD1cInJ0bFwiXHJcbiAgICBsZXQtdG9kYXk9XCJ0b2RheVwiXHJcbiAgICBsZXQtc2hvd0V2ZW50cz1cInNob3dFdmVudHNcIlxyXG4gICAgbGV0LWRldmljZVNpemU9XCJkZXZpY2VTaXplXCJcclxuICAgIGxldC1wb3BvdmVyPVwicG9wb3ZlclwiXHJcbj5cclxuICAgIDxmZC10b29sYmFyIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiPlxyXG4gICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkLXRvb2xiYXItaXRlbSBbbGFiZWxdPVwiJ0RhdGVSX1RvZGF5JyB8IGJiYlRyYW5zbGF0ZVwiIChjbGljayk9XCJvblRvZGF5KClcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBbZ2x5cGhdPVwicnRsID8gJ25hdmlnYXRpb24tcmlnaHQtYXJyb3cnIDogJ25hdmlnYXRpb24tbGVmdC1hcnJvdydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmV2VGFwKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBbZ2x5cGhdPVwicnRsID8gJ25hdmlnYXRpb24tbGVmdC1hcnJvdycgOiAnbmF2aWdhdGlvbi1yaWdodC1hcnJvdydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25OZXh0VGFwKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgteWVhcnMtd3JhcHBlclwiIGZkLXRpdGxlIGZkLXRvb2xiYXItaXRlbT5cclxuICAgICAgICAgICAgQGlmIChzZWxlY3Rpb25Nb2RlID09PSAnZGF5JyB8fCBzZWxlY3Rpb25Nb2RlID09PSAnbW9udGgnKSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzZWxlY3RlZE1vbnRoLmRhdGVJbmZvLm1vbnRoTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0aW9uTW9kZSA9ICdtb250aCdcIlxyXG4gICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNlbGVjdGVkTW9udGguZGF0ZUluZm8ueWVhclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0aW9uTW9kZSA9ICd5ZWFyJ1wiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZmQtdG9vbGJhcj5cclxuICAgIEBzd2l0Y2ggKHNlbGVjdGlvbk1vZGUpIHsgQGNhc2UgKCdtb250aCcpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJtb250aC15ZWFyLXNlbGVjdGlvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgQGZvciAobW9udGggb2YgbW9udGhzOyB0cmFjayBtb250aDsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHN0eWxlPVwiZmxleC1ncm93OiAxOyB3aWR0aDogMzMlXCJcclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwic2VsZWN0ZWRNb250aC5kYXRlSW5mby5tb250aE5hbWUgPT09IG1vbnRoID8gJ2VtcGhhc2l6ZWQnIDogJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCJtb250aFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3Rpb25Nb2RlID0gJ2RheSc7IG9uTW9udGhTZWxlY3RlZChtb250aCwgaSlcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gQGNhc2UgKCd5ZWFyJykge1xyXG4gICAgPGRpdiBjbGFzcz1cIm1vbnRoLXllYXItc2VsZWN0aW9uLXdyYXBwZXJcIj5cclxuICAgICAgICBAZm9yICh5ZWFyIG9mIHllYXJzOyB0cmFjayB5ZWFyKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBzdHlsZT1cImZsZXgtZ3JvdzogMTsgd2lkdGg6IDI1JVwiXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cInNlbGVjdGVkTW9udGguZGF0ZUluZm8ueWVhciA9PT0gK3llYXIgPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cInllYXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0aW9uTW9kZSA9ICdkYXknOyBvblllYXJTZWxlY3RlZCh5ZWFyKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZGVmYXVsdCB7XHJcbiAgICA8YmMtY2FsZW5kYXItbW9udGhcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxyXG4gICAgICAgIFtjb250YWluZXJIZWlnaHRdPVwiaGVpZ2h0XCJcclxuICAgICAgICBbY29udGFpbmVyV2lkdGhdPVwid2lkdGhcIlxyXG4gICAgICAgIFtydGxdPVwicnRsXCJcclxuICAgICAgICBbbW9udGhXZWVrc0NvdW50XT1cIjZcIlxyXG4gICAgICAgIFt3ZWVrRGF5c109XCJ3ZWVrRGF5c1wiXHJcbiAgICAgICAgW3dlZWtEYXlzTWluXT1cIndlZWtEYXlzTWluXCJcclxuICAgICAgICBbdG9kYXldPVwidG9kYXlcIlxyXG4gICAgICAgIFtkYXRlUGlja2VyXT1cInRydWVcIlxyXG4gICAgICAgIFtkYXRlUmFuZ2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2RheXNdPVwic2VsZWN0ZWRNb250aC5kYXlzXCJcclxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgICAgICAoZGF5Q2xpY2spPVwib25EYXlDbGljaygkZXZlbnQsIHNlbGVjdGVkTW9udGgsIHBvcG92ZXIpXCJcclxuICAgICAgICAoZGF5TW91c2VNb3ZlKT1cIm9uRGF5TW91c2VNb3ZlKCRldmVudCwgc2VsZWN0ZWRNb250aClcIlxyXG4gICAgICAgIChkYXlNb3VzZVVwKT1cIm9uRGF5TW91c2VVcCgkZXZlbnQsIHNlbGVjdGVkTW9udGgsIHBvcG92ZXIpXCJcclxuICAgICAgICAoZGF5TW91c2VEb3duKT1cIm9uRGF5TW91c2VEb3duKCRldmVudClcIlxyXG4gICAgICAgIFtzdGFydFNlbGVjdGVkRGF5SW5kZXhdPVwic3RhcnRTZWxlY3RlZERheUluZGV4XCJcclxuICAgICAgICBbZW5kU2VsZWN0ZWREYXlJbmRleF09XCJlbmRTZWxlY3RlZERheUluZGV4XCJcclxuICAgID48L2JjLWNhbGVuZGFyLW1vbnRoPlxyXG4gICAgfSB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|