ngx-mat-tui-calendar 12.0.10 → 12.0.11

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.
@@ -737,6 +737,7 @@
737
737
  // console.warn(`calendar.component.ts: createTUICalendar: ioptions:`, ioptions);
738
738
  this.calendar = new Calendar__default["default"]('#calendar', ioptions);
739
739
  // console.warn(`calendar.component.ts: createTUICalendar: this.calendar:`, this.calendar);
740
+ this.calendar.toggleScheduleView(true);
740
741
  };
741
742
  NgxMatTuiCalendarComponent.prototype.bindCallbacks = function () {
742
743
  this.bindAfterRenderSchedule();
@@ -946,6 +947,7 @@
946
947
  this.calendar.setOptions(ioptions);
947
948
  this.calendar.setTheme(ioptions.theme);
948
949
  this.calendar.render(true);
950
+ this.calendar.toggleScheduleView(true);
949
951
  return ioptions;
950
952
  };
951
953
  NgxMatTuiCalendarComponent.prototype.preprocessIOptions = function (ioptions) {
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-mat-tui-calendar.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-mat-tui-calendar/src/lib/local-date.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.module.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.service.ts","../../../projects/ngx-mat-tui-calendar/src/public-api.ts","../../../projects/ngx-mat-tui-calendar/src/ngx-mat-tui-calendar.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","\r\n// import { TZDate } from 'tui-calendar';\r\n\r\nexport class LocalDate {\r\n date: Date;\r\n\r\n // month = 1 to 12\r\n constructor(args) {\r\n let numbers;\r\n if (typeof args == 'string') {\r\n numbers = LocalDate.parse_YYYYMMDD(args);\r\n } else if (args instanceof LocalDate) {\r\n numbers = args.get();\r\n } else if (args instanceof Date) {\r\n numbers = LocalDate.convertDateToNumbers(args);\r\n } else if (typeof args.toDate === 'function') {\r\n numbers = LocalDate.convertDateToNumbers(args.toDate());\r\n } else if (args['_date'] instanceof Date ) {\r\n numbers = LocalDate.convertDateToNumbers(args['_date']);\r\n } else if (args instanceof Object) {\r\n numbers = args;\r\n }\r\n this.date = LocalDate.convertNumbersToDate(numbers);\r\n }\r\n\r\n static convertToJsDate(args) {\r\n return (new LocalDate(args)).toDate();\r\n }\r\n\r\n\r\n // return new LocalDate(date.getFullYear(), date.getMonth() + 1, date.getDate());\r\n static parse_YYYYMMDD(str) {\r\n // yyyy-mm-dd\r\n const regexp = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)/g;\r\n let matches = Array.from(\r\n str.matchAll(regexp), m => ({\r\n year: Number(m[1]),\r\n month: Number(m[2]),\r\n day: Number(m[3])\r\n })\r\n );\r\n if (matches.length != 1) {\r\n console.error(`dateIn: unknown date format: ${str}`);\r\n return null;\r\n }\r\n return matches[0];\r\n }\r\n static convertNumbersToDate({ year, month, day, hours, minutes, seconds, milliseconds }) {\r\n // month = 1 to 12\r\n // start with today's *local* date. this si really important\r\n let date = new Date();\r\n date.setFullYear(year);\r\n date.setMonth((month==null) ? 0 : month - 1);\r\n date.setDate((day==null) ? 1 : day);\r\n date.setHours((hours==null) ? 0 : hours);\r\n date.setMinutes((minutes==null) ? 0 : minutes);\r\n date.setSeconds((seconds==null) ? 0 : seconds);\r\n date.setMilliseconds((milliseconds==null) ? 1 : milliseconds);\r\n return date;\r\n }\r\n\r\n\r\n static convertDateToNumbers(date) {\r\n // month = 1 to 12\r\n return {\r\n year: date.getFullYear(),\r\n month: date.getMonth() + 1,\r\n day: date.getDate(),\r\n hours: date.getHours(),\r\n minutes: date.getMinutes(),\r\n seconds: date.getSeconds(),\r\n milliseconds: date.getMilliseconds(),\r\n };\r\n }\r\n\r\n get() {\r\n return LocalDate.convertDateToNumbers(this.date);\r\n }\r\n\r\n toMsgFormat() {\r\n return this.toYYYYMMDD();\r\n }\r\n toYYYYMMDD() {\r\n // yyyy-mm-dd\r\n\r\n let yyyy = this.date.getFullYear();\r\n let mm = (this.date.getMonth() + 1).toString().padStart(2, '0');\r\n let dd = (this.date.getDate()).toString().padStart(2, '0');\r\n let str = `${yyyy}-${mm}-${dd}`;\r\n // console.warn(`date=${str}=${this.toDisplayFormat()}`);\r\n return str;\r\n }\r\n toDisplayDateFormat() {\r\n return this.date.toLocaleDateString(\"en-US\", {\r\n weekday: 'short',\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n });\r\n }\r\n toDisplayFormat() {\r\n return this.date.toString();\r\n }\r\n toDate() {\r\n return this.date;\r\n }\r\n clearTime() {\r\n this.date.setHours(0, 0, 0, 1);\r\n }\r\n\r\n}\r\n\r\n","import { Component, ElementRef, HostBinding, Inject, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { DateType, default as Calendar, IEventScheduleObject, ISchedule, TZDate } from 'tui-calendar';\n\nimport { LocalDate } from '../local-date.js';\nimport { CalendarEditorOptions } from '../calendar-editor-options';\n\n\n@Component({\n selector: 'ngx-mat-tui-calendar-editor-dialog',\n templateUrl: './ngx-mat-tui-calendar-editor-dialog.component.html',\n styleUrls: ['./ngx-mat-tui-calendar-editor-dialog.component.scss']\n})\nexport class NgxMatTuiCalendarEditorDialogComponent implements OnInit {\n private id: string;\n titleStr: string = '';\n locationStr: string = '';\n closed: boolean = false;\n eventForm: FormGroup;\n date: Date;\n startDate: Date;\n endDate: Date;\n startTime: Date;\n endTime: Date;\n isAllDay: boolean = false;\n color: string;\n themeClass: string = '';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: CalendarEditorOptions,\n public dialogRef: MatDialogRef<NgxMatTuiCalendarEditorDialogComponent>,\n ) {\n // console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: schedule:', schedule);\n\n // console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: data:', data);\n this.color = data.darkMode ? 'accent' : 'primary';\n\n const schedule = data.schedule;\n if (schedule == null) {\n this.id = null;\n } else {\n if (schedule.id) {\n this.id = schedule.id.toString();\n }\n }\n this.titleStr = (schedule.title) ? schedule.title.toString() : '';\n this.locationStr = (schedule.location) ? schedule.location.toString() : '';\n\n\n this.isAllDay = (schedule.isAllDay == true);\n\n this.startDate = LocalDate.convertToJsDate(schedule.start) as Date;\n this.endDate = LocalDate.convertToJsDate(schedule.end) as Date;\n\n this.startTime = new Date(this.startDate);\n this.endTime = new Date(this.endDate);\n this.startDate.setHours(0, 0, 0, 1);\n this.endDate.setHours(0, 0, 0, 1);\n\n this.eventForm = new FormGroup(\n {\n title: new FormControl(this.titleStr),\n location: new FormControl(this.locationStr),\n scheduleType: new FormControl((schedule.isAllDay == true) ? \"all-day\" : \"time-slot\"),\n start: new FormControl(this.startDate),\n end: new FormControl(this.endDate),\n date: new FormControl(this.startDate),\n time1: new FormControl(this.startTime),\n time2: new FormControl(this.endTime, [Validators.required]),\n },\n this.getDateValidator(),\n );\n\n }\n\n getDateValidator() {\n const validator: ValidatorFn = (group: FormGroup): { [key: string]: any } => {\n const scheduleType = group.get(\"scheduleType\").value;\n if (group.get(\"scheduleType\").value == \"time-slot\") {\n let time1 = group.get(\"time1\").value;\n let time2 = group.get(\"time2\").value;\n if (time1 >= time2) {\n return {\n dates: \"End time must be later than the start time\"\n };\n }\n }\n return {};\n };\n return validator;\n }\n\n\n ngOnInit(): void {\n // console.dir(`Dialog config: ${this.dialogConfig}`);\n // let start: Date = (LocalDate.convertToJsDate(this.schedule.start)).toDate();\n // let end: Date = (LocalDate.convertToJsDate(this.schedule.end)).toDate();\n // this.eventForm.get(\"date\").setValue(start);\n // this.eventForm.get(\"start\").setValue(start);\n // this.eventForm.get(\"end\").setValue(end);\n\n }\n\n\n\n onSave(form: NgForm) {\n // console.log(`onSave form.invalid=${form.invalid}; this.closed=${this.closed} this.titleStr=${this.titleStr}`);\n if (form.invalid || this.closed) return;\n let schedule = this.data.schedule;\n schedule.title = this.eventForm.get(\"title\").value;\n schedule.location = this.eventForm.get(\"location\").value;\n schedule.isAllDay = this.isAllDay;\n schedule.category = this.isAllDay ? 'allday' : 'time'; // CATEGORY MUST BE DEFINED: 'milestone', 'task', allday', 'time'\n if (this.isAllDay) {\n schedule.start = LocalDate.convertToJsDate(this.eventForm.get(\"start\").value) as Date;\n schedule.start.setHours(0, 0, 0, 1);\n schedule.end = LocalDate.convertToJsDate(this.eventForm.get(\"end\").value) as Date;\n schedule.end.setHours(0, 0, 0, 1);\n } else {\n this.startTime = LocalDate.convertToJsDate(this.eventForm.get(\"time1\").value) as Date;\n schedule.start = LocalDate.convertToJsDate(this.eventForm.get(\"date\").value) as Date;\n schedule.start.setHours(\n this.startTime.getHours(),\n this.startTime.getMinutes(),\n this.startTime.getSeconds(),\n this.startTime.getMilliseconds(),\n );\n this.endTime = LocalDate.convertToJsDate(this.eventForm.get(\"time2\").value) as Date;\n schedule.end = LocalDate.convertToJsDate(this.eventForm.get(\"date\").value) as Date;\n schedule.end.setHours(\n this.endTime.getHours(),\n this.endTime.getMinutes(),\n this.endTime.getSeconds(),\n this.endTime.getMilliseconds(),\n );\n }\n // console.log(`pop-up-event-editor.component.ts: user clicked SAVE event=${schedule}`);\n // this.eventOutput.emit(schedule);\n form.resetForm();\n this.closeMe(schedule);\n }\n\n onCancel() {\n // this.cancelled.emit();\n // console.log('openPopupScheduleEditor: user clicked CANCEL');\n this.closeMe(null);\n }\n\n onDelete() {\n // this.cancelled.emit();\n // console.log('openPopupScheduleEditor: user clicked DELETE');\n this.closeMe(this.data.schedule, true);\n }\n\n\n closeMe(schedule: ISchedule, performDelete?: boolean) {\n // console.log('closeMe: The dialog is closing', schedule);\n this.closed = true;\n this.dialogRef.close({ schedule, performDelete: (performDelete == true) });\n }\n\n log(str) {\n // console.warn(str);\n }\n\n onUseAllDay() {\n this.isAllDay = true;\n }\n onUseTimeSlot() {\n this.isAllDay = false;\n }\n\n}\n","<div [className]=\"data.themeClass + ' ' + 'event-editor'\">\n <form id=\"my-form\" [formGroup]=\"eventForm\" class=\"event-editor-form\" (submit)=\"onSave(postForm);\" #postForm=\"ngForm\">\n <div class=\"grid-wrapper\">\n <div class=\"grid-title\">\n <mat-form-field [color]=\"color\" class=\"editor-title\">\n <input matInput type=\"text\" name=\"title\" formControlName=\"title\" placeholder=\"Title\">\n <!-- <mat-error style=\"height: fit-content;\" *ngIf=\"title.invalid\">Please enter a title (of 1 characters or more)\n for\n your event.</mat-error> -->\n </mat-form-field>\n </div>\n <div class=\"grid-location\">\n <mat-form-field [color]=\"color\" class=\"editor-location\">\n <input matInput type=\"location\" name=\"location\" formControlName=\"location\" placeholder=\"Location\">\n </mat-form-field>\n </div>\n <div class=\"grid-radios\" style=\"display: flex;\">\n <mat-radio-group [color]=\"color\" aria-label=\"Select an option\" style=\"margin-bottom: 1em;\" name=\"scheduleType\"\n formControlName=\"scheduleType\" required>\n <mat-radio-button value=\"all-day\" (change)=\"onUseAllDay()\" id=\"button-all-day\" [color]=\"color\" class=\"radio-button\">All Day\n </mat-radio-button>\n <mat-radio-button value=\"time-slot\" (change)=\"onUseTimeSlot()\" id=\"button-time-slot\" [color]=\"color\" class=\"radio-button\">Time Slot\n </mat-radio-button>\n </mat-radio-group>\n </div>\n <div class=\"grid-date\">\n <mat-form-field *ngIf=\"isAllDay\" [color]=\"color\" class=\"date-range-form-field\" appearance=\"fill\">\n <mat-label [color]=\"color\">Pick a Date Range</mat-label>\n <mat-date-range-input [color]=\"color\" [panelClass]=\"data.themeClass\" [rangePicker]=\"rangePicker\" #dateRangeInput>\n <input matStartDate placeholder=\"Start date\" formControlName=\"start\" name=\"start\">\n <input matEndDate placeholder=\"End date\" formControlName=\"end\" name=\"end\">\n </mat-date-range-input>\n <mat-datepicker-toggle [color]=\"color\" [panelClass]=\"data.themeClass\" matSuffix [for]=\"rangePicker\"></mat-datepicker-toggle>\n <mat-date-range-picker [color]=\"color\" class=\"picker\" #rangePicker></mat-date-range-picker>\n </mat-form-field>\n <mat-form-field [color]=\"color\" *ngIf=\"!isAllDay\" class=\"date-form-field\" appearance=\"fill\">\n <mat-label>Choose a date</mat-label>\n <input matInput [matDatepicker]=\"dpicker\" formControlName=\"date\" name=\"date\">\n <mat-datepicker-toggle [color]=\"color\" matSuffix [for]=\"dpicker\"></mat-datepicker-toggle>\n <mat-datepicker [color]=\"color\" #dpicker></mat-datepicker>\n </mat-form-field>\n </div>\n <div *ngIf=\"!isAllDay\" class=\"grid-time time-slot\">\n <mat-form-field [color]=\"color\" class=\"form-field-time\" appearance=\"fill\">\n <mat-label>Start</mat-label>\n <input matTimepicker [color]=\"color\" [strict]=\"false\" id=\"timepicker-start\" mode=\"12h\" formControlName=\"time1\" name=\"time1\"\n placeholder=\"Please select time...\">\n </mat-form-field>\n <mat-form-field [color]=\"color\" class=\"form-field-time\" appearance=\"fill\">\n <mat-label>End</mat-label>\n <input matTimepicker [color]=\"color\" [strict]=\"false\" id=\"timepicker-end\" mode=\"12h\" formControlName=\"time2\" name=\"time2\"\n placeholder=\"Please select time...\">\n </mat-form-field>\n </div>\n <div *ngIf=\"!isAllDay\" class=\"grid-error\">\n <label *ngIf=\"eventForm.invalid\">{{ eventForm.errors?.dates }}</label>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"editor-footer\">\n <button mat-raised-button [color]=\"color\" id=\"editor-submit-button\" type=\"submit\" style=\"margin-right: 4px;\">SAVE</button>\n <button mat-raised-button id=\"editor-delete-button\" type=\"button\" (click)=\"onDelete()\" *ngIf=\"(data.schedule.id!=null)\">DELETE</button>\n <button mat-raised-button id=\"editor-cancel-button\" type=\"button\" (click)=\"onCancel()\">CANCEL</button>\n </div>\n </form>\n </div>","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ngx-mat-tui-calendar-wrapper',\n templateUrl: './ngx-mat-tui-calendar-wrapper.component.html',\n styleUrls: ['./ngx-mat-tui-calendar-wrapper.component.scss'],\n encapsulation: ViewEncapsulation.None, // this is needed so that our css rules override those in tui-calendar package\n})\nexport class NgxMatTuiCalendarWrapperComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div id=\"calendar\"></div> <!-- TUI Calendar gets instatited here -->\n","import { Component, ViewChild, OnInit, Output, EventEmitter, Input, OnChanges, SimpleChanges, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport distinctColors from 'distinct-colors';\r\nimport { Color } from \"chroma-js\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nimport {\r\n faCalendarCheck,\r\n faCaretSquareLeft,\r\n faCaretSquareRight,\r\n faTable,\r\n faColumns,\r\n faList,\r\n faListAlt,\r\n faForward,\r\n faFastBackward,\r\n faBackward,\r\n faCaretLeft,\r\n faCaretRight,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport {\r\n default as Calendar,\r\n ICalendarInfo,\r\n IEventDateObject,\r\n IEventMoreObject,\r\n IEventObject,\r\n IEventScheduleObject,\r\n IOptions,\r\n ISchedule,\r\n ITheme,\r\n ITimezone,\r\n IWeekOptions,\r\n TEventBeforeCreateSchedule,\r\n TZDate,\r\n} from 'tui-calendar';\r\n\r\n// project \r\nimport { LocalDate } from './local-date.js';\r\nimport { NgxMatTuiCalendarEditorDialogComponent } from './ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\r\nimport { CalendarOptions } from './calendar-options';\r\nimport { CalendarEditorOptions } from './calendar-editor-options';\r\n\r\n@Component({\r\n selector: 'ngx-mat-tui-calendar',\r\n templateUrl: './ngx-mat-tui-calendar.component.html',\r\n styleUrls: [\r\n './ngx-mat-tui-calendar.component.scss'\r\n ],\r\n})\r\nexport class NgxMatTuiCalendarComponent implements OnInit, OnChanges, OnDestroy {\r\n iconToday = faCalendarCheck;\r\n // iconPrev = faCaretSquareLeft;\r\n // iconNext = faCaretSquareRight;\r\n iconPrev = faCaretLeft;\r\n iconNext = faCaretRight;\r\n iconLongPrev = faBackward;\r\n iconLongNext = faForward;\r\n iconByMonth = faTable;\r\n iconByWeek = faColumns;\r\n iconByDay = faListAlt;\r\n\r\n calendar: Calendar; // the TUI Calendar Object\r\n calendarId: string;\r\n colors: Color[];\r\n colorIndex: number;\r\n @Output() userCreatedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Output() userUpdatedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Output() userDeletedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Input() options: CalendarOptions;\r\n appliedOptions: CalendarOptions; // this is needed for when options is not connected\r\n\r\n constructor(public dialog: MatDialog) {\r\n // we slice off the first color since it is gray\r\n this.colors = distinctColors({ lightMin: 70, count: 15 }).slice(1);\r\n this.colorIndex = 0;\r\n this.calendarId = uuidv4();\r\n\r\n this.appliedOptions = this.getDefaultOptions();\r\n }\r\n\r\n ngOnInit() {\r\n // console.warn(`calendar.component.ts: ngOnit`)\r\n this.createTUICalendar();\r\n this.bindCallbacks();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // console.warn(changes);\r\n if (this.calendar) {\r\n\r\n if (changes.options) {\r\n // console.warn(`change.option:`, changes.options);\r\n let options = changes.options.currentValue;\r\n this.setOptions(options);\r\n }\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.calendar.destroy();\r\n }\r\n\r\n onCalendarLongPrev() {\r\n let date: Date = (this.calendar.getDate() as TZDate).toDate();\r\n let days = 0;\r\n let months = 0;\r\n let years = 0;\r\n switch (this.calendar.getViewName()) {\r\n case 'day':\r\n days = -7;\r\n break;\r\n case 'week':\r\n days = -28;\r\n break;\r\n case 'month':\r\n years = -1;\r\n break;\r\n }\r\n date.setFullYear(date.getFullYear() + years);\r\n date.setMonth(date.getMonth() + months); // date class does the modular arithmetic\r\n date.setDate(date.getDate() + days); // date class does the modular arithmetic\r\n this.calendar.setDate(date);\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarPrev() {\r\n this.calendar.prev();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarToday() {\r\n this.calendar.today();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarNext() {\r\n this.calendar.next();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarLongNext() {\r\n let date: Date = (this.calendar.getDate() as TZDate).toDate();\r\n let days = 0;\r\n let months = 0;\r\n let years = 0;\r\n switch (this.calendar.getViewName()) {\r\n case 'day':\r\n days = 7;\r\n break;\r\n case 'week':\r\n days = 28;\r\n break;\r\n case 'month':\r\n years = 1;\r\n break;\r\n }\r\n date.setFullYear(date.getFullYear() + years);\r\n date.setMonth(date.getMonth() + months); // date class does the modular arithmetic\r\n date.setDate(date.getDate() + days); // date class does the modular arithmetic\r\n this.calendar.setDate(date);\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n\r\n onMonthView() {\r\n this.calendar.changeView('month');\r\n }\r\n\r\n onWeekView() {\r\n console.log(`onWeekView`)\r\n this.calendar.changeView('week');\r\n this.calendar.render(true); // <-- so that selection is cleared\r\n }\r\n\r\n onDayView() {\r\n this.calendar.changeView('day');\r\n }\r\n\r\n\r\n getDate() {\r\n let date = this.calendar.getDate();\r\n let str = date.toDate().toLocaleDateString(\"en-US\", {\r\n year: 'numeric',\r\n month: 'short',\r\n });\r\n return str;\r\n }\r\n\r\n createTUICalendar() {\r\n let ioptions = this.preprocessIOptions(null);\r\n // console.warn(`calendar.component.ts: createTUICalendar: ioptions:`, ioptions);\r\n this.calendar = new Calendar('#calendar', ioptions);\r\n // console.warn(`calendar.component.ts: createTUICalendar: this.calendar:`, this.calendar);\r\n }\r\n\r\n\r\n bindCallbacks() {\r\n this.bindAfterRenderSchedule();\r\n this.bindClickTimezonesCollapseBtn();\r\n this.bindClickDayname();\r\n this.bindClickMore();\r\n this.bindClickSchedule();\r\n this.bindBeforeCreateSchedule();\r\n this.bindBeforeUpdateSchedule();\r\n this.bindBeforeDeleteSchedule();\r\n }\r\n\r\n bindAfterRenderSchedule() {\r\n let that = this;\r\n this.calendar.on('afterRenderSchedule', function (event: { schedule: ISchedule }) {\r\n // console.warn(`afterRenderSchedule`, event);\r\n });\r\n }\r\n\r\n bindClickTimezonesCollapseBtn() {\r\n let that = this;\r\n this.calendar.on('clickTimezonesCollapseBtn', function (timezonesCollapsed: boolean) {\r\n // console.warn(`clickTimezonesCollapseBtn`, timezonesCollapsed);\r\n });\r\n }\r\n\r\n\r\n bindClickDayname() {\r\n let that = this;\r\n this.calendar.on('clickDayname', function (event: IEventDateObject) {\r\n // console.warn(`clickDayname`, event);\r\n });\r\n }\r\n\r\n bindClickMore() {\r\n let that = this;\r\n this.calendar.on('clickMore', function (event: IEventMoreObject) {\r\n // console.warn(`clickMore`, event);\r\n });\r\n }\r\n\r\n bindClickSchedule() {\r\n // only works if useDetailPopup: false,\r\n let that = this;\r\n this.calendar.on('clickSchedule', function (event: IEventScheduleObject) {\r\n // console.warn(`clickSchedule`, event);\r\n let schedule: ISchedule = { ...event.schedule };\r\n schedule.start = (new LocalDate(schedule.start)).toDate();\r\n schedule.end = (new LocalDate(schedule.end)).toDate();\r\n that.openPopupScheduleEditor(schedule);\r\n });\r\n }\r\n\r\n bindBeforeCreateSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeCreateSchedule', function (event: TEventBeforeCreateSchedule) {\r\n // console.log(`beforeCreateSchedule`, event);\r\n let start: Date = (new LocalDate(event.start)).toDate();\r\n start.setHours(9);\r\n let end: Date = (new LocalDate(event.end)).toDate();\r\n end.setHours(10);\r\n that.openPopupScheduleEditor({\r\n title: '',\r\n start: start,\r\n end: end,\r\n id: null,\r\n } as ISchedule);\r\n });\r\n }\r\n\r\n bindBeforeUpdateSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeUpdateSchedule', function (event: IEventObject) {\r\n // console.log(`beforeUpdateSchedule`, event);\r\n that.updateScheduleAndNotifyParent(event);\r\n });\r\n }\r\n\r\n bindBeforeDeleteSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeDeleteSchedule', function (event: IEventScheduleObject) {\r\n // console.log(`beforeDeleteSchedule`, event.schedule);\r\n // console.log(`beforeDeleteSchedule`, event.schedule);\r\n that.deleteScheduleAndNotifyParent({ id: event.schedule.id, calendarId: event.schedule.calendarId });\r\n });\r\n }\r\n\r\n nextColor() {\r\n let color = this.colors[this.colorIndex++].hex();\r\n if (this.colorIndex >= this.colors.length) this.colorIndex = 0;\r\n return color;\r\n }\r\n\r\n createScheduleAndNotifyParent(args: ISchedule) {\r\n let schedule = this.createSchedule(args);\r\n this.userCreatedSchedule.emit(schedule);\r\n return schedule;\r\n }\r\n\r\n createSchedules(schedules: ISchedule[]) {\r\n let newSchedules = [];\r\n for (let schedule of schedules) {\r\n newSchedules.push(this.createSchedule(schedule));\r\n }\r\n return newSchedules;\r\n }\r\n\r\n createSchedule(args: ISchedule): ISchedule {\r\n // if (form.invalid) return;\r\n\r\n // create a color\r\n let color = this.nextColor();\r\n // console.log(color);\r\n\r\n // create an id\r\n let id = (args.id == null) ? '' : args.id.toString();\r\n if (id.length === 0) {\r\n id = uuidv4();\r\n }\r\n\r\n let start: Date = LocalDate.convertToJsDate(args.start);\r\n let end: Date = LocalDate.convertToJsDate(args.end);\r\n\r\n let schedule: ISchedule = {\r\n id,\r\n calendarId: (args.calendarId == null) ? this.calendarId : args.calendarId,\r\n title: args.title,\r\n start: start,\r\n end: end,\r\n category: args.category,\r\n isAllDay: args.isAllDay,\r\n dueDateClass: '',\r\n bgColor: color,\r\n } as ISchedule\r\n // console.log(`event-calendar.component.ts: createEvent:`, schedule);\r\n this.calendar.createSchedules([schedule]);\r\n return this.calendar.getSchedule(schedule.id, schedule.calendarId);\r\n }\r\n\r\n updateScheduleAndNotifyParent(args: ISchedule) {\r\n let schedule = this.updateSchedule(args);\r\n this.userUpdatedSchedule.emit(schedule);\r\n return schedule;\r\n }\r\n\r\n updateSchedule(schedule: ISchedule) {\r\n // console.log(`event-calendar.component.ts: updateSchedule:`, schedule);\r\n let calendarId = (schedule.calendarId == null) ? this.calendarId : schedule.calendarId;\r\n this.calendar.updateSchedule(schedule.id, calendarId, schedule, false);\r\n return this.calendar.getSchedule(schedule.id, calendarId);\r\n }\r\n\r\n getSchedule(args: { id: string, calendarId: string }) {\r\n // console.log(`event-calendar.component.ts: getSchedule:`, schedule);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n return this.calendar.getSchedule(args.id, calendarId);\r\n }\r\n\r\n deleteScheduleAndNotifyParent(args: { id: string, calendarId: string }) {\r\n this.deleteSchedule(args);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n this.userDeletedSchedule.emit({ id: args.id, calendarId });\r\n }\r\n\r\n deleteSchedule(args: { id: string, calendarId: string }) {\r\n // console.log(`event-calendar.component.ts: deleteSchedule:`, schedule);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n this.calendar.deleteSchedule(args.id, calendarId, false);\r\n }\r\n\r\n deleteAllSchedules() {\r\n this.calendar.clear();\r\n }\r\n\r\n openPopupScheduleEditor(schedule: ISchedule) {\r\n // console.log('openPopupScheduleEditor: calevent:', schedule);\r\n const dialogConfig = new MatDialogConfig();\r\n if (this.appliedOptions.themeClass) {\r\n dialogConfig.panelClass = this.appliedOptions.themeClass;\r\n }\r\n // console.warn(`options: `, this.appliedOptions);\r\n dialogConfig.data = { schedule, darkMode: this.appliedOptions.darkMode, themeClass: this.appliedOptions.themeClass } as CalendarEditorOptions;\r\n dialogConfig.autoFocus = true;\r\n const dialogRef = this.dialog.open(NgxMatTuiCalendarEditorDialogComponent, dialogConfig);\r\n // const dialogRef = this.dialog.open(NgxMatTuiCalendarScheduleEditorDialogComponent, {\r\n // data: schedule,\r\n // });\r\n dialogRef.afterClosed().subscribe((result: { schedule: ISchedule, performDelete: boolean }) => {\r\n // console.log('openPopupScheduleEditor: The dialog was closed', result);\r\n this.calendar.render(true); // <-- so that selection is cleared\r\n if (result && result.schedule) {\r\n let schedule = result.schedule;\r\n if (result.performDelete == true) {\r\n // delete\r\n // console.log(`openPopupScheduleEditor:afterCLosed: deleteSchedule`);\r\n this.deleteScheduleAndNotifyParent({ id: schedule.id, calendarId: schedule.calendarId });\r\n } else if (schedule.id == null) {\r\n // console.log(`openPopupScheduleEditor:afterCLosed: addSchedule`);\r\n this.createScheduleAndNotifyParent(schedule);\r\n } else {\r\n // console.log(`openPopupScheduleEditor:afterCLosed: updateSchedule`);\r\n this.updateScheduleAndNotifyParent(schedule);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n setOptions(options: CalendarOptions) {\r\n if (options == null) {\r\n options = this.getDefaultOptions();\r\n }\r\n options.ioptions = this.setIOptions(options.ioptions);\r\n this.appliedOptions = {...options};\r\n }\r\n\r\n setIOptions(ioptionsIn: IOptions) {\r\n let ioptions = this.preprocessIOptions(ioptionsIn);\r\n this.calendar.setOptions(ioptions);\r\n this.calendar.setTheme(ioptions.theme);\r\n this.calendar.render(true);\r\n return ioptions;\r\n }\r\n\r\n preprocessIOptions(ioptions: IOptions): IOptions {\r\n let defs: IOptions = this.getDefaultIOptions();\r\n if (ioptions == null) {\r\n ioptions = defs;\r\n } else {\r\n ioptions = { ...defs, ...ioptions };\r\n }\r\n ioptions.useCreationPopup = false;\r\n ioptions.useDetailPopup = false;\r\n if (!ioptions.theme) {\r\n ioptions.theme = this.getDefaultTheme();\r\n }\r\n return ioptions;\r\n }\r\n\r\n\r\n getDefaultOptions(): CalendarOptions {\r\n return {\r\n darkMode: false,\r\n themeClass: null,\r\n ioptions: this.getDefaultIOptions(),\r\n } as CalendarOptions;\r\n }\r\n\r\n getDefaultIOptions(): IOptions {\r\n return {\r\n defaultView: 'month',\r\n taskView: true,\r\n useCreationPopup: false,\r\n useDetailPopup: false,\r\n theme: this.getDefaultTheme(),\r\n template: {\r\n monthDayname: function (dayname) {\r\n return '<span class=\"calendar-week-dayname-name\">' + dayname.label + '</span>';\r\n }\r\n },\r\n week: {\r\n // startDayOfWeek: undefined,\r\n // daynames: undefined,\r\n narrowWeekend: false,\r\n // workweek: true,\r\n showTimezoneCollapseButton: true,\r\n timezonesCollapsed: true,\r\n hourStart: 7,\r\n hourEnd: 20,\r\n } as IWeekOptions,\r\n } as IOptions;\r\n\r\n }\r\n\r\n getColor(name: string): string {\r\n const el = document.getElementById(`theme-${name}`);\r\n if (el) {\r\n const style = window.getComputedStyle(el, null);\r\n // console.warn(`theme-${name} color:`, style.color);\r\n return style.color;\r\n }\r\n return '';\r\n }\r\n\r\n getDefaultTheme(): ITheme {\r\n function adjustHexOpacity(color, opacity) {\r\n const r = parseInt(color.slice(1, 3), 16);\r\n const g = parseInt(color.slice(3, 5), 16);\r\n const b = parseInt(color.slice(5, 7), 16);\r\n\r\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + opacity + ')';\r\n }\r\n\r\n // default keys and styles\r\n // TODO: apply Material Design Theme \r\n let background = this.getColor(\"background\");\r\n let border = this.getColor(\"divider\");\r\n let borderLight = this.getColor(\"divider-light\");\r\n let shadow = this.getColor(\"divider\");\r\n let highlight = this.getColor(\"highlight\");\r\n let primary = this.getColor(\"primary\");\r\n let warn = this.getColor(\"warn\");\r\n let text = this.getColor(\"foreground\");\r\n let primaryShaded = this.getColor(\"primary-shaded\");\r\n\r\n // tui-full-calendar-weekday-schedule-title\r\n //calendar-week-dayname-name\r\n return {\r\n 'common.border': `1px solid ${border}`,\r\n 'common.backgroundColor': background,\r\n 'common.holiday.color': warn,\r\n 'common.saturday.color': text,\r\n 'common.dayname.color': text,\r\n 'common.today.color': '#0f0',\r\n\r\n // creation guide style\r\n 'common.creationGuide.backgroundColor': primaryShaded,\r\n 'common.creationGuide.border': `1px solid ${highlight}`,\r\n\r\n // month header 'dayname'\r\n 'month.dayname.height': '31px',\r\n 'month.dayname.borderLeft': `1px solid ${border}`,\r\n 'month.dayname.paddingLeft': '10px',\r\n 'month.dayname.paddingRight': '10px',\r\n 'month.dayname.backgroundColor': 'inherit',\r\n 'month.dayname.fontSize': '12px',\r\n 'month.dayname.fontWeight': 'normal',\r\n 'month.dayname.textAlign': 'left',\r\n\r\n // month day grid cell 'day'\r\n 'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\r\n 'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\r\n 'month.weekend.backgroundColor': 'inherit',\r\n 'month.day.fontSize': '14px',\r\n 'month.schedule.color': highlight,\r\n\r\n // month schedule style\r\n 'month.schedule.borderRadius': '2px',\r\n 'month.schedule.height': '24px',\r\n 'month.schedule.marginTop': '2px',\r\n 'month.schedule.marginLeft': '8px',\r\n 'month.schedule.marginRight': '8px',\r\n\r\n // month more view\r\n 'month.moreView.border': `1px solid ${border}`,\r\n 'month.moreView.boxShadow': `0 2px 6px 0 ${shadow}`,\r\n 'month.moreView.backgroundColor': background,\r\n 'month.moreView.paddingBottom': '17px',\r\n 'month.moreViewTitle.height': '44px',\r\n 'month.moreViewTitle.marginBottom': '12px',\r\n 'month.moreViewTitle.backgroundColor': 'inherit',\r\n 'month.moreViewTitle.borderBottom': 'none',\r\n 'month.moreViewTitle.padding': '12px 17px 0 17px',\r\n 'month.moreViewList.padding': '0 17px',\r\n\r\n // week header 'dayname'\r\n 'week.dayname.height': '42px',\r\n 'week.dayname.borderTop': `1px solid ${border}`,\r\n 'week.dayname.borderBottom': `1px solid ${border}`,\r\n 'week.dayname.borderLeft': 'inherit',\r\n 'week.dayname.paddingLeft': '0',\r\n 'week.dayname.backgroundColor': 'inherit',\r\n 'week.dayname.textAlign': 'left',\r\n 'week.today.color': text,\r\n 'week.pastDay.color': borderLight,\r\n\r\n // week vertical panel 'vpanel'\r\n 'week.vpanelSplitter.border': `1px solid ${border}`,\r\n 'week.vpanelSplitter.height': '3px',\r\n\r\n // week daygrid 'daygrid'\r\n 'week.daygrid.borderRight': `1px solid ${border}`,\r\n 'week.daygrid.backgroundColor': background,\r\n\r\n 'week.daygridLeft.width': '72px',\r\n 'week.daygridLeft.backgroundColor': background,\r\n 'week.daygridLeft.paddingRight': '8px',\r\n 'week.daygridLeft.borderRight': `1px solid ${border}`,\r\n\r\n\r\n 'week.today.backgroundColor': primaryShaded,\r\n 'week.weekend.backgroundColor': 'inherit',\r\n\r\n // week timegrid 'timegrid'\r\n 'week.timegridLeft.width': '72px',\r\n 'week.timegridLeft.backgroundColor': 'inherit',\r\n 'week.timegridLeft.borderRight': `1px solid ${border}`,\r\n 'week.timegridLeft.fontSize': '11px',\r\n 'week.timegridLeftTimezoneLabel.height': '40px',\r\n 'week.timegridLeftAdditionalTimezone.backgroundColor': background,\r\n\r\n 'week.timegridOneHour.height': '52px',\r\n 'week.timegridHalfHour.height': '26px',\r\n 'week.timegridHalfHour.borderBottom': 'none',\r\n 'week.timegridHorizontalLine.borderBottom': `1px solid ${border}`,\r\n\r\n 'week.timegrid.paddingRight': '8px',\r\n 'week.timegrid.borderRight': `1px solid ${border}`,\r\n 'week.timegridSchedule.borderRadius': '2px',\r\n 'week.timegridSchedule.paddingLeft': '2px',\r\n\r\n // #515ce6 is a slate blue\r\n\r\n 'week.currentTime.color': highlight,\r\n 'week.currentTime.fontSize': '11px',\r\n 'week.currentTime.fontWeight': 'normal',\r\n\r\n 'week.pastTime.color': borderLight,\r\n 'week.pastTime.fontWeight': 'normal',\r\n\r\n 'week.futureTime.color': border,\r\n 'week.futureTime.fontWeight': 'normal',\r\n\r\n 'week.currentTimeLinePast.border': `1px dashed ${highlight}`,\r\n 'week.currentTimeLineBullet.backgroundColor': highlight,\r\n 'week.currentTimeLineToday.border': `1px solid ${highlight}`,\r\n 'week.currentTimeLineFuture.border': 'none',\r\n\r\n // week creation guide style\r\n 'week.creationGuide.color': highlight,\r\n 'week.creationGuide.fontSize': '11px',\r\n 'week.creationGuide.fontWeight': 'bold',\r\n\r\n // week daygrid schedule style\r\n 'week.dayGridSchedule.borderRadius': '2px',\r\n 'week.dayGridSchedule.height': '24px',\r\n 'week.dayGridSchedule.marginTop': '2px',\r\n 'week.dayGridSchedule.marginLeft': '8px',\r\n 'week.dayGridSchedule.marginRight': '8px'\r\n } as ITheme;\r\n }\r\n\r\n}\r\n","<section class=\"content-container\">\r\n <!-- These divs are here so that we can read the theme colors for the tui theme -->\r\n <!-- The outer div gives the default color for when user does not provide an Angular theme -->\r\n <div style=\"color: blue;\"> <div id=\"theme-primary\"></div></div>\r\n <div style=\"color: blue;\"> <div id=\"theme-highlight\"></div></div>\r\n <div style=\"color: blue;\"> <div id=\"theme-accent\"></div></div>\r\n <div style=\"color: red;\"> <div id=\"theme-warn\"></div></div>\r\n <div style=\"color: rgba(0, 0, 255, 0.2);\"> <div id=\"theme-primary-shaded\"></div></div>\r\n <div style=\"color: #3e3e3e;\"> <div id=\"theme-foreground\"></div></div>\r\n <div style=\"color: #e0e0e0;\"> <div id=\"theme-divider\"></div></div>\r\n <div style=\"color: white;\"> <div id=\"theme-background\"></div></div>\r\n \r\n <div class=\"calendar-container\">\r\n <!-- calendar titlebar -->\r\n <mat-toolbar class=\"menu-bar\" color=\"primary\">\r\n <!-- <div style=\"align-self: center;display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\"> -->\r\n <div style=\"display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n width: 100%; \">\r\n <div class=\"left-div\">\r\n <!-- LEFT -->\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.5rem !important;\" \r\n (click)=\"onCalendarLongPrev()\">\r\n <fa-icon [icon]=\"iconLongPrev\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\" \r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 2rem !important;\" \r\n (click)=\"onCalendarPrev()\">\r\n <fa-icon [icon]=\"iconPrev\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.7rem !important;\" \r\n (click)=\"onCalendarToday()\">\r\n <fa-icon [icon]=\"iconToday\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\" \r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 2rem !important;\" \r\n (click)=\"onCalendarNext()\">\r\n <fa-icon [icon]=\"iconNext\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.5rem !important;\" \r\n (click)=\"onCalendarLongNext()\">\r\n <fa-icon [icon]=\"iconLongNext\"></fa-icon>\r\n </button>\r\n </div>\r\n <div class=\"center-div\">\r\n <!-- CENTER -->\r\n <span class=\"event-calendar-title\">{{ getDate() }}</span>\r\n </div>\r\n <div class=\"right-div\">\r\n \r\n <!-- RIGHT -->\r\n <mat-button-toggle-group class=\"view-button\" value=\"month\" id=\"@+id/toggleButton\" layout_width=\"wrap_content\"\r\n layout_height=\"wrap_content\">\r\n <mat-button-toggle mat-button value=\"month\" class=\"view-button\" (click)=\"onMonthView()\">\r\n <fa-icon [icon]=\"iconByMonth\"></fa-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle mat-button value=\"week\" class=\"view-button\" (click)=\"onWeekView()\">\r\n <fa-icon [icon]=\"iconByWeek\"></fa-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle mat-button value=\"day\" class=\"view-button\" (click)=\"onDayView()\">\r\n <fa-icon [icon]=\"iconByDay\"></fa-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </mat-toolbar>\r\n <ngx-mat-tui-calendar-wrapper></ngx-mat-tui-calendar-wrapper>\r\n </div>\r\n \r\n </section>\r\n","\r\n// Angular modules\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FlexModule, FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\n// Angular Material Design modules\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\n\r\n// 3rd party modules\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { MatTimepickerModule } from 'mat-timepicker';\r\n\r\n// collect all of the above modules into an array\r\nconst importedModules = [\r\n BrowserAnimationsModule,\r\n BrowserModule,\r\n FlexLayoutModule,\r\n FlexModule, \r\n FormsModule,\r\n HttpClientModule,\r\n OverlayModule,\r\n ReactiveFormsModule,\r\n\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatNativeDateModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSlideToggleModule,\r\n MatToolbarModule,\r\n\r\n FontAwesomeModule,\r\n MatTimepickerModule,\r\n ];\r\n\r\n\r\n// project modules\r\nimport { NgxMatTuiCalendarComponent } from './ngx-mat-tui-calendar.component';\r\nimport { NgxMatTuiCalendarWrapperComponent } from './ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component';\r\nimport { NgxMatTuiCalendarEditorDialogComponent } from './ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\r\n\r\nconst projectModules = [\r\n NgxMatTuiCalendarComponent,\r\n NgxMatTuiCalendarWrapperComponent,\r\n NgxMatTuiCalendarEditorDialogComponent,\r\n];\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ...projectModules,\r\n ],\r\n imports: [\r\n ...importedModules,\r\n ],\r\n exports: [\r\n ...importedModules,\r\n\r\n ...projectModules,\r\n ],\r\n entryComponents: [\r\n ...projectModules,\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class NgxMatTuiCalendarModule { }\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxMatTuiCalendarService {\n\n constructor() { }\n}\n","/*\n * Public API Surface of ngx-mat-tui-calendar\n */\n\nexport * from './lib/ngx-mat-tui-calendar.module';\nexport * from './lib/ngx-mat-tui-calendar.service';\nexport * from './lib/ngx-mat-tui-calendar.component';\nexport * from './lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\nexport * from './lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component';\n\nexport * from './lib/calendar-options';\nexport * from './lib/calendar-editor-options';\nexport * from './lib/local-date';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FormGroup","FormControl","Validators","MAT_DIALOG_DATA","Component","Inject","ViewEncapsulation","faCalendarCheck","faCaretLeft","faCaretRight","faBackward","faForward","faTable","faColumns","faListAlt","EventEmitter","distinctColors","uuidv4","Calendar","MatDialogConfig","Output","Input","BrowserAnimationsModule","BrowserModule","FlexLayoutModule","FlexModule","FormsModule","HttpClientModule","OverlayModule","ReactiveFormsModule","MatButtonModule","MatButtonToggleModule","MatCardModule","MatDatepickerModule","MatDialogModule","MatDividerModule","MatFormFieldModule","MatIconModule","MatInputModule","MatNativeDateModule","MatRadioModule","MatRippleModule","MatSlideToggleModule","MatToolbarModule","FontAwesomeModule","MatTimepickerModule","NgModule","CUSTOM_ELEMENTS_SCHEMA","Injectable"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-mat-tui-calendar.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-mat-tui-calendar/src/lib/local-date.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.module.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.service.ts","../../../projects/ngx-mat-tui-calendar/src/public-api.ts","../../../projects/ngx-mat-tui-calendar/src/ngx-mat-tui-calendar.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","\r\n// import { TZDate } from 'tui-calendar';\r\n\r\nexport class LocalDate {\r\n date: Date;\r\n\r\n // month = 1 to 12\r\n constructor(args) {\r\n let numbers;\r\n if (typeof args == 'string') {\r\n numbers = LocalDate.parse_YYYYMMDD(args);\r\n } else if (args instanceof LocalDate) {\r\n numbers = args.get();\r\n } else if (args instanceof Date) {\r\n numbers = LocalDate.convertDateToNumbers(args);\r\n } else if (typeof args.toDate === 'function') {\r\n numbers = LocalDate.convertDateToNumbers(args.toDate());\r\n } else if (args['_date'] instanceof Date ) {\r\n numbers = LocalDate.convertDateToNumbers(args['_date']);\r\n } else if (args instanceof Object) {\r\n numbers = args;\r\n }\r\n this.date = LocalDate.convertNumbersToDate(numbers);\r\n }\r\n\r\n static convertToJsDate(args) {\r\n return (new LocalDate(args)).toDate();\r\n }\r\n\r\n\r\n // return new LocalDate(date.getFullYear(), date.getMonth() + 1, date.getDate());\r\n static parse_YYYYMMDD(str) {\r\n // yyyy-mm-dd\r\n const regexp = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)/g;\r\n let matches = Array.from(\r\n str.matchAll(regexp), m => ({\r\n year: Number(m[1]),\r\n month: Number(m[2]),\r\n day: Number(m[3])\r\n })\r\n );\r\n if (matches.length != 1) {\r\n console.error(`dateIn: unknown date format: ${str}`);\r\n return null;\r\n }\r\n return matches[0];\r\n }\r\n static convertNumbersToDate({ year, month, day, hours, minutes, seconds, milliseconds }) {\r\n // month = 1 to 12\r\n // start with today's *local* date. this si really important\r\n let date = new Date();\r\n date.setFullYear(year);\r\n date.setMonth((month==null) ? 0 : month - 1);\r\n date.setDate((day==null) ? 1 : day);\r\n date.setHours((hours==null) ? 0 : hours);\r\n date.setMinutes((minutes==null) ? 0 : minutes);\r\n date.setSeconds((seconds==null) ? 0 : seconds);\r\n date.setMilliseconds((milliseconds==null) ? 1 : milliseconds);\r\n return date;\r\n }\r\n\r\n\r\n static convertDateToNumbers(date) {\r\n // month = 1 to 12\r\n return {\r\n year: date.getFullYear(),\r\n month: date.getMonth() + 1,\r\n day: date.getDate(),\r\n hours: date.getHours(),\r\n minutes: date.getMinutes(),\r\n seconds: date.getSeconds(),\r\n milliseconds: date.getMilliseconds(),\r\n };\r\n }\r\n\r\n get() {\r\n return LocalDate.convertDateToNumbers(this.date);\r\n }\r\n\r\n toMsgFormat() {\r\n return this.toYYYYMMDD();\r\n }\r\n toYYYYMMDD() {\r\n // yyyy-mm-dd\r\n\r\n let yyyy = this.date.getFullYear();\r\n let mm = (this.date.getMonth() + 1).toString().padStart(2, '0');\r\n let dd = (this.date.getDate()).toString().padStart(2, '0');\r\n let str = `${yyyy}-${mm}-${dd}`;\r\n // console.warn(`date=${str}=${this.toDisplayFormat()}`);\r\n return str;\r\n }\r\n toDisplayDateFormat() {\r\n return this.date.toLocaleDateString(\"en-US\", {\r\n weekday: 'short',\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n });\r\n }\r\n toDisplayFormat() {\r\n return this.date.toString();\r\n }\r\n toDate() {\r\n return this.date;\r\n }\r\n clearTime() {\r\n this.date.setHours(0, 0, 0, 1);\r\n }\r\n\r\n}\r\n\r\n","import { Component, ElementRef, HostBinding, Inject, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { DateType, default as Calendar, IEventScheduleObject, ISchedule, TZDate } from 'tui-calendar';\n\nimport { LocalDate } from '../local-date.js';\nimport { CalendarEditorOptions } from '../calendar-editor-options';\n\n\n@Component({\n selector: 'ngx-mat-tui-calendar-editor-dialog',\n templateUrl: './ngx-mat-tui-calendar-editor-dialog.component.html',\n styleUrls: ['./ngx-mat-tui-calendar-editor-dialog.component.scss']\n})\nexport class NgxMatTuiCalendarEditorDialogComponent implements OnInit {\n private id: string;\n titleStr: string = '';\n locationStr: string = '';\n closed: boolean = false;\n eventForm: FormGroup;\n date: Date;\n startDate: Date;\n endDate: Date;\n startTime: Date;\n endTime: Date;\n isAllDay: boolean = false;\n color: string;\n themeClass: string = '';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: CalendarEditorOptions,\n public dialogRef: MatDialogRef<NgxMatTuiCalendarEditorDialogComponent>,\n ) {\n // console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: schedule:', schedule);\n\n // console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: data:', data);\n this.color = data.darkMode ? 'accent' : 'primary';\n\n const schedule = data.schedule;\n if (schedule == null) {\n this.id = null;\n } else {\n if (schedule.id) {\n this.id = schedule.id.toString();\n }\n }\n this.titleStr = (schedule.title) ? schedule.title.toString() : '';\n this.locationStr = (schedule.location) ? schedule.location.toString() : '';\n\n\n this.isAllDay = (schedule.isAllDay == true);\n\n this.startDate = LocalDate.convertToJsDate(schedule.start) as Date;\n this.endDate = LocalDate.convertToJsDate(schedule.end) as Date;\n\n this.startTime = new Date(this.startDate);\n this.endTime = new Date(this.endDate);\n this.startDate.setHours(0, 0, 0, 1);\n this.endDate.setHours(0, 0, 0, 1);\n\n this.eventForm = new FormGroup(\n {\n title: new FormControl(this.titleStr),\n location: new FormControl(this.locationStr),\n scheduleType: new FormControl((schedule.isAllDay == true) ? \"all-day\" : \"time-slot\"),\n start: new FormControl(this.startDate),\n end: new FormControl(this.endDate),\n date: new FormControl(this.startDate),\n time1: new FormControl(this.startTime),\n time2: new FormControl(this.endTime, [Validators.required]),\n },\n this.getDateValidator(),\n );\n\n }\n\n getDateValidator() {\n const validator: ValidatorFn = (group: FormGroup): { [key: string]: any } => {\n const scheduleType = group.get(\"scheduleType\").value;\n if (group.get(\"scheduleType\").value == \"time-slot\") {\n let time1 = group.get(\"time1\").value;\n let time2 = group.get(\"time2\").value;\n if (time1 >= time2) {\n return {\n dates: \"End time must be later than the start time\"\n };\n }\n }\n return {};\n };\n return validator;\n }\n\n\n ngOnInit(): void {\n // console.dir(`Dialog config: ${this.dialogConfig}`);\n // let start: Date = (LocalDate.convertToJsDate(this.schedule.start)).toDate();\n // let end: Date = (LocalDate.convertToJsDate(this.schedule.end)).toDate();\n // this.eventForm.get(\"date\").setValue(start);\n // this.eventForm.get(\"start\").setValue(start);\n // this.eventForm.get(\"end\").setValue(end);\n\n }\n\n\n\n onSave(form: NgForm) {\n // console.log(`onSave form.invalid=${form.invalid}; this.closed=${this.closed} this.titleStr=${this.titleStr}`);\n if (form.invalid || this.closed) return;\n let schedule = this.data.schedule;\n schedule.title = this.eventForm.get(\"title\").value;\n schedule.location = this.eventForm.get(\"location\").value;\n schedule.isAllDay = this.isAllDay;\n schedule.category = this.isAllDay ? 'allday' : 'time'; // CATEGORY MUST BE DEFINED: 'milestone', 'task', allday', 'time'\n if (this.isAllDay) {\n schedule.start = LocalDate.convertToJsDate(this.eventForm.get(\"start\").value) as Date;\n schedule.start.setHours(0, 0, 0, 1);\n schedule.end = LocalDate.convertToJsDate(this.eventForm.get(\"end\").value) as Date;\n schedule.end.setHours(0, 0, 0, 1);\n } else {\n this.startTime = LocalDate.convertToJsDate(this.eventForm.get(\"time1\").value) as Date;\n schedule.start = LocalDate.convertToJsDate(this.eventForm.get(\"date\").value) as Date;\n schedule.start.setHours(\n this.startTime.getHours(),\n this.startTime.getMinutes(),\n this.startTime.getSeconds(),\n this.startTime.getMilliseconds(),\n );\n this.endTime = LocalDate.convertToJsDate(this.eventForm.get(\"time2\").value) as Date;\n schedule.end = LocalDate.convertToJsDate(this.eventForm.get(\"date\").value) as Date;\n schedule.end.setHours(\n this.endTime.getHours(),\n this.endTime.getMinutes(),\n this.endTime.getSeconds(),\n this.endTime.getMilliseconds(),\n );\n }\n // console.log(`pop-up-event-editor.component.ts: user clicked SAVE event=${schedule}`);\n // this.eventOutput.emit(schedule);\n form.resetForm();\n this.closeMe(schedule);\n }\n\n onCancel() {\n // this.cancelled.emit();\n // console.log('openPopupScheduleEditor: user clicked CANCEL');\n this.closeMe(null);\n }\n\n onDelete() {\n // this.cancelled.emit();\n // console.log('openPopupScheduleEditor: user clicked DELETE');\n this.closeMe(this.data.schedule, true);\n }\n\n\n closeMe(schedule: ISchedule, performDelete?: boolean) {\n // console.log('closeMe: The dialog is closing', schedule);\n this.closed = true;\n this.dialogRef.close({ schedule, performDelete: (performDelete == true) });\n }\n\n log(str) {\n // console.warn(str);\n }\n\n onUseAllDay() {\n this.isAllDay = true;\n }\n onUseTimeSlot() {\n this.isAllDay = false;\n }\n\n}\n","<div [className]=\"data.themeClass + ' ' + 'event-editor'\">\n <form id=\"my-form\" [formGroup]=\"eventForm\" class=\"event-editor-form\" (submit)=\"onSave(postForm);\" #postForm=\"ngForm\">\n <div class=\"grid-wrapper\">\n <div class=\"grid-title\">\n <mat-form-field [color]=\"color\" class=\"editor-title\">\n <input matInput type=\"text\" name=\"title\" formControlName=\"title\" placeholder=\"Title\">\n <!-- <mat-error style=\"height: fit-content;\" *ngIf=\"title.invalid\">Please enter a title (of 1 characters or more)\n for\n your event.</mat-error> -->\n </mat-form-field>\n </div>\n <div class=\"grid-location\">\n <mat-form-field [color]=\"color\" class=\"editor-location\">\n <input matInput type=\"location\" name=\"location\" formControlName=\"location\" placeholder=\"Location\">\n </mat-form-field>\n </div>\n <div class=\"grid-radios\" style=\"display: flex;\">\n <mat-radio-group [color]=\"color\" aria-label=\"Select an option\" style=\"margin-bottom: 1em;\" name=\"scheduleType\"\n formControlName=\"scheduleType\" required>\n <mat-radio-button value=\"all-day\" (change)=\"onUseAllDay()\" id=\"button-all-day\" [color]=\"color\" class=\"radio-button\">All Day\n </mat-radio-button>\n <mat-radio-button value=\"time-slot\" (change)=\"onUseTimeSlot()\" id=\"button-time-slot\" [color]=\"color\" class=\"radio-button\">Time Slot\n </mat-radio-button>\n </mat-radio-group>\n </div>\n <div class=\"grid-date\">\n <mat-form-field *ngIf=\"isAllDay\" [color]=\"color\" class=\"date-range-form-field\" appearance=\"fill\">\n <mat-label [color]=\"color\">Pick a Date Range</mat-label>\n <mat-date-range-input [color]=\"color\" [panelClass]=\"data.themeClass\" [rangePicker]=\"rangePicker\" #dateRangeInput>\n <input matStartDate placeholder=\"Start date\" formControlName=\"start\" name=\"start\">\n <input matEndDate placeholder=\"End date\" formControlName=\"end\" name=\"end\">\n </mat-date-range-input>\n <mat-datepicker-toggle [color]=\"color\" [panelClass]=\"data.themeClass\" matSuffix [for]=\"rangePicker\"></mat-datepicker-toggle>\n <mat-date-range-picker [color]=\"color\" class=\"picker\" #rangePicker></mat-date-range-picker>\n </mat-form-field>\n <mat-form-field [color]=\"color\" *ngIf=\"!isAllDay\" class=\"date-form-field\" appearance=\"fill\">\n <mat-label>Choose a date</mat-label>\n <input matInput [matDatepicker]=\"dpicker\" formControlName=\"date\" name=\"date\">\n <mat-datepicker-toggle [color]=\"color\" matSuffix [for]=\"dpicker\"></mat-datepicker-toggle>\n <mat-datepicker [color]=\"color\" #dpicker></mat-datepicker>\n </mat-form-field>\n </div>\n <div *ngIf=\"!isAllDay\" class=\"grid-time time-slot\">\n <mat-form-field [color]=\"color\" class=\"form-field-time\" appearance=\"fill\">\n <mat-label>Start</mat-label>\n <input matTimepicker [color]=\"color\" [strict]=\"false\" id=\"timepicker-start\" mode=\"12h\" formControlName=\"time1\" name=\"time1\"\n placeholder=\"Please select time...\">\n </mat-form-field>\n <mat-form-field [color]=\"color\" class=\"form-field-time\" appearance=\"fill\">\n <mat-label>End</mat-label>\n <input matTimepicker [color]=\"color\" [strict]=\"false\" id=\"timepicker-end\" mode=\"12h\" formControlName=\"time2\" name=\"time2\"\n placeholder=\"Please select time...\">\n </mat-form-field>\n </div>\n <div *ngIf=\"!isAllDay\" class=\"grid-error\">\n <label *ngIf=\"eventForm.invalid\">{{ eventForm.errors?.dates }}</label>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"editor-footer\">\n <button mat-raised-button [color]=\"color\" id=\"editor-submit-button\" type=\"submit\" style=\"margin-right: 4px;\">SAVE</button>\n <button mat-raised-button id=\"editor-delete-button\" type=\"button\" (click)=\"onDelete()\" *ngIf=\"(data.schedule.id!=null)\">DELETE</button>\n <button mat-raised-button id=\"editor-cancel-button\" type=\"button\" (click)=\"onCancel()\">CANCEL</button>\n </div>\n </form>\n </div>","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ngx-mat-tui-calendar-wrapper',\n templateUrl: './ngx-mat-tui-calendar-wrapper.component.html',\n styleUrls: ['./ngx-mat-tui-calendar-wrapper.component.scss'],\n encapsulation: ViewEncapsulation.None, // this is needed so that our css rules override those in tui-calendar package\n})\nexport class NgxMatTuiCalendarWrapperComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div id=\"calendar\"></div> <!-- TUI Calendar gets instatited here -->\n","import { Component, ViewChild, OnInit, Output, EventEmitter, Input, OnChanges, SimpleChanges, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport distinctColors from 'distinct-colors';\r\nimport { Color } from \"chroma-js\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nimport {\r\n faCalendarCheck,\r\n faCaretSquareLeft,\r\n faCaretSquareRight,\r\n faTable,\r\n faColumns,\r\n faList,\r\n faListAlt,\r\n faForward,\r\n faFastBackward,\r\n faBackward,\r\n faCaretLeft,\r\n faCaretRight,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport {\r\n default as Calendar,\r\n ICalendarInfo,\r\n IEventDateObject,\r\n IEventMoreObject,\r\n IEventObject,\r\n IEventScheduleObject,\r\n IOptions,\r\n ISchedule,\r\n ITheme,\r\n ITimezone,\r\n IWeekOptions,\r\n TEventBeforeCreateSchedule,\r\n TZDate,\r\n} from 'tui-calendar';\r\n\r\n// project \r\nimport { LocalDate } from './local-date.js';\r\nimport { NgxMatTuiCalendarEditorDialogComponent } from './ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\r\nimport { CalendarOptions } from './calendar-options';\r\nimport { CalendarEditorOptions } from './calendar-editor-options';\r\n\r\n@Component({\r\n selector: 'ngx-mat-tui-calendar',\r\n templateUrl: './ngx-mat-tui-calendar.component.html',\r\n styleUrls: [\r\n './ngx-mat-tui-calendar.component.scss'\r\n ],\r\n})\r\nexport class NgxMatTuiCalendarComponent implements OnInit, OnChanges, OnDestroy {\r\n iconToday = faCalendarCheck;\r\n // iconPrev = faCaretSquareLeft;\r\n // iconNext = faCaretSquareRight;\r\n iconPrev = faCaretLeft;\r\n iconNext = faCaretRight;\r\n iconLongPrev = faBackward;\r\n iconLongNext = faForward;\r\n iconByMonth = faTable;\r\n iconByWeek = faColumns;\r\n iconByDay = faListAlt;\r\n\r\n calendar: Calendar; // the TUI Calendar Object\r\n calendarId: string;\r\n colors: Color[];\r\n colorIndex: number;\r\n @Output() userCreatedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Output() userUpdatedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Output() userDeletedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Input() options: CalendarOptions;\r\n appliedOptions: CalendarOptions; // this is needed for when options is not connected\r\n\r\n constructor(public dialog: MatDialog) {\r\n // we slice off the first color since it is gray\r\n this.colors = distinctColors({ lightMin: 70, count: 15 }).slice(1);\r\n this.colorIndex = 0;\r\n this.calendarId = uuidv4();\r\n\r\n this.appliedOptions = this.getDefaultOptions();\r\n }\r\n\r\n ngOnInit() {\r\n // console.warn(`calendar.component.ts: ngOnit`)\r\n this.createTUICalendar();\r\n this.bindCallbacks();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // console.warn(changes);\r\n if (this.calendar) {\r\n\r\n if (changes.options) {\r\n // console.warn(`change.option:`, changes.options);\r\n let options = changes.options.currentValue;\r\n this.setOptions(options);\r\n }\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.calendar.destroy();\r\n }\r\n\r\n onCalendarLongPrev() {\r\n let date: Date = (this.calendar.getDate() as TZDate).toDate();\r\n let days = 0;\r\n let months = 0;\r\n let years = 0;\r\n switch (this.calendar.getViewName()) {\r\n case 'day':\r\n days = -7;\r\n break;\r\n case 'week':\r\n days = -28;\r\n break;\r\n case 'month':\r\n years = -1;\r\n break;\r\n }\r\n date.setFullYear(date.getFullYear() + years);\r\n date.setMonth(date.getMonth() + months); // date class does the modular arithmetic\r\n date.setDate(date.getDate() + days); // date class does the modular arithmetic\r\n this.calendar.setDate(date);\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarPrev() {\r\n this.calendar.prev();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarToday() {\r\n this.calendar.today();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarNext() {\r\n this.calendar.next();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarLongNext() {\r\n let date: Date = (this.calendar.getDate() as TZDate).toDate();\r\n let days = 0;\r\n let months = 0;\r\n let years = 0;\r\n switch (this.calendar.getViewName()) {\r\n case 'day':\r\n days = 7;\r\n break;\r\n case 'week':\r\n days = 28;\r\n break;\r\n case 'month':\r\n years = 1;\r\n break;\r\n }\r\n date.setFullYear(date.getFullYear() + years);\r\n date.setMonth(date.getMonth() + months); // date class does the modular arithmetic\r\n date.setDate(date.getDate() + days); // date class does the modular arithmetic\r\n this.calendar.setDate(date);\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n\r\n onMonthView() {\r\n this.calendar.changeView('month');\r\n }\r\n\r\n onWeekView() {\r\n console.log(`onWeekView`)\r\n this.calendar.changeView('week');\r\n this.calendar.render(true); // <-- so that selection is cleared\r\n }\r\n\r\n onDayView() {\r\n this.calendar.changeView('day');\r\n }\r\n\r\n\r\n getDate() {\r\n let date = this.calendar.getDate();\r\n let str = date.toDate().toLocaleDateString(\"en-US\", {\r\n year: 'numeric',\r\n month: 'short',\r\n });\r\n return str;\r\n }\r\n\r\n createTUICalendar() {\r\n let ioptions = this.preprocessIOptions(null);\r\n // console.warn(`calendar.component.ts: createTUICalendar: ioptions:`, ioptions);\r\n this.calendar = new Calendar('#calendar', ioptions);\r\n // console.warn(`calendar.component.ts: createTUICalendar: this.calendar:`, this.calendar);\r\n this.calendar.toggleScheduleView(true);\r\n\r\n }\r\n\r\n\r\n bindCallbacks() {\r\n this.bindAfterRenderSchedule();\r\n this.bindClickTimezonesCollapseBtn();\r\n this.bindClickDayname();\r\n this.bindClickMore();\r\n this.bindClickSchedule();\r\n this.bindBeforeCreateSchedule();\r\n this.bindBeforeUpdateSchedule();\r\n this.bindBeforeDeleteSchedule();\r\n }\r\n\r\n bindAfterRenderSchedule() {\r\n let that = this;\r\n this.calendar.on('afterRenderSchedule', function (event: { schedule: ISchedule }) {\r\n // console.warn(`afterRenderSchedule`, event);\r\n });\r\n }\r\n\r\n bindClickTimezonesCollapseBtn() {\r\n let that = this;\r\n this.calendar.on('clickTimezonesCollapseBtn', function (timezonesCollapsed: boolean) {\r\n // console.warn(`clickTimezonesCollapseBtn`, timezonesCollapsed);\r\n });\r\n }\r\n\r\n\r\n bindClickDayname() {\r\n let that = this;\r\n this.calendar.on('clickDayname', function (event: IEventDateObject) {\r\n // console.warn(`clickDayname`, event);\r\n });\r\n }\r\n\r\n bindClickMore() {\r\n let that = this;\r\n this.calendar.on('clickMore', function (event: IEventMoreObject) {\r\n // console.warn(`clickMore`, event);\r\n });\r\n }\r\n\r\n bindClickSchedule() {\r\n // only works if useDetailPopup: false,\r\n let that = this;\r\n this.calendar.on('clickSchedule', function (event: IEventScheduleObject) {\r\n // console.warn(`clickSchedule`, event);\r\n let schedule: ISchedule = { ...event.schedule };\r\n schedule.start = (new LocalDate(schedule.start)).toDate();\r\n schedule.end = (new LocalDate(schedule.end)).toDate();\r\n that.openPopupScheduleEditor(schedule);\r\n });\r\n }\r\n\r\n bindBeforeCreateSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeCreateSchedule', function (event: TEventBeforeCreateSchedule) {\r\n // console.log(`beforeCreateSchedule`, event);\r\n let start: Date = (new LocalDate(event.start)).toDate();\r\n start.setHours(9);\r\n let end: Date = (new LocalDate(event.end)).toDate();\r\n end.setHours(10);\r\n that.openPopupScheduleEditor({\r\n title: '',\r\n start: start,\r\n end: end,\r\n id: null,\r\n } as ISchedule);\r\n });\r\n }\r\n\r\n bindBeforeUpdateSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeUpdateSchedule', function (event: IEventObject) {\r\n // console.log(`beforeUpdateSchedule`, event);\r\n that.updateScheduleAndNotifyParent(event);\r\n });\r\n }\r\n\r\n bindBeforeDeleteSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeDeleteSchedule', function (event: IEventScheduleObject) {\r\n // console.log(`beforeDeleteSchedule`, event.schedule);\r\n // console.log(`beforeDeleteSchedule`, event.schedule);\r\n that.deleteScheduleAndNotifyParent({ id: event.schedule.id, calendarId: event.schedule.calendarId });\r\n });\r\n }\r\n\r\n nextColor() {\r\n let color = this.colors[this.colorIndex++].hex();\r\n if (this.colorIndex >= this.colors.length) this.colorIndex = 0;\r\n return color;\r\n }\r\n\r\n createScheduleAndNotifyParent(args: ISchedule) {\r\n let schedule = this.createSchedule(args);\r\n this.userCreatedSchedule.emit(schedule);\r\n return schedule;\r\n }\r\n\r\n createSchedules(schedules: ISchedule[]) {\r\n let newSchedules = [];\r\n for (let schedule of schedules) {\r\n newSchedules.push(this.createSchedule(schedule));\r\n }\r\n return newSchedules;\r\n }\r\n\r\n createSchedule(args: ISchedule): ISchedule {\r\n // if (form.invalid) return;\r\n\r\n // create a color\r\n let color = this.nextColor();\r\n // console.log(color);\r\n\r\n // create an id\r\n let id = (args.id == null) ? '' : args.id.toString();\r\n if (id.length === 0) {\r\n id = uuidv4();\r\n }\r\n\r\n let start: Date = LocalDate.convertToJsDate(args.start);\r\n let end: Date = LocalDate.convertToJsDate(args.end);\r\n\r\n let schedule: ISchedule = {\r\n id,\r\n calendarId: (args.calendarId == null) ? this.calendarId : args.calendarId,\r\n title: args.title,\r\n start: start,\r\n end: end,\r\n category: args.category,\r\n isAllDay: args.isAllDay,\r\n dueDateClass: '',\r\n bgColor: color,\r\n } as ISchedule\r\n // console.log(`event-calendar.component.ts: createEvent:`, schedule);\r\n this.calendar.createSchedules([schedule]);\r\n return this.calendar.getSchedule(schedule.id, schedule.calendarId);\r\n }\r\n\r\n updateScheduleAndNotifyParent(args: ISchedule) {\r\n let schedule = this.updateSchedule(args);\r\n this.userUpdatedSchedule.emit(schedule);\r\n return schedule;\r\n }\r\n\r\n updateSchedule(schedule: ISchedule) {\r\n // console.log(`event-calendar.component.ts: updateSchedule:`, schedule);\r\n let calendarId = (schedule.calendarId == null) ? this.calendarId : schedule.calendarId;\r\n this.calendar.updateSchedule(schedule.id, calendarId, schedule, false);\r\n return this.calendar.getSchedule(schedule.id, calendarId);\r\n }\r\n\r\n getSchedule(args: { id: string, calendarId: string }) {\r\n // console.log(`event-calendar.component.ts: getSchedule:`, schedule);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n return this.calendar.getSchedule(args.id, calendarId);\r\n }\r\n\r\n deleteScheduleAndNotifyParent(args: { id: string, calendarId: string }) {\r\n this.deleteSchedule(args);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n this.userDeletedSchedule.emit({ id: args.id, calendarId });\r\n }\r\n\r\n deleteSchedule(args: { id: string, calendarId: string }) {\r\n // console.log(`event-calendar.component.ts: deleteSchedule:`, schedule);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n this.calendar.deleteSchedule(args.id, calendarId, false);\r\n }\r\n\r\n deleteAllSchedules() {\r\n this.calendar.clear();\r\n }\r\n\r\n openPopupScheduleEditor(schedule: ISchedule) {\r\n // console.log('openPopupScheduleEditor: calevent:', schedule);\r\n const dialogConfig = new MatDialogConfig();\r\n if (this.appliedOptions.themeClass) {\r\n dialogConfig.panelClass = this.appliedOptions.themeClass;\r\n }\r\n // console.warn(`options: `, this.appliedOptions);\r\n dialogConfig.data = { schedule, darkMode: this.appliedOptions.darkMode, themeClass: this.appliedOptions.themeClass } as CalendarEditorOptions;\r\n dialogConfig.autoFocus = true;\r\n const dialogRef = this.dialog.open(NgxMatTuiCalendarEditorDialogComponent, dialogConfig);\r\n // const dialogRef = this.dialog.open(NgxMatTuiCalendarScheduleEditorDialogComponent, {\r\n // data: schedule,\r\n // });\r\n dialogRef.afterClosed().subscribe((result: { schedule: ISchedule, performDelete: boolean }) => {\r\n // console.log('openPopupScheduleEditor: The dialog was closed', result);\r\n this.calendar.render(true); // <-- so that selection is cleared\r\n if (result && result.schedule) {\r\n let schedule = result.schedule;\r\n if (result.performDelete == true) {\r\n // delete\r\n // console.log(`openPopupScheduleEditor:afterCLosed: deleteSchedule`);\r\n this.deleteScheduleAndNotifyParent({ id: schedule.id, calendarId: schedule.calendarId });\r\n } else if (schedule.id == null) {\r\n // console.log(`openPopupScheduleEditor:afterCLosed: addSchedule`);\r\n this.createScheduleAndNotifyParent(schedule);\r\n } else {\r\n // console.log(`openPopupScheduleEditor:afterCLosed: updateSchedule`);\r\n this.updateScheduleAndNotifyParent(schedule);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n setOptions(options: CalendarOptions) {\r\n if (options == null) {\r\n options = this.getDefaultOptions();\r\n }\r\n options.ioptions = this.setIOptions(options.ioptions);\r\n this.appliedOptions = {...options};\r\n }\r\n\r\n setIOptions(ioptionsIn: IOptions) {\r\n let ioptions = this.preprocessIOptions(ioptionsIn);\r\n this.calendar.setOptions(ioptions);\r\n this.calendar.setTheme(ioptions.theme);\r\n this.calendar.render(true);\r\n this.calendar.toggleScheduleView(true);\r\n return ioptions;\r\n }\r\n\r\n preprocessIOptions(ioptions: IOptions): IOptions {\r\n let defs: IOptions = this.getDefaultIOptions();\r\n if (ioptions == null) {\r\n ioptions = defs;\r\n } else {\r\n ioptions = { ...defs, ...ioptions };\r\n }\r\n ioptions.useCreationPopup = false;\r\n ioptions.useDetailPopup = false;\r\n if (!ioptions.theme) {\r\n ioptions.theme = this.getDefaultTheme();\r\n }\r\n return ioptions;\r\n }\r\n\r\n\r\n getDefaultOptions(): CalendarOptions {\r\n return {\r\n darkMode: false,\r\n themeClass: null,\r\n ioptions: this.getDefaultIOptions(),\r\n } as CalendarOptions;\r\n }\r\n\r\n getDefaultIOptions(): IOptions {\r\n return {\r\n defaultView: 'month',\r\n taskView: true,\r\n useCreationPopup: false,\r\n useDetailPopup: false,\r\n theme: this.getDefaultTheme(),\r\n template: {\r\n monthDayname: function (dayname) {\r\n return '<span class=\"calendar-week-dayname-name\">' + dayname.label + '</span>';\r\n }\r\n },\r\n week: {\r\n // startDayOfWeek: undefined,\r\n // daynames: undefined,\r\n narrowWeekend: false,\r\n // workweek: true,\r\n showTimezoneCollapseButton: true,\r\n timezonesCollapsed: true,\r\n hourStart: 7,\r\n hourEnd: 20,\r\n } as IWeekOptions,\r\n } as IOptions;\r\n\r\n }\r\n\r\n getColor(name: string): string {\r\n const el = document.getElementById(`theme-${name}`);\r\n if (el) {\r\n const style = window.getComputedStyle(el, null);\r\n // console.warn(`theme-${name} color:`, style.color);\r\n return style.color;\r\n }\r\n return '';\r\n }\r\n\r\n getDefaultTheme(): ITheme {\r\n function adjustHexOpacity(color, opacity) {\r\n const r = parseInt(color.slice(1, 3), 16);\r\n const g = parseInt(color.slice(3, 5), 16);\r\n const b = parseInt(color.slice(5, 7), 16);\r\n\r\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + opacity + ')';\r\n }\r\n\r\n // default keys and styles\r\n // TODO: apply Material Design Theme \r\n let background = this.getColor(\"background\");\r\n let border = this.getColor(\"divider\");\r\n let borderLight = this.getColor(\"divider-light\");\r\n let shadow = this.getColor(\"divider\");\r\n let highlight = this.getColor(\"highlight\");\r\n let primary = this.getColor(\"primary\");\r\n let warn = this.getColor(\"warn\");\r\n let text = this.getColor(\"foreground\");\r\n let primaryShaded = this.getColor(\"primary-shaded\");\r\n\r\n // tui-full-calendar-weekday-schedule-title\r\n //calendar-week-dayname-name\r\n return {\r\n 'common.border': `1px solid ${border}`,\r\n 'common.backgroundColor': background,\r\n 'common.holiday.color': warn,\r\n 'common.saturday.color': text,\r\n 'common.dayname.color': text,\r\n 'common.today.color': '#0f0',\r\n\r\n // creation guide style\r\n 'common.creationGuide.backgroundColor': primaryShaded,\r\n 'common.creationGuide.border': `1px solid ${highlight}`,\r\n\r\n // month header 'dayname'\r\n 'month.dayname.height': '31px',\r\n 'month.dayname.borderLeft': `1px solid ${border}`,\r\n 'month.dayname.paddingLeft': '10px',\r\n 'month.dayname.paddingRight': '10px',\r\n 'month.dayname.backgroundColor': 'inherit',\r\n 'month.dayname.fontSize': '12px',\r\n 'month.dayname.fontWeight': 'normal',\r\n 'month.dayname.textAlign': 'left',\r\n\r\n // month day grid cell 'day'\r\n 'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\r\n 'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\r\n 'month.weekend.backgroundColor': 'inherit',\r\n 'month.day.fontSize': '14px',\r\n 'month.schedule.color': highlight,\r\n\r\n // month schedule style\r\n 'month.schedule.borderRadius': '2px',\r\n 'month.schedule.height': '24px',\r\n 'month.schedule.marginTop': '2px',\r\n 'month.schedule.marginLeft': '8px',\r\n 'month.schedule.marginRight': '8px',\r\n\r\n // month more view\r\n 'month.moreView.border': `1px solid ${border}`,\r\n 'month.moreView.boxShadow': `0 2px 6px 0 ${shadow}`,\r\n 'month.moreView.backgroundColor': background,\r\n 'month.moreView.paddingBottom': '17px',\r\n 'month.moreViewTitle.height': '44px',\r\n 'month.moreViewTitle.marginBottom': '12px',\r\n 'month.moreViewTitle.backgroundColor': 'inherit',\r\n 'month.moreViewTitle.borderBottom': 'none',\r\n 'month.moreViewTitle.padding': '12px 17px 0 17px',\r\n 'month.moreViewList.padding': '0 17px',\r\n\r\n // week header 'dayname'\r\n 'week.dayname.height': '42px',\r\n 'week.dayname.borderTop': `1px solid ${border}`,\r\n 'week.dayname.borderBottom': `1px solid ${border}`,\r\n 'week.dayname.borderLeft': 'inherit',\r\n 'week.dayname.paddingLeft': '0',\r\n 'week.dayname.backgroundColor': 'inherit',\r\n 'week.dayname.textAlign': 'left',\r\n 'week.today.color': text,\r\n 'week.pastDay.color': borderLight,\r\n\r\n // week vertical panel 'vpanel'\r\n 'week.vpanelSplitter.border': `1px solid ${border}`,\r\n 'week.vpanelSplitter.height': '3px',\r\n\r\n // week daygrid 'daygrid'\r\n 'week.daygrid.borderRight': `1px solid ${border}`,\r\n 'week.daygrid.backgroundColor': background,\r\n\r\n 'week.daygridLeft.width': '72px',\r\n 'week.daygridLeft.backgroundColor': background,\r\n 'week.daygridLeft.paddingRight': '8px',\r\n 'week.daygridLeft.borderRight': `1px solid ${border}`,\r\n\r\n\r\n 'week.today.backgroundColor': primaryShaded,\r\n 'week.weekend.backgroundColor': 'inherit',\r\n\r\n // week timegrid 'timegrid'\r\n 'week.timegridLeft.width': '72px',\r\n 'week.timegridLeft.backgroundColor': 'inherit',\r\n 'week.timegridLeft.borderRight': `1px solid ${border}`,\r\n 'week.timegridLeft.fontSize': '11px',\r\n 'week.timegridLeftTimezoneLabel.height': '40px',\r\n 'week.timegridLeftAdditionalTimezone.backgroundColor': background,\r\n\r\n 'week.timegridOneHour.height': '52px',\r\n 'week.timegridHalfHour.height': '26px',\r\n 'week.timegridHalfHour.borderBottom': 'none',\r\n 'week.timegridHorizontalLine.borderBottom': `1px solid ${border}`,\r\n\r\n 'week.timegrid.paddingRight': '8px',\r\n 'week.timegrid.borderRight': `1px solid ${border}`,\r\n 'week.timegridSchedule.borderRadius': '2px',\r\n 'week.timegridSchedule.paddingLeft': '2px',\r\n\r\n // #515ce6 is a slate blue\r\n\r\n 'week.currentTime.color': highlight,\r\n 'week.currentTime.fontSize': '11px',\r\n 'week.currentTime.fontWeight': 'normal',\r\n\r\n 'week.pastTime.color': borderLight,\r\n 'week.pastTime.fontWeight': 'normal',\r\n\r\n 'week.futureTime.color': border,\r\n 'week.futureTime.fontWeight': 'normal',\r\n\r\n 'week.currentTimeLinePast.border': `1px dashed ${highlight}`,\r\n 'week.currentTimeLineBullet.backgroundColor': highlight,\r\n 'week.currentTimeLineToday.border': `1px solid ${highlight}`,\r\n 'week.currentTimeLineFuture.border': 'none',\r\n\r\n // week creation guide style\r\n 'week.creationGuide.color': highlight,\r\n 'week.creationGuide.fontSize': '11px',\r\n 'week.creationGuide.fontWeight': 'bold',\r\n\r\n // week daygrid schedule style\r\n 'week.dayGridSchedule.borderRadius': '2px',\r\n 'week.dayGridSchedule.height': '24px',\r\n 'week.dayGridSchedule.marginTop': '2px',\r\n 'week.dayGridSchedule.marginLeft': '8px',\r\n 'week.dayGridSchedule.marginRight': '8px'\r\n } as ITheme;\r\n }\r\n\r\n}\r\n","<section class=\"content-container\">\r\n <!-- These divs are here so that we can read the theme colors for the tui theme -->\r\n <!-- The outer div gives the default color for when user does not provide an Angular theme -->\r\n <div style=\"color: blue;\"> <div id=\"theme-primary\"></div></div>\r\n <div style=\"color: blue;\"> <div id=\"theme-highlight\"></div></div>\r\n <div style=\"color: blue;\"> <div id=\"theme-accent\"></div></div>\r\n <div style=\"color: red;\"> <div id=\"theme-warn\"></div></div>\r\n <div style=\"color: rgba(0, 0, 255, 0.2);\"> <div id=\"theme-primary-shaded\"></div></div>\r\n <div style=\"color: #3e3e3e;\"> <div id=\"theme-foreground\"></div></div>\r\n <div style=\"color: #e0e0e0;\"> <div id=\"theme-divider\"></div></div>\r\n <div style=\"color: white;\"> <div id=\"theme-background\"></div></div>\r\n \r\n <div class=\"calendar-container\">\r\n <!-- calendar titlebar -->\r\n <mat-toolbar class=\"menu-bar\" color=\"primary\">\r\n <!-- <div style=\"align-self: center;display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\"> -->\r\n <div style=\"display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n width: 100%; \">\r\n <div class=\"left-div\">\r\n <!-- LEFT -->\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.5rem !important;\" \r\n (click)=\"onCalendarLongPrev()\">\r\n <fa-icon [icon]=\"iconLongPrev\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\" \r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 2rem !important;\" \r\n (click)=\"onCalendarPrev()\">\r\n <fa-icon [icon]=\"iconPrev\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.7rem !important;\" \r\n (click)=\"onCalendarToday()\">\r\n <fa-icon [icon]=\"iconToday\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\" \r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 2rem !important;\" \r\n (click)=\"onCalendarNext()\">\r\n <fa-icon [icon]=\"iconNext\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.5rem !important;\" \r\n (click)=\"onCalendarLongNext()\">\r\n <fa-icon [icon]=\"iconLongNext\"></fa-icon>\r\n </button>\r\n </div>\r\n <div class=\"center-div\">\r\n <!-- CENTER -->\r\n <span class=\"event-calendar-title\">{{ getDate() }}</span>\r\n </div>\r\n <div class=\"right-div\">\r\n \r\n <!-- RIGHT -->\r\n <mat-button-toggle-group class=\"view-button\" value=\"month\" id=\"@+id/toggleButton\" layout_width=\"wrap_content\"\r\n layout_height=\"wrap_content\">\r\n <mat-button-toggle mat-button value=\"month\" class=\"view-button\" (click)=\"onMonthView()\">\r\n <fa-icon [icon]=\"iconByMonth\"></fa-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle mat-button value=\"week\" class=\"view-button\" (click)=\"onWeekView()\">\r\n <fa-icon [icon]=\"iconByWeek\"></fa-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle mat-button value=\"day\" class=\"view-button\" (click)=\"onDayView()\">\r\n <fa-icon [icon]=\"iconByDay\"></fa-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </mat-toolbar>\r\n <ngx-mat-tui-calendar-wrapper></ngx-mat-tui-calendar-wrapper>\r\n </div>\r\n \r\n </section>\r\n","\r\n// Angular modules\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FlexModule, FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\n// Angular Material Design modules\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\n\r\n// 3rd party modules\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { MatTimepickerModule } from 'mat-timepicker';\r\n\r\n// collect all of the above modules into an array\r\nconst importedModules = [\r\n BrowserAnimationsModule,\r\n BrowserModule,\r\n FlexLayoutModule,\r\n FlexModule, \r\n FormsModule,\r\n HttpClientModule,\r\n OverlayModule,\r\n ReactiveFormsModule,\r\n\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatNativeDateModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSlideToggleModule,\r\n MatToolbarModule,\r\n\r\n FontAwesomeModule,\r\n MatTimepickerModule,\r\n ];\r\n\r\n\r\n// project modules\r\nimport { NgxMatTuiCalendarComponent } from './ngx-mat-tui-calendar.component';\r\nimport { NgxMatTuiCalendarWrapperComponent } from './ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component';\r\nimport { NgxMatTuiCalendarEditorDialogComponent } from './ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\r\n\r\nconst projectModules = [\r\n NgxMatTuiCalendarComponent,\r\n NgxMatTuiCalendarWrapperComponent,\r\n NgxMatTuiCalendarEditorDialogComponent,\r\n];\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ...projectModules,\r\n ],\r\n imports: [\r\n ...importedModules,\r\n ],\r\n exports: [\r\n ...importedModules,\r\n\r\n ...projectModules,\r\n ],\r\n entryComponents: [\r\n ...projectModules,\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class NgxMatTuiCalendarModule { }\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxMatTuiCalendarService {\n\n constructor() { }\n}\n","/*\n * Public API Surface of ngx-mat-tui-calendar\n */\n\nexport * from './lib/ngx-mat-tui-calendar.module';\nexport * from './lib/ngx-mat-tui-calendar.service';\nexport * from './lib/ngx-mat-tui-calendar.component';\nexport * from './lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\nexport * from './lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component';\n\nexport * from './lib/calendar-options';\nexport * from './lib/calendar-editor-options';\nexport * from './lib/local-date';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FormGroup","FormControl","Validators","MAT_DIALOG_DATA","Component","Inject","ViewEncapsulation","faCalendarCheck","faCaretLeft","faCaretRight","faBackward","faForward","faTable","faColumns","faListAlt","EventEmitter","distinctColors","uuidv4","Calendar","MatDialogConfig","Output","Input","BrowserAnimationsModule","BrowserModule","FlexLayoutModule","FlexModule","FormsModule","HttpClientModule","OverlayModule","ReactiveFormsModule","MatButtonModule","MatButtonToggleModule","MatCardModule","MatDatepickerModule","MatDialogModule","MatDividerModule","MatFormFieldModule","MatIconModule","MatInputModule","MatNativeDateModule","MatRadioModule","MatRippleModule","MatSlideToggleModule","MatToolbarModule","FontAwesomeModule","MatTimepickerModule","NgModule","CUSTOM_ELEMENTS_SCHEMA","Injectable"],"mappings":"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"}
@@ -134,6 +134,7 @@ export class NgxMatTuiCalendarComponent {
134
134
  // console.warn(`calendar.component.ts: createTUICalendar: ioptions:`, ioptions);
135
135
  this.calendar = new Calendar('#calendar', ioptions);
136
136
  // console.warn(`calendar.component.ts: createTUICalendar: this.calendar:`, this.calendar);
137
+ this.calendar.toggleScheduleView(true);
137
138
  }
138
139
  bindCallbacks() {
139
140
  this.bindAfterRenderSchedule();
@@ -331,6 +332,7 @@ export class NgxMatTuiCalendarComponent {
331
332
  this.calendar.setOptions(ioptions);
332
333
  this.calendar.setTheme(ioptions.theme);
333
334
  this.calendar.render(true);
335
+ this.calendar.toggleScheduleView(true);
334
336
  return ioptions;
335
337
  }
336
338
  preprocessIOptions(ioptions) {
@@ -532,4 +534,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
532
534
  }], options: [{
533
535
  type: Input
534
536
  }] } });
