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.
Files changed (56) hide show
  1. package/README.md +25 -0
  2. package/esm2020/barsa-calendar.mjs +5 -0
  3. package/esm2020/lib/barsa-calendar.module.mjs +106 -0
  4. package/esm2020/lib/calendar-container/calendar-container.component.mjs +190 -0
  5. package/esm2020/lib/calendar-header/calendar-header.component.mjs +61 -0
  6. package/esm2020/lib/calendar-list/calendar-list.component.mjs +19 -0
  7. package/esm2020/lib/calendar-list-container/calendar-list-container.component.mjs +30 -0
  8. package/esm2020/lib/calendar-list-item/calendar-list-item.component.mjs +14 -0
  9. package/esm2020/lib/calendar-month/calendar-month.component.mjs +244 -0
  10. package/esm2020/lib/calendar-selection-days/calendar-selection-days.component.mjs +193 -0
  11. package/esm2020/lib/calendar-week/calendar-week.component.mjs +182 -0
  12. package/esm2020/lib/constants.mjs +4 -0
  13. package/esm2020/lib/date-time-picker/date-time-picker.component.mjs +324 -0
  14. package/esm2020/lib/day-event-list/day-event-list.component.mjs +53 -0
  15. package/esm2020/lib/day-number-box/day-number-box.component.mjs +105 -0
  16. package/esm2020/lib/days-in-week.pipe.mjs +17 -0
  17. package/esm2020/lib/equal-date.pipe.mjs +23 -0
  18. package/esm2020/lib/event-button/event-button.component.mjs +70 -0
  19. package/esm2020/lib/event-date.pipe.mjs +24 -0
  20. package/esm2020/lib/event-preview/event-preview.component.mjs +60 -0
  21. package/esm2020/lib/event-time.pipe.mjs +22 -0
  22. package/esm2020/lib/from-to-time.pipe.mjs +23 -0
  23. package/esm2020/lib/models.mjs +14 -0
  24. package/esm2020/lib/month-days/month-days.component.mjs +220 -0
  25. package/esm2020/lib/services/calendar.service.mjs +610 -0
  26. package/esm2020/public-api.mjs +21 -0
  27. package/fesm2015/barsa-calendar.mjs +2447 -0
  28. package/fesm2015/barsa-calendar.mjs.map +1 -0
  29. package/fesm2020/barsa-calendar.mjs +2455 -0
  30. package/fesm2020/barsa-calendar.mjs.map +1 -0
  31. package/index.d.ts +5 -0
  32. package/lib/barsa-calendar.module.d.ts +33 -0
  33. package/lib/calendar-container/calendar-container.component.d.ts +73 -0
  34. package/lib/calendar-header/calendar-header.component.d.ts +29 -0
  35. package/lib/calendar-list/calendar-list.component.d.ts +8 -0
  36. package/lib/calendar-list-container/calendar-list-container.component.d.ts +14 -0
  37. package/lib/calendar-list-item/calendar-list-item.component.d.ts +7 -0
  38. package/lib/calendar-month/calendar-month.component.d.ts +70 -0
  39. package/lib/calendar-selection-days/calendar-selection-days.component.d.ts +47 -0
  40. package/lib/calendar-week/calendar-week.component.d.ts +57 -0
  41. package/lib/constants.d.ts +1 -0
  42. package/lib/date-time-picker/date-time-picker.component.d.ts +98 -0
  43. package/lib/day-event-list/day-event-list.component.d.ts +20 -0
  44. package/lib/day-number-box/day-number-box.component.d.ts +30 -0
  45. package/lib/days-in-week.pipe.d.ts +9 -0
  46. package/lib/equal-date.pipe.d.ts +8 -0
  47. package/lib/event-button/event-button.component.d.ts +26 -0
  48. package/lib/event-date.pipe.d.ts +9 -0
  49. package/lib/event-preview/event-preview.component.d.ts +19 -0
  50. package/lib/event-time.pipe.d.ts +9 -0
  51. package/lib/from-to-time.pipe.d.ts +9 -0
  52. package/lib/models.d.ts +107 -0
  53. package/lib/month-days/month-days.component.d.ts +69 -0
  54. package/lib/services/calendar.service.d.ts +70 -0
  55. package/package.json +31 -0
  56. 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==