barsa-calendar 0.0.2
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/README.md +25 -0
- package/esm2020/barsa-calendar.mjs +5 -0
- package/esm2020/lib/barsa-calendar.module.mjs +106 -0
- package/esm2020/lib/calendar-container/calendar-container.component.mjs +190 -0
- package/esm2020/lib/calendar-header/calendar-header.component.mjs +61 -0
- package/esm2020/lib/calendar-list/calendar-list.component.mjs +19 -0
- package/esm2020/lib/calendar-list-container/calendar-list-container.component.mjs +30 -0
- package/esm2020/lib/calendar-list-item/calendar-list-item.component.mjs +14 -0
- package/esm2020/lib/calendar-month/calendar-month.component.mjs +244 -0
- package/esm2020/lib/calendar-selection-days/calendar-selection-days.component.mjs +193 -0
- package/esm2020/lib/calendar-week/calendar-week.component.mjs +182 -0
- package/esm2020/lib/constants.mjs +4 -0
- package/esm2020/lib/date-time-picker/date-time-picker.component.mjs +324 -0
- package/esm2020/lib/day-event-list/day-event-list.component.mjs +53 -0
- package/esm2020/lib/day-number-box/day-number-box.component.mjs +105 -0
- package/esm2020/lib/days-in-week.pipe.mjs +17 -0
- package/esm2020/lib/equal-date.pipe.mjs +23 -0
- package/esm2020/lib/event-button/event-button.component.mjs +70 -0
- package/esm2020/lib/event-date.pipe.mjs +24 -0
- package/esm2020/lib/event-preview/event-preview.component.mjs +60 -0
- package/esm2020/lib/event-time.pipe.mjs +22 -0
- package/esm2020/lib/from-to-time.pipe.mjs +23 -0
- package/esm2020/lib/models.mjs +14 -0
- package/esm2020/lib/month-days/month-days.component.mjs +220 -0
- package/esm2020/lib/services/calendar.service.mjs +610 -0
- package/esm2020/public-api.mjs +21 -0
- package/fesm2015/barsa-calendar.mjs +2447 -0
- package/fesm2015/barsa-calendar.mjs.map +1 -0
- package/fesm2020/barsa-calendar.mjs +2455 -0
- package/fesm2020/barsa-calendar.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/barsa-calendar.module.d.ts +33 -0
- package/lib/calendar-container/calendar-container.component.d.ts +73 -0
- package/lib/calendar-header/calendar-header.component.d.ts +29 -0
- package/lib/calendar-list/calendar-list.component.d.ts +8 -0
- package/lib/calendar-list-container/calendar-list-container.component.d.ts +14 -0
- package/lib/calendar-list-item/calendar-list-item.component.d.ts +7 -0
- package/lib/calendar-month/calendar-month.component.d.ts +70 -0
- package/lib/calendar-selection-days/calendar-selection-days.component.d.ts +47 -0
- package/lib/calendar-week/calendar-week.component.d.ts +57 -0
- package/lib/constants.d.ts +1 -0
- package/lib/date-time-picker/date-time-picker.component.d.ts +98 -0
- package/lib/day-event-list/day-event-list.component.d.ts +20 -0
- package/lib/day-number-box/day-number-box.component.d.ts +30 -0
- package/lib/days-in-week.pipe.d.ts +9 -0
- package/lib/equal-date.pipe.d.ts +8 -0
- package/lib/event-button/event-button.component.d.ts +26 -0
- package/lib/event-date.pipe.d.ts +9 -0
- package/lib/event-preview/event-preview.component.d.ts +19 -0
- package/lib/event-time.pipe.d.ts +9 -0
- package/lib/from-to-time.pipe.d.ts +9 -0
- package/lib/models.d.ts +107 -0
- package/lib/month-days/month-days.component.d.ts +69 -0
- package/lib/services/calendar.service.d.ts +70 -0
- package/package.json +31 -0
- package/public-api.d.ts +17 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import moment from 'moment';
|
|
3
|
+
import { BaseComponent, PreventDefaulEvent } from 'barsa-novin-ray-core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../services/calendar.service";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@fundamental-ngx/core/button";
|
|
8
|
+
import * as i4 from "@fundamental-ngx/core/popover";
|
|
9
|
+
import * as i5 from "@fundamental-ngx/core/table";
|
|
10
|
+
import * as i6 from "../day-number-box/day-number-box.component";
|
|
11
|
+
import * as i7 from "../event-button/event-button.component";
|
|
12
|
+
import * as i8 from "../from-to-time.pipe";
|
|
13
|
+
export class CalendarWeekComponent extends BaseComponent {
|
|
14
|
+
constructor(_cdr, _calendarService) {
|
|
15
|
+
super();
|
|
16
|
+
this._cdr = _cdr;
|
|
17
|
+
this._calendarService = _calendarService;
|
|
18
|
+
this.canDelete = false;
|
|
19
|
+
this.canAdd = false;
|
|
20
|
+
this.canEdit = false;
|
|
21
|
+
this.editEvent = new EventEmitter();
|
|
22
|
+
this.deleteEvent = new EventEmitter();
|
|
23
|
+
this.showEvent = new EventEmitter();
|
|
24
|
+
this.daySelect = new EventEmitter();
|
|
25
|
+
this.dayClick = new EventEmitter();
|
|
26
|
+
this.taskHeight = 30;
|
|
27
|
+
this.maxTaskCount = 4;
|
|
28
|
+
this._hasPopoverOpened = [];
|
|
29
|
+
}
|
|
30
|
+
ngOnChanges(changes) {
|
|
31
|
+
super.ngOnChanges(changes);
|
|
32
|
+
if (changes.deviceSize && !changes.deviceSize.firstChange) {
|
|
33
|
+
this.prepareWeekDays(changes.deviceSize.currentValue);
|
|
34
|
+
}
|
|
35
|
+
if (changes.moDataList && !changes.moDataList.firstChange) {
|
|
36
|
+
this._prepareDaysTasks(changes.moDataList.currentValue);
|
|
37
|
+
this._cdr.detectChanges();
|
|
38
|
+
}
|
|
39
|
+
if (changes.days && !changes.days.firstChange) {
|
|
40
|
+
this._prepareDaysTasks(this.moDataList);
|
|
41
|
+
this._cdr.detectChanges();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ngOnInit() {
|
|
45
|
+
super.ngOnInit();
|
|
46
|
+
this.hours = new Array(24).fill(0).map((x, i) => `${i > 9 ? '' + i : '0' + i}:00`);
|
|
47
|
+
this.prepareWeekDays(this.deviceSize);
|
|
48
|
+
this._prepareDaysTasks(this.moDataList);
|
|
49
|
+
}
|
|
50
|
+
onDayBoxSelect(day) {
|
|
51
|
+
if (!this.canAdd) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this._fireDaySelect(day.date);
|
|
55
|
+
}
|
|
56
|
+
onOpenPopoverChange(isOpen) {
|
|
57
|
+
if (isOpen) {
|
|
58
|
+
this._hasPopoverOpened.push(true);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
setTimeout(() => {
|
|
62
|
+
this._hasPopoverOpened = [];
|
|
63
|
+
}, 0);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
onColumnClick(e, day) {
|
|
67
|
+
const { offsetY } = e;
|
|
68
|
+
const hour = Math.floor(offsetY / 50);
|
|
69
|
+
const minutes = Math.floor((offsetY % 50) / 15) * 15;
|
|
70
|
+
const date = new Date(day.date);
|
|
71
|
+
date.setHours(hour);
|
|
72
|
+
date.setMinutes(minutes);
|
|
73
|
+
this._fireDaySelect(date);
|
|
74
|
+
}
|
|
75
|
+
onEventButton(e) {
|
|
76
|
+
if (e.currentTarget?.localName === 'bc-event-button') {
|
|
77
|
+
PreventDefaulEvent(e);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
onMoreButton(e, popover) {
|
|
81
|
+
PreventDefaulEvent(e);
|
|
82
|
+
this._openPopover(popover);
|
|
83
|
+
}
|
|
84
|
+
onDayClick(day) {
|
|
85
|
+
this.selected = day;
|
|
86
|
+
this.dayClick.emit(day);
|
|
87
|
+
}
|
|
88
|
+
_fireDaySelect(date) {
|
|
89
|
+
if (this._hasPopoverOpened.length === 0) {
|
|
90
|
+
this.daySelect.emit(moment(date));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_openPopover(popover) {
|
|
94
|
+
if (popover.isOpen) {
|
|
95
|
+
this._hasPopoverOpened.push(popover);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
this._hasPopoverOpened.pop();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
prepareWeekDays(deviceSize) {
|
|
102
|
+
if (deviceSize !== 's' && deviceSize !== 'm') {
|
|
103
|
+
this.selectedWeekDays = this.weekDays;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this.selectedWeekDays = this.weekDaysMin;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
_prepareDaysTasks(calendarTasks) {
|
|
110
|
+
const calendarFields = this.calendarFields;
|
|
111
|
+
// Sort all Tasks
|
|
112
|
+
const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);
|
|
113
|
+
const taskHeight = 50;
|
|
114
|
+
this.days.forEach((day) => (day.tasks = []));
|
|
115
|
+
const weekTasksArray = [];
|
|
116
|
+
const days = this.days;
|
|
117
|
+
const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, taskHeight);
|
|
118
|
+
weekTasksArray.push(week);
|
|
119
|
+
// به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم
|
|
120
|
+
weekTasksArray.forEach((weekTask) => {
|
|
121
|
+
this._calendarService.fillWeek(weekTask, days.length);
|
|
122
|
+
});
|
|
123
|
+
const tasks = [];
|
|
124
|
+
let counter = 0;
|
|
125
|
+
Object.values(weekTasksArray).forEach(() => {
|
|
126
|
+
Object.values(week).forEach((element) => {
|
|
127
|
+
const filtered = element.some((c) => c.colSpan > 1 || (c.colSpan === 1 && !c.inDay && c.event));
|
|
128
|
+
if (filtered) {
|
|
129
|
+
tasks[counter.toString()] = element;
|
|
130
|
+
counter++;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
this.weekTasksArray = tasks;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
CalendarWeekComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarWeekComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CalendarService }], target: i0.ɵɵFactoryTarget.Component });
|
|
138
|
+
CalendarWeekComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CalendarWeekComponent, selector: "bc-calendar-week", inputs: { weekDays: "weekDays", weekDaysMin: "weekDaysMin", today: "today", containerHeight: "containerHeight", calendarFields: "calendarFields", rtl: "rtl", inDialog: "inDialog", deviceSize: "deviceSize", moDataList: "moDataList", days: "days", canDelete: "canDelete", canAdd: "canAdd", canEdit: "canEdit" }, outputs: { editEvent: "editEvent", deleteEvent: "deleteEvent", showEvent: "showEvent", daySelect: "daySelect", dayClick: "dayClick" }, viewQueries: [{ propertyName: "tableTopEl", first: true, predicate: ["tableTop"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"table-container\"\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\n style=\"overflow-y: hidden; flex-shrink: 0\"\n #tableTop\n>\n <table fd-table class=\"table-top\" [compact]=\"true\" [attr.daysCount]=\"days.length\">\n <tbody fd-table-body>\n <tr fd-table-row class=\"week-days\">\n <td class=\"td-time\"></td>\n <td [attr.rtl]=\"rtl\" class=\"weekday-header\" *ngFor=\"let day of days\" fd-table-cell style=\"width: 100%\">\n {{ day.dayName }}\n </td>\n </tr>\n <tr fd-table-row class=\"week-numbers\">\n <td class=\"td-time\"></td>\n <td fd-table-cell *ngFor=\"let day of days\" [attr.rtl]=\"rtl\">\n <bc-day-number-box\n [day]=\"day\"\n [isWeekMode]=\"true\"\n [isSingleDay]=\"days.length === 1\"\n (dayClick)=\"onDayClick(day)\"\n ></bc-day-number-box>\n </td>\n </tr>\n <ng-container\n *ngTemplateOutlet=\"\n renderDayTasks;\n context: {\n $implicit: weekTasksArray,\n maxRowTasks: maxRowTasks,\n weekIndex: 0\n }\n \"\n ></ng-container>\n </tbody>\n </table>\n</div>\n<ng-template #renderDayTasks let-weekTasks let-maxRowTasks=\"maxRowTasks\" let-weekIndex=\"weekIndex\">\n <ng-container *ngFor=\"let rowTask of weekTasks | keyvalue; let i = index\">\n <tr fd-table-row class=\"task-row\">\n <td fd-table-cell class=\"fd-time\" style=\"border: none\"></td>\n <ng-container *ngFor=\"let task of weekTasks[i]; let dayIndex = index\">\n <td\n fd-table-cell\n *ngIf=\"task.colSpan && dayIndex < days.length\"\n [attr.colspan]=\"task.colSpan > days.length ? days.length : task.colSpan\"\n class=\"td-button\"\n [attr.hasevent]=\"!!task.event\"\n >\n <bc-event-button\n *ngIf=\"task.event && !task.inDay; else newDaySelect\"\n [task]=\"task\"\n [rtl]=\"rtl\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n [calendarFields]=\"calendarFields\"\n [deviceSize]=\"deviceSize\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n ></bc-event-button>\n <ng-template #newDaySelect>\n <div style=\"width: 100%; height: 100%\" [attr.newDay]=\"true\"></div>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n</ng-template>\n<div\n class=\"table-container\"\n style=\"overflow-y: hidden; overflow-x: auto; flex-grow: 1\"\n [style.height.px]=\"inDialog ? containerHeight : null\"\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\n>\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\n <tbody>\n <tr class=\"tr-time\" style=\"height: 0rem\">\n <td class=\"td-time\" style=\"height: 0rem\"></td>\n <td [colspan]=\"days.length\" style=\"position: relative\" style=\"height: 0rem\">\n <div class=\"tasks-wrapper\">\n <div *ngFor=\"let hour of hours\" class=\"row-border\"></div>\n </div>\n </td>\n </tr>\n <tr fd-table-row style=\"height: 100%\">\n <td fd-table-cell class=\"td-time\">\n <div class=\"calc-time\">\n <div *ngFor=\"let hour of hours\">{{ hour }}</div>\n </div>\n </td>\n <td *ngFor=\"let day of days\" fd-table-cell (click)=\"onColumnClick($event, day)\">\n <div style=\"position: relative; width: 100%; height: 100%\">\n <ng-container *ngFor=\"let task of day.tasks; let index = index\">\n <bc-event-button\n (click)=\"onEventButton($event)\"\n *ngIf=\"task.inDay\"\n [style.background]=\"task.event[calendarFields.Color]\"\n [style.top.px]=\"task.top\"\n [style.right]=\"rtl ? 'calc(' + index * (100 / day.tasks.length) + '%)' : null\"\n [style.left]=\"rtl ? null : 'calc(' + index * (100 / day.tasks.length) + '%)'\"\n [style.width]=\"'calc(100% - ' + index * (100 / day.tasks.length) + '%)'\"\n [style.height.px]=\"task.height\"\n [style.maxHeight.px]=\"task.height\"\n [style.opacity]=\"task.opacity\"\n [style.zIndex]=\"index\"\n [buttonTemplate]=\"eventButtonTemplate\"\n class=\"task-day\"\n [task]=\"task\"\n [calendarFields]=\"calendarFields\"\n [deviceSize]=\"deviceSize\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\n ></bc-event-button>\n </ng-container>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n<ng-template #eventButtonTemplate let-task let-popover=\"popover\" let-calendarFields=\"calendarFields\">\n <button\n [style.background]=\"task.event[calendarFields.Color]\"\n class=\"task-title\"\n [style.border]=\"'1px solid white'\"\n fd-button\n [compact]=\"true\"\n [fdType]=\"'emphasized'\"\n [fdPopoverTrigger]=\"popover\"\n [label]=\"task.height > 49 ? '' : task.event[calendarFields.Title] + ' ' + (task | fromToTime)\"\n >\n <ng-container *ngIf=\"task.height > 49\">\n <span class=\"ellipsis\">{{ task.event[calendarFields.Title] }}</span>\n <span class=\"ellipsis\">{{ task | fromToTime }}</span>\n </ng-container>\n </button>\n</ng-template>\n", styles: [":host{display:flex;height:95%;width:100%;flex-direction:column;align-items:stretch;justify-content:stretch}table.table-top{border-top:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5)}table td{overflow:hidden}thead tr{border-bottom:none!important}thead tr th{text-align:center!important;background-color:var(--sapList_Background, #fff)}tbody tr td{padding-top:5px}tbody tr:first-child td{padding-top:0}.fd-table__cell{padding:0 .5rem!important}.table-top{table-layout:fixed}.table-top td{padding-right:1px!important;padding-left:1px!important}.tr-time{height:1px;max-height:1px!important;width:100%}.tr-time td{height:1px!important;max-height:1px!important;padding:0!important}.task-row td{height:1.425rem!important;padding:0!important}.table-content{width:100%;border-spacing:0;position:relative}.table-content .tasks-wrapper{position:absolute;opacity:.3;height:100%;width:calc(100% - 50px)}.table-content .td-time{padding:0!important}.table-content .td-time .calc-time{display:flex;flex-direction:column;height:100%;justify-content:start;align-items:center}.table-content .td-time .calc-time div{height:50px;border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5);width:100%;display:flex;justify-content:center}.table-content .td-time tbody{border-spacing:0}.td-time{width:50px!important;max-width:50px!important}.row-border{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5);border-top:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5);height:50px}.task-day{position:absolute!important;display:flex;flex-direction:column;align-items:start}.weekday-header td,.week-days td,.week-numbers td{text-align:right}table[dayscount=\"1\"] .week-days td[rtl=true],table[dayscount=\"1\"] .week-numbers td[rtl=true]{text-align:right!important}table[dayscount=\"1\"] .week-days td[rtl=false],table[dayscount=\"1\"] .week-numbers td[rtl=false]{text-align:left!important}table[dayscount=\"1\"] .week-days td,table[dayscount=\"1\"] .week-numbers td{padding-left:1rem!important;padding-right:1rem!important}table[dayscount=\"1\"] .week-days td.weekday-header,table[dayscount=\"1\"] .week-numbers td.weekday-header{padding-left:2rem!important;padding-right:2rem!important}.week-days td{border:none;text-align:center;border-right:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5)}.week-numbers td{border:none;border-right:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5)}.td-button{border:none!important;border-right:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5)!important;padding:1px!important}.task-title{display:flex;flex-direction:column;align-items:start!important;font-weight:400;width:100%;max-width:100%;min-width:100%;height:100%;max-height:100%;min-height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: i3.DeprecatedButtonContentDensityDirective, selector: "[fd-button][compact]" }, { kind: "directive", type: i4.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "component", type: i5.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i5.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i5.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i5.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "directive", type: i5.DeprecatedTableCompactDirective, selector: "table[fd-table][compact]" }, { kind: "component", type: i6.DayNumberBoxComponent, selector: "bc-day-number-box", inputs: ["isWeekMode", "isSingleDay", "day", "isPickerMode", "itemInRange", "isActive"], outputs: ["dayClick", "dayMouseDown", "dayMouseUp", "dayMouseMove"] }, { kind: "component", type: i7.EventButtonComponent, selector: "bc-event-button", inputs: ["buttonTemplate", "calendarFields", "task", "rtl", "canDelete", "canEdit", "deviceSize"], outputs: ["deleteEvent", "editEvent", "openPopoverChange"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i8.FromToTimePipe, name: "fromToTime" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CalendarWeekComponent, decorators: [{
|
|
140
|
+
type: Component,
|
|
141
|
+
args: [{ selector: 'bc-calendar-week', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"table-container\"\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\n style=\"overflow-y: hidden; flex-shrink: 0\"\n #tableTop\n>\n <table fd-table class=\"table-top\" [compact]=\"true\" [attr.daysCount]=\"days.length\">\n <tbody fd-table-body>\n <tr fd-table-row class=\"week-days\">\n <td class=\"td-time\"></td>\n <td [attr.rtl]=\"rtl\" class=\"weekday-header\" *ngFor=\"let day of days\" fd-table-cell style=\"width: 100%\">\n {{ day.dayName }}\n </td>\n </tr>\n <tr fd-table-row class=\"week-numbers\">\n <td class=\"td-time\"></td>\n <td fd-table-cell *ngFor=\"let day of days\" [attr.rtl]=\"rtl\">\n <bc-day-number-box\n [day]=\"day\"\n [isWeekMode]=\"true\"\n [isSingleDay]=\"days.length === 1\"\n (dayClick)=\"onDayClick(day)\"\n ></bc-day-number-box>\n </td>\n </tr>\n <ng-container\n *ngTemplateOutlet=\"\n renderDayTasks;\n context: {\n $implicit: weekTasksArray,\n maxRowTasks: maxRowTasks,\n weekIndex: 0\n }\n \"\n ></ng-container>\n </tbody>\n </table>\n</div>\n<ng-template #renderDayTasks let-weekTasks let-maxRowTasks=\"maxRowTasks\" let-weekIndex=\"weekIndex\">\n <ng-container *ngFor=\"let rowTask of weekTasks | keyvalue; let i = index\">\n <tr fd-table-row class=\"task-row\">\n <td fd-table-cell class=\"fd-time\" style=\"border: none\"></td>\n <ng-container *ngFor=\"let task of weekTasks[i]; let dayIndex = index\">\n <td\n fd-table-cell\n *ngIf=\"task.colSpan && dayIndex < days.length\"\n [attr.colspan]=\"task.colSpan > days.length ? days.length : task.colSpan\"\n class=\"td-button\"\n [attr.hasevent]=\"!!task.event\"\n >\n <bc-event-button\n *ngIf=\"task.event && !task.inDay; else newDaySelect\"\n [task]=\"task\"\n [rtl]=\"rtl\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n [calendarFields]=\"calendarFields\"\n [deviceSize]=\"deviceSize\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n ></bc-event-button>\n <ng-template #newDaySelect>\n <div style=\"width: 100%; height: 100%\" [attr.newDay]=\"true\"></div>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n</ng-template>\n<div\n class=\"table-container\"\n style=\"overflow-y: hidden; overflow-x: auto; flex-grow: 1\"\n [style.height.px]=\"inDialog ? containerHeight : null\"\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\n>\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\n <tbody>\n <tr class=\"tr-time\" style=\"height: 0rem\">\n <td class=\"td-time\" style=\"height: 0rem\"></td>\n <td [colspan]=\"days.length\" style=\"position: relative\" style=\"height: 0rem\">\n <div class=\"tasks-wrapper\">\n <div *ngFor=\"let hour of hours\" class=\"row-border\"></div>\n </div>\n </td>\n </tr>\n <tr fd-table-row style=\"height: 100%\">\n <td fd-table-cell class=\"td-time\">\n <div class=\"calc-time\">\n <div *ngFor=\"let hour of hours\">{{ hour }}</div>\n </div>\n </td>\n <td *ngFor=\"let day of days\" fd-table-cell (click)=\"onColumnClick($event, day)\">\n <div style=\"position: relative; width: 100%; height: 100%\">\n <ng-container *ngFor=\"let task of day.tasks; let index = index\">\n <bc-event-button\n (click)=\"onEventButton($event)\"\n *ngIf=\"task.inDay\"\n [style.background]=\"task.event[calendarFields.Color]\"\n [style.top.px]=\"task.top\"\n [style.right]=\"rtl ? 'calc(' + index * (100 / day.tasks.length) + '%)' : null\"\n [style.left]=\"rtl ? null : 'calc(' + index * (100 / day.tasks.length) + '%)'\"\n [style.width]=\"'calc(100% - ' + index * (100 / day.tasks.length) + '%)'\"\n [style.height.px]=\"task.height\"\n [style.maxHeight.px]=\"task.height\"\n [style.opacity]=\"task.opacity\"\n [style.zIndex]=\"index\"\n [buttonTemplate]=\"eventButtonTemplate\"\n class=\"task-day\"\n [task]=\"task\"\n [calendarFields]=\"calendarFields\"\n [deviceSize]=\"deviceSize\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\n ></bc-event-button>\n </ng-container>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n<ng-template #eventButtonTemplate let-task let-popover=\"popover\" let-calendarFields=\"calendarFields\">\n <button\n [style.background]=\"task.event[calendarFields.Color]\"\n class=\"task-title\"\n [style.border]=\"'1px solid white'\"\n fd-button\n [compact]=\"true\"\n [fdType]=\"'emphasized'\"\n [fdPopoverTrigger]=\"popover\"\n [label]=\"task.height > 49 ? '' : task.event[calendarFields.Title] + ' ' + (task | fromToTime)\"\n >\n <ng-container *ngIf=\"task.height > 49\">\n <span class=\"ellipsis\">{{ task.event[calendarFields.Title] }}</span>\n <span class=\"ellipsis\">{{ task | fromToTime }}</span>\n </ng-container>\n </button>\n</ng-template>\n", styles: [":host{display:flex;height:95%;width:100%;flex-direction:column;align-items:stretch;justify-content:stretch}table.table-top{border-top:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5)}table td{overflow:hidden}thead tr{border-bottom:none!important}thead tr th{text-align:center!important;background-color:var(--sapList_Background, #fff)}tbody tr td{padding-top:5px}tbody tr:first-child td{padding-top:0}.fd-table__cell{padding:0 .5rem!important}.table-top{table-layout:fixed}.table-top td{padding-right:1px!important;padding-left:1px!important}.tr-time{height:1px;max-height:1px!important;width:100%}.tr-time td{height:1px!important;max-height:1px!important;padding:0!important}.task-row td{height:1.425rem!important;padding:0!important}.table-content{width:100%;border-spacing:0;position:relative}.table-content .tasks-wrapper{position:absolute;opacity:.3;height:100%;width:calc(100% - 50px)}.table-content .td-time{padding:0!important}.table-content .td-time .calc-time{display:flex;flex-direction:column;height:100%;justify-content:start;align-items:center}.table-content .td-time .calc-time div{height:50px;border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5);width:100%;display:flex;justify-content:center}.table-content .td-time tbody{border-spacing:0}.td-time{width:50px!important;max-width:50px!important}.row-border{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5);border-top:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5);height:50px}.task-day{position:absolute!important;display:flex;flex-direction:column;align-items:start}.weekday-header td,.week-days td,.week-numbers td{text-align:right}table[dayscount=\"1\"] .week-days td[rtl=true],table[dayscount=\"1\"] .week-numbers td[rtl=true]{text-align:right!important}table[dayscount=\"1\"] .week-days td[rtl=false],table[dayscount=\"1\"] .week-numbers td[rtl=false]{text-align:left!important}table[dayscount=\"1\"] .week-days td,table[dayscount=\"1\"] .week-numbers td{padding-left:1rem!important;padding-right:1rem!important}table[dayscount=\"1\"] .week-days td.weekday-header,table[dayscount=\"1\"] .week-numbers td.weekday-header{padding-left:2rem!important;padding-right:2rem!important}.week-days td{border:none;text-align:center;border-right:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5)}.week-numbers td{border:none;border-right:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5)}.td-button{border:none!important;border-right:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e5e5e5)!important;padding:1px!important}.task-title{display:flex;flex-direction:column;align-items:start!important;font-weight:400;width:100%;max-width:100%;min-width:100%;height:100%;max-height:100%;min-height:100%}\n"] }]
|
|
142
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CalendarService }]; }, propDecorators: { tableTopEl: [{
|
|
143
|
+
type: ViewChild,
|
|
144
|
+
args: ['tableTop']
|
|
145
|
+
}], weekDays: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], weekDaysMin: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], today: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], containerHeight: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], calendarFields: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], rtl: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], inDialog: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], deviceSize: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], moDataList: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], days: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], canDelete: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], canAdd: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], canEdit: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], editEvent: [{
|
|
172
|
+
type: Output
|
|
173
|
+
}], deleteEvent: [{
|
|
174
|
+
type: Output
|
|
175
|
+
}], showEvent: [{
|
|
176
|
+
type: Output
|
|
177
|
+
}], daySelect: [{
|
|
178
|
+
type: Output
|
|
179
|
+
}], dayClick: [{
|
|
180
|
+
type: Output
|
|
181
|
+
}] } });
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItd2Vlay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLXdlZWsvY2FsZW5kYXItd2Vlay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLXdlZWsvY2FsZW5kYXItd2Vlay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFDSCxhQUFhLEVBSWIsa0JBQWtCLEVBQ3JCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFVOUIsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGFBQWE7SUFrQ3BELFlBQW9CLElBQXVCLEVBQVUsZ0JBQWlDO1FBQ2xGLEtBQUssRUFBRSxDQUFDO1FBRFEsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBdEI3RSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3BELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDdEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBQzVELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBSzdDLGVBQVUsR0FBRyxFQUFFLENBQUM7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TyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2hHLElBQUksUUFBUSxFQUFFO29CQUNWLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDO2lCQUNiO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7O2tIQW5KUSxxQkFBcUI7c0dBQXJCLHFCQUFxQix5b0JDaENsQywyd05BNklBOzJGRDdHYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07c0lBR3hCLFVBQVU7c0JBQWhDLFNBQVM7dUJBQUMsVUFBVTtnQkFDWixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgQ2FsZW5kYXJGaWVsZHMsXG4gICAgQ2FsZW5kYXJNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgUHJldmVudERlZmF1bEV2ZW50XG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF5IH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYy1jYWxlbmRhci13ZWVrJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItd2Vlay5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItd2Vlay5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyV2Vla0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgndGFibGVUb3AnKSB0YWJsZVRvcEVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBASW5wdXQoKSB3ZWVrRGF5czogc3RyaW5nW107XG4gICAgQElucHV0KCkgd2Vla0RheXNNaW46IHN0cmluZ1tdO1xuICAgIEBJbnB1dCgpIHRvZGF5OiBEYXRlO1xuICAgIEBJbnB1dCgpIGNvbnRhaW5lckhlaWdodDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGNhbGVuZGFyRmllbGRzOiBDYWxlbmRhckZpZWxkcztcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1vRGF0YUxpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICBASW5wdXQoKSBkYXlzOiBEYXlbXTtcbiAgICBASW5wdXQoKSBjYW5EZWxldGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjYW5BZGQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjYW5FZGl0ID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIGVkaXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgZGVsZXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHNob3dFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBkYXlTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZGF5Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPERheT4oKTtcbiAgICBzZWxlY3RlZFdlZWtEYXlzOiBzdHJpbmdbXTtcbiAgICBzZWxlY3RlZDogRGF5O1xuICAgIG51bWJlck9mV2VlazogbnVtYmVyW107XG4gICAgZGF5SGVpZ2h0OiBudW1iZXI7XG4gICAgdGFza0hlaWdodCA9IDMwO1xuICAgIG1heFRhc2tDb3VudCA9IDQ7XG4gICAgbWF4Um93VGFza3M6IG51bWJlcltdO1xuICAgIHdlZWtUYXNrc0FycmF5OiB7IFtrZXk6IHN0cmluZ106IFtdIH1bXTtcbiAgICBleHRyYVJvdzogbnVtYmVyW107XG4gICAgd2lkdGg6IGFueTtcbiAgICBob3Vyczogc3RyaW5nW107XG5cbiAgICBwcml2YXRlIF9oYXNQb3BvdmVyT3BlbmVkOiBib29sZWFuW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2NhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIGlmIChjaGFuZ2VzLmRldmljZVNpemUgJiYgIWNoYW5nZXMuZGV2aWNlU2l6ZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5wcmVwYXJlV2Vla0RheXMoY2hhbmdlcy5kZXZpY2VTaXplLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMubW9EYXRhTGlzdCAmJiAhY2hhbmdlcy5tb0RhdGFMaXN0LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlRGF5c1Rhc2tzKGNoYW5nZXMubW9EYXRhTGlzdC5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5kYXlzICYmICFjaGFuZ2VzLmRheXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVEYXlzVGFza3ModGhpcy5tb0RhdGFMaXN0KTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5ob3VycyA9IG5ldyBBcnJheSgyNCkuZmlsbCgwKS5tYXAoKHgsIGkpID0+IGAke2kgPiA5ID8gJycgKyBpIDogJzAnICsgaX06MDBgKTtcbiAgICAgICAgdGhpcy5wcmVwYXJlV2Vla0RheXModGhpcy5kZXZpY2VTaXplKTtcbiAgICAgICAgdGhpcy5fcHJlcGFyZURheXNUYXNrcyh0aGlzLm1vRGF0YUxpc3QpO1xuICAgIH1cblxuICAgIG9uRGF5Qm94U2VsZWN0KGRheTogRGF5KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jYW5BZGQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maXJlRGF5U2VsZWN0KGRheS5kYXRlKTtcbiAgICB9XG5cbiAgICBvbk9wZW5Qb3BvdmVyQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9oYXNQb3BvdmVyT3BlbmVkLnB1c2godHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYXNQb3BvdmVyT3BlbmVkID0gW107XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkNvbHVtbkNsaWNrKGUsIGRheTogRGF5KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgb2Zmc2V0WSB9ID0gZTtcbiAgICAgICAgY29uc3QgaG91ciA9IE1hdGguZmxvb3Iob2Zmc2V0WSAvIDUwKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKG9mZnNldFkgJSA1MCkgLyAxNSkgKiAxNTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRheS5kYXRlKTtcbiAgICAgICAgZGF0ZS5zZXRIb3Vycyhob3VyKTtcbiAgICAgICAgZGF0ZS5zZXRNaW51dGVzKG1pbnV0ZXMpO1xuICAgICAgICB0aGlzLl9maXJlRGF5U2VsZWN0KGRhdGUpO1xuICAgIH1cbiAgICBvbkV2ZW50QnV0dG9uKGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGUuY3VycmVudFRhcmdldD8ubG9jYWxOYW1lID09PSAnYmMtZXZlbnQtYnV0dG9uJykge1xuICAgICAgICAgICAgUHJldmVudERlZmF1bEV2ZW50KGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uTW9yZUJ1dHRvbihlLCBwb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcbiAgICAgICAgdGhpcy5fb3BlblBvcG92ZXIocG9wb3Zlcik7XG4gICAgfVxuICAgIG9uRGF5Q2xpY2soZGF5OiBEYXkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGRheTtcbiAgICAgICAgdGhpcy5kYXlDbGljay5lbWl0KGRheSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2ZpcmVEYXlTZWxlY3QoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faGFzUG9wb3Zlck9wZW5lZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGF5U2VsZWN0LmVtaXQobW9tZW50KGRhdGUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX29wZW5Qb3BvdmVyKHBvcG92ZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAocG9wb3Zlci5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2hhc1BvcG92ZXJPcGVuZWQucHVzaChwb3BvdmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2hhc1BvcG92ZXJPcGVuZWQucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBwcmVwYXJlV2Vla0RheXMoZGV2aWNlU2l6ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChkZXZpY2VTaXplICE9PSAncycgJiYgZGV2aWNlU2l6ZSAhPT0gJ20nKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2Vla0RheXMgPSB0aGlzLndlZWtEYXlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdlZWtEYXlzID0gdGhpcy53ZWVrRGF5c01pbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVEYXlzVGFza3MoY2FsZW5kYXJUYXNrcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjYWxlbmRhckZpZWxkcyA9IHRoaXMuY2FsZW5kYXJGaWVsZHM7XG5cbiAgICAgICAgLy8gU29ydCBhbGwgVGFza3NcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5zb3J0VGFza3MoY2FsZW5kYXJUYXNrcywgY2FsZW5kYXJGaWVsZHMpO1xuICAgICAgICBjb25zdCB0YXNrSGVpZ2h0ID0gNTA7XG4gICAgICAgIHRoaXMuZGF5cy5mb3JFYWNoKChkYXkpID0+IChkYXkudGFza3MgPSBbXSkpO1xuXG4gICAgICAgIGNvbnN0IHdlZWtUYXNrc0FycmF5OiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH1bXSA9IFtdO1xuICAgICAgICBjb25zdCBkYXlzID0gdGhpcy5kYXlzO1xuICAgICAgICBjb25zdCB3ZWVrID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZVdlZWtUYXNrKGRheXMsIG1vRGF0YUxpc3QsIGNhbGVuZGFyRmllbGRzLCB0YXNrSGVpZ2h0KTtcbiAgICAgICAgd2Vla1Rhc2tzQXJyYXkucHVzaCh3ZWVrKTtcblxuICAgICAgICAvLyDYqNmHINin2LLYp9uMINmH2LEg2LHYr9uM2YEg2KrYs9qpINio2KfbjNivINiq2LnYr9in2K8gNyDYs9iq2YjZhiDYp9i22KfZgdmHINqv2LHYr9ivINmIINio2LHYp9uMINiz2KrZiNmG24wg2qnZhyDYqtiz2qnbjCDZhtiv2KfYsdivINuM2qkg2KzYp9uMINiu2KfZhNuMIGNvbHNwYW4gMSDZhduM2q/YsNin2LHbjNmFXG4gICAgICAgIHdlZWtUYXNrc0FycmF5LmZvckVhY2goKHdlZWtUYXNrKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UuZmlsbFdlZWsod2Vla1Rhc2ssIGRheXMubGVuZ3RoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gW107XG4gICAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyh3ZWVrVGFza3NBcnJheSkuZm9yRWFjaCgoKSA9PiB7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHdlZWspLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IGVsZW1lbnQuc29tZSgoYykgPT4gYy5jb2xTcGFuID4gMSB8fCAoYy5jb2xTcGFuID09PSAxICYmICFjLmluRGF5ICYmIGMuZXZlbnQpKTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFza3NbY291bnRlci50b1N0cmluZygpXSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMud2Vla1Rhc2tzQXJyYXkgPSB0YXNrcztcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIlxuICAgIFtzdHlsZS5vdmVyZmxvdy15XT1cImluRGlhbG9nID8gJ3Njcm9sbCcgOiAnaGlkZGVuJ1wiXG4gICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW47IGZsZXgtc2hyaW5rOiAwXCJcbiAgICAjdGFibGVUb3Bcbj5cbiAgICA8dGFibGUgZmQtdGFibGUgY2xhc3M9XCJ0YWJsZS10b3BcIiBbY29tcGFjdF09XCJ0cnVlXCIgW2F0dHIuZGF5c0NvdW50XT1cImRheXMubGVuZ3RoXCI+XG4gICAgICAgIDx0Ym9keSBmZC10YWJsZS1ib2R5PlxuICAgICAgICAgICAgPHRyIGZkLXRhYmxlLXJvdyBjbGFzcz1cIndlZWstZGF5c1wiPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLXRpbWVcIj48L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5ydGxdPVwicnRsXCIgY2xhc3M9XCJ3ZWVrZGF5LWhlYWRlclwiICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c1wiIGZkLXRhYmxlLWNlbGwgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBkYXkuZGF5TmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGZkLXRhYmxlLXJvdyBjbGFzcz1cIndlZWstbnVtYmVyc1wiPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLXRpbWVcIj48L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c1wiIFthdHRyLnJ0bF09XCJydGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJjLWRheS1udW1iZXItYm94XG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF5XT1cImRheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNXZWVrTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NpbmdsZURheV09XCJkYXlzLmxlbmd0aCA9PT0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF5Q2xpY2spPVwib25EYXlDbGljayhkYXkpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYmMtZGF5LW51bWJlci1ib3g+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyRGF5VGFza3M7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogd2Vla1Rhc2tzQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhSb3dUYXNrczogbWF4Um93VGFza3MsXG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWVrSW5kZXg6IDBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNyZW5kZXJEYXlUYXNrcyBsZXQtd2Vla1Rhc2tzIGxldC1tYXhSb3dUYXNrcz1cIm1heFJvd1Rhc2tzXCIgbGV0LXdlZWtJbmRleD1cIndlZWtJbmRleFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvd1Rhc2sgb2Ygd2Vla1Rhc2tzIHwga2V5dmFsdWU7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPHRyIGZkLXRhYmxlLXJvdyBjbGFzcz1cInRhc2stcm93XCI+XG4gICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCBjbGFzcz1cImZkLXRpbWVcIiBzdHlsZT1cImJvcmRlcjogbm9uZVwiPjwvdGQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YXNrIG9mIHdlZWtUYXNrc1tpXTsgbGV0IGRheUluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhc2suY29sU3BhbiAmJiBkYXlJbmRleCA8IGRheXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJ0YXNrLmNvbFNwYW4gPiBkYXlzLmxlbmd0aCA/IGRheXMubGVuZ3RoIDogdGFzay5jb2xTcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZC1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5oYXNldmVudF09XCIhIXRhc2suZXZlbnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJjLWV2ZW50LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YXNrLmV2ZW50ICYmICF0YXNrLmluRGF5OyBlbHNlIG5ld0RheVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFza109XCJ0YXNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5EZWxldGVdPVwiY2FuRGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5FZGl0XT1cImNhbkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NhbGVuZGFyRmllbGRzXT1cImNhbGVuZGFyRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZWRpdEV2ZW50KT1cImVkaXRFdmVudC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9iYy1ldmVudC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbmV3RGF5U2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCVcIiBbYXR0ci5uZXdEYXldPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90cj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48ZGl2XG4gICAgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIlxuICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuOyBvdmVyZmxvdy14OiBhdXRvOyBmbGV4LWdyb3c6IDFcIlxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaW5EaWFsb2cgPyBjb250YWluZXJIZWlnaHQgOiBudWxsXCJcbiAgICBbc3R5bGUub3ZlcmZsb3cteV09XCJpbkRpYWxvZyA/ICdzY3JvbGwnIDogJ2hpZGRlbidcIlxuPlxuICAgIDx0YWJsZSBmZC10YWJsZS1ib2R5IGNsYXNzPVwidGFibGUtY29udGVudFwiIFtjb21wYWN0XT1cInRydWVcIj5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidHItdGltZVwiIHN0eWxlPVwiaGVpZ2h0OiAwcmVtXCI+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGQtdGltZVwiIHN0eWxlPVwiaGVpZ2h0OiAwcmVtXCI+PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgW2NvbHNwYW5dPVwiZGF5cy5sZW5ndGhcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiIHN0eWxlPVwiaGVpZ2h0OiAwcmVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YXNrcy13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJzXCIgY2xhc3M9XCJyb3ctYm9yZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGZkLXRhYmxlLXJvdyBzdHlsZT1cImhlaWdodDogMTAwJVwiPlxuICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNsYXNzPVwidGQtdGltZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsYy10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJzXCI+e3sgaG91ciB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNcIiBmZC10YWJsZS1jZWxsIChjbGljayk9XCJvbkNvbHVtbkNsaWNrKCRldmVudCwgZGF5KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YXNrIG9mIGRheS50YXNrczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YmMtZXZlbnQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkV2ZW50QnV0dG9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhc2suaW5EYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YXNrLmV2ZW50W2NhbGVuZGFyRmllbGRzLkNvbG9yXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwidGFzay50b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUucmlnaHRdPVwicnRsID8gJ2NhbGMoJyArIGluZGV4ICogKDEwMCAvIGRheS50YXNrcy5sZW5ndGgpICsgJyUpJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdF09XCJydGwgPyBudWxsIDogJ2NhbGMoJyArIGluZGV4ICogKDEwMCAvIGRheS50YXNrcy5sZW5ndGgpICsgJyUpJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCInY2FsYygxMDAlIC0gJyArIGluZGV4ICogKDEwMCAvIGRheS50YXNrcy5sZW5ndGgpICsgJyUpJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwidGFzay5oZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInRhc2suaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwidGFzay5vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnpJbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UZW1wbGF0ZV09XCJldmVudEJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YXNrLWRheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXNrXT1cInRhc2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsZW5kYXJGaWVsZHNdPVwiY2FsZW5kYXJGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkRlbGV0ZV09XCJjYW5EZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FuRWRpdF09XCJjYW5FZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZGl0RXZlbnQpPVwiZWRpdEV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuUG9wb3ZlckNoYW5nZSk9XCJvbk9wZW5Qb3BvdmVyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2JjLWV2ZW50LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2V2ZW50QnV0dG9uVGVtcGxhdGUgbGV0LXRhc2sgbGV0LXBvcG92ZXI9XCJwb3BvdmVyXCIgbGV0LWNhbGVuZGFyRmllbGRzPVwiY2FsZW5kYXJGaWVsZHNcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhc2suZXZlbnRbY2FsZW5kYXJGaWVsZHMuQ29sb3JdXCJcbiAgICAgICAgY2xhc3M9XCJ0YXNrLXRpdGxlXCJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCInMXB4IHNvbGlkIHdoaXRlJ1wiXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBbY29tcGFjdF09XCJ0cnVlXCJcbiAgICAgICAgW2ZkVHlwZV09XCInZW1waGFzaXplZCdcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJwb3BvdmVyXCJcbiAgICAgICAgW2xhYmVsXT1cInRhc2suaGVpZ2h0ID4gNDkgPyAnJyA6IHRhc2suZXZlbnRbY2FsZW5kYXJGaWVsZHMuVGl0bGVdICsgJyAnICsgKHRhc2sgfCBmcm9tVG9UaW1lKVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFzay5oZWlnaHQgPiA0OVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiPnt7IHRhc2suZXZlbnRbY2FsZW5kYXJGaWVsZHMuVGl0bGVdIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiPnt7IHRhc2sgfCBmcm9tVG9UaW1lIH19PC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function getPadedTime(value) {
|
|
2
|
+
return String(value.toString().padStart(2, '0'));
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtY2FsZW5kYXIvc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFLO0lBQzlCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQYWRlZFRpbWUodmFsdWUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJykpO1xyXG59XHJcbiJdfQ==
|