535
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdC10dWktY2FsZW5kYXIvc3JjL2xpYi9uZ3gtbWF0LXR1aS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0LXR1aS1jYWxlbmRhci9zcmMvbGliL25neC1tYXQtdHVpLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUEwRCxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFDTCxlQUFlLEVBR2YsT0FBTyxFQUNQLFNBQVMsRUFFVCxTQUFTLEVBQ1QsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUNMLE9BQU8sSUFBSSxRQUFRLEdBYXBCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLFdBQVc7QUFDWCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sbUZBQW1GLENBQUM7Ozs7Ozs7O0FBVzNJLE1BQU0sT0FBTywwQkFBMEI7SUFzQnJDLFlBQW1CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFyQnBDLGNBQVMsR0FBRyxlQUFlLENBQUM7UUFDNUIsZ0NBQWdDO1FBQ2hDLGlDQUFpQztRQUNqQyxhQUFRLEdBQUcsV0FBVyxDQUFDO1FB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QzVELDRDQUE0QyxFQUFFLFNBQVM7WUFDdkQsa0NBQWtDLEVBQUUsYUFBYSxTQUFTLEVBQUU7WUFDNUQsbUNBQW1DLEVBQUUsTUFBTTtZQUUzQyw0QkFBNEI7WUFDNUIsMEJBQTBCLEVBQUUsU0FBUztZQUNyQyw2QkFBNkIsRUFBRSxNQUFNO1lBQ3JDLCtCQUErQixFQUFFLE1BQU07WUFFdkMsOEJBQThCO1lBQzlCLG1DQUFtQyxFQUFFLEtBQUs7WUFDMUMsNkJBQTZCLEVBQUUsTUFBTTtZQUNyQyxnQ0FBZ0MsRUFBRSxLQUFLO1lBQ3ZDLGlDQUFpQyxFQUFFLEtBQUs7WUFDeEMsa0NBQWtDLEVBQUUsS0FBSztTQUNoQyxDQUFDO0lBQ2QsQ0FBQzs7d0hBamtCVSwwQkFBMEI7NEdBQTFCLDBCQUEwQixrUUNsRHZDLHNrSUFpRkE7NEZEL0JhLDBCQUEwQjtrQkFQdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxXQUFXLEVBQUUsdUNBQXVDO29CQUNwRCxTQUFTLEVBQUU7d0JBQ1QsdUNBQXVDO3FCQUN4QztpQkFDRjtnR0FpQlcsbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0UsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgZGlzdGluY3RDb2xvcnMgZnJvbSAnZGlzdGluY3QtY29sb3JzJztcclxuaW1wb3J0IHsgQ29sb3IgfSBmcm9tIFwiY2hyb21hLWpzXCI7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5cclxuaW1wb3J0IHtcclxuICBmYUNhbGVuZGFyQ2hlY2ssXHJcbiAgZmFDYXJldFNxdWFyZUxlZnQsXHJcbiAgZmFDYXJldFNxdWFyZVJpZ2h0LFxyXG4gIGZhVGFibGUsXHJcbiAgZmFDb2x1bW5zLFxyXG4gIGZhTGlzdCxcclxuICBmYUxpc3RBbHQsXHJcbiAgZmFGb3J3YXJkLFxyXG4gIGZhRmFzdEJhY2t3YXJkLFxyXG4gIGZhQmFja3dhcmQsXHJcbiAgZmFDYXJldExlZnQsXHJcbiAgZmFDYXJldFJpZ2h0LFxyXG59IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XHJcbmltcG9ydCB7XHJcbiAgZGVmYXVsdCBhcyBDYWxlbmRhcixcclxuICBJQ2FsZW5kYXJJbmZvLFxyXG4gIElFdmVudERhdGVPYmplY3QsXHJcbiAgSUV2ZW50TW9yZU9iamVjdCxcclxuICBJRXZlbnRPYmplY3QsXHJcbiAgSUV2ZW50U2NoZWR1bGVPYmplY3QsXHJcbiAgSU9wdGlvbnMsXHJcbiAgSVNjaGVkdWxlLFxyXG4gIElUaGVtZSxcclxuICBJVGltZXpvbmUsXHJcbiAgSVdlZWtPcHRpb25zLFxyXG4gIFRFdmVudEJlZm9yZUNyZWF0ZVNjaGVkdWxlLFxyXG4gIFRaRGF0ZSxcclxufSBmcm9tICd0dWktY2FsZW5kYXInO1xyXG5cclxuLy8gcHJvamVjdCBcclxuaW1wb3J0IHsgTG9jYWxEYXRlIH0gZnJvbSAnLi9sb2NhbC1kYXRlLmpzJztcclxuaW1wb3J0IHsgTmd4TWF0VHVpQ2FsZW5kYXJFZGl0b3JEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cvbmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYWxlbmRhck9wdGlvbnMgfSBmcm9tICcuL2NhbGVuZGFyLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDYWxlbmRhckVkaXRvck9wdGlvbnMgfSBmcm9tICcuL2NhbGVuZGFyLWVkaXRvci1vcHRpb25zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LW1hdC10dWktY2FsZW5kYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtbWF0LXR1aS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9uZ3gtbWF0LXR1aS1jYWxlbmRhci5jb21wb25lbnQuc2NzcydcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4TWF0VHVpQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBpY29uVG9kYXkgPSBmYUNhbGVuZGFyQ2hlY2s7XHJcbiAgLy8gaWNvblByZXYgPSBmYUNhcmV0U3F1YXJlTGVmdDtcclxuICAvLyBpY29uTmV4dCA9IGZhQ2FyZXRTcXVhcmVSaWdodDtcclxuICBpY29uUHJldiA9IGZhQ2FyZXRMZWZ0O1xyXG4gIGljb25OZXh0ID0gZmFDYXJldFJpZ2h0O1xyXG4gIGljb25Mb25nUHJldiA9IGZhQmFja3dhcmQ7XHJcbiAgaWNvbkxvbmdOZXh0ID0gZmFGb3J3YXJkO1xyXG4gIGljb25CeU1vbnRoID0gZmFUYWJsZTtcclxuICBpY29uQnlXZWVrID0gZmFDb2x1bW5zO1xyXG4gIGljb25CeURheSA9IGZhTGlzdEFsdDtcclxuXHJcbiAgY2FsZW5kYXI6IENhbGVuZGFyOyAgLy8gdGhlIFRVSSBDYWxlbmRhciBPYmplY3RcclxuICBjYWxlbmRhcklkOiBzdHJpbmc7XHJcbiAgY29sb3JzOiBDb2xvcltdO1xyXG4gIGNvbG9ySW5kZXg6IG51bWJlcjtcclxuICBAT3V0cHV0KCkgdXNlckNyZWF0ZWRTY2hlZHVsZTogRXZlbnRFbWl0dGVyPElTY2hlZHVsZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVzZXJVcGRhdGVkU2NoZWR1bGU6IEV2ZW50RW1pdHRlcjxJU2NoZWR1bGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1c2VyRGVsZXRlZFNjaGVkdWxlOiBFdmVudEVtaXR0ZXI8SVNjaGVkdWxlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBvcHRpb25zOiBDYWxlbmRhck9wdGlvbnM7XHJcbiAgYXBwbGllZE9wdGlvbnM6IENhbGVuZGFyT3B0aW9uczsgLy8gdGhpcyBpcyBuZWVkZWQgZm9yIHdoZW4gb3B0aW9ucyBpcyBub3QgY29ubmVjdGVkXHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgLy8gd2Ugc2xpY2Ugb2ZmIHRoZSBmaXJzdCBjb2xvciBzaW5jZSBpdCBpcyBncmF5XHJcbiAgICB0aGlzLmNvbG9ycyA9IGRpc3RpbmN0Q29sb3JzKHsgbGlnaHRNaW46IDcwLCBjb3VudDogMTUgfSkuc2xpY2UoMSk7XHJcbiAgICB0aGlzLmNvbG9ySW5kZXggPSAwO1xyXG4gICAgdGhpcy5jYWxlbmRhcklkID0gdXVpZHY0KCk7XHJcblxyXG4gICAgdGhpcy5hcHBsaWVkT3B0aW9ucyA9IHRoaXMuZ2V0RGVmYXVsdE9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gY29uc29sZS53YXJuKGBjYWxlbmRhci5jb21wb25lbnQudHM6IG5nT25pdGApXHJcbiAgICB0aGlzLmNyZWF0ZVRVSUNhbGVuZGFyKCk7XHJcbiAgICB0aGlzLmJpbmRDYWxsYmFja3MoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIC8vIGNvbnNvbGUud2FybihjaGFuZ2VzKTtcclxuICAgIGlmICh0aGlzLmNhbGVuZGFyKSB7XHJcblxyXG4gICAgICBpZiAoY2hhbmdlcy5vcHRpb25zKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS53YXJuKGBjaGFuZ2Uub3B0aW9uOmAsIGNoYW5nZXMub3B0aW9ucyk7XHJcbiAgICAgICAgbGV0IG9wdGlvbnMgPSBjaGFuZ2VzLm9wdGlvbnMuY3VycmVudFZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5jYWxlbmRhci5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGVuZGFyTG9uZ1ByZXYoKSB7XHJcbiAgICBsZXQgZGF0ZTogRGF0ZSA9ICh0aGlzLmNhbGVuZGFyLmdldERhdGUoKSBhcyBUWkRhdGUpLnRvRGF0ZSgpO1xyXG4gICAgbGV0IGRheXMgPSAwO1xyXG4gICAgbGV0IG1vbnRocyA9IDA7XHJcbiAgICBsZXQgeWVhcnMgPSAwO1xyXG4gICAgc3dpdGNoICh0aGlzLmNhbGVuZGFyLmdldFZpZXdOYW1lKCkpIHtcclxuICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICBkYXlzID0gLTc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3dlZWsnOlxyXG4gICAgICAgIGRheXMgPSAtMjg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICB5ZWFycyA9IC0xO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyB5ZWFycyk7XHJcbiAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG1vbnRocyk7ICAvLyBkYXRlIGNsYXNzIGRvZXMgdGhlIG1vZHVsYXIgYXJpdGhtZXRpY1xyXG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGF5cyk7ICAvLyBkYXRlIGNsYXNzIGRvZXMgdGhlIG1vZHVsYXIgYXJpdGhtZXRpY1xyXG4gICAgdGhpcy5jYWxlbmRhci5zZXREYXRlKGRhdGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGVuZGFyUHJldigpIHtcclxuICAgIHRoaXMuY2FsZW5kYXIucHJldigpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGVuZGFyVG9kYXkoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnRvZGF5KCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnRvZ2dsZVNjaGVkdWxlVmlldyh0cnVlKTtcclxuICB9XHJcblxyXG4gIG9uQ2FsZW5kYXJOZXh0KCkge1xyXG4gICAgdGhpcy5jYWxlbmRhci5uZXh0KCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnRvZ2dsZVNjaGVkdWxlVmlldyh0cnVlKTtcclxuICB9XHJcblxyXG4gIG9uQ2FsZW5kYXJMb25nTmV4dCgpIHtcclxuICAgIGxldCBkYXRlOiBEYXRlID0gKHRoaXMuY2FsZW5kYXIuZ2V0RGF0ZSgpIGFzIFRaRGF0ZSkudG9EYXRlKCk7XHJcbiAgICBsZXQgZGF5cyA9IDA7XHJcbiAgICBsZXQgbW9udGhzID0gMDtcclxuICAgIGxldCB5ZWFycyA9IDA7XHJcbiAgICBzd2l0Y2ggKHRoaXMuY2FsZW5kYXIuZ2V0Vmlld05hbWUoKSkge1xyXG4gICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgIGRheXMgPSA3O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICBkYXlzID0gMjg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICB5ZWFycyA9IDE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIHllYXJzKTtcclxuICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgbW9udGhzKTsgIC8vIGRhdGUgY2xhc3MgZG9lcyB0aGUgbW9kdWxhciBhcml0aG1ldGljXHJcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkYXlzKTsgIC8vIGRhdGUgY2xhc3MgZG9lcyB0aGUgbW9kdWxhciBhcml0aG1ldGljXHJcbiAgICB0aGlzLmNhbGVuZGFyLnNldERhdGUoZGF0ZSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnRvZ2dsZVNjaGVkdWxlVmlldyh0cnVlKTtcclxuICB9XHJcblxyXG5cclxuICBvbk1vbnRoVmlldygpIHtcclxuICAgIHRoaXMuY2FsZW5kYXIuY2hhbmdlVmlldygnbW9udGgnKTtcclxuICB9XHJcblxyXG4gIG9uV2Vla1ZpZXcoKSB7XHJcbiAgICBjb25zb2xlLmxvZyhgb25XZWVrVmlld2ApXHJcbiAgICB0aGlzLmNhbGVuZGFyLmNoYW5nZVZpZXcoJ3dlZWsnKTtcclxuICAgIHRoaXMuY2FsZW5kYXIucmVuZGVyKHRydWUpOyAgLy8gPC0tIHNvIHRoYXQgc2VsZWN0aW9uIGlzIGNsZWFyZWRcclxuICB9XHJcblxyXG4gIG9uRGF5VmlldygpIHtcclxuICAgIHRoaXMuY2FsZW5kYXIuY2hhbmdlVmlldygnZGF5Jyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGF0ZSgpIHtcclxuICAgIGxldCBkYXRlID0gdGhpcy5jYWxlbmRhci5nZXREYXRlKCk7XHJcbiAgICBsZXQgc3RyID0gZGF0ZS50b0RhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1VU1wiLCB7XHJcbiAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgbW9udGg6ICdzaG9ydCcsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUVUlDYWxlbmRhcigpIHtcclxuICAgIGxldCBpb3B0aW9ucyA9IHRoaXMucHJlcHJvY2Vzc0lPcHRpb25zKG51bGwpO1xyXG4gICAgLy8gY29uc29sZS53YXJuKGBjYWxlbmRhci5jb21wb25lbnQudHM6IGNyZWF0ZVRVSUNhbGVuZGFyOiBpb3B0aW9uczpgLCBpb3B0aW9ucyk7XHJcbiAgICB0aGlzLmNhbGVuZGFyID0gbmV3IENhbGVuZGFyKCcjY2FsZW5kYXInLCBpb3B0aW9ucyk7XHJcbiAgICAvLyBjb25zb2xlLndhcm4oYGNhbGVuZGFyLmNvbXBvbmVudC50czogY3JlYXRlVFVJQ2FsZW5kYXI6IHRoaXMuY2FsZW5kYXI6YCwgdGhpcy5jYWxlbmRhcik7XHJcbiAgfVxyXG5cclxuXHJcbiAgYmluZENhbGxiYWNrcygpIHtcclxuICAgIHRoaXMuYmluZEFmdGVyUmVuZGVyU2NoZWR1bGUoKTtcclxuICAgIHRoaXMuYmluZENsaWNrVGltZXpvbmVzQ29sbGFwc2VCdG4oKTtcclxuICAgIHRoaXMuYmluZENsaWNrRGF5bmFtZSgpO1xyXG4gICAgdGhpcy5iaW5kQ2xpY2tNb3JlKCk7XHJcbiAgICB0aGlzLmJpbmRDbGlja1NjaGVkdWxlKCk7XHJcbiAgICB0aGlzLmJpbmRCZWZvcmVDcmVhdGVTY2hlZHVsZSgpO1xyXG4gICAgdGhpcy5iaW5kQmVmb3JlVXBkYXRlU2NoZWR1bGUoKTtcclxuICAgIHRoaXMuYmluZEJlZm9yZURlbGV0ZVNjaGVkdWxlKCk7XHJcbiAgfVxyXG5cclxuICBiaW5kQWZ0ZXJSZW5kZXJTY2hlZHVsZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuY2FsZW5kYXIub24oJ2FmdGVyUmVuZGVyU2NoZWR1bGUnLCBmdW5jdGlvbiAoZXZlbnQ6IHsgc2NoZWR1bGU6IElTY2hlZHVsZSB9KSB7XHJcbiAgICAgIC8vIGNvbnNvbGUud2FybihgYWZ0ZXJSZW5kZXJTY2hlZHVsZWAsIGV2ZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmluZENsaWNrVGltZXpvbmVzQ29sbGFwc2VCdG4oKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuJywgZnVuY3Rpb24gKHRpbWV6b25lc0NvbGxhcHNlZDogYm9vbGVhbikge1xyXG4gICAgICAvLyBjb25zb2xlLndhcm4oYGNsaWNrVGltZXpvbmVzQ29sbGFwc2VCdG5gLCB0aW1lem9uZXNDb2xsYXBzZWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYmluZENsaWNrRGF5bmFtZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuY2FsZW5kYXIub24oJ2NsaWNrRGF5bmFtZScsIGZ1bmN0aW9uIChldmVudDogSUV2ZW50RGF0ZU9iamVjdCkge1xyXG4gICAgICAvLyBjb25zb2xlLndhcm4oYGNsaWNrRGF5bmFtZWAsIGV2ZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmluZENsaWNrTW9yZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuY2FsZW5kYXIub24oJ2NsaWNrTW9yZScsIGZ1bmN0aW9uIChldmVudDogSUV2ZW50TW9yZU9iamVjdCkge1xyXG4gICAgICAvLyBjb25zb2xlLndhcm4oYGNsaWNrTW9yZWAsIGV2ZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmluZENsaWNrU2NoZWR1bGUoKSB7XHJcbiAgICAvLyBvbmx5IHdvcmtzIGlmIHVzZURldGFpbFBvcHVwOiBmYWxzZSxcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuY2FsZW5kYXIub24oJ2NsaWNrU2NoZWR1bGUnLCBmdW5jdGlvbiAoZXZlbnQ6IElFdmVudFNjaGVkdWxlT2JqZWN0KSB7XHJcbiAgICAgIC8vIGNvbnNvbGUud2FybihgY2xpY2tTY2hlZHVsZWAsIGV2ZW50KTtcclxuICAgICAgbGV0IHNjaGVkdWxlOiBJU2NoZWR1bGUgPSB7IC4uLmV2ZW50LnNjaGVkdWxlIH07XHJcbiAgICAgIHNjaGVkdWxlLnN0YXJ0ID0gKG5ldyBMb2NhbERhdGUoc2NoZWR1bGUuc3RhcnQpKS50b0RhdGUoKTtcclxuICAgICAgc2NoZWR1bGUuZW5kID0gKG5ldyBMb2NhbERhdGUoc2NoZWR1bGUuZW5kKSkudG9EYXRlKCk7XHJcbiAgICAgIHRoYXQub3BlblBvcHVwU2NoZWR1bGVFZGl0b3Ioc2NoZWR1bGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBiaW5kQmVmb3JlQ3JlYXRlU2NoZWR1bGUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdiZWZvcmVDcmVhdGVTY2hlZHVsZScsIGZ1bmN0aW9uIChldmVudDogVEV2ZW50QmVmb3JlQ3JlYXRlU2NoZWR1bGUpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coYGJlZm9yZUNyZWF0ZVNjaGVkdWxlYCwgZXZlbnQpO1xyXG4gICAgICBsZXQgc3RhcnQ6IERhdGUgPSAobmV3IExvY2FsRGF0ZShldmVudC5zdGFydCkpLnRvRGF0ZSgpO1xyXG4gICAgICBzdGFydC5zZXRIb3Vycyg5KTtcclxuICAgICAgbGV0IGVuZDogRGF0ZSA9IChuZXcgTG9jYWxEYXRlKGV2ZW50LmVuZCkpLnRvRGF0ZSgpO1xyXG4gICAgICBlbmQuc2V0SG91cnMoMTApO1xyXG4gICAgICB0aGF0Lm9wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yKHtcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0LFxyXG4gICAgICAgIGVuZDogZW5kLFxyXG4gICAgICAgIGlkOiBudWxsLFxyXG4gICAgICB9IGFzIElTY2hlZHVsZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRCZWZvcmVVcGRhdGVTY2hlZHVsZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuY2FsZW5kYXIub24oJ2JlZm9yZVVwZGF0ZVNjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiBJRXZlbnRPYmplY3QpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coYGJlZm9yZVVwZGF0ZVNjaGVkdWxlYCwgZXZlbnQpO1xyXG4gICAgICB0aGF0LnVwZGF0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KGV2ZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmluZEJlZm9yZURlbGV0ZVNjaGVkdWxlKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgdGhpcy5jYWxlbmRhci5vbignYmVmb3JlRGVsZXRlU2NoZWR1bGUnLCBmdW5jdGlvbiAoZXZlbnQ6IElFdmVudFNjaGVkdWxlT2JqZWN0KSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVEZWxldGVTY2hlZHVsZWAsIGV2ZW50LnNjaGVkdWxlKTtcclxuICAgICAgLy8gY29uc29sZS5sb2coYGJlZm9yZURlbGV0ZVNjaGVkdWxlYCwgZXZlbnQuc2NoZWR1bGUpO1xyXG4gICAgICB0aGF0LmRlbGV0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KHsgaWQ6IGV2ZW50LnNjaGVkdWxlLmlkLCBjYWxlbmRhcklkOiBldmVudC5zY2hlZHVsZS5jYWxlbmRhcklkIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZXh0Q29sb3IoKSB7XHJcbiAgICBsZXQgY29sb3IgPSB0aGlzLmNvbG9yc1t0aGlzLmNvbG9ySW5kZXgrK10uaGV4KCk7XHJcbiAgICBpZiAodGhpcy5jb2xvckluZGV4ID49IHRoaXMuY29sb3JzLmxlbmd0aCkgdGhpcy5jb2xvckluZGV4ID0gMDtcclxuICAgIHJldHVybiBjb2xvcjtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KGFyZ3M6IElTY2hlZHVsZSkge1xyXG4gICAgbGV0IHNjaGVkdWxlID0gdGhpcy5jcmVhdGVTY2hlZHVsZShhcmdzKTtcclxuICAgIHRoaXMudXNlckNyZWF0ZWRTY2hlZHVsZS5lbWl0KHNjaGVkdWxlKTtcclxuICAgIHJldHVybiBzY2hlZHVsZTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVNjaGVkdWxlcyhzY2hlZHVsZXM6IElTY2hlZHVsZVtdKSB7XHJcbiAgICBsZXQgbmV3U2NoZWR1bGVzID0gW107XHJcbiAgICBmb3IgKGxldCBzY2hlZHVsZSBvZiBzY2hlZHVsZXMpIHtcclxuICAgICAgbmV3U2NoZWR1bGVzLnB1c2godGhpcy5jcmVhdGVTY2hlZHVsZShzY2hlZHVsZSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1NjaGVkdWxlcztcclxuICB9XHJcblxyXG4gIGNyZWF0ZVNjaGVkdWxlKGFyZ3M6IElTY2hlZHVsZSk6IElTY2hlZHVsZSB7XHJcbiAgICAvLyBpZiAoZm9ybS5pbnZhbGlkKSByZXR1cm47XHJcblxyXG4gICAgLy8gY3JlYXRlIGEgY29sb3JcclxuICAgIGxldCBjb2xvciA9IHRoaXMubmV4dENvbG9yKCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhjb2xvcik7XHJcblxyXG4gICAgLy8gY3JlYXRlIGFuIGlkXHJcbiAgICBsZXQgaWQgPSAoYXJncy5pZCA9PSBudWxsKSA/ICcnIDogYXJncy5pZC50b1N0cmluZygpO1xyXG4gICAgaWYgKGlkLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBpZCA9IHV1aWR2NCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzdGFydDogRGF0ZSA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUoYXJncy5zdGFydCk7XHJcbiAgICBsZXQgZW5kOiBEYXRlID0gTG9jYWxEYXRlLmNvbnZlcnRUb0pzRGF0ZShhcmdzLmVuZCk7XHJcblxyXG4gICAgbGV0IHNjaGVkdWxlOiBJU2NoZWR1bGUgPSB7XHJcbiAgICAgIGlkLFxyXG4gICAgICBjYWxlbmRhcklkOiAoYXJncy5jYWxlbmRhcklkID09IG51bGwpID8gdGhpcy5jYWxlbmRhcklkIDogYXJncy5jYWxlbmRhcklkLFxyXG4gICAgICB0aXRsZTogYXJncy50aXRsZSxcclxuICAgICAgc3RhcnQ6IHN0YXJ0LFxyXG4gICAgICBlbmQ6IGVuZCxcclxuICAgICAgY2F0ZWdvcnk6IGFyZ3MuY2F0ZWdvcnksXHJcbiAgICAgIGlzQWxsRGF5OiBhcmdzLmlzQWxsRGF5LFxyXG4gICAgICBkdWVEYXRlQ2xhc3M6ICcnLFxyXG4gICAgICBiZ0NvbG9yOiBjb2xvcixcclxuICAgIH0gYXMgSVNjaGVkdWxlXHJcbiAgICAvLyBjb25zb2xlLmxvZyhgZXZlbnQtY2FsZW5kYXIuY29tcG9uZW50LnRzOiBjcmVhdGVFdmVudDpgLCBzY2hlZHVsZSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNyZWF0ZVNjaGVkdWxlcyhbc2NoZWR1bGVdKTtcclxuICAgIHJldHVybiB0aGlzLmNhbGVuZGFyLmdldFNjaGVkdWxlKHNjaGVkdWxlLmlkLCBzY2hlZHVsZS5jYWxlbmRhcklkKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KGFyZ3M6IElTY2hlZHVsZSkge1xyXG4gICAgbGV0IHNjaGVkdWxlID0gdGhpcy51cGRhdGVTY2hlZHVsZShhcmdzKTtcclxuICAgIHRoaXMudXNlclVwZGF0ZWRTY2hlZHVsZS5lbWl0KHNjaGVkdWxlKTtcclxuICAgIHJldHVybiBzY2hlZHVsZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNjaGVkdWxlKHNjaGVkdWxlOiBJU2NoZWR1bGUpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGBldmVudC1jYWxlbmRhci5jb21wb25lbnQudHM6IHVwZGF0ZVNjaGVkdWxlOmAsIHNjaGVkdWxlKTtcclxuICAgIGxldCBjYWxlbmRhcklkID0gKHNjaGVkdWxlLmNhbGVuZGFySWQgPT0gbnVsbCkgPyB0aGlzLmNhbGVuZGFySWQgOiBzY2hlZHVsZS5jYWxlbmRhcklkO1xyXG4gICAgdGhpcy5jYWxlbmRhci51cGRhdGVTY2hlZHVsZShzY2hlZHVsZS5pZCwgY2FsZW5kYXJJZCwgc2NoZWR1bGUsIGZhbHNlKTtcclxuICAgIHJldHVybiB0aGlzLmNhbGVuZGFyLmdldFNjaGVkdWxlKHNjaGVkdWxlLmlkLCBjYWxlbmRhcklkKTtcclxuICB9XHJcblxyXG4gIGdldFNjaGVkdWxlKGFyZ3M6IHsgaWQ6IHN0cmluZywgY2FsZW5kYXJJZDogc3RyaW5nIH0pIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGBldmVudC1jYWxlbmRhci5jb21wb25lbnQudHM6IGdldFNjaGVkdWxlOmAsIHNjaGVkdWxlKTtcclxuICAgIGxldCBjYWxlbmRhcklkID0gKGFyZ3MuY2FsZW5kYXJJZCA9PSBudWxsKSA/IHRoaXMuY2FsZW5kYXJJZCA6IGFyZ3MuY2FsZW5kYXJJZDtcclxuICAgIHJldHVybiB0aGlzLmNhbGVuZGFyLmdldFNjaGVkdWxlKGFyZ3MuaWQsIGNhbGVuZGFySWQpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2NoZWR1bGVBbmROb3RpZnlQYXJlbnQoYXJnczogeyBpZDogc3RyaW5nLCBjYWxlbmRhcklkOiBzdHJpbmcgfSkge1xyXG4gICAgdGhpcy5kZWxldGVTY2hlZHVsZShhcmdzKTtcclxuICAgIGxldCBjYWxlbmRhcklkID0gKGFyZ3MuY2FsZW5kYXJJZCA9PSBudWxsKSA/IHRoaXMuY2FsZW5kYXJJZCA6IGFyZ3MuY2FsZW5kYXJJZDtcclxuICAgIHRoaXMudXNlckRlbGV0ZWRTY2hlZHVsZS5lbWl0KHsgaWQ6IGFyZ3MuaWQsIGNhbGVuZGFySWQgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVTY2hlZHVsZShhcmdzOiB7IGlkOiBzdHJpbmcsIGNhbGVuZGFySWQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhgZXZlbnQtY2FsZW5kYXIuY29tcG9uZW50LnRzOiBkZWxldGVTY2hlZHVsZTpgLCBzY2hlZHVsZSk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChhcmdzLmNhbGVuZGFySWQgPT0gbnVsbCkgPyB0aGlzLmNhbGVuZGFySWQgOiBhcmdzLmNhbGVuZGFySWQ7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmRlbGV0ZVNjaGVkdWxlKGFyZ3MuaWQsIGNhbGVuZGFySWQsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUFsbFNjaGVkdWxlcygpIHtcclxuICAgIHRoaXMuY2FsZW5kYXIuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIG9wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yKHNjaGVkdWxlOiBJU2NoZWR1bGUpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdvcGVuUG9wdXBTY2hlZHVsZUVkaXRvcjogY2FsZXZlbnQ6Jywgc2NoZWR1bGUpO1xyXG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xyXG4gICAgaWYgKHRoaXMuYXBwbGllZE9wdGlvbnMudGhlbWVDbGFzcykge1xyXG4gICAgICBkaWFsb2dDb25maWcucGFuZWxDbGFzcyA9IHRoaXMuYXBwbGllZE9wdGlvbnMudGhlbWVDbGFzcztcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUud2Fybihgb3B0aW9uczogYCwgdGhpcy5hcHBsaWVkT3B0aW9ucyk7XHJcbiAgICBkaWFsb2dDb25maWcuZGF0YSA9IHsgc2NoZWR1bGUsIGRhcmtNb2RlOiB0aGlzLmFwcGxpZWRPcHRpb25zLmRhcmtNb2RlLCB0aGVtZUNsYXNzOiB0aGlzLmFwcGxpZWRPcHRpb25zLnRoZW1lQ2xhc3MgfSBhcyBDYWxlbmRhckVkaXRvck9wdGlvbnM7XHJcbiAgICBkaWFsb2dDb25maWcuYXV0b0ZvY3VzID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0VHVpQ2FsZW5kYXJFZGl0b3JEaWFsb2dDb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XHJcbiAgICAvLyBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdFR1aUNhbGVuZGFyU2NoZWR1bGVFZGl0b3JEaWFsb2dDb21wb25lbnQsIHtcclxuICAgIC8vICAgZGF0YTogc2NoZWR1bGUsXHJcbiAgICAvLyB9KTtcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiB7IHNjaGVkdWxlOiBJU2NoZWR1bGUsIHBlcmZvcm1EZWxldGU6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6IFRoZSBkaWFsb2cgd2FzIGNsb3NlZCcsIHJlc3VsdCk7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXIucmVuZGVyKHRydWUpOyAgLy8gPC0tIHNvIHRoYXQgc2VsZWN0aW9uIGlzIGNsZWFyZWRcclxuICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuc2NoZWR1bGUpIHtcclxuICAgICAgICBsZXQgc2NoZWR1bGUgPSByZXN1bHQuc2NoZWR1bGU7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5wZXJmb3JtRGVsZXRlID09IHRydWUpIHtcclxuICAgICAgICAgIC8vIGRlbGV0ZVxyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYG9wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yOmFmdGVyQ0xvc2VkOiBkZWxldGVTY2hlZHVsZWApO1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudCh7IGlkOiBzY2hlZHVsZS5pZCwgY2FsZW5kYXJJZDogc2NoZWR1bGUuY2FsZW5kYXJJZCB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNjaGVkdWxlLmlkID09IG51bGwpIHtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBvcGVuUG9wdXBTY2hlZHVsZUVkaXRvcjphZnRlckNMb3NlZDogYWRkU2NoZWR1bGVgKTtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlU2NoZWR1bGVBbmROb3RpZnlQYXJlbnQoc2NoZWR1bGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6YWZ0ZXJDTG9zZWQ6IHVwZGF0ZVNjaGVkdWxlYCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KHNjaGVkdWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldE9wdGlvbnMob3B0aW9uczogQ2FsZW5kYXJPcHRpb25zKSB7XHJcbiAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgIG9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRPcHRpb25zKCk7XHJcbiAgICB9XHJcbiAgICBvcHRpb25zLmlvcHRpb25zID0gdGhpcy5zZXRJT3B0aW9ucyhvcHRpb25zLmlvcHRpb25zKTtcclxuICAgIHRoaXMuYXBwbGllZE9wdGlvbnMgPSB7Li4ub3B0aW9uc307XHJcbiAgfVxyXG5cclxuICBzZXRJT3B0aW9ucyhpb3B0aW9uc0luOiBJT3B0aW9ucykge1xyXG4gICAgbGV0IGlvcHRpb25zID0gdGhpcy5wcmVwcm9jZXNzSU9wdGlvbnMoaW9wdGlvbnNJbik7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnNldE9wdGlvbnMoaW9wdGlvbnMpO1xyXG4gICAgdGhpcy5jYWxlbmRhci5zZXRUaGVtZShpb3B0aW9ucy50aGVtZSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnJlbmRlcih0cnVlKTtcclxuICAgIHJldHVybiBpb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByZXByb2Nlc3NJT3B0aW9ucyhpb3B0aW9uczogSU9wdGlvbnMpOiBJT3B0aW9ucyB7XHJcbiAgICBsZXQgZGVmczogSU9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRJT3B0aW9ucygpO1xyXG4gICAgaWYgKGlvcHRpb25zID09IG51bGwpIHtcclxuICAgICAgaW9wdGlvbnMgPSBkZWZzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaW9wdGlvbnMgPSB7IC4uLmRlZnMsIC4uLmlvcHRpb25zIH07XHJcbiAgICB9XHJcbiAgICBpb3B0aW9ucy51c2VDcmVhdGlvblBvcHVwID0gZmFsc2U7XHJcbiAgICBpb3B0aW9ucy51c2VEZXRhaWxQb3B1cCA9IGZhbHNlO1xyXG4gICAgaWYgKCFpb3B0aW9ucy50aGVtZSkge1xyXG4gICAgICBpb3B0aW9ucy50aGVtZSA9IHRoaXMuZ2V0RGVmYXVsdFRoZW1lKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW9wdGlvbnM7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGVmYXVsdE9wdGlvbnMoKTogQ2FsZW5kYXJPcHRpb25zIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRhcmtNb2RlOiBmYWxzZSxcclxuICAgICAgdGhlbWVDbGFzczogbnVsbCxcclxuICAgICAgaW9wdGlvbnM6IHRoaXMuZ2V0RGVmYXVsdElPcHRpb25zKCksXHJcbiAgICB9IGFzIENhbGVuZGFyT3B0aW9ucztcclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRJT3B0aW9ucygpOiBJT3B0aW9ucyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkZWZhdWx0VmlldzogJ21vbnRoJyxcclxuICAgICAgdGFza1ZpZXc6IHRydWUsXHJcbiAgICAgIHVzZUNyZWF0aW9uUG9wdXA6IGZhbHNlLFxyXG4gICAgICB1c2VEZXRhaWxQb3B1cDogZmFsc2UsXHJcbiAgICAgIHRoZW1lOiB0aGlzLmdldERlZmF1bHRUaGVtZSgpLFxyXG4gICAgICB0ZW1wbGF0ZToge1xyXG4gICAgICAgIG1vbnRoRGF5bmFtZTogZnVuY3Rpb24gKGRheW5hbWUpIHtcclxuICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJjYWxlbmRhci13ZWVrLWRheW5hbWUtbmFtZVwiPicgKyBkYXluYW1lLmxhYmVsICsgJzwvc3Bhbj4nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgd2Vlazoge1xyXG4gICAgICAgIC8vIHN0YXJ0RGF5T2ZXZWVrOiB1bmRlZmluZWQsXHJcbiAgICAgICAgLy8gZGF5bmFtZXM6IHVuZGVmaW5lZCxcclxuICAgICAgICBuYXJyb3dXZWVrZW5kOiBmYWxzZSxcclxuICAgICAgICAvLyB3b3Jrd2VlazogdHJ1ZSxcclxuICAgICAgICBzaG93VGltZXpvbmVDb2xsYXBzZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICB0aW1lem9uZXNDb2xsYXBzZWQ6IHRydWUsXHJcbiAgICAgICAgaG91clN0YXJ0OiA3LFxyXG4gICAgICAgIGhvdXJFbmQ6IDIwLFxyXG4gICAgICB9IGFzIElXZWVrT3B0aW9ucyxcclxuICAgIH0gYXMgSU9wdGlvbnM7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3IobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHRoZW1lLSR7bmFtZX1gKTtcclxuICAgIGlmIChlbCkge1xyXG4gICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKTtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGB0aGVtZS0ke25hbWV9IGNvbG9yOmAsIHN0eWxlLmNvbG9yKTtcclxuICAgICAgcmV0dXJuIHN0eWxlLmNvbG9yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdFRoZW1lKCk6IElUaGVtZSB7XHJcbiAgICBmdW5jdGlvbiBhZGp1c3RIZXhPcGFjaXR5KGNvbG9yLCBvcGFjaXR5KSB7XHJcbiAgICAgIGNvbnN0IHIgPSBwYXJzZUludChjb2xvci5zbGljZSgxLCAzKSwgMTYpO1xyXG4gICAgICBjb25zdCBnID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgICAgY29uc3QgYiA9IHBhcnNlSW50KGNvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcblxyXG4gICAgICByZXR1cm4gJ3JnYmEoJyArIHIgKyAnLCAnICsgZyArICcsICcgKyBiICsgJywgJyArIG9wYWNpdHkgKyAnKSc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGVmYXVsdCBrZXlzIGFuZCBzdHlsZXNcclxuICAgIC8vIFRPRE86IGFwcGx5IE1hdGVyaWFsIERlc2lnbiBUaGVtZSBcclxuICAgIGxldCBiYWNrZ3JvdW5kID0gdGhpcy5nZXRDb2xvcihcImJhY2tncm91bmRcIik7XHJcbiAgICBsZXQgYm9yZGVyID0gdGhpcy5nZXRDb2xvcihcImRpdmlkZXJcIik7XHJcbiAgICBsZXQgYm9yZGVyTGlnaHQgPSB0aGlzLmdldENvbG9yKFwiZGl2aWRlci1saWdodFwiKTtcclxuICAgIGxldCBzaGFkb3cgPSB0aGlzLmdldENvbG9yKFwiZGl2aWRlclwiKTtcclxuICAgIGxldCBoaWdobGlnaHQgPSB0aGlzLmdldENvbG9yKFwiaGlnaGxpZ2h0XCIpO1xyXG4gICAgbGV0IHByaW1hcnkgPSB0aGlzLmdldENvbG9yKFwicHJpbWFyeVwiKTtcclxuICAgIGxldCB3YXJuID0gdGhpcy5nZXRDb2xvcihcIndhcm5cIik7XHJcbiAgICBsZXQgdGV4dCA9IHRoaXMuZ2V0Q29sb3IoXCJmb3JlZ3JvdW5kXCIpO1xyXG4gICAgbGV0IHByaW1hcnlTaGFkZWQgPSB0aGlzLmdldENvbG9yKFwicHJpbWFyeS1zaGFkZWRcIik7XHJcblxyXG4gICAgLy8gdHVpLWZ1bGwtY2FsZW5kYXItd2Vla2RheS1zY2hlZHVsZS10aXRsZVxyXG4gICAgLy9jYWxlbmRhci13ZWVrLWRheW5hbWUtbmFtZVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ2NvbW1vbi5ib3JkZXInOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICdjb21tb24uYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuICAgICAgJ2NvbW1vbi5ob2xpZGF5LmNvbG9yJzogd2FybixcclxuICAgICAgJ2NvbW1vbi5zYXR1cmRheS5jb2xvcic6IHRleHQsXHJcbiAgICAgICdjb21tb24uZGF5bmFtZS5jb2xvcic6IHRleHQsXHJcbiAgICAgICdjb21tb24udG9kYXkuY29sb3InOiAnIzBmMCcsXHJcblxyXG4gICAgICAvLyBjcmVhdGlvbiBndWlkZSBzdHlsZVxyXG4gICAgICAnY29tbW9uLmNyZWF0aW9uR3VpZGUuYmFja2dyb3VuZENvbG9yJzogcHJpbWFyeVNoYWRlZCxcclxuICAgICAgJ2NvbW1vbi5jcmVhdGlvbkd1aWRlLmJvcmRlcic6IGAxcHggc29saWQgJHtoaWdobGlnaHR9YCxcclxuXHJcbiAgICAgIC8vIG1vbnRoIGhlYWRlciAnZGF5bmFtZSdcclxuICAgICAgJ21vbnRoLmRheW5hbWUuaGVpZ2h0JzogJzMxcHgnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5ib3JkZXJMZWZ0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5wYWRkaW5nTGVmdCc6ICcxMHB4JyxcclxuICAgICAgJ21vbnRoLmRheW5hbWUucGFkZGluZ1JpZ2h0JzogJzEwcHgnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5iYWNrZ3JvdW5kQ29sb3InOiAnaW5oZXJpdCcsXHJcbiAgICAgICdtb250aC5kYXluYW1lLmZvbnRTaXplJzogJzEycHgnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5mb250V2VpZ2h0JzogJ25vcm1hbCcsXHJcbiAgICAgICdtb250aC5kYXluYW1lLnRleHRBbGlnbic6ICdsZWZ0JyxcclxuXHJcbiAgICAgIC8vIG1vbnRoIGRheSBncmlkIGNlbGwgJ2RheSdcclxuICAgICAgJ21vbnRoLmhvbGlkYXlFeGNlcHRUaGlzTW9udGguY29sb3InOiAncmdiYSgyNTUsIDY0LCA2NCwgMC40KScsXHJcbiAgICAgICdtb250aC5kYXlFeGNlcHRUaGlzTW9udGguY29sb3InOiAncmdiYSg1MSwgNTEsIDUxLCAwLjQpJyxcclxuICAgICAgJ21vbnRoLndlZWtlbmQuYmFja2dyb3VuZENvbG9yJzogJ2luaGVyaXQnLFxyXG4gICAgICAnbW9udGguZGF5LmZvbnRTaXplJzogJzE0cHgnLFxyXG4gICAgICAnbW9udGguc2NoZWR1bGUuY29sb3InOiBoaWdobGlnaHQsXHJcblxyXG4gICAgICAvLyBtb250aCBzY2hlZHVsZSBzdHlsZVxyXG4gICAgICAnbW9udGguc2NoZWR1bGUuYm9yZGVyUmFkaXVzJzogJzJweCcsXHJcbiAgICAgICdtb250aC5zY2hlZHVsZS5oZWlnaHQnOiAnMjRweCcsXHJcbiAgICAgICdtb250aC5zY2hlZHVsZS5tYXJnaW5Ub3AnOiAnMnB4JyxcclxuICAgICAgJ21vbnRoLnNjaGVkdWxlLm1hcmdpbkxlZnQnOiAnOHB4JyxcclxuICAgICAgJ21vbnRoLnNjaGVkdWxlLm1hcmdpblJpZ2h0JzogJzhweCcsXHJcblxyXG4gICAgICAvLyBtb250aCBtb3JlIHZpZXdcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LmJvcmRlcic6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LmJveFNoYWRvdyc6IGAwIDJweCA2cHggMCAke3NoYWRvd31gLFxyXG4gICAgICAnbW9udGgubW9yZVZpZXcuYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LnBhZGRpbmdCb3R0b20nOiAnMTdweCcsXHJcbiAgICAgICdtb250aC5tb3JlVmlld1RpdGxlLmhlaWdodCc6ICc0NHB4JyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3VGl0bGUubWFyZ2luQm90dG9tJzogJzEycHgnLFxyXG4gICAgICAnbW9udGgubW9yZVZpZXdUaXRsZS5iYWNrZ3JvdW5kQ29sb3InOiAnaW5oZXJpdCcsXHJcbiAgICAgICdtb250aC5tb3JlVmlld1RpdGxlLmJvcmRlckJvdHRvbSc6ICdub25lJyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3VGl0bGUucGFkZGluZyc6ICcxMnB4IDE3cHggMCAxN3B4JyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3TGlzdC5wYWRkaW5nJzogJzAgMTdweCcsXHJcblxyXG4gICAgICAvLyB3ZWVrIGhlYWRlciAnZGF5bmFtZSdcclxuICAgICAgJ3dlZWsuZGF5bmFtZS5oZWlnaHQnOiAnNDJweCcsXHJcbiAgICAgICd3ZWVrLmRheW5hbWUuYm9yZGVyVG9wJzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLmJvcmRlckJvdHRvbSc6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ3dlZWsuZGF5bmFtZS5ib3JkZXJMZWZ0JzogJ2luaGVyaXQnLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLnBhZGRpbmdMZWZ0JzogJzAnLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLmJhY2tncm91bmRDb2xvcic6ICdpbmhlcml0JyxcclxuICAgICAgJ3dlZWsuZGF5bmFtZS50ZXh0QWxpZ24nOiAnbGVmdCcsXHJcbiAgICAgICd3ZWVrLnRvZGF5LmNvbG9yJzogdGV4dCxcclxuICAgICAgJ3dlZWsucGFzdERheS5jb2xvcic6IGJvcmRlckxpZ2h0LFxyXG5cclxuICAgICAgLy8gd2VlayB2ZXJ0aWNhbCBwYW5lbCAndnBhbmVsJ1xyXG4gICAgICAnd2Vlay52cGFuZWxTcGxpdHRlci5ib3JkZXInOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICd3ZWVrLnZwYW5lbFNwbGl0dGVyLmhlaWdodCc6ICczcHgnLFxyXG5cclxuICAgICAgLy8gd2VlayBkYXlncmlkICdkYXlncmlkJ1xyXG4gICAgICAnd2Vlay5kYXlncmlkLmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay5kYXlncmlkLmJhY2tncm91bmRDb2xvcic6IGJhY2tncm91bmQsXHJcblxyXG4gICAgICAnd2Vlay5kYXlncmlkTGVmdC53aWR0aCc6ICc3MnB4JyxcclxuICAgICAgJ3dlZWsuZGF5Z3JpZExlZnQuYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuICAgICAgJ3dlZWsuZGF5Z3JpZExlZnQucGFkZGluZ1JpZ2h0JzogJzhweCcsXHJcbiAgICAgICd3ZWVrLmRheWdyaWRMZWZ0LmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG5cclxuXHJcbiAgICAgICd3ZWVrLnRvZGF5LmJhY2tncm91bmRDb2xvcic6IHByaW1hcnlTaGFkZWQsXHJcbiAgICAgICd3ZWVrLndlZWtlbmQuYmFja2dyb3VuZENvbG9yJzogJ2luaGVyaXQnLFxyXG5cclxuICAgICAgLy8gd2VlayB0aW1lZ3JpZCAndGltZWdyaWQnXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkTGVmdC53aWR0aCc6ICc3MnB4JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRMZWZ0LmJhY2tncm91bmRDb2xvcic6ICdpbmhlcml0JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRMZWZ0LmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZExlZnQuZm9udFNpemUnOiAnMTFweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkTGVmdFRpbWV6b25lTGFiZWwuaGVpZ2h0JzogJzQwcHgnLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZExlZnRBZGRpdGlvbmFsVGltZXpvbmUuYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkT25lSG91ci5oZWlnaHQnOiAnNTJweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkSGFsZkhvdXIuaGVpZ2h0JzogJzI2cHgnLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZEhhbGZIb3VyLmJvcmRlckJvdHRvbSc6ICdub25lJyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRIb3Jpem9udGFsTGluZS5ib3JkZXJCb3R0b20nOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcblxyXG4gICAgICAnd2Vlay50aW1lZ3JpZC5wYWRkaW5nUmlnaHQnOiAnOHB4JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWQuYm9yZGVyUmlnaHQnOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkU2NoZWR1bGUuYm9yZGVyUmFkaXVzJzogJzJweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkU2NoZWR1bGUucGFkZGluZ0xlZnQnOiAnMnB4JyxcclxuXHJcbiAgICAgIC8vICM1MTVjZTYgaXMgYSBzbGF0ZSBibHVlXHJcblxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZS5jb2xvcic6IGhpZ2hsaWdodCxcclxuICAgICAgJ3dlZWsuY3VycmVudFRpbWUuZm9udFNpemUnOiAnMTFweCcsXHJcbiAgICAgICd3ZWVrLmN1cnJlbnRUaW1lLmZvbnRXZWlnaHQnOiAnbm9ybWFsJyxcclxuXHJcbiAgICAgICd3ZWVrLnBhc3RUaW1lLmNvbG9yJzogYm9yZGVyTGlnaHQsXHJcbiAgICAgICd3ZWVrLnBhc3RUaW1lLmZvbnRXZWlnaHQnOiAnbm9ybWFsJyxcclxuXHJcbiAgICAgICd3ZWVrLmZ1dHVyZVRpbWUuY29sb3InOiBib3JkZXIsXHJcbiAgICAgICd3ZWVrLmZ1dHVyZVRpbWUuZm9udFdlaWdodCc6ICdub3JtYWwnLFxyXG5cclxuICAgICAgJ3dlZWsuY3VycmVudFRpbWVMaW5lUGFzdC5ib3JkZXInOiBgMXB4IGRhc2hlZCAke2hpZ2hsaWdodH1gLFxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZUxpbmVCdWxsZXQuYmFja2dyb3VuZENvbG9yJzogaGlnaGxpZ2h0LFxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZUxpbmVUb2RheS5ib3JkZXInOiBgMXB4IHNvbGlkICR7aGlnaGxpZ2h0fWAsXHJcbiAgICAgICd3ZWVrLmN1cnJlbnRUaW1lTGluZUZ1dHVyZS5ib3JkZXInOiAnbm9uZScsXHJcblxyXG4gICAgICAvLyB3ZWVrIGNyZWF0aW9uIGd1aWRlIHN0eWxlXHJcbiAgICAgICd3ZWVrLmNyZWF0aW9uR3VpZGUuY29sb3InOiBoaWdobGlnaHQsXHJcbiAgICAgICd3ZWVrLmNyZWF0aW9uR3VpZGUuZm9udFNpemUnOiAnMTFweCcsXHJcbiAgICAgICd3ZWVrLmNyZWF0aW9uR3VpZGUuZm9udFdlaWdodCc6ICdib2xkJyxcclxuXHJcbiAgICAgIC8vIHdlZWsgZGF5Z3JpZCBzY2hlZHVsZSBzdHlsZVxyXG4gICAgICAnd2Vlay5kYXlHcmlkU2NoZWR1bGUuYm9yZGVyUmFkaXVzJzogJzJweCcsXHJcbiAgICAgICd3ZWVrLmRheUdyaWRTY2hlZHVsZS5oZWlnaHQnOiAnMjRweCcsXHJcbiAgICAgICd3ZWVrLmRheUdyaWRTY2hlZHVsZS5tYXJnaW5Ub3AnOiAnMnB4JyxcclxuICAgICAgJ3dlZWsuZGF5R3JpZFNjaGVkdWxlLm1hcmdpbkxlZnQnOiAnOHB4JyxcclxuICAgICAgJ3dlZWsuZGF5R3JpZFNjaGVkdWxlLm1hcmdpblJpZ2h0JzogJzhweCdcclxuICAgIH0gYXMgSVRoZW1lO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50LWNvbnRhaW5lclwiPlxyXG4gICAgPCEtLSBUaGVzZSBkaXZzIGFyZSBoZXJlIHNvIHRoYXQgd2UgY2FuIHJlYWQgdGhlIHRoZW1lIGNvbG9ycyBmb3IgdGhlIHR1aSB0aGVtZSAtLT5cclxuICAgIDwhLS0gVGhlIG91dGVyIGRpdiBnaXZlcyB0aGUgZGVmYXVsdCBjb2xvciBmb3Igd2hlbiB1c2VyIGRvZXMgbm90IHByb3ZpZGUgYW4gQW5ndWxhciB0aGVtZSAtLT5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogYmx1ZTtcIj4gPGRpdiBpZD1cInRoZW1lLXByaW1hcnlcIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogYmx1ZTtcIj4gPGRpdiBpZD1cInRoZW1lLWhpZ2hsaWdodFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiBibHVlO1wiPiA8ZGl2IGlkPVwidGhlbWUtYWNjZW50XCI+PC9kaXY+PC9kaXY+XHJcbiAgICA8ZGl2IHN0eWxlPVwiY29sb3I6IHJlZDtcIj4gPGRpdiBpZD1cInRoZW1lLXdhcm5cIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogcmdiYSgwLCAwLCAyNTUsIDAuMik7XCI+IDxkaXYgaWQ9XCJ0aGVtZS1wcmltYXJ5LXNoYWRlZFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiAjM2UzZTNlO1wiPiA8ZGl2IGlkPVwidGhlbWUtZm9yZWdyb3VuZFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiAjZTBlMGUwO1wiPiA8ZGl2IGlkPVwidGhlbWUtZGl2aWRlclwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIj4gPGRpdiBpZD1cInRoZW1lLWJhY2tncm91bmRcIj48L2Rpdj48L2Rpdj5cclxuICBcclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXJcIj5cclxuICAgICAgPCEtLSBjYWxlbmRhciB0aXRsZWJhciAtLT5cclxuICAgICAgPG1hdC10b29sYmFyIGNsYXNzPVwibWVudS1iYXJcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICA8IS0tIDxkaXYgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7ZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XCI+IC0tPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICB3aWR0aDogMTAwJTsgIFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtZGl2XCI+XHJcbiAgICAgICAgICAgIDwhLS0gTEVGVCAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJMb25nUHJldigpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaWNvbkxvbmdQcmV2XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIiBcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBmb250LXNpemU6IDJyZW0gIWltcG9ydGFudDtcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DYWxlbmRhclByZXYoKVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25QcmV2XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IGZvbnQtc2l6ZTogMS43cmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJUb2RheSgpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaWNvblRvZGF5XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIiBcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBmb250LXNpemU6IDJyZW0gIWltcG9ydGFudDtcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DYWxlbmRhck5leHQoKVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25OZXh0XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJMb25nTmV4dCgpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaWNvbkxvbmdOZXh0XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlci1kaXZcIj5cclxuICAgICAgICAgICAgPCEtLSBDRU5URVIgLS0+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXZlbnQtY2FsZW5kYXItdGl0bGVcIj57eyBnZXREYXRlKCkgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1kaXZcIj5cclxuICBcclxuICAgICAgICAgICAgPCEtLSBSSUdIVCAtLT5cclxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwidmlldy1idXR0b25cIiB2YWx1ZT1cIm1vbnRoXCIgaWQ9XCJAK2lkL3RvZ2dsZUJ1dHRvblwiIGxheW91dF93aWR0aD1cIndyYXBfY29udGVudFwiXHJcbiAgICAgICAgICAgICAgbGF5b3V0X2hlaWdodD1cIndyYXBfY29udGVudFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtYnV0dG9uIHZhbHVlPVwibW9udGhcIiBjbGFzcz1cInZpZXctYnV0dG9uXCIgKGNsaWNrKT1cIm9uTW9udGhWaWV3KClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25CeU1vbnRoXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIG1hdC1idXR0b24gdmFsdWU9XCJ3ZWVrXCIgY2xhc3M9XCJ2aWV3LWJ1dHRvblwiIChjbGljayk9XCJvbldlZWtWaWV3KClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25CeVdlZWtcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWJ1dHRvbiB2YWx1ZT1cImRheVwiIGNsYXNzPVwidmlldy1idXR0b25cIiAoY2xpY2spPVwib25EYXlWaWV3KClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25CeURheVwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXRvb2xiYXI+XHJcbiAgICAgIDxuZ3gtbWF0LXR1aS1jYWxlbmRhci13cmFwcGVyPjwvbmd4LW1hdC10dWktY2FsZW5kYXItd3JhcHBlcj5cclxuICAgIDwvZGl2PlxyXG4gIFxyXG4gIDwvc2VjdGlvbj5cclxuIl19
537
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdC10dWktY2FsZW5kYXIvc3JjL2xpYi9uZ3gtbWF0LXR1aS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0LXR1aS1jYWxlbmRhci9zcmMvbGliL25neC1tYXQtdHVpLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUEwRCxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFDTCxlQUFlLEVBR2YsT0FBTyxFQUNQLFNBQVMsRUFFVCxTQUFTLEVBQ1QsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUNMLE9BQU8sSUFBSSxRQUFRLEdBYXBCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLFdBQVc7QUFDWCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sbUZBQW1GLENBQUM7Ozs7Ozs7O0FBVzNJLE1BQU0sT0FBTywwQkFBMEI7SUFzQnJDLFlBQW1CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFyQnBDLGNBQVMsR0FBRyxlQUFlLENBQUM7UUFDNUIsZ0NBQWdDO1FBQ2hDLGlDQUFpQztRQUNqQyxhQUFRLEdBQUcsV0FBVyxDQUFDO1FB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VztZQUNsQywwQkFBMEIsRUFBRSxRQUFRO1lBRXBDLHVCQUF1QixFQUFFLE1BQU07WUFDL0IsNEJBQTRCLEVBQUUsUUFBUTtZQUV0QyxpQ0FBaUMsRUFBRSxjQUFjLFNBQVMsRUFBRTtZQUM1RCw0Q0FBNEMsRUFBRSxTQUFTO1lBQ3ZELGtDQUFrQyxFQUFFLGFBQWEsU0FBUyxFQUFFO1lBQzVELG1DQUFtQyxFQUFFLE1BQU07WUFFM0MsNEJBQTRCO1lBQzVCLDBCQUEwQixFQUFFLFNBQVM7WUFDckMsNkJBQTZCLEVBQUUsTUFBTTtZQUNyQywrQkFBK0IsRUFBRSxNQUFNO1lBRXZDLDhCQUE4QjtZQUM5QixtQ0FBbUMsRUFBRSxLQUFLO1lBQzFDLDZCQUE2QixFQUFFLE1BQU07WUFDckMsZ0NBQWdDLEVBQUUsS0FBSztZQUN2QyxpQ0FBaUMsRUFBRSxLQUFLO1lBQ3hDLGtDQUFrQyxFQUFFLEtBQUs7U0FDaEMsQ0FBQztJQUNkLENBQUM7O3dIQXBrQlUsMEJBQTBCOzRHQUExQiwwQkFBMEIsa1FDbER2Qyxza0lBaUZBOzRGRC9CYSwwQkFBMEI7a0JBUHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLHVDQUF1QztvQkFDcEQsU0FBUyxFQUFFO3dCQUNULHVDQUF1QztxQkFDeEM7aUJBQ0Y7Z0dBaUJXLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3ksIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuaW1wb3J0IGRpc3RpbmN0Q29sb3JzIGZyb20gJ2Rpc3RpbmN0LWNvbG9ycyc7XHJcbmltcG9ydCB7IENvbG9yIH0gZnJvbSBcImNocm9tYS1qc1wiO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuXHJcbmltcG9ydCB7XHJcbiAgZmFDYWxlbmRhckNoZWNrLFxyXG4gIGZhQ2FyZXRTcXVhcmVMZWZ0LFxyXG4gIGZhQ2FyZXRTcXVhcmVSaWdodCxcclxuICBmYVRhYmxlLFxyXG4gIGZhQ29sdW1ucyxcclxuICBmYUxpc3QsXHJcbiAgZmFMaXN0QWx0LFxyXG4gIGZhRm9yd2FyZCxcclxuICBmYUZhc3RCYWNrd2FyZCxcclxuICBmYUJhY2t3YXJkLFxyXG4gIGZhQ2FyZXRMZWZ0LFxyXG4gIGZhQ2FyZXRSaWdodCxcclxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xyXG5pbXBvcnQge1xyXG4gIGRlZmF1bHQgYXMgQ2FsZW5kYXIsXHJcbiAgSUNhbGVuZGFySW5mbyxcclxuICBJRXZlbnREYXRlT2JqZWN0LFxyXG4gIElFdmVudE1vcmVPYmplY3QsXHJcbiAgSUV2ZW50T2JqZWN0LFxyXG4gIElFdmVudFNjaGVkdWxlT2JqZWN0LFxyXG4gIElPcHRpb25zLFxyXG4gIElTY2hlZHVsZSxcclxuICBJVGhlbWUsXHJcbiAgSVRpbWV6b25lLFxyXG4gIElXZWVrT3B0aW9ucyxcclxuICBURXZlbnRCZWZvcmVDcmVhdGVTY2hlZHVsZSxcclxuICBUWkRhdGUsXHJcbn0gZnJvbSAndHVpLWNhbGVuZGFyJztcclxuXHJcbi8vIHByb2plY3QgXHJcbmltcG9ydCB7IExvY2FsRGF0ZSB9IGZyb20gJy4vbG9jYWwtZGF0ZS5qcyc7XHJcbmltcG9ydCB7IE5neE1hdFR1aUNhbGVuZGFyRWRpdG9yRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtbWF0LXR1aS1jYWxlbmRhci1lZGl0b3ItZGlhbG9nL25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FsZW5kYXJPcHRpb25zIH0gZnJvbSAnLi9jYWxlbmRhci1vcHRpb25zJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi9jYWxlbmRhci1lZGl0b3Itb3B0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1tYXQtdHVpLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4vbmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neE1hdFR1aUNhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgaWNvblRvZGF5ID0gZmFDYWxlbmRhckNoZWNrO1xyXG4gIC8vIGljb25QcmV2ID0gZmFDYXJldFNxdWFyZUxlZnQ7XHJcbiAgLy8gaWNvbk5leHQgPSBmYUNhcmV0U3F1YXJlUmlnaHQ7XHJcbiAgaWNvblByZXYgPSBmYUNhcmV0TGVmdDtcclxuICBpY29uTmV4dCA9IGZhQ2FyZXRSaWdodDtcclxuICBpY29uTG9uZ1ByZXYgPSBmYUJhY2t3YXJkO1xyXG4gIGljb25Mb25nTmV4dCA9IGZhRm9yd2FyZDtcclxuICBpY29uQnlNb250aCA9IGZhVGFibGU7XHJcbiAgaWNvbkJ5V2VlayA9IGZhQ29sdW1ucztcclxuICBpY29uQnlEYXkgPSBmYUxpc3RBbHQ7XHJcblxyXG4gIGNhbGVuZGFyOiBDYWxlbmRhcjsgIC8vIHRoZSBUVUkgQ2FsZW5kYXIgT2JqZWN0XHJcbiAgY2FsZW5kYXJJZDogc3RyaW5nO1xyXG4gIGNvbG9yczogQ29sb3JbXTtcclxuICBjb2xvckluZGV4OiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIHVzZXJDcmVhdGVkU2NoZWR1bGU6IEV2ZW50RW1pdHRlcjxJU2NoZWR1bGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1c2VyVXBkYXRlZFNjaGVkdWxlOiBFdmVudEVtaXR0ZXI8SVNjaGVkdWxlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXNlckRlbGV0ZWRTY2hlZHVsZTogRXZlbnRFbWl0dGVyPElTY2hlZHVsZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgb3B0aW9uczogQ2FsZW5kYXJPcHRpb25zO1xyXG4gIGFwcGxpZWRPcHRpb25zOiBDYWxlbmRhck9wdGlvbnM7IC8vIHRoaXMgaXMgbmVlZGVkIGZvciB3aGVuIG9wdGlvbnMgaXMgbm90IGNvbm5lY3RlZFxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICAgIC8vIHdlIHNsaWNlIG9mZiB0aGUgZmlyc3QgY29sb3Igc2luY2UgaXQgaXMgZ3JheVxyXG4gICAgdGhpcy5jb2xvcnMgPSBkaXN0aW5jdENvbG9ycyh7IGxpZ2h0TWluOiA3MCwgY291bnQ6IDE1IH0pLnNsaWNlKDEpO1xyXG4gICAgdGhpcy5jb2xvckluZGV4ID0gMDtcclxuICAgIHRoaXMuY2FsZW5kYXJJZCA9IHV1aWR2NCgpO1xyXG5cclxuICAgIHRoaXMuYXBwbGllZE9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRPcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIGNvbnNvbGUud2FybihgY2FsZW5kYXIuY29tcG9uZW50LnRzOiBuZ09uaXRgKVxyXG4gICAgdGhpcy5jcmVhdGVUVUlDYWxlbmRhcigpO1xyXG4gICAgdGhpcy5iaW5kQ2FsbGJhY2tzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLndhcm4oY2hhbmdlcyk7XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xyXG5cclxuICAgICAgaWYgKGNoYW5nZXMub3B0aW9ucykge1xyXG4gICAgICAgIC8vIGNvbnNvbGUud2FybihgY2hhbmdlLm9wdGlvbjpgLCBjaGFuZ2VzLm9wdGlvbnMpO1xyXG4gICAgICAgIGxldCBvcHRpb25zID0gY2hhbmdlcy5vcHRpb25zLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICB0aGlzLnNldE9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY2FsZW5kYXIuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgb25DYWxlbmRhckxvbmdQcmV2KCkge1xyXG4gICAgbGV0IGRhdGU6IERhdGUgPSAodGhpcy5jYWxlbmRhci5nZXREYXRlKCkgYXMgVFpEYXRlKS50b0RhdGUoKTtcclxuICAgIGxldCBkYXlzID0gMDtcclxuICAgIGxldCBtb250aHMgPSAwO1xyXG4gICAgbGV0IHllYXJzID0gMDtcclxuICAgIHN3aXRjaCAodGhpcy5jYWxlbmRhci5nZXRWaWV3TmFtZSgpKSB7XHJcbiAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgZGF5cyA9IC03O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICBkYXlzID0gLTI4O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgeWVhcnMgPSAtMTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgeWVhcnMpO1xyXG4gICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBtb250aHMpOyAgLy8gZGF0ZSBjbGFzcyBkb2VzIHRoZSBtb2R1bGFyIGFyaXRobWV0aWNcclxuICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRheXMpOyAgLy8gZGF0ZSBjbGFzcyBkb2VzIHRoZSBtb2R1bGFyIGFyaXRobWV0aWNcclxuICAgIHRoaXMuY2FsZW5kYXIuc2V0RGF0ZShkYXRlKTtcclxuICAgIHRoaXMuY2FsZW5kYXIudG9nZ2xlU2NoZWR1bGVWaWV3KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25DYWxlbmRhclByZXYoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnByZXYoKTtcclxuICAgIHRoaXMuY2FsZW5kYXIudG9nZ2xlU2NoZWR1bGVWaWV3KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25DYWxlbmRhclRvZGF5KCkge1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2RheSgpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGVuZGFyTmV4dCgpIHtcclxuICAgIHRoaXMuY2FsZW5kYXIubmV4dCgpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGVuZGFyTG9uZ05leHQoKSB7XHJcbiAgICBsZXQgZGF0ZTogRGF0ZSA9ICh0aGlzLmNhbGVuZGFyLmdldERhdGUoKSBhcyBUWkRhdGUpLnRvRGF0ZSgpO1xyXG4gICAgbGV0IGRheXMgPSAwO1xyXG4gICAgbGV0IG1vbnRocyA9IDA7XHJcbiAgICBsZXQgeWVhcnMgPSAwO1xyXG4gICAgc3dpdGNoICh0aGlzLmNhbGVuZGFyLmdldFZpZXdOYW1lKCkpIHtcclxuICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICBkYXlzID0gNztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd2Vlayc6XHJcbiAgICAgICAgZGF5cyA9IDI4O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgeWVhcnMgPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyB5ZWFycyk7XHJcbiAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG1vbnRocyk7ICAvLyBkYXRlIGNsYXNzIGRvZXMgdGhlIG1vZHVsYXIgYXJpdGhtZXRpY1xyXG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGF5cyk7ICAvLyBkYXRlIGNsYXNzIGRvZXMgdGhlIG1vZHVsYXIgYXJpdGhtZXRpY1xyXG4gICAgdGhpcy5jYWxlbmRhci5zZXREYXRlKGRhdGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Nb250aFZpZXcoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNoYW5nZVZpZXcoJ21vbnRoJyk7XHJcbiAgfVxyXG5cclxuICBvbldlZWtWaWV3KCkge1xyXG4gICAgY29uc29sZS5sb2coYG9uV2Vla1ZpZXdgKVxyXG4gICAgdGhpcy5jYWxlbmRhci5jaGFuZ2VWaWV3KCd3ZWVrJyk7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnJlbmRlcih0cnVlKTsgIC8vIDwtLSBzbyB0aGF0IHNlbGVjdGlvbiBpcyBjbGVhcmVkXHJcbiAgfVxyXG5cclxuICBvbkRheVZpZXcoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNoYW5nZVZpZXcoJ2RheScpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERhdGUoKSB7XHJcbiAgICBsZXQgZGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0RGF0ZSgpO1xyXG4gICAgbGV0IHN0ciA9IGRhdGUudG9EYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwge1xyXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgIG1vbnRoOiAnc2hvcnQnLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVFVJQ2FsZW5kYXIoKSB7XHJcbiAgICBsZXQgaW9wdGlvbnMgPSB0aGlzLnByZXByb2Nlc3NJT3B0aW9ucyhudWxsKTtcclxuICAgIC8vIGNvbnNvbGUud2FybihgY2FsZW5kYXIuY29tcG9uZW50LnRzOiBjcmVhdGVUVUlDYWxlbmRhcjogaW9wdGlvbnM6YCwgaW9wdGlvbnMpO1xyXG4gICAgdGhpcy5jYWxlbmRhciA9IG5ldyBDYWxlbmRhcignI2NhbGVuZGFyJywgaW9wdGlvbnMpO1xyXG4gICAgLy8gY29uc29sZS53YXJuKGBjYWxlbmRhci5jb21wb25lbnQudHM6IGNyZWF0ZVRVSUNhbGVuZGFyOiB0aGlzLmNhbGVuZGFyOmAsIHRoaXMuY2FsZW5kYXIpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGJpbmRDYWxsYmFja3MoKSB7XHJcbiAgICB0aGlzLmJpbmRBZnRlclJlbmRlclNjaGVkdWxlKCk7XHJcbiAgICB0aGlzLmJpbmRDbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuKCk7XHJcbiAgICB0aGlzLmJpbmRDbGlja0RheW5hbWUoKTtcclxuICAgIHRoaXMuYmluZENsaWNrTW9yZSgpO1xyXG4gICAgdGhpcy5iaW5kQ2xpY2tTY2hlZHVsZSgpO1xyXG4gICAgdGhpcy5iaW5kQmVmb3JlQ3JlYXRlU2NoZWR1bGUoKTtcclxuICAgIHRoaXMuYmluZEJlZm9yZVVwZGF0ZVNjaGVkdWxlKCk7XHJcbiAgICB0aGlzLmJpbmRCZWZvcmVEZWxldGVTY2hlZHVsZSgpO1xyXG4gIH1cclxuXHJcbiAgYmluZEFmdGVyUmVuZGVyU2NoZWR1bGUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdhZnRlclJlbmRlclNjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiB7IHNjaGVkdWxlOiBJU2NoZWR1bGUgfSkge1xyXG4gICAgICAvLyBjb25zb2xlLndhcm4oYGFmdGVyUmVuZGVyU2NoZWR1bGVgLCBldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRDbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgdGhpcy5jYWxlbmRhci5vbignY2xpY2tUaW1lem9uZXNDb2xsYXBzZUJ0bicsIGZ1bmN0aW9uICh0aW1lem9uZXNDb2xsYXBzZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBjbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuYCwgdGltZXpvbmVzQ29sbGFwc2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGJpbmRDbGlja0RheW5hbWUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja0RheW5hbWUnLCBmdW5jdGlvbiAoZXZlbnQ6IElFdmVudERhdGVPYmplY3QpIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBjbGlja0RheW5hbWVgLCBldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRDbGlja01vcmUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja01vcmUnLCBmdW5jdGlvbiAoZXZlbnQ6IElFdmVudE1vcmVPYmplY3QpIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBjbGlja01vcmVgLCBldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRDbGlja1NjaGVkdWxlKCkge1xyXG4gICAgLy8gb25seSB3b3JrcyBpZiB1c2VEZXRhaWxQb3B1cDogZmFsc2UsXHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja1NjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiBJRXZlbnRTY2hlZHVsZU9iamVjdCkge1xyXG4gICAgICAvLyBjb25zb2xlLndhcm4oYGNsaWNrU2NoZWR1bGVgLCBldmVudCk7XHJcbiAgICAgIGxldCBzY2hlZHVsZTogSVNjaGVkdWxlID0geyAuLi5ldmVudC5zY2hlZHVsZSB9O1xyXG4gICAgICBzY2hlZHVsZS5zdGFydCA9IChuZXcgTG9jYWxEYXRlKHNjaGVkdWxlLnN0YXJ0KSkudG9EYXRlKCk7XHJcbiAgICAgIHNjaGVkdWxlLmVuZCA9IChuZXcgTG9jYWxEYXRlKHNjaGVkdWxlLmVuZCkpLnRvRGF0ZSgpO1xyXG4gICAgICB0aGF0Lm9wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yKHNjaGVkdWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmluZEJlZm9yZUNyZWF0ZVNjaGVkdWxlKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgdGhpcy5jYWxlbmRhci5vbignYmVmb3JlQ3JlYXRlU2NoZWR1bGUnLCBmdW5jdGlvbiAoZXZlbnQ6IFRFdmVudEJlZm9yZUNyZWF0ZVNjaGVkdWxlKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVDcmVhdGVTY2hlZHVsZWAsIGV2ZW50KTtcclxuICAgICAgbGV0IHN0YXJ0OiBEYXRlID0gKG5ldyBMb2NhbERhdGUoZXZlbnQuc3RhcnQpKS50b0RhdGUoKTtcclxuICAgICAgc3RhcnQuc2V0SG91cnMoOSk7XHJcbiAgICAgIGxldCBlbmQ6IERhdGUgPSAobmV3IExvY2FsRGF0ZShldmVudC5lbmQpKS50b0RhdGUoKTtcclxuICAgICAgZW5kLnNldEhvdXJzKDEwKTtcclxuICAgICAgdGhhdC5vcGVuUG9wdXBTY2hlZHVsZUVkaXRvcih7XHJcbiAgICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICAgIHN0YXJ0OiBzdGFydCxcclxuICAgICAgICBlbmQ6IGVuZCxcclxuICAgICAgICBpZDogbnVsbCxcclxuICAgICAgfSBhcyBJU2NoZWR1bGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBiaW5kQmVmb3JlVXBkYXRlU2NoZWR1bGUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdiZWZvcmVVcGRhdGVTY2hlZHVsZScsIGZ1bmN0aW9uIChldmVudDogSUV2ZW50T2JqZWN0KSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVVcGRhdGVTY2hlZHVsZWAsIGV2ZW50KTtcclxuICAgICAgdGhhdC51cGRhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRCZWZvcmVEZWxldGVTY2hlZHVsZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuY2FsZW5kYXIub24oJ2JlZm9yZURlbGV0ZVNjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiBJRXZlbnRTY2hlZHVsZU9iamVjdCkge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhgYmVmb3JlRGVsZXRlU2NoZWR1bGVgLCBldmVudC5zY2hlZHVsZSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVEZWxldGVTY2hlZHVsZWAsIGV2ZW50LnNjaGVkdWxlKTtcclxuICAgICAgdGhhdC5kZWxldGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudCh7IGlkOiBldmVudC5zY2hlZHVsZS5pZCwgY2FsZW5kYXJJZDogZXZlbnQuc2NoZWR1bGUuY2FsZW5kYXJJZCB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmV4dENvbG9yKCkge1xyXG4gICAgbGV0IGNvbG9yID0gdGhpcy5jb2xvcnNbdGhpcy5jb2xvckluZGV4KytdLmhleCgpO1xyXG4gICAgaWYgKHRoaXMuY29sb3JJbmRleCA+PSB0aGlzLmNvbG9ycy5sZW5ndGgpIHRoaXMuY29sb3JJbmRleCA9IDA7XHJcbiAgICByZXR1cm4gY29sb3I7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChhcmdzOiBJU2NoZWR1bGUpIHtcclxuICAgIGxldCBzY2hlZHVsZSA9IHRoaXMuY3JlYXRlU2NoZWR1bGUoYXJncyk7XHJcbiAgICB0aGlzLnVzZXJDcmVhdGVkU2NoZWR1bGUuZW1pdChzY2hlZHVsZSk7XHJcbiAgICByZXR1cm4gc2NoZWR1bGU7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTY2hlZHVsZXMoc2NoZWR1bGVzOiBJU2NoZWR1bGVbXSkge1xyXG4gICAgbGV0IG5ld1NjaGVkdWxlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgc2NoZWR1bGUgb2Ygc2NoZWR1bGVzKSB7XHJcbiAgICAgIG5ld1NjaGVkdWxlcy5wdXNoKHRoaXMuY3JlYXRlU2NoZWR1bGUoc2NoZWR1bGUpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdTY2hlZHVsZXM7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTY2hlZHVsZShhcmdzOiBJU2NoZWR1bGUpOiBJU2NoZWR1bGUge1xyXG4gICAgLy8gaWYgKGZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBhIGNvbG9yXHJcbiAgICBsZXQgY29sb3IgPSB0aGlzLm5leHRDb2xvcigpO1xyXG4gICAgLy8gY29uc29sZS5sb2coY29sb3IpO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBhbiBpZFxyXG4gICAgbGV0IGlkID0gKGFyZ3MuaWQgPT0gbnVsbCkgPyAnJyA6IGFyZ3MuaWQudG9TdHJpbmcoKTtcclxuICAgIGlmIChpZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgaWQgPSB1dWlkdjQoKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc3RhcnQ6IERhdGUgPSBMb2NhbERhdGUuY29udmVydFRvSnNEYXRlKGFyZ3Muc3RhcnQpO1xyXG4gICAgbGV0IGVuZDogRGF0ZSA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUoYXJncy5lbmQpO1xyXG5cclxuICAgIGxldCBzY2hlZHVsZTogSVNjaGVkdWxlID0ge1xyXG4gICAgICBpZCxcclxuICAgICAgY2FsZW5kYXJJZDogKGFyZ3MuY2FsZW5kYXJJZCA9PSBudWxsKSA/IHRoaXMuY2FsZW5kYXJJZCA6IGFyZ3MuY2FsZW5kYXJJZCxcclxuICAgICAgdGl0bGU6IGFyZ3MudGl0bGUsXHJcbiAgICAgIHN0YXJ0OiBzdGFydCxcclxuICAgICAgZW5kOiBlbmQsXHJcbiAgICAgIGNhdGVnb3J5OiBhcmdzLmNhdGVnb3J5LFxyXG4gICAgICBpc0FsbERheTogYXJncy5pc0FsbERheSxcclxuICAgICAgZHVlRGF0ZUNsYXNzOiAnJyxcclxuICAgICAgYmdDb2xvcjogY29sb3IsXHJcbiAgICB9IGFzIElTY2hlZHVsZVxyXG4gICAgLy8gY29uc29sZS5sb2coYGV2ZW50LWNhbGVuZGFyLmNvbXBvbmVudC50czogY3JlYXRlRXZlbnQ6YCwgc2NoZWR1bGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhci5jcmVhdGVTY2hlZHVsZXMoW3NjaGVkdWxlXSk7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRTY2hlZHVsZShzY2hlZHVsZS5pZCwgc2NoZWR1bGUuY2FsZW5kYXJJZCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChhcmdzOiBJU2NoZWR1bGUpIHtcclxuICAgIGxldCBzY2hlZHVsZSA9IHRoaXMudXBkYXRlU2NoZWR1bGUoYXJncyk7XHJcbiAgICB0aGlzLnVzZXJVcGRhdGVkU2NoZWR1bGUuZW1pdChzY2hlZHVsZSk7XHJcbiAgICByZXR1cm4gc2NoZWR1bGU7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTY2hlZHVsZShzY2hlZHVsZTogSVNjaGVkdWxlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhgZXZlbnQtY2FsZW5kYXIuY29tcG9uZW50LnRzOiB1cGRhdGVTY2hlZHVsZTpgLCBzY2hlZHVsZSk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChzY2hlZHVsZS5jYWxlbmRhcklkID09IG51bGwpID8gdGhpcy5jYWxlbmRhcklkIDogc2NoZWR1bGUuY2FsZW5kYXJJZDtcclxuICAgIHRoaXMuY2FsZW5kYXIudXBkYXRlU2NoZWR1bGUoc2NoZWR1bGUuaWQsIGNhbGVuZGFySWQsIHNjaGVkdWxlLCBmYWxzZSk7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRTY2hlZHVsZShzY2hlZHVsZS5pZCwgY2FsZW5kYXJJZCk7XHJcbiAgfVxyXG5cclxuICBnZXRTY2hlZHVsZShhcmdzOiB7IGlkOiBzdHJpbmcsIGNhbGVuZGFySWQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhgZXZlbnQtY2FsZW5kYXIuY29tcG9uZW50LnRzOiBnZXRTY2hlZHVsZTpgLCBzY2hlZHVsZSk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChhcmdzLmNhbGVuZGFySWQgPT0gbnVsbCkgPyB0aGlzLmNhbGVuZGFySWQgOiBhcmdzLmNhbGVuZGFySWQ7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRTY2hlZHVsZShhcmdzLmlkLCBjYWxlbmRhcklkKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KGFyZ3M6IHsgaWQ6IHN0cmluZywgY2FsZW5kYXJJZDogc3RyaW5nIH0pIHtcclxuICAgIHRoaXMuZGVsZXRlU2NoZWR1bGUoYXJncyk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChhcmdzLmNhbGVuZGFySWQgPT0gbnVsbCkgPyB0aGlzLmNhbGVuZGFySWQgOiBhcmdzLmNhbGVuZGFySWQ7XHJcbiAgICB0aGlzLnVzZXJEZWxldGVkU2NoZWR1bGUuZW1pdCh7IGlkOiBhcmdzLmlkLCBjYWxlbmRhcklkIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2NoZWR1bGUoYXJnczogeyBpZDogc3RyaW5nLCBjYWxlbmRhcklkOiBzdHJpbmcgfSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coYGV2ZW50LWNhbGVuZGFyLmNvbXBvbmVudC50czogZGVsZXRlU2NoZWR1bGU6YCwgc2NoZWR1bGUpO1xyXG4gICAgbGV0IGNhbGVuZGFySWQgPSAoYXJncy5jYWxlbmRhcklkID09IG51bGwpID8gdGhpcy5jYWxlbmRhcklkIDogYXJncy5jYWxlbmRhcklkO1xyXG4gICAgdGhpcy5jYWxlbmRhci5kZWxldGVTY2hlZHVsZShhcmdzLmlkLCBjYWxlbmRhcklkLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVBbGxTY2hlZHVsZXMoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuUG9wdXBTY2hlZHVsZUVkaXRvcihzY2hlZHVsZTogSVNjaGVkdWxlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6IGNhbGV2ZW50OicsIHNjaGVkdWxlKTtcclxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgIGlmICh0aGlzLmFwcGxpZWRPcHRpb25zLnRoZW1lQ2xhc3MpIHtcclxuICAgICAgZGlhbG9nQ29uZmlnLnBhbmVsQ2xhc3MgPSB0aGlzLmFwcGxpZWRPcHRpb25zLnRoZW1lQ2xhc3M7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLndhcm4oYG9wdGlvbnM6IGAsIHRoaXMuYXBwbGllZE9wdGlvbnMpO1xyXG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7IHNjaGVkdWxlLCBkYXJrTW9kZTogdGhpcy5hcHBsaWVkT3B0aW9ucy5kYXJrTW9kZSwgdGhlbWVDbGFzczogdGhpcy5hcHBsaWVkT3B0aW9ucy50aGVtZUNsYXNzIH0gYXMgQ2FsZW5kYXJFZGl0b3JPcHRpb25zO1xyXG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdFR1aUNhbGVuZGFyRWRpdG9yRGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xyXG4gICAgLy8gY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRUdWlDYWxlbmRhclNjaGVkdWxlRWRpdG9yRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAvLyAgIGRhdGE6IHNjaGVkdWxlLFxyXG4gICAgLy8gfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogeyBzY2hlZHVsZTogSVNjaGVkdWxlLCBwZXJmb3JtRGVsZXRlOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ29wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yOiBUaGUgZGlhbG9nIHdhcyBjbG9zZWQnLCByZXN1bHQpO1xyXG4gICAgICB0aGlzLmNhbGVuZGFyLnJlbmRlcih0cnVlKTsgIC8vIDwtLSBzbyB0aGF0IHNlbGVjdGlvbiBpcyBjbGVhcmVkXHJcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnNjaGVkdWxlKSB7XHJcbiAgICAgICAgbGV0IHNjaGVkdWxlID0gcmVzdWx0LnNjaGVkdWxlO1xyXG4gICAgICAgIGlmIChyZXN1bHQucGVyZm9ybURlbGV0ZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAvLyBkZWxldGVcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBvcGVuUG9wdXBTY2hlZHVsZUVkaXRvcjphZnRlckNMb3NlZDogZGVsZXRlU2NoZWR1bGVgKTtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlU2NoZWR1bGVBbmROb3RpZnlQYXJlbnQoeyBpZDogc2NoZWR1bGUuaWQsIGNhbGVuZGFySWQ6IHNjaGVkdWxlLmNhbGVuZGFySWQgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlZHVsZS5pZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6YWZ0ZXJDTG9zZWQ6IGFkZFNjaGVkdWxlYCk7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KHNjaGVkdWxlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYG9wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yOmFmdGVyQ0xvc2VkOiB1cGRhdGVTY2hlZHVsZWApO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChzY2hlZHVsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBzZXRPcHRpb25zKG9wdGlvbnM6IENhbGVuZGFyT3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICBvcHRpb25zID0gdGhpcy5nZXREZWZhdWx0T3B0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy5pb3B0aW9ucyA9IHRoaXMuc2V0SU9wdGlvbnMob3B0aW9ucy5pb3B0aW9ucyk7XHJcbiAgICB0aGlzLmFwcGxpZWRPcHRpb25zID0gey4uLm9wdGlvbnN9O1xyXG4gIH1cclxuXHJcbiAgc2V0SU9wdGlvbnMoaW9wdGlvbnNJbjogSU9wdGlvbnMpIHtcclxuICAgIGxldCBpb3B0aW9ucyA9IHRoaXMucHJlcHJvY2Vzc0lPcHRpb25zKGlvcHRpb25zSW4pO1xyXG4gICAgdGhpcy5jYWxlbmRhci5zZXRPcHRpb25zKGlvcHRpb25zKTtcclxuICAgIHRoaXMuY2FsZW5kYXIuc2V0VGhlbWUoaW9wdGlvbnMudGhlbWUpO1xyXG4gICAgdGhpcy5jYWxlbmRhci5yZW5kZXIodHJ1ZSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnRvZ2dsZVNjaGVkdWxlVmlldyh0cnVlKTtcclxuICAgIHJldHVybiBpb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByZXByb2Nlc3NJT3B0aW9ucyhpb3B0aW9uczogSU9wdGlvbnMpOiBJT3B0aW9ucyB7XHJcbiAgICBsZXQgZGVmczogSU9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRJT3B0aW9ucygpO1xyXG4gICAgaWYgKGlvcHRpb25zID09IG51bGwpIHtcclxuICAgICAgaW9wdGlvbnMgPSBkZWZzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaW9wdGlvbnMgPSB7IC4uLmRlZnMsIC4uLmlvcHRpb25zIH07XHJcbiAgICB9XHJcbiAgICBpb3B0aW9ucy51c2VDcmVhdGlvblBvcHVwID0gZmFsc2U7XHJcbiAgICBpb3B0aW9ucy51c2VEZXRhaWxQb3B1cCA9IGZhbHNlO1xyXG4gICAgaWYgKCFpb3B0aW9ucy50aGVtZSkge1xyXG4gICAgICBpb3B0aW9ucy50aGVtZSA9IHRoaXMuZ2V0RGVmYXVsdFRoZW1lKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW9wdGlvbnM7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGVmYXVsdE9wdGlvbnMoKTogQ2FsZW5kYXJPcHRpb25zIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRhcmtNb2RlOiBmYWxzZSxcclxuICAgICAgdGhlbWVDbGFzczogbnVsbCxcclxuICAgICAgaW9wdGlvbnM6IHRoaXMuZ2V0RGVmYXVsdElPcHRpb25zKCksXHJcbiAgICB9IGFzIENhbGVuZGFyT3B0aW9ucztcclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRJT3B0aW9ucygpOiBJT3B0aW9ucyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkZWZhdWx0VmlldzogJ21vbnRoJyxcclxuICAgICAgdGFza1ZpZXc6IHRydWUsXHJcbiAgICAgIHVzZUNyZWF0aW9uUG9wdXA6IGZhbHNlLFxyXG4gICAgICB1c2VEZXRhaWxQb3B1cDogZmFsc2UsXHJcbiAgICAgIHRoZW1lOiB0aGlzLmdldERlZmF1bHRUaGVtZSgpLFxyXG4gICAgICB0ZW1wbGF0ZToge1xyXG4gICAgICAgIG1vbnRoRGF5bmFtZTogZnVuY3Rpb24gKGRheW5hbWUpIHtcclxuICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJjYWxlbmRhci13ZWVrLWRheW5hbWUtbmFtZVwiPicgKyBkYXluYW1lLmxhYmVsICsgJzwvc3Bhbj4nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgd2Vlazoge1xyXG4gICAgICAgIC8vIHN0YXJ0RGF5T2ZXZWVrOiB1bmRlZmluZWQsXHJcbiAgICAgICAgLy8gZGF5bmFtZXM6IHVuZGVmaW5lZCxcclxuICAgICAgICBuYXJyb3dXZWVrZW5kOiBmYWxzZSxcclxuICAgICAgICAvLyB3b3Jrd2VlazogdHJ1ZSxcclxuICAgICAgICBzaG93VGltZXpvbmVDb2xsYXBzZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICB0aW1lem9uZXNDb2xsYXBzZWQ6IHRydWUsXHJcbiAgICAgICAgaG91clN0YXJ0OiA3LFxyXG4gICAgICAgIGhvdXJFbmQ6IDIwLFxyXG4gICAgICB9IGFzIElXZWVrT3B0aW9ucyxcclxuICAgIH0gYXMgSU9wdGlvbnM7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3IobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHRoZW1lLSR7bmFtZX1gKTtcclxuICAgIGlmIChlbCkge1xyXG4gICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKTtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGB0aGVtZS0ke25hbWV9IGNvbG9yOmAsIHN0eWxlLmNvbG9yKTtcclxuICAgICAgcmV0dXJuIHN0eWxlLmNvbG9yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdFRoZW1lKCk6IElUaGVtZSB7XHJcbiAgICBmdW5jdGlvbiBhZGp1c3RIZXhPcGFjaXR5KGNvbG9yLCBvcGFjaXR5KSB7XHJcbiAgICAgIGNvbnN0IHIgPSBwYXJzZUludChjb2xvci5zbGljZSgxLCAzKSwgMTYpO1xyXG4gICAgICBjb25zdCBnID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgICAgY29uc3QgYiA9IHBhcnNlSW50KGNvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcblxyXG4gICAgICByZXR1cm4gJ3JnYmEoJyArIHIgKyAnLCAnICsgZyArICcsICcgKyBiICsgJywgJyArIG9wYWNpdHkgKyAnKSc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGVmYXVsdCBrZXlzIGFuZCBzdHlsZXNcclxuICAgIC8vIFRPRE86IGFwcGx5IE1hdGVyaWFsIERlc2lnbiBUaGVtZSBcclxuICAgIGxldCBiYWNrZ3JvdW5kID0gdGhpcy5nZXRDb2xvcihcImJhY2tncm91bmRcIik7XHJcbiAgICBsZXQgYm9yZGVyID0gdGhpcy5nZXRDb2xvcihcImRpdmlkZXJcIik7XHJcbiAgICBsZXQgYm9yZGVyTGlnaHQgPSB0aGlzLmdldENvbG9yKFwiZGl2aWRlci1saWdodFwiKTtcclxuICAgIGxldCBzaGFkb3cgPSB0aGlzLmdldENvbG9yKFwiZGl2aWRlclwiKTtcclxuICAgIGxldCBoaWdobGlnaHQgPSB0aGlzLmdldENvbG9yKFwiaGlnaGxpZ2h0XCIpO1xyXG4gICAgbGV0IHByaW1hcnkgPSB0aGlzLmdldENvbG9yKFwicHJpbWFyeVwiKTtcclxuICAgIGxldCB3YXJuID0gdGhpcy5nZXRDb2xvcihcIndhcm5cIik7XHJcbiAgICBsZXQgdGV4dCA9IHRoaXMuZ2V0Q29sb3IoXCJmb3JlZ3JvdW5kXCIpO1xyXG4gICAgbGV0IHByaW1hcnlTaGFkZWQgPSB0aGlzLmdldENvbG9yKFwicHJpbWFyeS1zaGFkZWRcIik7XHJcblxyXG4gICAgLy8gdHVpLWZ1bGwtY2FsZW5kYXItd2Vla2RheS1zY2hlZHVsZS10aXRsZVxyXG4gICAgLy9jYWxlbmRhci13ZWVrLWRheW5hbWUtbmFtZVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ2NvbW1vbi5ib3JkZXInOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICdjb21tb24uYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuICAgICAgJ2NvbW1vbi5ob2xpZGF5LmNvbG9yJzogd2FybixcclxuICAgICAgJ2NvbW1vbi5zYXR1cmRheS5jb2xvcic6IHRleHQsXHJcbiAgICAgICdjb21tb24uZGF5bmFtZS5jb2xvcic6IHRleHQsXHJcbiAgICAgICdjb21tb24udG9kYXkuY29sb3InOiAnIzBmMCcsXHJcblxyXG4gICAgICAvLyBjcmVhdGlvbiBndWlkZSBzdHlsZVxyXG4gICAgICAnY29tbW9uLmNyZWF0aW9uR3VpZGUuYmFja2dyb3VuZENvbG9yJzogcHJpbWFyeVNoYWRlZCxcclxuICAgICAgJ2NvbW1vbi5jcmVhdGlvbkd1aWRlLmJvcmRlcic6IGAxcHggc29saWQgJHtoaWdobGlnaHR9YCxcclxuXHJcbiAgICAgIC8vIG1vbnRoIGhlYWRlciAnZGF5bmFtZSdcclxuICAgICAgJ21vbnRoLmRheW5hbWUuaGVpZ2h0JzogJzMxcHgnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5ib3JkZXJMZWZ0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5wYWRkaW5nTGVmdCc6ICcxMHB4JyxcclxuICAgICAgJ21vbnRoLmRheW5hbWUucGFkZGluZ1JpZ2h0JzogJzEwcHgnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5iYWNrZ3JvdW5kQ29sb3InOiAnaW5oZXJpdCcsXHJcbiAgICAgICdtb250aC5kYXluYW1lLmZvbnRTaXplJzogJzEycHgnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5mb250V2VpZ2h0JzogJ25vcm1hbCcsXHJcbiAgICAgICdtb250aC5kYXluYW1lLnRleHRBbGlnbic6ICdsZWZ0JyxcclxuXHJcbiAgICAgIC8vIG1vbnRoIGRheSBncmlkIGNlbGwgJ2RheSdcclxuICAgICAgJ21vbnRoLmhvbGlkYXlFeGNlcHRUaGlzTW9udGguY29sb3InOiAncmdiYSgyNTUsIDY0LCA2NCwgMC40KScsXHJcbiAgICAgICdtb250aC5kYXlFeGNlcHRUaGlzTW9udGguY29sb3InOiAncmdiYSg1MSwgNTEsIDUxLCAwLjQpJyxcclxuICAgICAgJ21vbnRoLndlZWtlbmQuYmFja2dyb3VuZENvbG9yJzogJ2luaGVyaXQnLFxyXG4gICAgICAnbW9udGguZGF5LmZvbnRTaXplJzogJzE0cHgnLFxyXG4gICAgICAnbW9udGguc2NoZWR1bGUuY29sb3InOiBoaWdobGlnaHQsXHJcblxyXG4gICAgICAvLyBtb250aCBzY2hlZHVsZSBzdHlsZVxyXG4gICAgICAnbW9udGguc2NoZWR1bGUuYm9yZGVyUmFkaXVzJzogJzJweCcsXHJcbiAgICAgICdtb250aC5zY2hlZHVsZS5oZWlnaHQnOiAnMjRweCcsXHJcbiAgICAgICdtb250aC5zY2hlZHVsZS5tYXJnaW5Ub3AnOiAnMnB4JyxcclxuICAgICAgJ21vbnRoLnNjaGVkdWxlLm1hcmdpbkxlZnQnOiAnOHB4JyxcclxuICAgICAgJ21vbnRoLnNjaGVkdWxlLm1hcmdpblJpZ2h0JzogJzhweCcsXHJcblxyXG4gICAgICAvLyBtb250aCBtb3JlIHZpZXdcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LmJvcmRlcic6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LmJveFNoYWRvdyc6IGAwIDJweCA2cHggMCAke3NoYWRvd31gLFxyXG4gICAgICAnbW9udGgubW9yZVZpZXcuYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LnBhZGRpbmdCb3R0b20nOiAnMTdweCcsXHJcbiAgICAgICdtb250aC5tb3JlVmlld1RpdGxlLmhlaWdodCc6ICc0NHB4JyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3VGl0bGUubWFyZ2luQm90dG9tJzogJzEycHgnLFxyXG4gICAgICAnbW9udGgubW9yZVZpZXdUaXRsZS5iYWNrZ3JvdW5kQ29sb3InOiAnaW5oZXJpdCcsXHJcbiAgICAgICdtb250aC5tb3JlVmlld1RpdGxlLmJvcmRlckJvdHRvbSc6ICdub25lJyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3VGl0bGUucGFkZGluZyc6ICcxMnB4IDE3cHggMCAxN3B4JyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3TGlzdC5wYWRkaW5nJzogJzAgMTdweCcsXHJcblxyXG4gICAgICAvLyB3ZWVrIGhlYWRlciAnZGF5bmFtZSdcclxuICAgICAgJ3dlZWsuZGF5bmFtZS5oZWlnaHQnOiAnNDJweCcsXHJcbiAgICAgICd3ZWVrLmRheW5hbWUuYm9yZGVyVG9wJzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLmJvcmRlckJvdHRvbSc6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ3dlZWsuZGF5bmFtZS5ib3JkZXJMZWZ0JzogJ2luaGVyaXQnLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLnBhZGRpbmdMZWZ0JzogJzAnLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLmJhY2tncm91bmRDb2xvcic6ICdpbmhlcml0JyxcclxuICAgICAgJ3dlZWsuZGF5bmFtZS50ZXh0QWxpZ24nOiAnbGVmdCcsXHJcbiAgICAgICd3ZWVrLnRvZGF5LmNvbG9yJzogdGV4dCxcclxuICAgICAgJ3dlZWsucGFzdERheS5jb2xvcic6IGJvcmRlckxpZ2h0LFxyXG5cclxuICAgICAgLy8gd2VlayB2ZXJ0aWNhbCBwYW5lbCAndnBhbmVsJ1xyXG4gICAgICAnd2Vlay52cGFuZWxTcGxpdHRlci5ib3JkZXInOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICd3ZWVrLnZwYW5lbFNwbGl0dGVyLmhlaWdodCc6ICczcHgnLFxyXG5cclxuICAgICAgLy8gd2VlayBkYXlncmlkICdkYXlncmlkJ1xyXG4gICAgICAnd2Vlay5kYXlncmlkLmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay5kYXlncmlkLmJhY2tncm91bmRDb2xvcic6IGJhY2tncm91bmQsXHJcblxyXG4gICAgICAnd2Vlay5kYXlncmlkTGVmdC53aWR0aCc6ICc3MnB4JyxcclxuICAgICAgJ3dlZWsuZGF5Z3JpZExlZnQuYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuICAgICAgJ3dlZWsuZGF5Z3JpZExlZnQucGFkZGluZ1JpZ2h0JzogJzhweCcsXHJcbiAgICAgICd3ZWVrLmRheWdyaWRMZWZ0LmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG5cclxuXHJcbiAgICAgICd3ZWVrLnRvZGF5LmJhY2tncm91bmRDb2xvcic6IHByaW1hcnlTaGFkZWQsXHJcbiAgICAgICd3ZWVrLndlZWtlbmQuYmFja2dyb3VuZENvbG9yJzogJ2luaGVyaXQnLFxyXG5cclxuICAgICAgLy8gd2VlayB0aW1lZ3JpZCAndGltZWdyaWQnXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkTGVmdC53aWR0aCc6ICc3MnB4JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRMZWZ0LmJhY2tncm91bmRDb2xvcic6ICdpbmhlcml0JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRMZWZ0LmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZExlZnQuZm9udFNpemUnOiAnMTFweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkTGVmdFRpbWV6b25lTGFiZWwuaGVpZ2h0JzogJzQwcHgnLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZExlZnRBZGRpdGlvbmFsVGltZXpvbmUuYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkT25lSG91ci5oZWlnaHQnOiAnNTJweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkSGFsZkhvdXIuaGVpZ2h0JzogJzI2cHgnLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZEhhbGZIb3VyLmJvcmRlckJvdHRvbSc6ICdub25lJyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRIb3Jpem9udGFsTGluZS5ib3JkZXJCb3R0b20nOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcblxyXG4gICAgICAnd2Vlay50aW1lZ3JpZC5wYWRkaW5nUmlnaHQnOiAnOHB4JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWQuYm9yZGVyUmlnaHQnOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkU2NoZWR1bGUuYm9yZGVyUmFkaXVzJzogJzJweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkU2NoZWR1bGUucGFkZGluZ0xlZnQnOiAnMnB4JyxcclxuXHJcbiAgICAgIC8vICM1MTVjZTYgaXMgYSBzbGF0ZSBibHVlXHJcblxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZS5jb2xvcic6IGhpZ2hsaWdodCxcclxuICAgICAgJ3dlZWsuY3VycmVudFRpbWUuZm9udFNpemUnOiAnMTFweCcsXHJcbiAgICAgICd3ZWVrLmN1cnJlbnRUaW1lLmZvbnRXZWlnaHQnOiAnbm9ybWFsJyxcclxuXHJcbiAgICAgICd3ZWVrLnBhc3RUaW1lLmNvbG9yJzogYm9yZGVyTGlnaHQsXHJcbiAgICAgICd3ZWVrLnBhc3RUaW1lLmZvbnRXZWlnaHQnOiAnbm9ybWFsJyxcclxuXHJcbiAgICAgICd3ZWVrLmZ1dHVyZVRpbWUuY29sb3InOiBib3JkZXIsXHJcbiAgICAgICd3ZWVrLmZ1dHVyZVRpbWUuZm9udFdlaWdodCc6ICdub3JtYWwnLFxyXG5cclxuICAgICAgJ3dlZWsuY3VycmVudFRpbWVMaW5lUGFzdC5ib3JkZXInOiBgMXB4IGRhc2hlZCAke2hpZ2hsaWdodH1gLFxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZUxpbmVCdWxsZXQuYmFja2dyb3VuZENvbG9yJzogaGlnaGxpZ2h0LFxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZUxpbmVUb2RheS5ib3JkZXInOiBgMXB4IHNvbGlkICR7aGlnaGxpZ2h0fWAsXHJcbiAgICAgICd3ZWVrLmN1cnJlbnRUaW1lTGluZUZ1dHVyZS5ib3JkZXInOiAnbm9uZScsXHJcblxyXG4gICAgICAvLyB3ZWVrIGNyZWF0aW9uIGd1aWRlIHN0eWxlXHJcbiAgICAgICd3ZWVrLmNyZWF0aW9uR3VpZGUuY29sb3InOiBoaWdobGlnaHQsXHJcbiAgICAgICd3ZWVrLmNyZWF0aW9uR3VpZGUuZm9udFNpemUnOiAnMTFweCcsXHJcbiAgICAgICd3ZWVrLmNyZWF0aW9uR3VpZGUuZm9udFdlaWdodCc6ICdib2xkJyxcclxuXHJcbiAgICAgIC8vIHdlZWsgZGF5Z3JpZCBzY2hlZHVsZSBzdHlsZVxyXG4gICAgICAnd2Vlay5kYXlHcmlkU2NoZWR1bGUuYm9yZGVyUmFkaXVzJzogJzJweCcsXHJcbiAgICAgICd3ZWVrLmRheUdyaWRTY2hlZHVsZS5oZWlnaHQnOiAnMjRweCcsXHJcbiAgICAgICd3ZWVrLmRheUdyaWRTY2hlZHVsZS5tYXJnaW5Ub3AnOiAnMnB4JyxcclxuICAgICAgJ3dlZWsuZGF5R3JpZFNjaGVkdWxlLm1hcmdpbkxlZnQnOiAnOHB4JyxcclxuICAgICAgJ3dlZWsuZGF5R3JpZFNjaGVkdWxlLm1hcmdpblJpZ2h0JzogJzhweCdcclxuICAgIH0gYXMgSVRoZW1lO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50LWNvbnRhaW5lclwiPlxyXG4gICAgPCEtLSBUaGVzZSBkaXZzIGFyZSBoZXJlIHNvIHRoYXQgd2UgY2FuIHJlYWQgdGhlIHRoZW1lIGNvbG9ycyBmb3IgdGhlIHR1aSB0aGVtZSAtLT5cclxuICAgIDwhLS0gVGhlIG91dGVyIGRpdiBnaXZlcyB0aGUgZGVmYXVsdCBjb2xvciBmb3Igd2hlbiB1c2VyIGRvZXMgbm90IHByb3ZpZGUgYW4gQW5ndWxhciB0aGVtZSAtLT5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogYmx1ZTtcIj4gPGRpdiBpZD1cInRoZW1lLXByaW1hcnlcIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogYmx1ZTtcIj4gPGRpdiBpZD1cInRoZW1lLWhpZ2hsaWdodFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiBibHVlO1wiPiA8ZGl2IGlkPVwidGhlbWUtYWNjZW50XCI+PC9kaXY+PC9kaXY+XHJcbiAgICA8ZGl2IHN0eWxlPVwiY29sb3I6IHJlZDtcIj4gPGRpdiBpZD1cInRoZW1lLXdhcm5cIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogcmdiYSgwLCAwLCAyNTUsIDAuMik7XCI+IDxkaXYgaWQ9XCJ0aGVtZS1wcmltYXJ5LXNoYWRlZFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiAjM2UzZTNlO1wiPiA8ZGl2IGlkPVwidGhlbWUtZm9yZWdyb3VuZFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiAjZTBlMGUwO1wiPiA8ZGl2IGlkPVwidGhlbWUtZGl2aWRlclwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIj4gPGRpdiBpZD1cInRoZW1lLWJhY2tncm91bmRcIj48L2Rpdj48L2Rpdj5cclxuICBcclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXJcIj5cclxuICAgICAgPCEtLSBjYWxlbmRhciB0aXRsZWJhciAtLT5cclxuICAgICAgPG1hdC10b29sYmFyIGNsYXNzPVwibWVudS1iYXJcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICA8IS0tIDxkaXYgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7ZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XCI+IC0tPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICB3aWR0aDogMTAwJTsgIFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtZGl2XCI+XHJcbiAgICAgICAgICAgIDwhLS0gTEVGVCAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJMb25nUHJldigpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaWNvbkxvbmdQcmV2XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIiBcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBmb250LXNpemU6IDJyZW0gIWltcG9ydGFudDtcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DYWxlbmRhclByZXYoKVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25QcmV2XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IGZvbnQtc2l6ZTogMS43cmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJUb2RheSgpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaWNvblRvZGF5XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIiBcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBmb250LXNpemU6IDJyZW0gIWltcG9ydGFudDtcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DYWxlbmRhck5leHQoKVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25OZXh0XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJMb25nTmV4dCgpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaWNvbkxvbmdOZXh0XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlci1kaXZcIj5cclxuICAgICAgICAgICAgPCEtLSBDRU5URVIgLS0+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXZlbnQtY2FsZW5kYXItdGl0bGVcIj57eyBnZXREYXRlKCkgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1kaXZcIj5cclxuICBcclxuICAgICAgICAgICAgPCEtLSBSSUdIVCAtLT5cclxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwidmlldy1idXR0b25cIiB2YWx1ZT1cIm1vbnRoXCIgaWQ9XCJAK2lkL3RvZ2dsZUJ1dHRvblwiIGxheW91dF93aWR0aD1cIndyYXBfY29udGVudFwiXHJcbiAgICAgICAgICAgICAgbGF5b3V0X2hlaWdodD1cIndyYXBfY29udGVudFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtYnV0dG9uIHZhbHVlPVwibW9udGhcIiBjbGFzcz1cInZpZXctYnV0dG9uXCIgKGNsaWNrKT1cIm9uTW9udGhWaWV3KClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25CeU1vbnRoXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIG1hdC1idXR0b24gdmFsdWU9XCJ3ZWVrXCIgY2xhc3M9XCJ2aWV3LWJ1dHRvblwiIChjbGljayk9XCJvbldlZWtWaWV3KClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25CeVdlZWtcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWJ1dHRvbiB2YWx1ZT1cImRheVwiIGNsYXNzPVwidmlldy1idXR0b25cIiAoY2xpY2spPVwib25EYXlWaWV3KClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25CeURheVwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXRvb2xiYXI+XHJcbiAgICAgIDxuZ3gtbWF0LXR1aS1jYWxlbmRhci13cmFwcGVyPjwvbmd4LW1hdC10dWktY2FsZW5kYXItd3JhcHBlcj5cclxuICAgIDwvZGl2PlxyXG4gIFxyXG4gIDwvc2VjdGlvbj5cclxuIl19
@@ -410,6 +410,7 @@ class NgxMatTuiCalendarComponent {
410
410
  // console.warn(`calendar.component.ts: createTUICalendar: ioptions:`, ioptions);
411
411
  this.calendar = new Calendar('#calendar', ioptions);
412
412
  // console.warn(`calendar.component.ts: createTUICalendar: this.calendar:`, this.calendar);
413
+ this.calendar.toggleScheduleView(true);
413
414
  }
414
415
  bindCallbacks() {
415
416
  this.bindAfterRenderSchedule();
@@ -607,6 +608,7 @@ class NgxMatTuiCalendarComponent {
607
608
  this.calendar.setOptions(ioptions);
608
609
  this.calendar.setTheme(ioptions.theme);
609
610
  this.calendar.render(true);
611
+ this.calendar.toggleScheduleView(true);
610
612
  return ioptions;
611
613
  }
612
614
  preprocessIOptions(ioptions) {
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-mat-tui-calendar.js","sources":["../../../projects/ngx-mat-tui-calendar/src/lib/local-date.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.module.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.service.ts","../../../projects/ngx-mat-tui-calendar/src/public-api.ts","../../../projects/ngx-mat-tui-calendar/src/ngx-mat-tui-calendar.ts"],"sourcesContent":["\r\n// import { TZDate } from 'tui-calendar';\r\n\r\nexport class LocalDate {\r\n date: Date;\r\n\r\n // month = 1 to 12\r\n constructor(args) {\r\n let numbers;\r\n if (typeof args == 'string') {\r\n numbers = LocalDate.parse_YYYYMMDD(args);\r\n } else if (args instanceof LocalDate) {\r\n numbers = args.get();\r\n } else if (args instanceof Date) {\r\n numbers = LocalDate.convertDateToNumbers(args);\r\n } else if (typeof args.toDate === 'function') {\r\n numbers = LocalDate.convertDateToNumbers(args.toDate());\r\n } else if (args['_date'] instanceof Date ) {\r\n numbers = LocalDate.convertDateToNumbers(args['_date']);\r\n } else if (args instanceof Object) {\r\n numbers = args;\r\n }\r\n this.date = LocalDate.convertNumbersToDate(numbers);\r\n }\r\n\r\n static convertToJsDate(args) {\r\n return (new LocalDate(args)).toDate();\r\n }\r\n\r\n\r\n // return new LocalDate(date.getFullYear(), date.getMonth() + 1, date.getDate());\r\n static parse_YYYYMMDD(str) {\r\n // yyyy-mm-dd\r\n const regexp = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)/g;\r\n let matches = Array.from(\r\n str.matchAll(regexp), m => ({\r\n year: Number(m[1]),\r\n month: Number(m[2]),\r\n day: Number(m[3])\r\n })\r\n );\r\n if (matches.length != 1) {\r\n console.error(`dateIn: unknown date format: ${str}`);\r\n return null;\r\n }\r\n return matches[0];\r\n }\r\n static convertNumbersToDate({ year, month, day, hours, minutes, seconds, milliseconds }) {\r\n // month = 1 to 12\r\n // start with today's *local* date. this si really important\r\n let date = new Date();\r\n date.setFullYear(year);\r\n date.setMonth((month==null) ? 0 : month - 1);\r\n date.setDate((day==null) ? 1 : day);\r\n date.setHours((hours==null) ? 0 : hours);\r\n date.setMinutes((minutes==null) ? 0 : minutes);\r\n date.setSeconds((seconds==null) ? 0 : seconds);\r\n date.setMilliseconds((milliseconds==null) ? 1 : milliseconds);\r\n return date;\r\n }\r\n\r\n\r\n static convertDateToNumbers(date) {\r\n // month = 1 to 12\r\n return {\r\n year: date.getFullYear(),\r\n month: date.getMonth() + 1,\r\n day: date.getDate(),\r\n hours: date.getHours(),\r\n minutes: date.getMinutes(),\r\n seconds: date.getSeconds(),\r\n milliseconds: date.getMilliseconds(),\r\n };\r\n }\r\n\r\n get() {\r\n return LocalDate.convertDateToNumbers(this.date);\r\n }\r\n\r\n toMsgFormat() {\r\n return this.toYYYYMMDD();\r\n }\r\n toYYYYMMDD() {\r\n // yyyy-mm-dd\r\n\r\n let yyyy = this.date.getFullYear();\r\n let mm = (this.date.getMonth() + 1).toString().padStart(2, '0');\r\n let dd = (this.date.getDate()).toString().padStart(2, '0');\r\n let str = `${yyyy}-${mm}-${dd}`;\r\n // console.warn(`date=${str}=${this.toDisplayFormat()}`);\r\n return str;\r\n }\r\n toDisplayDateFormat() {\r\n return this.date.toLocaleDateString(\"en-US\", {\r\n weekday: 'short',\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n });\r\n }\r\n toDisplayFormat() {\r\n return this.date.toString();\r\n }\r\n toDate() {\r\n return this.date;\r\n }\r\n clearTime() {\r\n this.date.setHours(0, 0, 0, 1);\r\n }\r\n\r\n}\r\n\r\n","import { Component, ElementRef, HostBinding, Inject, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { DateType, default as Calendar, IEventScheduleObject, ISchedule, TZDate } from 'tui-calendar';\n\nimport { LocalDate } from '../local-date.js';\nimport { CalendarEditorOptions } from '../calendar-editor-options';\n\n\n@Component({\n selector: 'ngx-mat-tui-calendar-editor-dialog',\n templateUrl: './ngx-mat-tui-calendar-editor-dialog.component.html',\n styleUrls: ['./ngx-mat-tui-calendar-editor-dialog.component.scss']\n})\nexport class NgxMatTuiCalendarEditorDialogComponent implements OnInit {\n private id: string;\n titleStr: string = '';\n locationStr: string = '';\n closed: boolean = false;\n eventForm: FormGroup;\n date: Date;\n startDate: Date;\n endDate: Date;\n startTime: Date;\n endTime: Date;\n isAllDay: boolean = false;\n color: string;\n themeClass: string = '';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: CalendarEditorOptions,\n public dialogRef: MatDialogRef<NgxMatTuiCalendarEditorDialogComponent>,\n ) {\n // console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: schedule:', schedule);\n\n // console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: data:', data);\n this.color = data.darkMode ? 'accent' : 'primary';\n\n const schedule = data.schedule;\n if (schedule == null) {\n this.id = null;\n } else {\n if (schedule.id) {\n this.id = schedule.id.toString();\n }\n }\n this.titleStr = (schedule.title) ? schedule.title.toString() : '';\n this.locationStr = (schedule.location) ? schedule.location.toString() : '';\n\n\n this.isAllDay = (schedule.isAllDay == true);\n\n this.startDate = LocalDate.convertToJsDate(schedule.start) as Date;\n this.endDate = LocalDate.convertToJsDate(schedule.end) as Date;\n\n this.startTime = new Date(this.startDate);\n this.endTime = new Date(this.endDate);\n this.startDate.setHours(0, 0, 0, 1);\n this.endDate.setHours(0, 0, 0, 1);\n\n this.eventForm = new FormGroup(\n {\n title: new FormControl(this.titleStr),\n location: new FormControl(this.locationStr),\n scheduleType: new FormControl((schedule.isAllDay == true) ? \"all-day\" : \"time-slot\"),\n start: new FormControl(this.startDate),\n end: new FormControl(this.endDate),\n date: new FormControl(this.startDate),\n time1: new FormControl(this.startTime),\n time2: new FormControl(this.endTime, [Validators.required]),\n },\n this.getDateValidator(),\n );\n\n }\n\n getDateValidator() {\n const validator: ValidatorFn = (group: FormGroup): { [key: string]: any } => {\n const scheduleType = group.get(\"scheduleType\").value;\n if (group.get(\"scheduleType\").value == \"time-slot\") {\n let time1 = group.get(\"time1\").value;\n let time2 = group.get(\"time2\").value;\n if (time1 >= time2) {\n return {\n dates: \"End time must be later than the start time\"\n };\n }\n }\n return {};\n };\n return validator;\n }\n\n\n ngOnInit(): void {\n // console.dir(`Dialog config: ${this.dialogConfig}`);\n // let start: Date = (LocalDate.convertToJsDate(this.schedule.start)).toDate();\n // let end: Date = (LocalDate.convertToJsDate(this.schedule.end)).toDate();\n // this.eventForm.get(\"date\").setValue(start);\n // this.eventForm.get(\"start\").setValue(start);\n // this.eventForm.get(\"end\").setValue(end);\n\n }\n\n\n\n onSave(form: NgForm) {\n // console.log(`onSave form.invalid=${form.invalid}; this.closed=${this.closed} this.titleStr=${this.titleStr}`);\n if (form.invalid || this.closed) return;\n let schedule = this.data.schedule;\n schedule.title = this.eventForm.get(\"title\").value;\n schedule.location = this.eventForm.get(\"location\").value;\n schedule.isAllDay = this.isAllDay;\n schedule.category = this.isAllDay ? 'allday' : 'time'; // CATEGORY MUST BE DEFINED: 'milestone', 'task', allday', 'time'\n if (this.isAllDay) {\n schedule.start = LocalDate.convertToJsDate(this.eventForm.get(\"start\").value) as Date;\n schedule.start.setHours(0, 0, 0, 1);\n schedule.end = LocalDate.convertToJsDate(this.eventForm.get(\"end\").value) as Date;\n schedule.end.setHours(0, 0, 0, 1);\n } else {\n this.startTime = LocalDate.convertToJsDate(this.eventForm.get(\"time1\").value) as Date;\n schedule.start = LocalDate.convertToJsDate(this.eventForm.get(\"date\").value) as Date;\n schedule.start.setHours(\n this.startTime.getHours(),\n this.startTime.getMinutes(),\n this.startTime.getSeconds(),\n this.startTime.getMilliseconds(),\n );\n this.endTime = LocalDate.convertToJsDate(this.eventForm.get(\"time2\").value) as Date;\n schedule.end = LocalDate.convertToJsDate(this.eventForm.get(\"date\").value) as Date;\n schedule.end.setHours(\n this.endTime.getHours(),\n this.endTime.getMinutes(),\n this.endTime.getSeconds(),\n this.endTime.getMilliseconds(),\n );\n }\n // console.log(`pop-up-event-editor.component.ts: user clicked SAVE event=${schedule}`);\n // this.eventOutput.emit(schedule);\n form.resetForm();\n this.closeMe(schedule);\n }\n\n onCancel() {\n // this.cancelled.emit();\n // console.log('openPopupScheduleEditor: user clicked CANCEL');\n this.closeMe(null);\n }\n\n onDelete() {\n // this.cancelled.emit();\n // console.log('openPopupScheduleEditor: user clicked DELETE');\n this.closeMe(this.data.schedule, true);\n }\n\n\n closeMe(schedule: ISchedule, performDelete?: boolean) {\n // console.log('closeMe: The dialog is closing', schedule);\n this.closed = true;\n this.dialogRef.close({ schedule, performDelete: (performDelete == true) });\n }\n\n log(str) {\n // console.warn(str);\n }\n\n onUseAllDay() {\n this.isAllDay = true;\n }\n onUseTimeSlot() {\n this.isAllDay = false;\n }\n\n}\n","<div [className]=\"data.themeClass + ' ' + 'event-editor'\">\n <form id=\"my-form\" [formGroup]=\"eventForm\" class=\"event-editor-form\" (submit)=\"onSave(postForm);\" #postForm=\"ngForm\">\n <div class=\"grid-wrapper\">\n <div class=\"grid-title\">\n <mat-form-field [color]=\"color\" class=\"editor-title\">\n <input matInput type=\"text\" name=\"title\" formControlName=\"title\" placeholder=\"Title\">\n <!-- <mat-error style=\"height: fit-content;\" *ngIf=\"title.invalid\">Please enter a title (of 1 characters or more)\n for\n your event.</mat-error> -->\n </mat-form-field>\n </div>\n <div class=\"grid-location\">\n <mat-form-field [color]=\"color\" class=\"editor-location\">\n <input matInput type=\"location\" name=\"location\" formControlName=\"location\" placeholder=\"Location\">\n </mat-form-field>\n </div>\n <div class=\"grid-radios\" style=\"display: flex;\">\n <mat-radio-group [color]=\"color\" aria-label=\"Select an option\" style=\"margin-bottom: 1em;\" name=\"scheduleType\"\n formControlName=\"scheduleType\" required>\n <mat-radio-button value=\"all-day\" (change)=\"onUseAllDay()\" id=\"button-all-day\" [color]=\"color\" class=\"radio-button\">All Day\n </mat-radio-button>\n <mat-radio-button value=\"time-slot\" (change)=\"onUseTimeSlot()\" id=\"button-time-slot\" [color]=\"color\" class=\"radio-button\">Time Slot\n </mat-radio-button>\n </mat-radio-group>\n </div>\n <div class=\"grid-date\">\n <mat-form-field *ngIf=\"isAllDay\" [color]=\"color\" class=\"date-range-form-field\" appearance=\"fill\">\n <mat-label [color]=\"color\">Pick a Date Range</mat-label>\n <mat-date-range-input [color]=\"color\" [panelClass]=\"data.themeClass\" [rangePicker]=\"rangePicker\" #dateRangeInput>\n <input matStartDate placeholder=\"Start date\" formControlName=\"start\" name=\"start\">\n <input matEndDate placeholder=\"End date\" formControlName=\"end\" name=\"end\">\n </mat-date-range-input>\n <mat-datepicker-toggle [color]=\"color\" [panelClass]=\"data.themeClass\" matSuffix [for]=\"rangePicker\"></mat-datepicker-toggle>\n <mat-date-range-picker [color]=\"color\" class=\"picker\" #rangePicker></mat-date-range-picker>\n </mat-form-field>\n <mat-form-field [color]=\"color\" *ngIf=\"!isAllDay\" class=\"date-form-field\" appearance=\"fill\">\n <mat-label>Choose a date</mat-label>\n <input matInput [matDatepicker]=\"dpicker\" formControlName=\"date\" name=\"date\">\n <mat-datepicker-toggle [color]=\"color\" matSuffix [for]=\"dpicker\"></mat-datepicker-toggle>\n <mat-datepicker [color]=\"color\" #dpicker></mat-datepicker>\n </mat-form-field>\n </div>\n <div *ngIf=\"!isAllDay\" class=\"grid-time time-slot\">\n <mat-form-field [color]=\"color\" class=\"form-field-time\" appearance=\"fill\">\n <mat-label>Start</mat-label>\n <input matTimepicker [color]=\"color\" [strict]=\"false\" id=\"timepicker-start\" mode=\"12h\" formControlName=\"time1\" name=\"time1\"\n placeholder=\"Please select time...\">\n </mat-form-field>\n <mat-form-field [color]=\"color\" class=\"form-field-time\" appearance=\"fill\">\n <mat-label>End</mat-label>\n <input matTimepicker [color]=\"color\" [strict]=\"false\" id=\"timepicker-end\" mode=\"12h\" formControlName=\"time2\" name=\"time2\"\n placeholder=\"Please select time...\">\n </mat-form-field>\n </div>\n <div *ngIf=\"!isAllDay\" class=\"grid-error\">\n <label *ngIf=\"eventForm.invalid\">{{ eventForm.errors?.dates }}</label>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"editor-footer\">\n <button mat-raised-button [color]=\"color\" id=\"editor-submit-button\" type=\"submit\" style=\"margin-right: 4px;\">SAVE</button>\n <button mat-raised-button id=\"editor-delete-button\" type=\"button\" (click)=\"onDelete()\" *ngIf=\"(data.schedule.id!=null)\">DELETE</button>\n <button mat-raised-button id=\"editor-cancel-button\" type=\"button\" (click)=\"onCancel()\">CANCEL</button>\n </div>\n </form>\n </div>","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ngx-mat-tui-calendar-wrapper',\n templateUrl: './ngx-mat-tui-calendar-wrapper.component.html',\n styleUrls: ['./ngx-mat-tui-calendar-wrapper.component.scss'],\n encapsulation: ViewEncapsulation.None, // this is needed so that our css rules override those in tui-calendar package\n})\nexport class NgxMatTuiCalendarWrapperComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div id=\"calendar\"></div> <!-- TUI Calendar gets instatited here -->\n","import { Component, ViewChild, OnInit, Output, EventEmitter, Input, OnChanges, SimpleChanges, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport distinctColors from 'distinct-colors';\r\nimport { Color } from \"chroma-js\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nimport {\r\n faCalendarCheck,\r\n faCaretSquareLeft,\r\n faCaretSquareRight,\r\n faTable,\r\n faColumns,\r\n faList,\r\n faListAlt,\r\n faForward,\r\n faFastBackward,\r\n faBackward,\r\n faCaretLeft,\r\n faCaretRight,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport {\r\n default as Calendar,\r\n ICalendarInfo,\r\n IEventDateObject,\r\n IEventMoreObject,\r\n IEventObject,\r\n IEventScheduleObject,\r\n IOptions,\r\n ISchedule,\r\n ITheme,\r\n ITimezone,\r\n IWeekOptions,\r\n TEventBeforeCreateSchedule,\r\n TZDate,\r\n} from 'tui-calendar';\r\n\r\n// project \r\nimport { LocalDate } from './local-date.js';\r\nimport { NgxMatTuiCalendarEditorDialogComponent } from './ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\r\nimport { CalendarOptions } from './calendar-options';\r\nimport { CalendarEditorOptions } from './calendar-editor-options';\r\n\r\n@Component({\r\n selector: 'ngx-mat-tui-calendar',\r\n templateUrl: './ngx-mat-tui-calendar.component.html',\r\n styleUrls: [\r\n './ngx-mat-tui-calendar.component.scss'\r\n ],\r\n})\r\nexport class NgxMatTuiCalendarComponent implements OnInit, OnChanges, OnDestroy {\r\n iconToday = faCalendarCheck;\r\n // iconPrev = faCaretSquareLeft;\r\n // iconNext = faCaretSquareRight;\r\n iconPrev = faCaretLeft;\r\n iconNext = faCaretRight;\r\n iconLongPrev = faBackward;\r\n iconLongNext = faForward;\r\n iconByMonth = faTable;\r\n iconByWeek = faColumns;\r\n iconByDay = faListAlt;\r\n\r\n calendar: Calendar; // the TUI Calendar Object\r\n calendarId: string;\r\n colors: Color[];\r\n colorIndex: number;\r\n @Output() userCreatedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Output() userUpdatedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Output() userDeletedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Input() options: CalendarOptions;\r\n appliedOptions: CalendarOptions; // this is needed for when options is not connected\r\n\r\n constructor(public dialog: MatDialog) {\r\n // we slice off the first color since it is gray\r\n this.colors = distinctColors({ lightMin: 70, count: 15 }).slice(1);\r\n this.colorIndex = 0;\r\n this.calendarId = uuidv4();\r\n\r\n this.appliedOptions = this.getDefaultOptions();\r\n }\r\n\r\n ngOnInit() {\r\n // console.warn(`calendar.component.ts: ngOnit`)\r\n this.createTUICalendar();\r\n this.bindCallbacks();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // console.warn(changes);\r\n if (this.calendar) {\r\n\r\n if (changes.options) {\r\n // console.warn(`change.option:`, changes.options);\r\n let options = changes.options.currentValue;\r\n this.setOptions(options);\r\n }\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.calendar.destroy();\r\n }\r\n\r\n onCalendarLongPrev() {\r\n let date: Date = (this.calendar.getDate() as TZDate).toDate();\r\n let days = 0;\r\n let months = 0;\r\n let years = 0;\r\n switch (this.calendar.getViewName()) {\r\n case 'day':\r\n days = -7;\r\n break;\r\n case 'week':\r\n days = -28;\r\n break;\r\n case 'month':\r\n years = -1;\r\n break;\r\n }\r\n date.setFullYear(date.getFullYear() + years);\r\n date.setMonth(date.getMonth() + months); // date class does the modular arithmetic\r\n date.setDate(date.getDate() + days); // date class does the modular arithmetic\r\n this.calendar.setDate(date);\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarPrev() {\r\n this.calendar.prev();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarToday() {\r\n this.calendar.today();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarNext() {\r\n this.calendar.next();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarLongNext() {\r\n let date: Date = (this.calendar.getDate() as TZDate).toDate();\r\n let days = 0;\r\n let months = 0;\r\n let years = 0;\r\n switch (this.calendar.getViewName()) {\r\n case 'day':\r\n days = 7;\r\n break;\r\n case 'week':\r\n days = 28;\r\n break;\r\n case 'month':\r\n years = 1;\r\n break;\r\n }\r\n date.setFullYear(date.getFullYear() + years);\r\n date.setMonth(date.getMonth() + months); // date class does the modular arithmetic\r\n date.setDate(date.getDate() + days); // date class does the modular arithmetic\r\n this.calendar.setDate(date);\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n\r\n onMonthView() {\r\n this.calendar.changeView('month');\r\n }\r\n\r\n onWeekView() {\r\n console.log(`onWeekView`)\r\n this.calendar.changeView('week');\r\n this.calendar.render(true); // <-- so that selection is cleared\r\n }\r\n\r\n onDayView() {\r\n this.calendar.changeView('day');\r\n }\r\n\r\n\r\n getDate() {\r\n let date = this.calendar.getDate();\r\n let str = date.toDate().toLocaleDateString(\"en-US\", {\r\n year: 'numeric',\r\n month: 'short',\r\n });\r\n return str;\r\n }\r\n\r\n createTUICalendar() {\r\n let ioptions = this.preprocessIOptions(null);\r\n // console.warn(`calendar.component.ts: createTUICalendar: ioptions:`, ioptions);\r\n this.calendar = new Calendar('#calendar', ioptions);\r\n // console.warn(`calendar.component.ts: createTUICalendar: this.calendar:`, this.calendar);\r\n }\r\n\r\n\r\n bindCallbacks() {\r\n this.bindAfterRenderSchedule();\r\n this.bindClickTimezonesCollapseBtn();\r\n this.bindClickDayname();\r\n this.bindClickMore();\r\n this.bindClickSchedule();\r\n this.bindBeforeCreateSchedule();\r\n this.bindBeforeUpdateSchedule();\r\n this.bindBeforeDeleteSchedule();\r\n }\r\n\r\n bindAfterRenderSchedule() {\r\n let that = this;\r\n this.calendar.on('afterRenderSchedule', function (event: { schedule: ISchedule }) {\r\n // console.warn(`afterRenderSchedule`, event);\r\n });\r\n }\r\n\r\n bindClickTimezonesCollapseBtn() {\r\n let that = this;\r\n this.calendar.on('clickTimezonesCollapseBtn', function (timezonesCollapsed: boolean) {\r\n // console.warn(`clickTimezonesCollapseBtn`, timezonesCollapsed);\r\n });\r\n }\r\n\r\n\r\n bindClickDayname() {\r\n let that = this;\r\n this.calendar.on('clickDayname', function (event: IEventDateObject) {\r\n // console.warn(`clickDayname`, event);\r\n });\r\n }\r\n\r\n bindClickMore() {\r\n let that = this;\r\n this.calendar.on('clickMore', function (event: IEventMoreObject) {\r\n // console.warn(`clickMore`, event);\r\n });\r\n }\r\n\r\n bindClickSchedule() {\r\n // only works if useDetailPopup: false,\r\n let that = this;\r\n this.calendar.on('clickSchedule', function (event: IEventScheduleObject) {\r\n // console.warn(`clickSchedule`, event);\r\n let schedule: ISchedule = { ...event.schedule };\r\n schedule.start = (new LocalDate(schedule.start)).toDate();\r\n schedule.end = (new LocalDate(schedule.end)).toDate();\r\n that.openPopupScheduleEditor(schedule);\r\n });\r\n }\r\n\r\n bindBeforeCreateSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeCreateSchedule', function (event: TEventBeforeCreateSchedule) {\r\n // console.log(`beforeCreateSchedule`, event);\r\n let start: Date = (new LocalDate(event.start)).toDate();\r\n start.setHours(9);\r\n let end: Date = (new LocalDate(event.end)).toDate();\r\n end.setHours(10);\r\n that.openPopupScheduleEditor({\r\n title: '',\r\n start: start,\r\n end: end,\r\n id: null,\r\n } as ISchedule);\r\n });\r\n }\r\n\r\n bindBeforeUpdateSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeUpdateSchedule', function (event: IEventObject) {\r\n // console.log(`beforeUpdateSchedule`, event);\r\n that.updateScheduleAndNotifyParent(event);\r\n });\r\n }\r\n\r\n bindBeforeDeleteSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeDeleteSchedule', function (event: IEventScheduleObject) {\r\n // console.log(`beforeDeleteSchedule`, event.schedule);\r\n // console.log(`beforeDeleteSchedule`, event.schedule);\r\n that.deleteScheduleAndNotifyParent({ id: event.schedule.id, calendarId: event.schedule.calendarId });\r\n });\r\n }\r\n\r\n nextColor() {\r\n let color = this.colors[this.colorIndex++].hex();\r\n if (this.colorIndex >= this.colors.length) this.colorIndex = 0;\r\n return color;\r\n }\r\n\r\n createScheduleAndNotifyParent(args: ISchedule) {\r\n let schedule = this.createSchedule(args);\r\n this.userCreatedSchedule.emit(schedule);\r\n return schedule;\r\n }\r\n\r\n createSchedules(schedules: ISchedule[]) {\r\n let newSchedules = [];\r\n for (let schedule of schedules) {\r\n newSchedules.push(this.createSchedule(schedule));\r\n }\r\n return newSchedules;\r\n }\r\n\r\n createSchedule(args: ISchedule): ISchedule {\r\n // if (form.invalid) return;\r\n\r\n // create a color\r\n let color = this.nextColor();\r\n // console.log(color);\r\n\r\n // create an id\r\n let id = (args.id == null) ? '' : args.id.toString();\r\n if (id.length === 0) {\r\n id = uuidv4();\r\n }\r\n\r\n let start: Date = LocalDate.convertToJsDate(args.start);\r\n let end: Date = LocalDate.convertToJsDate(args.end);\r\n\r\n let schedule: ISchedule = {\r\n id,\r\n calendarId: (args.calendarId == null) ? this.calendarId : args.calendarId,\r\n title: args.title,\r\n start: start,\r\n end: end,\r\n category: args.category,\r\n isAllDay: args.isAllDay,\r\n dueDateClass: '',\r\n bgColor: color,\r\n } as ISchedule\r\n // console.log(`event-calendar.component.ts: createEvent:`, schedule);\r\n this.calendar.createSchedules([schedule]);\r\n return this.calendar.getSchedule(schedule.id, schedule.calendarId);\r\n }\r\n\r\n updateScheduleAndNotifyParent(args: ISchedule) {\r\n let schedule = this.updateSchedule(args);\r\n this.userUpdatedSchedule.emit(schedule);\r\n return schedule;\r\n }\r\n\r\n updateSchedule(schedule: ISchedule) {\r\n // console.log(`event-calendar.component.ts: updateSchedule:`, schedule);\r\n let calendarId = (schedule.calendarId == null) ? this.calendarId : schedule.calendarId;\r\n this.calendar.updateSchedule(schedule.id, calendarId, schedule, false);\r\n return this.calendar.getSchedule(schedule.id, calendarId);\r\n }\r\n\r\n getSchedule(args: { id: string, calendarId: string }) {\r\n // console.log(`event-calendar.component.ts: getSchedule:`, schedule);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n return this.calendar.getSchedule(args.id, calendarId);\r\n }\r\n\r\n deleteScheduleAndNotifyParent(args: { id: string, calendarId: string }) {\r\n this.deleteSchedule(args);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n this.userDeletedSchedule.emit({ id: args.id, calendarId });\r\n }\r\n\r\n deleteSchedule(args: { id: string, calendarId: string }) {\r\n // console.log(`event-calendar.component.ts: deleteSchedule:`, schedule);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n this.calendar.deleteSchedule(args.id, calendarId, false);\r\n }\r\n\r\n deleteAllSchedules() {\r\n this.calendar.clear();\r\n }\r\n\r\n openPopupScheduleEditor(schedule: ISchedule) {\r\n // console.log('openPopupScheduleEditor: calevent:', schedule);\r\n const dialogConfig = new MatDialogConfig();\r\n if (this.appliedOptions.themeClass) {\r\n dialogConfig.panelClass = this.appliedOptions.themeClass;\r\n }\r\n // console.warn(`options: `, this.appliedOptions);\r\n dialogConfig.data = { schedule, darkMode: this.appliedOptions.darkMode, themeClass: this.appliedOptions.themeClass } as CalendarEditorOptions;\r\n dialogConfig.autoFocus = true;\r\n const dialogRef = this.dialog.open(NgxMatTuiCalendarEditorDialogComponent, dialogConfig);\r\n // const dialogRef = this.dialog.open(NgxMatTuiCalendarScheduleEditorDialogComponent, {\r\n // data: schedule,\r\n // });\r\n dialogRef.afterClosed().subscribe((result: { schedule: ISchedule, performDelete: boolean }) => {\r\n // console.log('openPopupScheduleEditor: The dialog was closed', result);\r\n this.calendar.render(true); // <-- so that selection is cleared\r\n if (result && result.schedule) {\r\n let schedule = result.schedule;\r\n if (result.performDelete == true) {\r\n // delete\r\n // console.log(`openPopupScheduleEditor:afterCLosed: deleteSchedule`);\r\n this.deleteScheduleAndNotifyParent({ id: schedule.id, calendarId: schedule.calendarId });\r\n } else if (schedule.id == null) {\r\n // console.log(`openPopupScheduleEditor:afterCLosed: addSchedule`);\r\n this.createScheduleAndNotifyParent(schedule);\r\n } else {\r\n // console.log(`openPopupScheduleEditor:afterCLosed: updateSchedule`);\r\n this.updateScheduleAndNotifyParent(schedule);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n setOptions(options: CalendarOptions) {\r\n if (options == null) {\r\n options = this.getDefaultOptions();\r\n }\r\n options.ioptions = this.setIOptions(options.ioptions);\r\n this.appliedOptions = {...options};\r\n }\r\n\r\n setIOptions(ioptionsIn: IOptions) {\r\n let ioptions = this.preprocessIOptions(ioptionsIn);\r\n this.calendar.setOptions(ioptions);\r\n this.calendar.setTheme(ioptions.theme);\r\n this.calendar.render(true);\r\n return ioptions;\r\n }\r\n\r\n preprocessIOptions(ioptions: IOptions): IOptions {\r\n let defs: IOptions = this.getDefaultIOptions();\r\n if (ioptions == null) {\r\n ioptions = defs;\r\n } else {\r\n ioptions = { ...defs, ...ioptions };\r\n }\r\n ioptions.useCreationPopup = false;\r\n ioptions.useDetailPopup = false;\r\n if (!ioptions.theme) {\r\n ioptions.theme = this.getDefaultTheme();\r\n }\r\n return ioptions;\r\n }\r\n\r\n\r\n getDefaultOptions(): CalendarOptions {\r\n return {\r\n darkMode: false,\r\n themeClass: null,\r\n ioptions: this.getDefaultIOptions(),\r\n } as CalendarOptions;\r\n }\r\n\r\n getDefaultIOptions(): IOptions {\r\n return {\r\n defaultView: 'month',\r\n taskView: true,\r\n useCreationPopup: false,\r\n useDetailPopup: false,\r\n theme: this.getDefaultTheme(),\r\n template: {\r\n monthDayname: function (dayname) {\r\n return '<span class=\"calendar-week-dayname-name\">' + dayname.label + '</span>';\r\n }\r\n },\r\n week: {\r\n // startDayOfWeek: undefined,\r\n // daynames: undefined,\r\n narrowWeekend: false,\r\n // workweek: true,\r\n showTimezoneCollapseButton: true,\r\n timezonesCollapsed: true,\r\n hourStart: 7,\r\n hourEnd: 20,\r\n } as IWeekOptions,\r\n } as IOptions;\r\n\r\n }\r\n\r\n getColor(name: string): string {\r\n const el = document.getElementById(`theme-${name}`);\r\n if (el) {\r\n const style = window.getComputedStyle(el, null);\r\n // console.warn(`theme-${name} color:`, style.color);\r\n return style.color;\r\n }\r\n return '';\r\n }\r\n\r\n getDefaultTheme(): ITheme {\r\n function adjustHexOpacity(color, opacity) {\r\n const r = parseInt(color.slice(1, 3), 16);\r\n const g = parseInt(color.slice(3, 5), 16);\r\n const b = parseInt(color.slice(5, 7), 16);\r\n\r\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + opacity + ')';\r\n }\r\n\r\n // default keys and styles\r\n // TODO: apply Material Design Theme \r\n let background = this.getColor(\"background\");\r\n let border = this.getColor(\"divider\");\r\n let borderLight = this.getColor(\"divider-light\");\r\n let shadow = this.getColor(\"divider\");\r\n let highlight = this.getColor(\"highlight\");\r\n let primary = this.getColor(\"primary\");\r\n let warn = this.getColor(\"warn\");\r\n let text = this.getColor(\"foreground\");\r\n let primaryShaded = this.getColor(\"primary-shaded\");\r\n\r\n // tui-full-calendar-weekday-schedule-title\r\n //calendar-week-dayname-name\r\n return {\r\n 'common.border': `1px solid ${border}`,\r\n 'common.backgroundColor': background,\r\n 'common.holiday.color': warn,\r\n 'common.saturday.color': text,\r\n 'common.dayname.color': text,\r\n 'common.today.color': '#0f0',\r\n\r\n // creation guide style\r\n 'common.creationGuide.backgroundColor': primaryShaded,\r\n 'common.creationGuide.border': `1px solid ${highlight}`,\r\n\r\n // month header 'dayname'\r\n 'month.dayname.height': '31px',\r\n 'month.dayname.borderLeft': `1px solid ${border}`,\r\n 'month.dayname.paddingLeft': '10px',\r\n 'month.dayname.paddingRight': '10px',\r\n 'month.dayname.backgroundColor': 'inherit',\r\n 'month.dayname.fontSize': '12px',\r\n 'month.dayname.fontWeight': 'normal',\r\n 'month.dayname.textAlign': 'left',\r\n\r\n // month day grid cell 'day'\r\n 'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\r\n 'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\r\n 'month.weekend.backgroundColor': 'inherit',\r\n 'month.day.fontSize': '14px',\r\n 'month.schedule.color': highlight,\r\n\r\n // month schedule style\r\n 'month.schedule.borderRadius': '2px',\r\n 'month.schedule.height': '24px',\r\n 'month.schedule.marginTop': '2px',\r\n 'month.schedule.marginLeft': '8px',\r\n 'month.schedule.marginRight': '8px',\r\n\r\n // month more view\r\n 'month.moreView.border': `1px solid ${border}`,\r\n 'month.moreView.boxShadow': `0 2px 6px 0 ${shadow}`,\r\n 'month.moreView.backgroundColor': background,\r\n 'month.moreView.paddingBottom': '17px',\r\n 'month.moreViewTitle.height': '44px',\r\n 'month.moreViewTitle.marginBottom': '12px',\r\n 'month.moreViewTitle.backgroundColor': 'inherit',\r\n 'month.moreViewTitle.borderBottom': 'none',\r\n 'month.moreViewTitle.padding': '12px 17px 0 17px',\r\n 'month.moreViewList.padding': '0 17px',\r\n\r\n // week header 'dayname'\r\n 'week.dayname.height': '42px',\r\n 'week.dayname.borderTop': `1px solid ${border}`,\r\n 'week.dayname.borderBottom': `1px solid ${border}`,\r\n 'week.dayname.borderLeft': 'inherit',\r\n 'week.dayname.paddingLeft': '0',\r\n 'week.dayname.backgroundColor': 'inherit',\r\n 'week.dayname.textAlign': 'left',\r\n 'week.today.color': text,\r\n 'week.pastDay.color': borderLight,\r\n\r\n // week vertical panel 'vpanel'\r\n 'week.vpanelSplitter.border': `1px solid ${border}`,\r\n 'week.vpanelSplitter.height': '3px',\r\n\r\n // week daygrid 'daygrid'\r\n 'week.daygrid.borderRight': `1px solid ${border}`,\r\n 'week.daygrid.backgroundColor': background,\r\n\r\n 'week.daygridLeft.width': '72px',\r\n 'week.daygridLeft.backgroundColor': background,\r\n 'week.daygridLeft.paddingRight': '8px',\r\n 'week.daygridLeft.borderRight': `1px solid ${border}`,\r\n\r\n\r\n 'week.today.backgroundColor': primaryShaded,\r\n 'week.weekend.backgroundColor': 'inherit',\r\n\r\n // week timegrid 'timegrid'\r\n 'week.timegridLeft.width': '72px',\r\n 'week.timegridLeft.backgroundColor': 'inherit',\r\n 'week.timegridLeft.borderRight': `1px solid ${border}`,\r\n 'week.timegridLeft.fontSize': '11px',\r\n 'week.timegridLeftTimezoneLabel.height': '40px',\r\n 'week.timegridLeftAdditionalTimezone.backgroundColor': background,\r\n\r\n 'week.timegridOneHour.height': '52px',\r\n 'week.timegridHalfHour.height': '26px',\r\n 'week.timegridHalfHour.borderBottom': 'none',\r\n 'week.timegridHorizontalLine.borderBottom': `1px solid ${border}`,\r\n\r\n 'week.timegrid.paddingRight': '8px',\r\n 'week.timegrid.borderRight': `1px solid ${border}`,\r\n 'week.timegridSchedule.borderRadius': '2px',\r\n 'week.timegridSchedule.paddingLeft': '2px',\r\n\r\n // #515ce6 is a slate blue\r\n\r\n 'week.currentTime.color': highlight,\r\n 'week.currentTime.fontSize': '11px',\r\n 'week.currentTime.fontWeight': 'normal',\r\n\r\n 'week.pastTime.color': borderLight,\r\n 'week.pastTime.fontWeight': 'normal',\r\n\r\n 'week.futureTime.color': border,\r\n 'week.futureTime.fontWeight': 'normal',\r\n\r\n 'week.currentTimeLinePast.border': `1px dashed ${highlight}`,\r\n 'week.currentTimeLineBullet.backgroundColor': highlight,\r\n 'week.currentTimeLineToday.border': `1px solid ${highlight}`,\r\n 'week.currentTimeLineFuture.border': 'none',\r\n\r\n // week creation guide style\r\n 'week.creationGuide.color': highlight,\r\n 'week.creationGuide.fontSize': '11px',\r\n 'week.creationGuide.fontWeight': 'bold',\r\n\r\n // week daygrid schedule style\r\n 'week.dayGridSchedule.borderRadius': '2px',\r\n 'week.dayGridSchedule.height': '24px',\r\n 'week.dayGridSchedule.marginTop': '2px',\r\n 'week.dayGridSchedule.marginLeft': '8px',\r\n 'week.dayGridSchedule.marginRight': '8px'\r\n } as ITheme;\r\n }\r\n\r\n}\r\n","<section class=\"content-container\">\r\n <!-- These divs are here so that we can read the theme colors for the tui theme -->\r\n <!-- The outer div gives the default color for when user does not provide an Angular theme -->\r\n <div style=\"color: blue;\"> <div id=\"theme-primary\"></div></div>\r\n <div style=\"color: blue;\"> <div id=\"theme-highlight\"></div></div>\r\n <div style=\"color: blue;\"> <div id=\"theme-accent\"></div></div>\r\n <div style=\"color: red;\"> <div id=\"theme-warn\"></div></div>\r\n <div style=\"color: rgba(0, 0, 255, 0.2);\"> <div id=\"theme-primary-shaded\"></div></div>\r\n <div style=\"color: #3e3e3e;\"> <div id=\"theme-foreground\"></div></div>\r\n <div style=\"color: #e0e0e0;\"> <div id=\"theme-divider\"></div></div>\r\n <div style=\"color: white;\"> <div id=\"theme-background\"></div></div>\r\n \r\n <div class=\"calendar-container\">\r\n <!-- calendar titlebar -->\r\n <mat-toolbar class=\"menu-bar\" color=\"primary\">\r\n <!-- <div style=\"align-self: center;display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\"> -->\r\n <div style=\"display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n width: 100%; \">\r\n <div class=\"left-div\">\r\n <!-- LEFT -->\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.5rem !important;\" \r\n (click)=\"onCalendarLongPrev()\">\r\n <fa-icon [icon]=\"iconLongPrev\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\" \r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 2rem !important;\" \r\n (click)=\"onCalendarPrev()\">\r\n <fa-icon [icon]=\"iconPrev\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.7rem !important;\" \r\n (click)=\"onCalendarToday()\">\r\n <fa-icon [icon]=\"iconToday\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\" \r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 2rem !important;\" \r\n (click)=\"onCalendarNext()\">\r\n <fa-icon [icon]=\"iconNext\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.5rem !important;\" \r\n (click)=\"onCalendarLongNext()\">\r\n <fa-icon [icon]=\"iconLongNext\"></fa-icon>\r\n </button>\r\n </div>\r\n <div class=\"center-div\">\r\n <!-- CENTER -->\r\n <span class=\"event-calendar-title\">{{ getDate() }}</span>\r\n </div>\r\n <div class=\"right-div\">\r\n \r\n <!-- RIGHT -->\r\n <mat-button-toggle-group class=\"view-button\" value=\"month\" id=\"@+id/toggleButton\" layout_width=\"wrap_content\"\r\n layout_height=\"wrap_content\">\r\n <mat-button-toggle mat-button value=\"month\" class=\"view-button\" (click)=\"onMonthView()\">\r\n <fa-icon [icon]=\"iconByMonth\"></fa-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle mat-button value=\"week\" class=\"view-button\" (click)=\"onWeekView()\">\r\n <fa-icon [icon]=\"iconByWeek\"></fa-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle mat-button value=\"day\" class=\"view-button\" (click)=\"onDayView()\">\r\n <fa-icon [icon]=\"iconByDay\"></fa-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </mat-toolbar>\r\n <ngx-mat-tui-calendar-wrapper></ngx-mat-tui-calendar-wrapper>\r\n </div>\r\n \r\n </section>\r\n","\r\n// Angular modules\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FlexModule, FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\n// Angular Material Design modules\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\n\r\n// 3rd party modules\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { MatTimepickerModule } from 'mat-timepicker';\r\n\r\n// collect all of the above modules into an array\r\nconst importedModules = [\r\n BrowserAnimationsModule,\r\n BrowserModule,\r\n FlexLayoutModule,\r\n FlexModule, \r\n FormsModule,\r\n HttpClientModule,\r\n OverlayModule,\r\n ReactiveFormsModule,\r\n\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatNativeDateModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSlideToggleModule,\r\n MatToolbarModule,\r\n\r\n FontAwesomeModule,\r\n MatTimepickerModule,\r\n ];\r\n\r\n\r\n// project modules\r\nimport { NgxMatTuiCalendarComponent } from './ngx-mat-tui-calendar.component';\r\nimport { NgxMatTuiCalendarWrapperComponent } from './ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component';\r\nimport { NgxMatTuiCalendarEditorDialogComponent } from './ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\r\n\r\nconst projectModules = [\r\n NgxMatTuiCalendarComponent,\r\n NgxMatTuiCalendarWrapperComponent,\r\n NgxMatTuiCalendarEditorDialogComponent,\r\n];\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ...projectModules,\r\n ],\r\n imports: [\r\n ...importedModules,\r\n ],\r\n exports: [\r\n ...importedModules,\r\n\r\n ...projectModules,\r\n ],\r\n entryComponents: [\r\n ...projectModules,\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class NgxMatTuiCalendarModule { }\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxMatTuiCalendarService {\n\n constructor() { }\n}\n","/*\n * Public API Surface of ngx-mat-tui-calendar\n */\n\nexport * from './lib/ngx-mat-tui-calendar.module';\nexport * from './lib/ngx-mat-tui-calendar.service';\nexport * from './lib/ngx-mat-tui-calendar.component';\nexport * from './lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\nexport * from './lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component';\n\nexport * from './lib/calendar-options';\nexport * from './lib/calendar-editor-options';\nexport * from './lib/local-date';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-mat-tui-calendar.js","sources":["../../../projects/ngx-mat-tui-calendar/src/lib/local-date.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.component.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.component.html","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.module.ts","../../../projects/ngx-mat-tui-calendar/src/lib/ngx-mat-tui-calendar.service.ts","../../../projects/ngx-mat-tui-calendar/src/public-api.ts","../../../projects/ngx-mat-tui-calendar/src/ngx-mat-tui-calendar.ts"],"sourcesContent":["\r\n// import { TZDate } from 'tui-calendar';\r\n\r\nexport class LocalDate {\r\n date: Date;\r\n\r\n // month = 1 to 12\r\n constructor(args) {\r\n let numbers;\r\n if (typeof args == 'string') {\r\n numbers = LocalDate.parse_YYYYMMDD(args);\r\n } else if (args instanceof LocalDate) {\r\n numbers = args.get();\r\n } else if (args instanceof Date) {\r\n numbers = LocalDate.convertDateToNumbers(args);\r\n } else if (typeof args.toDate === 'function') {\r\n numbers = LocalDate.convertDateToNumbers(args.toDate());\r\n } else if (args['_date'] instanceof Date ) {\r\n numbers = LocalDate.convertDateToNumbers(args['_date']);\r\n } else if (args instanceof Object) {\r\n numbers = args;\r\n }\r\n this.date = LocalDate.convertNumbersToDate(numbers);\r\n }\r\n\r\n static convertToJsDate(args) {\r\n return (new LocalDate(args)).toDate();\r\n }\r\n\r\n\r\n // return new LocalDate(date.getFullYear(), date.getMonth() + 1, date.getDate());\r\n static parse_YYYYMMDD(str) {\r\n // yyyy-mm-dd\r\n const regexp = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)/g;\r\n let matches = Array.from(\r\n str.matchAll(regexp), m => ({\r\n year: Number(m[1]),\r\n month: Number(m[2]),\r\n day: Number(m[3])\r\n })\r\n );\r\n if (matches.length != 1) {\r\n console.error(`dateIn: unknown date format: ${str}`);\r\n return null;\r\n }\r\n return matches[0];\r\n }\r\n static convertNumbersToDate({ year, month, day, hours, minutes, seconds, milliseconds }) {\r\n // month = 1 to 12\r\n // start with today's *local* date. this si really important\r\n let date = new Date();\r\n date.setFullYear(year);\r\n date.setMonth((month==null) ? 0 : month - 1);\r\n date.setDate((day==null) ? 1 : day);\r\n date.setHours((hours==null) ? 0 : hours);\r\n date.setMinutes((minutes==null) ? 0 : minutes);\r\n date.setSeconds((seconds==null) ? 0 : seconds);\r\n date.setMilliseconds((milliseconds==null) ? 1 : milliseconds);\r\n return date;\r\n }\r\n\r\n\r\n static convertDateToNumbers(date) {\r\n // month = 1 to 12\r\n return {\r\n year: date.getFullYear(),\r\n month: date.getMonth() + 1,\r\n day: date.getDate(),\r\n hours: date.getHours(),\r\n minutes: date.getMinutes(),\r\n seconds: date.getSeconds(),\r\n milliseconds: date.getMilliseconds(),\r\n };\r\n }\r\n\r\n get() {\r\n return LocalDate.convertDateToNumbers(this.date);\r\n }\r\n\r\n toMsgFormat() {\r\n return this.toYYYYMMDD();\r\n }\r\n toYYYYMMDD() {\r\n // yyyy-mm-dd\r\n\r\n let yyyy = this.date.getFullYear();\r\n let mm = (this.date.getMonth() + 1).toString().padStart(2, '0');\r\n let dd = (this.date.getDate()).toString().padStart(2, '0');\r\n let str = `${yyyy}-${mm}-${dd}`;\r\n // console.warn(`date=${str}=${this.toDisplayFormat()}`);\r\n return str;\r\n }\r\n toDisplayDateFormat() {\r\n return this.date.toLocaleDateString(\"en-US\", {\r\n weekday: 'short',\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n });\r\n }\r\n toDisplayFormat() {\r\n return this.date.toString();\r\n }\r\n toDate() {\r\n return this.date;\r\n }\r\n clearTime() {\r\n this.date.setHours(0, 0, 0, 1);\r\n }\r\n\r\n}\r\n\r\n","import { Component, ElementRef, HostBinding, Inject, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { DateType, default as Calendar, IEventScheduleObject, ISchedule, TZDate } from 'tui-calendar';\n\nimport { LocalDate } from '../local-date.js';\nimport { CalendarEditorOptions } from '../calendar-editor-options';\n\n\n@Component({\n selector: 'ngx-mat-tui-calendar-editor-dialog',\n templateUrl: './ngx-mat-tui-calendar-editor-dialog.component.html',\n styleUrls: ['./ngx-mat-tui-calendar-editor-dialog.component.scss']\n})\nexport class NgxMatTuiCalendarEditorDialogComponent implements OnInit {\n private id: string;\n titleStr: string = '';\n locationStr: string = '';\n closed: boolean = false;\n eventForm: FormGroup;\n date: Date;\n startDate: Date;\n endDate: Date;\n startTime: Date;\n endTime: Date;\n isAllDay: boolean = false;\n color: string;\n themeClass: string = '';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: CalendarEditorOptions,\n public dialogRef: MatDialogRef<NgxMatTuiCalendarEditorDialogComponent>,\n ) {\n // console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: schedule:', schedule);\n\n // console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: data:', data);\n this.color = data.darkMode ? 'accent' : 'primary';\n\n const schedule = data.schedule;\n if (schedule == null) {\n this.id = null;\n } else {\n if (schedule.id) {\n this.id = schedule.id.toString();\n }\n }\n this.titleStr = (schedule.title) ? schedule.title.toString() : '';\n this.locationStr = (schedule.location) ? schedule.location.toString() : '';\n\n\n this.isAllDay = (schedule.isAllDay == true);\n\n this.startDate = LocalDate.convertToJsDate(schedule.start) as Date;\n this.endDate = LocalDate.convertToJsDate(schedule.end) as Date;\n\n this.startTime = new Date(this.startDate);\n this.endTime = new Date(this.endDate);\n this.startDate.setHours(0, 0, 0, 1);\n this.endDate.setHours(0, 0, 0, 1);\n\n this.eventForm = new FormGroup(\n {\n title: new FormControl(this.titleStr),\n location: new FormControl(this.locationStr),\n scheduleType: new FormControl((schedule.isAllDay == true) ? \"all-day\" : \"time-slot\"),\n start: new FormControl(this.startDate),\n end: new FormControl(this.endDate),\n date: new FormControl(this.startDate),\n time1: new FormControl(this.startTime),\n time2: new FormControl(this.endTime, [Validators.required]),\n },\n this.getDateValidator(),\n );\n\n }\n\n getDateValidator() {\n const validator: ValidatorFn = (group: FormGroup): { [key: string]: any } => {\n const scheduleType = group.get(\"scheduleType\").value;\n if (group.get(\"scheduleType\").value == \"time-slot\") {\n let time1 = group.get(\"time1\").value;\n let time2 = group.get(\"time2\").value;\n if (time1 >= time2) {\n return {\n dates: \"End time must be later than the start time\"\n };\n }\n }\n return {};\n };\n return validator;\n }\n\n\n ngOnInit(): void {\n // console.dir(`Dialog config: ${this.dialogConfig}`);\n // let start: Date = (LocalDate.convertToJsDate(this.schedule.start)).toDate();\n // let end: Date = (LocalDate.convertToJsDate(this.schedule.end)).toDate();\n // this.eventForm.get(\"date\").setValue(start);\n // this.eventForm.get(\"start\").setValue(start);\n // this.eventForm.get(\"end\").setValue(end);\n\n }\n\n\n\n onSave(form: NgForm) {\n // console.log(`onSave form.invalid=${form.invalid}; this.closed=${this.closed} this.titleStr=${this.titleStr}`);\n if (form.invalid || this.closed) return;\n let schedule = this.data.schedule;\n schedule.title = this.eventForm.get(\"title\").value;\n schedule.location = this.eventForm.get(\"location\").value;\n schedule.isAllDay = this.isAllDay;\n schedule.category = this.isAllDay ? 'allday' : 'time'; // CATEGORY MUST BE DEFINED: 'milestone', 'task', allday', 'time'\n if (this.isAllDay) {\n schedule.start = LocalDate.convertToJsDate(this.eventForm.get(\"start\").value) as Date;\n schedule.start.setHours(0, 0, 0, 1);\n schedule.end = LocalDate.convertToJsDate(this.eventForm.get(\"end\").value) as Date;\n schedule.end.setHours(0, 0, 0, 1);\n } else {\n this.startTime = LocalDate.convertToJsDate(this.eventForm.get(\"time1\").value) as Date;\n schedule.start = LocalDate.convertToJsDate(this.eventForm.get(\"date\").value) as Date;\n schedule.start.setHours(\n this.startTime.getHours(),\n this.startTime.getMinutes(),\n this.startTime.getSeconds(),\n this.startTime.getMilliseconds(),\n );\n this.endTime = LocalDate.convertToJsDate(this.eventForm.get(\"time2\").value) as Date;\n schedule.end = LocalDate.convertToJsDate(this.eventForm.get(\"date\").value) as Date;\n schedule.end.setHours(\n this.endTime.getHours(),\n this.endTime.getMinutes(),\n this.endTime.getSeconds(),\n this.endTime.getMilliseconds(),\n );\n }\n // console.log(`pop-up-event-editor.component.ts: user clicked SAVE event=${schedule}`);\n // this.eventOutput.emit(schedule);\n form.resetForm();\n this.closeMe(schedule);\n }\n\n onCancel() {\n // this.cancelled.emit();\n // console.log('openPopupScheduleEditor: user clicked CANCEL');\n this.closeMe(null);\n }\n\n onDelete() {\n // this.cancelled.emit();\n // console.log('openPopupScheduleEditor: user clicked DELETE');\n this.closeMe(this.data.schedule, true);\n }\n\n\n closeMe(schedule: ISchedule, performDelete?: boolean) {\n // console.log('closeMe: The dialog is closing', schedule);\n this.closed = true;\n this.dialogRef.close({ schedule, performDelete: (performDelete == true) });\n }\n\n log(str) {\n // console.warn(str);\n }\n\n onUseAllDay() {\n this.isAllDay = true;\n }\n onUseTimeSlot() {\n this.isAllDay = false;\n }\n\n}\n","<div [className]=\"data.themeClass + ' ' + 'event-editor'\">\n <form id=\"my-form\" [formGroup]=\"eventForm\" class=\"event-editor-form\" (submit)=\"onSave(postForm);\" #postForm=\"ngForm\">\n <div class=\"grid-wrapper\">\n <div class=\"grid-title\">\n <mat-form-field [color]=\"color\" class=\"editor-title\">\n <input matInput type=\"text\" name=\"title\" formControlName=\"title\" placeholder=\"Title\">\n <!-- <mat-error style=\"height: fit-content;\" *ngIf=\"title.invalid\">Please enter a title (of 1 characters or more)\n for\n your event.</mat-error> -->\n </mat-form-field>\n </div>\n <div class=\"grid-location\">\n <mat-form-field [color]=\"color\" class=\"editor-location\">\n <input matInput type=\"location\" name=\"location\" formControlName=\"location\" placeholder=\"Location\">\n </mat-form-field>\n </div>\n <div class=\"grid-radios\" style=\"display: flex;\">\n <mat-radio-group [color]=\"color\" aria-label=\"Select an option\" style=\"margin-bottom: 1em;\" name=\"scheduleType\"\n formControlName=\"scheduleType\" required>\n <mat-radio-button value=\"all-day\" (change)=\"onUseAllDay()\" id=\"button-all-day\" [color]=\"color\" class=\"radio-button\">All Day\n </mat-radio-button>\n <mat-radio-button value=\"time-slot\" (change)=\"onUseTimeSlot()\" id=\"button-time-slot\" [color]=\"color\" class=\"radio-button\">Time Slot\n </mat-radio-button>\n </mat-radio-group>\n </div>\n <div class=\"grid-date\">\n <mat-form-field *ngIf=\"isAllDay\" [color]=\"color\" class=\"date-range-form-field\" appearance=\"fill\">\n <mat-label [color]=\"color\">Pick a Date Range</mat-label>\n <mat-date-range-input [color]=\"color\" [panelClass]=\"data.themeClass\" [rangePicker]=\"rangePicker\" #dateRangeInput>\n <input matStartDate placeholder=\"Start date\" formControlName=\"start\" name=\"start\">\n <input matEndDate placeholder=\"End date\" formControlName=\"end\" name=\"end\">\n </mat-date-range-input>\n <mat-datepicker-toggle [color]=\"color\" [panelClass]=\"data.themeClass\" matSuffix [for]=\"rangePicker\"></mat-datepicker-toggle>\n <mat-date-range-picker [color]=\"color\" class=\"picker\" #rangePicker></mat-date-range-picker>\n </mat-form-field>\n <mat-form-field [color]=\"color\" *ngIf=\"!isAllDay\" class=\"date-form-field\" appearance=\"fill\">\n <mat-label>Choose a date</mat-label>\n <input matInput [matDatepicker]=\"dpicker\" formControlName=\"date\" name=\"date\">\n <mat-datepicker-toggle [color]=\"color\" matSuffix [for]=\"dpicker\"></mat-datepicker-toggle>\n <mat-datepicker [color]=\"color\" #dpicker></mat-datepicker>\n </mat-form-field>\n </div>\n <div *ngIf=\"!isAllDay\" class=\"grid-time time-slot\">\n <mat-form-field [color]=\"color\" class=\"form-field-time\" appearance=\"fill\">\n <mat-label>Start</mat-label>\n <input matTimepicker [color]=\"color\" [strict]=\"false\" id=\"timepicker-start\" mode=\"12h\" formControlName=\"time1\" name=\"time1\"\n placeholder=\"Please select time...\">\n </mat-form-field>\n <mat-form-field [color]=\"color\" class=\"form-field-time\" appearance=\"fill\">\n <mat-label>End</mat-label>\n <input matTimepicker [color]=\"color\" [strict]=\"false\" id=\"timepicker-end\" mode=\"12h\" formControlName=\"time2\" name=\"time2\"\n placeholder=\"Please select time...\">\n </mat-form-field>\n </div>\n <div *ngIf=\"!isAllDay\" class=\"grid-error\">\n <label *ngIf=\"eventForm.invalid\">{{ eventForm.errors?.dates }}</label>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"editor-footer\">\n <button mat-raised-button [color]=\"color\" id=\"editor-submit-button\" type=\"submit\" style=\"margin-right: 4px;\">SAVE</button>\n <button mat-raised-button id=\"editor-delete-button\" type=\"button\" (click)=\"onDelete()\" *ngIf=\"(data.schedule.id!=null)\">DELETE</button>\n <button mat-raised-button id=\"editor-cancel-button\" type=\"button\" (click)=\"onCancel()\">CANCEL</button>\n </div>\n </form>\n </div>","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ngx-mat-tui-calendar-wrapper',\n templateUrl: './ngx-mat-tui-calendar-wrapper.component.html',\n styleUrls: ['./ngx-mat-tui-calendar-wrapper.component.scss'],\n encapsulation: ViewEncapsulation.None, // this is needed so that our css rules override those in tui-calendar package\n})\nexport class NgxMatTuiCalendarWrapperComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div id=\"calendar\"></div> <!-- TUI Calendar gets instatited here -->\n","import { Component, ViewChild, OnInit, Output, EventEmitter, Input, OnChanges, SimpleChanges, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport distinctColors from 'distinct-colors';\r\nimport { Color } from \"chroma-js\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nimport {\r\n faCalendarCheck,\r\n faCaretSquareLeft,\r\n faCaretSquareRight,\r\n faTable,\r\n faColumns,\r\n faList,\r\n faListAlt,\r\n faForward,\r\n faFastBackward,\r\n faBackward,\r\n faCaretLeft,\r\n faCaretRight,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport {\r\n default as Calendar,\r\n ICalendarInfo,\r\n IEventDateObject,\r\n IEventMoreObject,\r\n IEventObject,\r\n IEventScheduleObject,\r\n IOptions,\r\n ISchedule,\r\n ITheme,\r\n ITimezone,\r\n IWeekOptions,\r\n TEventBeforeCreateSchedule,\r\n TZDate,\r\n} from 'tui-calendar';\r\n\r\n// project \r\nimport { LocalDate } from './local-date.js';\r\nimport { NgxMatTuiCalendarEditorDialogComponent } from './ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\r\nimport { CalendarOptions } from './calendar-options';\r\nimport { CalendarEditorOptions } from './calendar-editor-options';\r\n\r\n@Component({\r\n selector: 'ngx-mat-tui-calendar',\r\n templateUrl: './ngx-mat-tui-calendar.component.html',\r\n styleUrls: [\r\n './ngx-mat-tui-calendar.component.scss'\r\n ],\r\n})\r\nexport class NgxMatTuiCalendarComponent implements OnInit, OnChanges, OnDestroy {\r\n iconToday = faCalendarCheck;\r\n // iconPrev = faCaretSquareLeft;\r\n // iconNext = faCaretSquareRight;\r\n iconPrev = faCaretLeft;\r\n iconNext = faCaretRight;\r\n iconLongPrev = faBackward;\r\n iconLongNext = faForward;\r\n iconByMonth = faTable;\r\n iconByWeek = faColumns;\r\n iconByDay = faListAlt;\r\n\r\n calendar: Calendar; // the TUI Calendar Object\r\n calendarId: string;\r\n colors: Color[];\r\n colorIndex: number;\r\n @Output() userCreatedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Output() userUpdatedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Output() userDeletedSchedule: EventEmitter<ISchedule> = new EventEmitter();\r\n @Input() options: CalendarOptions;\r\n appliedOptions: CalendarOptions; // this is needed for when options is not connected\r\n\r\n constructor(public dialog: MatDialog) {\r\n // we slice off the first color since it is gray\r\n this.colors = distinctColors({ lightMin: 70, count: 15 }).slice(1);\r\n this.colorIndex = 0;\r\n this.calendarId = uuidv4();\r\n\r\n this.appliedOptions = this.getDefaultOptions();\r\n }\r\n\r\n ngOnInit() {\r\n // console.warn(`calendar.component.ts: ngOnit`)\r\n this.createTUICalendar();\r\n this.bindCallbacks();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // console.warn(changes);\r\n if (this.calendar) {\r\n\r\n if (changes.options) {\r\n // console.warn(`change.option:`, changes.options);\r\n let options = changes.options.currentValue;\r\n this.setOptions(options);\r\n }\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.calendar.destroy();\r\n }\r\n\r\n onCalendarLongPrev() {\r\n let date: Date = (this.calendar.getDate() as TZDate).toDate();\r\n let days = 0;\r\n let months = 0;\r\n let years = 0;\r\n switch (this.calendar.getViewName()) {\r\n case 'day':\r\n days = -7;\r\n break;\r\n case 'week':\r\n days = -28;\r\n break;\r\n case 'month':\r\n years = -1;\r\n break;\r\n }\r\n date.setFullYear(date.getFullYear() + years);\r\n date.setMonth(date.getMonth() + months); // date class does the modular arithmetic\r\n date.setDate(date.getDate() + days); // date class does the modular arithmetic\r\n this.calendar.setDate(date);\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarPrev() {\r\n this.calendar.prev();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarToday() {\r\n this.calendar.today();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarNext() {\r\n this.calendar.next();\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n onCalendarLongNext() {\r\n let date: Date = (this.calendar.getDate() as TZDate).toDate();\r\n let days = 0;\r\n let months = 0;\r\n let years = 0;\r\n switch (this.calendar.getViewName()) {\r\n case 'day':\r\n days = 7;\r\n break;\r\n case 'week':\r\n days = 28;\r\n break;\r\n case 'month':\r\n years = 1;\r\n break;\r\n }\r\n date.setFullYear(date.getFullYear() + years);\r\n date.setMonth(date.getMonth() + months); // date class does the modular arithmetic\r\n date.setDate(date.getDate() + days); // date class does the modular arithmetic\r\n this.calendar.setDate(date);\r\n this.calendar.toggleScheduleView(true);\r\n }\r\n\r\n\r\n onMonthView() {\r\n this.calendar.changeView('month');\r\n }\r\n\r\n onWeekView() {\r\n console.log(`onWeekView`)\r\n this.calendar.changeView('week');\r\n this.calendar.render(true); // <-- so that selection is cleared\r\n }\r\n\r\n onDayView() {\r\n this.calendar.changeView('day');\r\n }\r\n\r\n\r\n getDate() {\r\n let date = this.calendar.getDate();\r\n let str = date.toDate().toLocaleDateString(\"en-US\", {\r\n year: 'numeric',\r\n month: 'short',\r\n });\r\n return str;\r\n }\r\n\r\n createTUICalendar() {\r\n let ioptions = this.preprocessIOptions(null);\r\n // console.warn(`calendar.component.ts: createTUICalendar: ioptions:`, ioptions);\r\n this.calendar = new Calendar('#calendar', ioptions);\r\n // console.warn(`calendar.component.ts: createTUICalendar: this.calendar:`, this.calendar);\r\n this.calendar.toggleScheduleView(true);\r\n\r\n }\r\n\r\n\r\n bindCallbacks() {\r\n this.bindAfterRenderSchedule();\r\n this.bindClickTimezonesCollapseBtn();\r\n this.bindClickDayname();\r\n this.bindClickMore();\r\n this.bindClickSchedule();\r\n this.bindBeforeCreateSchedule();\r\n this.bindBeforeUpdateSchedule();\r\n this.bindBeforeDeleteSchedule();\r\n }\r\n\r\n bindAfterRenderSchedule() {\r\n let that = this;\r\n this.calendar.on('afterRenderSchedule', function (event: { schedule: ISchedule }) {\r\n // console.warn(`afterRenderSchedule`, event);\r\n });\r\n }\r\n\r\n bindClickTimezonesCollapseBtn() {\r\n let that = this;\r\n this.calendar.on('clickTimezonesCollapseBtn', function (timezonesCollapsed: boolean) {\r\n // console.warn(`clickTimezonesCollapseBtn`, timezonesCollapsed);\r\n });\r\n }\r\n\r\n\r\n bindClickDayname() {\r\n let that = this;\r\n this.calendar.on('clickDayname', function (event: IEventDateObject) {\r\n // console.warn(`clickDayname`, event);\r\n });\r\n }\r\n\r\n bindClickMore() {\r\n let that = this;\r\n this.calendar.on('clickMore', function (event: IEventMoreObject) {\r\n // console.warn(`clickMore`, event);\r\n });\r\n }\r\n\r\n bindClickSchedule() {\r\n // only works if useDetailPopup: false,\r\n let that = this;\r\n this.calendar.on('clickSchedule', function (event: IEventScheduleObject) {\r\n // console.warn(`clickSchedule`, event);\r\n let schedule: ISchedule = { ...event.schedule };\r\n schedule.start = (new LocalDate(schedule.start)).toDate();\r\n schedule.end = (new LocalDate(schedule.end)).toDate();\r\n that.openPopupScheduleEditor(schedule);\r\n });\r\n }\r\n\r\n bindBeforeCreateSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeCreateSchedule', function (event: TEventBeforeCreateSchedule) {\r\n // console.log(`beforeCreateSchedule`, event);\r\n let start: Date = (new LocalDate(event.start)).toDate();\r\n start.setHours(9);\r\n let end: Date = (new LocalDate(event.end)).toDate();\r\n end.setHours(10);\r\n that.openPopupScheduleEditor({\r\n title: '',\r\n start: start,\r\n end: end,\r\n id: null,\r\n } as ISchedule);\r\n });\r\n }\r\n\r\n bindBeforeUpdateSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeUpdateSchedule', function (event: IEventObject) {\r\n // console.log(`beforeUpdateSchedule`, event);\r\n that.updateScheduleAndNotifyParent(event);\r\n });\r\n }\r\n\r\n bindBeforeDeleteSchedule() {\r\n let that = this;\r\n this.calendar.on('beforeDeleteSchedule', function (event: IEventScheduleObject) {\r\n // console.log(`beforeDeleteSchedule`, event.schedule);\r\n // console.log(`beforeDeleteSchedule`, event.schedule);\r\n that.deleteScheduleAndNotifyParent({ id: event.schedule.id, calendarId: event.schedule.calendarId });\r\n });\r\n }\r\n\r\n nextColor() {\r\n let color = this.colors[this.colorIndex++].hex();\r\n if (this.colorIndex >= this.colors.length) this.colorIndex = 0;\r\n return color;\r\n }\r\n\r\n createScheduleAndNotifyParent(args: ISchedule) {\r\n let schedule = this.createSchedule(args);\r\n this.userCreatedSchedule.emit(schedule);\r\n return schedule;\r\n }\r\n\r\n createSchedules(schedules: ISchedule[]) {\r\n let newSchedules = [];\r\n for (let schedule of schedules) {\r\n newSchedules.push(this.createSchedule(schedule));\r\n }\r\n return newSchedules;\r\n }\r\n\r\n createSchedule(args: ISchedule): ISchedule {\r\n // if (form.invalid) return;\r\n\r\n // create a color\r\n let color = this.nextColor();\r\n // console.log(color);\r\n\r\n // create an id\r\n let id = (args.id == null) ? '' : args.id.toString();\r\n if (id.length === 0) {\r\n id = uuidv4();\r\n }\r\n\r\n let start: Date = LocalDate.convertToJsDate(args.start);\r\n let end: Date = LocalDate.convertToJsDate(args.end);\r\n\r\n let schedule: ISchedule = {\r\n id,\r\n calendarId: (args.calendarId == null) ? this.calendarId : args.calendarId,\r\n title: args.title,\r\n start: start,\r\n end: end,\r\n category: args.category,\r\n isAllDay: args.isAllDay,\r\n dueDateClass: '',\r\n bgColor: color,\r\n } as ISchedule\r\n // console.log(`event-calendar.component.ts: createEvent:`, schedule);\r\n this.calendar.createSchedules([schedule]);\r\n return this.calendar.getSchedule(schedule.id, schedule.calendarId);\r\n }\r\n\r\n updateScheduleAndNotifyParent(args: ISchedule) {\r\n let schedule = this.updateSchedule(args);\r\n this.userUpdatedSchedule.emit(schedule);\r\n return schedule;\r\n }\r\n\r\n updateSchedule(schedule: ISchedule) {\r\n // console.log(`event-calendar.component.ts: updateSchedule:`, schedule);\r\n let calendarId = (schedule.calendarId == null) ? this.calendarId : schedule.calendarId;\r\n this.calendar.updateSchedule(schedule.id, calendarId, schedule, false);\r\n return this.calendar.getSchedule(schedule.id, calendarId);\r\n }\r\n\r\n getSchedule(args: { id: string, calendarId: string }) {\r\n // console.log(`event-calendar.component.ts: getSchedule:`, schedule);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n return this.calendar.getSchedule(args.id, calendarId);\r\n }\r\n\r\n deleteScheduleAndNotifyParent(args: { id: string, calendarId: string }) {\r\n this.deleteSchedule(args);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n this.userDeletedSchedule.emit({ id: args.id, calendarId });\r\n }\r\n\r\n deleteSchedule(args: { id: string, calendarId: string }) {\r\n // console.log(`event-calendar.component.ts: deleteSchedule:`, schedule);\r\n let calendarId = (args.calendarId == null) ? this.calendarId : args.calendarId;\r\n this.calendar.deleteSchedule(args.id, calendarId, false);\r\n }\r\n\r\n deleteAllSchedules() {\r\n this.calendar.clear();\r\n }\r\n\r\n openPopupScheduleEditor(schedule: ISchedule) {\r\n // console.log('openPopupScheduleEditor: calevent:', schedule);\r\n const dialogConfig = new MatDialogConfig();\r\n if (this.appliedOptions.themeClass) {\r\n dialogConfig.panelClass = this.appliedOptions.themeClass;\r\n }\r\n // console.warn(`options: `, this.appliedOptions);\r\n dialogConfig.data = { schedule, darkMode: this.appliedOptions.darkMode, themeClass: this.appliedOptions.themeClass } as CalendarEditorOptions;\r\n dialogConfig.autoFocus = true;\r\n const dialogRef = this.dialog.open(NgxMatTuiCalendarEditorDialogComponent, dialogConfig);\r\n // const dialogRef = this.dialog.open(NgxMatTuiCalendarScheduleEditorDialogComponent, {\r\n // data: schedule,\r\n // });\r\n dialogRef.afterClosed().subscribe((result: { schedule: ISchedule, performDelete: boolean }) => {\r\n // console.log('openPopupScheduleEditor: The dialog was closed', result);\r\n this.calendar.render(true); // <-- so that selection is cleared\r\n if (result && result.schedule) {\r\n let schedule = result.schedule;\r\n if (result.performDelete == true) {\r\n // delete\r\n // console.log(`openPopupScheduleEditor:afterCLosed: deleteSchedule`);\r\n this.deleteScheduleAndNotifyParent({ id: schedule.id, calendarId: schedule.calendarId });\r\n } else if (schedule.id == null) {\r\n // console.log(`openPopupScheduleEditor:afterCLosed: addSchedule`);\r\n this.createScheduleAndNotifyParent(schedule);\r\n } else {\r\n // console.log(`openPopupScheduleEditor:afterCLosed: updateSchedule`);\r\n this.updateScheduleAndNotifyParent(schedule);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n setOptions(options: CalendarOptions) {\r\n if (options == null) {\r\n options = this.getDefaultOptions();\r\n }\r\n options.ioptions = this.setIOptions(options.ioptions);\r\n this.appliedOptions = {...options};\r\n }\r\n\r\n setIOptions(ioptionsIn: IOptions) {\r\n let ioptions = this.preprocessIOptions(ioptionsIn);\r\n this.calendar.setOptions(ioptions);\r\n this.calendar.setTheme(ioptions.theme);\r\n this.calendar.render(true);\r\n this.calendar.toggleScheduleView(true);\r\n return ioptions;\r\n }\r\n\r\n preprocessIOptions(ioptions: IOptions): IOptions {\r\n let defs: IOptions = this.getDefaultIOptions();\r\n if (ioptions == null) {\r\n ioptions = defs;\r\n } else {\r\n ioptions = { ...defs, ...ioptions };\r\n }\r\n ioptions.useCreationPopup = false;\r\n ioptions.useDetailPopup = false;\r\n if (!ioptions.theme) {\r\n ioptions.theme = this.getDefaultTheme();\r\n }\r\n return ioptions;\r\n }\r\n\r\n\r\n getDefaultOptions(): CalendarOptions {\r\n return {\r\n darkMode: false,\r\n themeClass: null,\r\n ioptions: this.getDefaultIOptions(),\r\n } as CalendarOptions;\r\n }\r\n\r\n getDefaultIOptions(): IOptions {\r\n return {\r\n defaultView: 'month',\r\n taskView: true,\r\n useCreationPopup: false,\r\n useDetailPopup: false,\r\n theme: this.getDefaultTheme(),\r\n template: {\r\n monthDayname: function (dayname) {\r\n return '<span class=\"calendar-week-dayname-name\">' + dayname.label + '</span>';\r\n }\r\n },\r\n week: {\r\n // startDayOfWeek: undefined,\r\n // daynames: undefined,\r\n narrowWeekend: false,\r\n // workweek: true,\r\n showTimezoneCollapseButton: true,\r\n timezonesCollapsed: true,\r\n hourStart: 7,\r\n hourEnd: 20,\r\n } as IWeekOptions,\r\n } as IOptions;\r\n\r\n }\r\n\r\n getColor(name: string): string {\r\n const el = document.getElementById(`theme-${name}`);\r\n if (el) {\r\n const style = window.getComputedStyle(el, null);\r\n // console.warn(`theme-${name} color:`, style.color);\r\n return style.color;\r\n }\r\n return '';\r\n }\r\n\r\n getDefaultTheme(): ITheme {\r\n function adjustHexOpacity(color, opacity) {\r\n const r = parseInt(color.slice(1, 3), 16);\r\n const g = parseInt(color.slice(3, 5), 16);\r\n const b = parseInt(color.slice(5, 7), 16);\r\n\r\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + opacity + ')';\r\n }\r\n\r\n // default keys and styles\r\n // TODO: apply Material Design Theme \r\n let background = this.getColor(\"background\");\r\n let border = this.getColor(\"divider\");\r\n let borderLight = this.getColor(\"divider-light\");\r\n let shadow = this.getColor(\"divider\");\r\n let highlight = this.getColor(\"highlight\");\r\n let primary = this.getColor(\"primary\");\r\n let warn = this.getColor(\"warn\");\r\n let text = this.getColor(\"foreground\");\r\n let primaryShaded = this.getColor(\"primary-shaded\");\r\n\r\n // tui-full-calendar-weekday-schedule-title\r\n //calendar-week-dayname-name\r\n return {\r\n 'common.border': `1px solid ${border}`,\r\n 'common.backgroundColor': background,\r\n 'common.holiday.color': warn,\r\n 'common.saturday.color': text,\r\n 'common.dayname.color': text,\r\n 'common.today.color': '#0f0',\r\n\r\n // creation guide style\r\n 'common.creationGuide.backgroundColor': primaryShaded,\r\n 'common.creationGuide.border': `1px solid ${highlight}`,\r\n\r\n // month header 'dayname'\r\n 'month.dayname.height': '31px',\r\n 'month.dayname.borderLeft': `1px solid ${border}`,\r\n 'month.dayname.paddingLeft': '10px',\r\n 'month.dayname.paddingRight': '10px',\r\n 'month.dayname.backgroundColor': 'inherit',\r\n 'month.dayname.fontSize': '12px',\r\n 'month.dayname.fontWeight': 'normal',\r\n 'month.dayname.textAlign': 'left',\r\n\r\n // month day grid cell 'day'\r\n 'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\r\n 'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\r\n 'month.weekend.backgroundColor': 'inherit',\r\n 'month.day.fontSize': '14px',\r\n 'month.schedule.color': highlight,\r\n\r\n // month schedule style\r\n 'month.schedule.borderRadius': '2px',\r\n 'month.schedule.height': '24px',\r\n 'month.schedule.marginTop': '2px',\r\n 'month.schedule.marginLeft': '8px',\r\n 'month.schedule.marginRight': '8px',\r\n\r\n // month more view\r\n 'month.moreView.border': `1px solid ${border}`,\r\n 'month.moreView.boxShadow': `0 2px 6px 0 ${shadow}`,\r\n 'month.moreView.backgroundColor': background,\r\n 'month.moreView.paddingBottom': '17px',\r\n 'month.moreViewTitle.height': '44px',\r\n 'month.moreViewTitle.marginBottom': '12px',\r\n 'month.moreViewTitle.backgroundColor': 'inherit',\r\n 'month.moreViewTitle.borderBottom': 'none',\r\n 'month.moreViewTitle.padding': '12px 17px 0 17px',\r\n 'month.moreViewList.padding': '0 17px',\r\n\r\n // week header 'dayname'\r\n 'week.dayname.height': '42px',\r\n 'week.dayname.borderTop': `1px solid ${border}`,\r\n 'week.dayname.borderBottom': `1px solid ${border}`,\r\n 'week.dayname.borderLeft': 'inherit',\r\n 'week.dayname.paddingLeft': '0',\r\n 'week.dayname.backgroundColor': 'inherit',\r\n 'week.dayname.textAlign': 'left',\r\n 'week.today.color': text,\r\n 'week.pastDay.color': borderLight,\r\n\r\n // week vertical panel 'vpanel'\r\n 'week.vpanelSplitter.border': `1px solid ${border}`,\r\n 'week.vpanelSplitter.height': '3px',\r\n\r\n // week daygrid 'daygrid'\r\n 'week.daygrid.borderRight': `1px solid ${border}`,\r\n 'week.daygrid.backgroundColor': background,\r\n\r\n 'week.daygridLeft.width': '72px',\r\n 'week.daygridLeft.backgroundColor': background,\r\n 'week.daygridLeft.paddingRight': '8px',\r\n 'week.daygridLeft.borderRight': `1px solid ${border}`,\r\n\r\n\r\n 'week.today.backgroundColor': primaryShaded,\r\n 'week.weekend.backgroundColor': 'inherit',\r\n\r\n // week timegrid 'timegrid'\r\n 'week.timegridLeft.width': '72px',\r\n 'week.timegridLeft.backgroundColor': 'inherit',\r\n 'week.timegridLeft.borderRight': `1px solid ${border}`,\r\n 'week.timegridLeft.fontSize': '11px',\r\n 'week.timegridLeftTimezoneLabel.height': '40px',\r\n 'week.timegridLeftAdditionalTimezone.backgroundColor': background,\r\n\r\n 'week.timegridOneHour.height': '52px',\r\n 'week.timegridHalfHour.height': '26px',\r\n 'week.timegridHalfHour.borderBottom': 'none',\r\n 'week.timegridHorizontalLine.borderBottom': `1px solid ${border}`,\r\n\r\n 'week.timegrid.paddingRight': '8px',\r\n 'week.timegrid.borderRight': `1px solid ${border}`,\r\n 'week.timegridSchedule.borderRadius': '2px',\r\n 'week.timegridSchedule.paddingLeft': '2px',\r\n\r\n // #515ce6 is a slate blue\r\n\r\n 'week.currentTime.color': highlight,\r\n 'week.currentTime.fontSize': '11px',\r\n 'week.currentTime.fontWeight': 'normal',\r\n\r\n 'week.pastTime.color': borderLight,\r\n 'week.pastTime.fontWeight': 'normal',\r\n\r\n 'week.futureTime.color': border,\r\n 'week.futureTime.fontWeight': 'normal',\r\n\r\n 'week.currentTimeLinePast.border': `1px dashed ${highlight}`,\r\n 'week.currentTimeLineBullet.backgroundColor': highlight,\r\n 'week.currentTimeLineToday.border': `1px solid ${highlight}`,\r\n 'week.currentTimeLineFuture.border': 'none',\r\n\r\n // week creation guide style\r\n 'week.creationGuide.color': highlight,\r\n 'week.creationGuide.fontSize': '11px',\r\n 'week.creationGuide.fontWeight': 'bold',\r\n\r\n // week daygrid schedule style\r\n 'week.dayGridSchedule.borderRadius': '2px',\r\n 'week.dayGridSchedule.height': '24px',\r\n 'week.dayGridSchedule.marginTop': '2px',\r\n 'week.dayGridSchedule.marginLeft': '8px',\r\n 'week.dayGridSchedule.marginRight': '8px'\r\n } as ITheme;\r\n }\r\n\r\n}\r\n","<section class=\"content-container\">\r\n <!-- These divs are here so that we can read the theme colors for the tui theme -->\r\n <!-- The outer div gives the default color for when user does not provide an Angular theme -->\r\n <div style=\"color: blue;\"> <div id=\"theme-primary\"></div></div>\r\n <div style=\"color: blue;\"> <div id=\"theme-highlight\"></div></div>\r\n <div style=\"color: blue;\"> <div id=\"theme-accent\"></div></div>\r\n <div style=\"color: red;\"> <div id=\"theme-warn\"></div></div>\r\n <div style=\"color: rgba(0, 0, 255, 0.2);\"> <div id=\"theme-primary-shaded\"></div></div>\r\n <div style=\"color: #3e3e3e;\"> <div id=\"theme-foreground\"></div></div>\r\n <div style=\"color: #e0e0e0;\"> <div id=\"theme-divider\"></div></div>\r\n <div style=\"color: white;\"> <div id=\"theme-background\"></div></div>\r\n \r\n <div class=\"calendar-container\">\r\n <!-- calendar titlebar -->\r\n <mat-toolbar class=\"menu-bar\" color=\"primary\">\r\n <!-- <div style=\"align-self: center;display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\"> -->\r\n <div style=\"display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n width: 100%; \">\r\n <div class=\"left-div\">\r\n <!-- LEFT -->\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.5rem !important;\" \r\n (click)=\"onCalendarLongPrev()\">\r\n <fa-icon [icon]=\"iconLongPrev\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\" \r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 2rem !important;\" \r\n (click)=\"onCalendarPrev()\">\r\n <fa-icon [icon]=\"iconPrev\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.7rem !important;\" \r\n (click)=\"onCalendarToday()\">\r\n <fa-icon [icon]=\"iconToday\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\" \r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 2rem !important;\" \r\n (click)=\"onCalendarNext()\">\r\n <fa-icon [icon]=\"iconNext\"></fa-icon>\r\n </button>\r\n <button mat-button \r\n class=\"navigation-button\"\r\n style=\"margin-left: 0px; margin-right: 0px; font-size: 1.5rem !important;\" \r\n (click)=\"onCalendarLongNext()\">\r\n <fa-icon [icon]=\"iconLongNext\"></fa-icon>\r\n </button>\r\n </div>\r\n <div class=\"center-div\">\r\n <!-- CENTER -->\r\n <span class=\"event-calendar-title\">{{ getDate() }}</span>\r\n </div>\r\n <div class=\"right-div\">\r\n \r\n <!-- RIGHT -->\r\n <mat-button-toggle-group class=\"view-button\" value=\"month\" id=\"@+id/toggleButton\" layout_width=\"wrap_content\"\r\n layout_height=\"wrap_content\">\r\n <mat-button-toggle mat-button value=\"month\" class=\"view-button\" (click)=\"onMonthView()\">\r\n <fa-icon [icon]=\"iconByMonth\"></fa-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle mat-button value=\"week\" class=\"view-button\" (click)=\"onWeekView()\">\r\n <fa-icon [icon]=\"iconByWeek\"></fa-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle mat-button value=\"day\" class=\"view-button\" (click)=\"onDayView()\">\r\n <fa-icon [icon]=\"iconByDay\"></fa-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </mat-toolbar>\r\n <ngx-mat-tui-calendar-wrapper></ngx-mat-tui-calendar-wrapper>\r\n </div>\r\n \r\n </section>\r\n","\r\n// Angular modules\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FlexModule, FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\n// Angular Material Design modules\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\n\r\n// 3rd party modules\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { MatTimepickerModule } from 'mat-timepicker';\r\n\r\n// collect all of the above modules into an array\r\nconst importedModules = [\r\n BrowserAnimationsModule,\r\n BrowserModule,\r\n FlexLayoutModule,\r\n FlexModule, \r\n FormsModule,\r\n HttpClientModule,\r\n OverlayModule,\r\n ReactiveFormsModule,\r\n\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatNativeDateModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSlideToggleModule,\r\n MatToolbarModule,\r\n\r\n FontAwesomeModule,\r\n MatTimepickerModule,\r\n ];\r\n\r\n\r\n// project modules\r\nimport { NgxMatTuiCalendarComponent } from './ngx-mat-tui-calendar.component';\r\nimport { NgxMatTuiCalendarWrapperComponent } from './ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component';\r\nimport { NgxMatTuiCalendarEditorDialogComponent } from './ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\r\n\r\nconst projectModules = [\r\n NgxMatTuiCalendarComponent,\r\n NgxMatTuiCalendarWrapperComponent,\r\n NgxMatTuiCalendarEditorDialogComponent,\r\n];\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ...projectModules,\r\n ],\r\n imports: [\r\n ...importedModules,\r\n ],\r\n exports: [\r\n ...importedModules,\r\n\r\n ...projectModules,\r\n ],\r\n entryComponents: [\r\n ...projectModules,\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class NgxMatTuiCalendarModule { }\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxMatTuiCalendarService {\n\n constructor() { }\n}\n","/*\n * Public API Surface of ngx-mat-tui-calendar\n */\n\nexport * from './lib/ngx-mat-tui-calendar.module';\nexport * from './lib/ngx-mat-tui-calendar.service';\nexport * from './lib/ngx-mat-tui-calendar.component';\nexport * from './lib/ngx-mat-tui-calendar-editor-dialog/ngx-mat-tui-calendar-editor-dialog.component';\nexport * from './lib/ngx-mat-tui-calendar-wrapper/ngx-mat-tui-calendar-wrapper.component';\n\nexport * from './lib/calendar-options';\nexport * from './lib/calendar-editor-options';\nexport * from './lib/local-date';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-mat-tui-calendar",
3
- "version": "12.0.10",
3
+ "version": "12.0.11",
4
4
  "author": "ron schmitt",
5
5
  "license": "MIT",
6
6
  "description": "Angular Material Design wrapper, supporting theming, for the Toast UI Calendar, suitable for web-based scheduling, events, appointments, and day planner applications.",