mis-crystal-design-system 4.0.46-test-1 → 4.0.48

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.
@@ -60,18 +60,13 @@
60
60
  var offset = this.interval - (minutes % this.interval);
61
61
  // start date, 22 MAY === current date, 22 MAY
62
62
  if (this.startDate === this.currDate) {
63
- console.log("start date epoch:", this.startDateEpoch);
64
63
  var currentTime = moment__namespace().valueOf();
65
64
  // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY
66
65
  if (this.startDate === this.endDate) {
67
- console.log("Current time:", currentTime);
68
- console.log("end-interval:", moment__namespace(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf());
69
66
  // current time is in last interval
70
67
  if (currentTime >= moment__namespace(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf()) {
71
68
  this.firstIntervalForStartPicker = currentTime;
72
69
  this.firstIntervalForEndPicker = moment__namespace(this.endDateEpoch).endOf("d").valueOf();
73
- console.log("firstIntervalForStartPicker", this.firstIntervalForStartPicker);
74
- console.log("firstIntervalForEndPicker", this.firstIntervalForEndPicker);
75
70
  }
76
71
  // current time isn't in last interval
77
72
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-timerangepicker.umd.js","sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts","../../../projects/mis-components/timerangepicker/mis-crystal-design-system-timerangepicker.ts"],"sourcesContent":["import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\",\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent {\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() height: string = \"46px\";\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() startDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() endDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() givenStartTime: number;\n @Input() givenEndTime: number;\n @Input() clockFormat: number = 12;\n @Input() interval: number = 15;\n @Input() showTooltip: boolean = true;\n @Input() direction: TDirection = 'row';\n @Input() gap: string = '1rem';\n\n @Output() timeRangeEmitter = new EventEmitter<ITimeRange>();\n\n startDate!: string;\n endDate!: string;\n currDate!: string;\n timeFormat!: string;\n firstIntervalForStartPicker: number = moment().valueOf();\n firstIntervalForEndPicker: number = moment().valueOf();\n startTime!: ITime;\n endTime!: ITime;\n rangeValidity: boolean = true;\n triggerChange: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n ngOnChanges() {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n this.startDate = moment(this.startDateEpoch).format(\"DD-MM-YYYY\");\n this.endDate = moment(this.endDateEpoch).format(\"DD-MM-YYYY\");\n this.currDate = moment().format(\"DD-MM-YYYY\");\n this.setFirstIntervals();\n }\n\n // calculate the first interval of the picker\n setFirstIntervals(): void {\n const minutes = moment().minutes();\n const offset = this.interval - (minutes % this.interval);\n\n // start date, 22 MAY === current date, 22 MAY\n if( this.startDate === this.currDate ){\n console.log(\"start date epoch:\",this.startDateEpoch);\n const currentTime = moment().valueOf();\n\n // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY\n if(this.startDate === this.endDate){\n console.log(\"Current time:\",currentTime);\n console.log(\"end-interval:\",moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf());\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n console.log(\"firstIntervalForStartPicker\",this.firstIntervalForStartPicker);\n console.log(\"firstIntervalForEndPicker\",this.firstIntervalForEndPicker);\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment().add(offset, \"m\").add(this.interval, \"m\").valueOf();\n }\n } \n // start date, 22 MAY === current date, 22 MAY !== end date, 30 MAY\n else {\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).valueOf();\n }\n }\n }\n // start date, 30 MAY !== current date, 22 MAY\n else {\n // start date === end Date\n if( this.startDate === this.endDate){\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).add(this.interval, \"m\").valueOf();\n } \n // start date !== end date\n else {\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n }\n\n }\n\n if(this.givenStartTime)\n this.firstIntervalForStartPicker = this.givenStartTime;\n \n if(this.givenEndTime)\n this.firstIntervalForEndPicker = this.givenEndTime;\n \n this.startTime = {\n valid: true,\n time: moment(this.firstIntervalForStartPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForStartPicker).valueOf()\n };\n\n this.endTime = {\n valid: true,\n time: moment(this.firstIntervalForEndPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForEndPicker).valueOf()\n };\n }\n\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n //handlers catch the emitted values and run validation\n startPickerHandler(time: ITime): void {\n this.startTime = time;\n this.rangeValidity = true;\n // if the start time changes and the start date is the same as the end date\n // and the start time >= end time\n // update the first interval of end picker according to the time set in start picker\n if (this.startDate === this.endDate) {\n let minutes = moment(this.startTime.time, this.timeFormat).minutes();\n let offset = this.interval - (minutes % this.interval);\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n .add(offset, \"m\")\n .valueOf();\n\n // if the first interval == 12:00am, set it as 11:59pm\n const intervalAsString = moment(this.firstIntervalForEndPicker).format(this.timeFormat);\n const endOfDayAsString = moment(moment(`${this.startDate}`, `DD-MM-YYYY ${this.timeFormat}`).endOf(\"d\").add(1, \"m\")).format(this.timeFormat);\n if (intervalAsString === endOfDayAsString) {\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`).endOf(\"d\").valueOf();\n }\n\n } else {\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) &&\n this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n this.triggerChange = !this.triggerChange;\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime = time;\n\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) && this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = moment(`${moment(date).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // then we don't check its validity against the current time\n if ((this.givenStartTime && this.givenEndTime) || (this.startDate !== this.endDate && this.startDate !== this.currDate)) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true : false;\n }\n\n return flag;\n }\n\n // validates end picker's input according to the start picker's input\n rangeValidation(validity: boolean) {\n if (validity && this.startDate === this.endDate) {\n const startMoment = moment(this.startTime.time, this.timeFormat);\n const endMoment = moment(this.endTime.time, this.timeFormat);\n this.rangeValidity = endMoment.diff(startMoment, \"m\") >= 1 ? true : false;\n this.cdr.detectChanges();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["moment","EventEmitter","moment.tz","Component","ChangeDetectorRef","Input","Output","NgModule","CommonModule","FormsModule","TimePickerModule"],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-timerangepicker.umd.js","sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts","../../../projects/mis-components/timerangepicker/mis-crystal-design-system-timerangepicker.ts"],"sourcesContent":["import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\",\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent {\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() height: string = \"46px\";\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() startDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() endDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() givenStartTime: number;\n @Input() givenEndTime: number;\n @Input() clockFormat: number = 12;\n @Input() interval: number = 15;\n @Input() showTooltip: boolean = true;\n @Input() direction: TDirection = 'row';\n @Input() gap: string = '1rem';\n\n @Output() timeRangeEmitter = new EventEmitter<ITimeRange>();\n\n startDate!: string;\n endDate!: string;\n currDate!: string;\n timeFormat!: string;\n firstIntervalForStartPicker: number = moment().valueOf();\n firstIntervalForEndPicker: number = moment().valueOf();\n startTime!: ITime;\n endTime!: ITime;\n rangeValidity: boolean = true;\n triggerChange: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n ngOnChanges() {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n this.startDate = moment(this.startDateEpoch).format(\"DD-MM-YYYY\");\n this.endDate = moment(this.endDateEpoch).format(\"DD-MM-YYYY\");\n this.currDate = moment().format(\"DD-MM-YYYY\");\n this.setFirstIntervals();\n }\n\n // calculate the first interval of the picker\n setFirstIntervals(): void {\n const minutes = moment().minutes();\n const offset = this.interval - (minutes % this.interval);\n\n // start date, 22 MAY === current date, 22 MAY\n if( this.startDate === this.currDate ){\n const currentTime = moment().valueOf();\n\n // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY\n if(this.startDate === this.endDate){\n\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment().add(offset, \"m\").add(this.interval, \"m\").valueOf();\n }\n } \n // start date, 22 MAY === current date, 22 MAY !== end date, 30 MAY\n else {\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).valueOf();\n }\n }\n }\n // start date, 30 MAY !== current date, 22 MAY\n else {\n // start date === end Date\n if( this.startDate === this.endDate){\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).add(this.interval, \"m\").valueOf();\n } \n // start date !== end date\n else {\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n }\n\n }\n\n if(this.givenStartTime)\n this.firstIntervalForStartPicker = this.givenStartTime;\n \n if(this.givenEndTime)\n this.firstIntervalForEndPicker = this.givenEndTime;\n \n this.startTime = {\n valid: true,\n time: moment(this.firstIntervalForStartPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForStartPicker).valueOf()\n };\n\n this.endTime = {\n valid: true,\n time: moment(this.firstIntervalForEndPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForEndPicker).valueOf()\n };\n }\n\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n //handlers catch the emitted values and run validation\n startPickerHandler(time: ITime): void {\n this.startTime = time;\n this.rangeValidity = true;\n // if the start time changes and the start date is the same as the end date\n // and the start time >= end time\n // update the first interval of end picker according to the time set in start picker\n if (this.startDate === this.endDate) {\n let minutes = moment(this.startTime.time, this.timeFormat).minutes();\n let offset = this.interval - (minutes % this.interval);\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n .add(offset, \"m\")\n .valueOf();\n\n // if the first interval == 12:00am, set it as 11:59pm\n const intervalAsString = moment(this.firstIntervalForEndPicker).format(this.timeFormat);\n const endOfDayAsString = moment(moment(`${this.startDate}`, `DD-MM-YYYY ${this.timeFormat}`).endOf(\"d\").add(1, \"m\")).format(this.timeFormat);\n if (intervalAsString === endOfDayAsString) {\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`).endOf(\"d\").valueOf();\n }\n\n } else {\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) &&\n this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n this.triggerChange = !this.triggerChange;\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime = time;\n\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) && this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = moment(`${moment(date).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // then we don't check its validity against the current time\n if ((this.givenStartTime && this.givenEndTime) || (this.startDate !== this.endDate && this.startDate !== this.currDate)) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true : false;\n }\n\n return flag;\n }\n\n // validates end picker's input according to the start picker's input\n rangeValidation(validity: boolean) {\n if (validity && this.startDate === this.endDate) {\n const startMoment = moment(this.startTime.time, this.timeFormat);\n const endMoment = moment(this.endTime.time, this.timeFormat);\n this.rangeValidity = endMoment.diff(startMoment, \"m\") >= 1 ? true : false;\n this.cdr.detectChanges();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["moment","EventEmitter","moment.tz","Component","ChangeDetectorRef","Input","Output","NgModule","CommonModule","FormsModule","TimePickerModule"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("moment-timezone"),require("@angular/common"),require("@angular/forms"),require("mis-crystal-design-system/timepicker")):"function"==typeof define&&define.amd?define("mis-crystal-design-system/timerangepicker",["exports","@angular/core","moment-timezone","@angular/common","@angular/forms","mis-crystal-design-system/timepicker"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self)["mis-crystal-design-system"]=t["mis-crystal-design-system"]||{},t["mis-crystal-design-system"].timerangepicker={}),t.ng.core,t.moment,t.ng.common,t.ng.forms,t["mis-crystal-design-system"].timepicker)}(this,(function(t,e,i,r,a,n){"use strict";function s(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(i){if("default"!==i){var r=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,r.get?r:{enumerable:!0,get:function(){return t[i]}})}})),e.default=t,Object.freeze(e)}var o=s(i),h=function(){function t(t){this.cdr=t,this.inputWidth="100px",this.height="46px",this.timezone="Asia/Kolkata",this.startDateEpoch=o().tz(this.timezone).valueOf(),this.endDateEpoch=o().tz(this.timezone).valueOf(),this.clockFormat=12,this.interval=15,this.showTooltip=!0,this.direction="row",this.gap="1rem",this.timeRangeEmitter=new e.EventEmitter,this.firstIntervalForStartPicker=o().valueOf(),this.firstIntervalForEndPicker=o().valueOf(),this.rangeValidity=!0,this.triggerChange=!0}return t.prototype.ngOnInit=function(){},t.prototype.ngOnChanges=function(){this.timeFormat=12===this.clockFormat?"hh:mm a":"HH:mm",i.tz.setDefault(this.timezone),this.startDate=o(this.startDateEpoch).format("DD-MM-YYYY"),this.endDate=o(this.endDateEpoch).format("DD-MM-YYYY"),this.currDate=o().format("DD-MM-YYYY"),this.setFirstIntervals()},t.prototype.setFirstIntervals=function(){var t=o().minutes(),e=this.interval-t%this.interval;if(this.startDate===this.currDate){console.log("start date epoch:",this.startDateEpoch);var i=o().valueOf();this.startDate===this.endDate?(console.log("Current time:",i),console.log("end-interval:",o(this.startDateEpoch).endOf("d").subtract(this.interval,"m").valueOf()),i>=o(this.startDateEpoch).endOf("d").subtract(this.interval,"m").valueOf()?(this.firstIntervalForStartPicker=i,this.firstIntervalForEndPicker=o(this.endDateEpoch).endOf("d").valueOf(),console.log("firstIntervalForStartPicker",this.firstIntervalForStartPicker),console.log("firstIntervalForEndPicker",this.firstIntervalForEndPicker)):(this.firstIntervalForStartPicker=o().add(e,"m").valueOf(),this.firstIntervalForEndPicker=o().add(e,"m").add(this.interval,"m").valueOf())):i>=o(this.startDateEpoch).endOf("d").subtract(this.interval,"m").valueOf()?(this.firstIntervalForStartPicker=i,this.firstIntervalForEndPicker=o(this.endDateEpoch).endOf("d").valueOf()):(this.firstIntervalForStartPicker=o().add(e,"m").valueOf(),this.firstIntervalForEndPicker=o(this.endDateEpoch).valueOf())}else this.startDate===this.endDate?(this.firstIntervalForStartPicker=o(this.startDateEpoch).startOf("d").valueOf(),this.firstIntervalForEndPicker=o(this.endDateEpoch).add(this.interval,"m").valueOf()):(this.firstIntervalForStartPicker=o(this.startDateEpoch).startOf("d").valueOf(),this.firstIntervalForEndPicker=o(this.startDateEpoch).startOf("d").valueOf());this.givenStartTime&&(this.firstIntervalForStartPicker=this.givenStartTime),this.givenEndTime&&(this.firstIntervalForEndPicker=this.givenEndTime),this.startTime={valid:!0,time:o(this.firstIntervalForStartPicker).format(this.timeFormat),epoch:o(this.firstIntervalForStartPicker).valueOf()},this.endTime={valid:!0,time:o(this.firstIntervalForEndPicker).format(this.timeFormat),epoch:o(this.firstIntervalForEndPicker).valueOf()}},t.prototype.emitTimeRange=function(t){this.timeRangeEmitter.emit(t)},t.prototype.startPickerHandler=function(t){if(this.startTime=t,this.rangeValidity=!0,this.startDate===this.endDate){var e=o(this.startTime.time,this.timeFormat).minutes(),i=this.interval-e%this.interval;this.firstIntervalForEndPicker=o(this.startDate+" "+this.startTime.time,"'DD-MM-YYYY' "+this.timeFormat).add(i,"m").valueOf(),o(this.firstIntervalForEndPicker).format(this.timeFormat)===o(o(""+this.startDate,"DD-MM-YYYY "+this.timeFormat).endOf("d").add(1,"m")).format(this.timeFormat)&&(this.firstIntervalForEndPicker=o(this.startDate+" "+this.startTime.time,"'DD-MM-YYYY' "+this.timeFormat).endOf("d").valueOf())}else{var r=this.checkTimeValidity(this.startTime.time.trim(),this.startDateEpoch)&&this.checkTimeValidity(this.endTime.time.trim(),this.endDateEpoch);this.rangeValidation(r),this.emitTimeRange({valid:r&&this.rangeValidity,startTime:this.startTime.time,endTime:this.endTime.time,startEpoch:o(this.startDate+" "+this.startTime.time,"DD-MM-YYYY "+this.timeFormat).valueOf(),endEpoch:o(this.endDate+" "+this.endTime.time,"DD-MM-YYYY "+this.timeFormat).valueOf()})}this.triggerChange=!this.triggerChange},t.prototype.endPickerHandler=function(t){this.endTime=t;var e=this.checkTimeValidity(this.startTime.time.trim(),this.startDateEpoch)&&this.checkTimeValidity(this.endTime.time.trim(),this.endDateEpoch);this.rangeValidation(e),this.emitTimeRange({valid:e&&this.rangeValidity,startTime:this.startTime.time,endTime:this.endTime.time,startEpoch:o(this.startDate+" "+this.startTime.time,"DD-MM-YYYY "+this.timeFormat).valueOf(),endEpoch:o(this.endDate+" "+this.endTime.time,"DD-MM-YYYY "+this.timeFormat).valueOf()})},t.prototype.checkTimeValidity=function(t,e){var i=12===this.clockFormat?/^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i:/^([01][0-9]|2[0-3]):[0-5][0-9]$/,r=o(o(e).format("DD-MM-YYYY")+" "+t,"'DD-MM-YYYY' "+this.timeFormat);return this.givenStartTime&&this.givenEndTime||this.startDate!==this.endDate&&this.startDate!==this.currDate?!!t.match(i):!!(t.match(i)&&r.diff(o(),"m")>=0)},t.prototype.rangeValidation=function(t){if(t&&this.startDate===this.endDate){var e=o(this.startTime.time,this.timeFormat),i=o(this.endTime.time,this.timeFormat);this.rangeValidity=i.diff(e,"m")>=1,this.cdr.detectChanges()}},t}();h.decorators=[{type:e.Component,args:[{selector:"mis-timerangepicker",template:'<div class="rangepicker-container" [ngStyle]="{\'flexDirection\': direction, \'gap\': gap}">\n <mis-timepicker\n [clockFormat]="clockFormat"\n [interval]="interval"\n [dateAsEpoch]="startDateEpoch"\n [firstInterval]="firstIntervalForStartPicker"\n (timeEmitter)="startPickerHandler($event)"\n [timezone]="timezone"\n [height]="height"\n [inputWidth]="inputWidth"\n [dropdownWidth]="dropdownWidth"\n [showTooltip]="showTooltip"\n [givenTime]="givenStartTime"\n ></mis-timepicker>\n <p *ngIf="direction === \'row\'">-</p>\n <mis-timepicker\n [clockFormat]="clockFormat"\n [interval]="interval"\n [dateAsEpoch]="endDateEpoch"\n [firstInterval]="firstIntervalForEndPicker"\n (timeEmitter)="endPickerHandler($event)"\n [rangeValidity]="rangeValidity"\n [timezone]="timezone"\n [height]="height"\n [inputWidth]="inputWidth"\n [dropdownWidth]="dropdownWidth"\n [showTooltip]="showTooltip"\n [givenTime]="givenEndTime"\n [triggerChange]="triggerChange"\n ></mis-timepicker>\n</div>\n',styles:[".rangepicker-container{display:flex;gap:1rem;align-items:center}p{margin:0;display:inline-flex;align-items:center}"]}]}],h.ctorParameters=function(){return[{type:e.ChangeDetectorRef}]},h.propDecorators={inputWidth:[{type:e.Input}],dropdownWidth:[{type:e.Input}],height:[{type:e.Input}],timezone:[{type:e.Input}],startDateEpoch:[{type:e.Input}],endDateEpoch:[{type:e.Input}],givenStartTime:[{type:e.Input}],givenEndTime:[{type:e.Input}],clockFormat:[{type:e.Input}],interval:[{type:e.Input}],showTooltip:[{type:e.Input}],direction:[{type:e.Input}],gap:[{type:e.Input}],timeRangeEmitter:[{type:e.Output}]};var m=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t}();m.decorators=[{type:e.NgModule,args:[{declarations:[h],imports:[r.CommonModule,a.FormsModule,n.TimePickerModule],exports:[h]}]}],t.TimeRangePickerComponent=h,t.TimeRangePickerModule=m,Object.defineProperty(t,"__esModule",{value:!0})}));
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("moment-timezone"),require("@angular/common"),require("@angular/forms"),require("mis-crystal-design-system/timepicker")):"function"==typeof define&&define.amd?define("mis-crystal-design-system/timerangepicker",["exports","@angular/core","moment-timezone","@angular/common","@angular/forms","mis-crystal-design-system/timepicker"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self)["mis-crystal-design-system"]=t["mis-crystal-design-system"]||{},t["mis-crystal-design-system"].timerangepicker={}),t.ng.core,t.moment,t.ng.common,t.ng.forms,t["mis-crystal-design-system"].timepicker)}(this,(function(t,e,i,r,a,n){"use strict";function s(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(i){if("default"!==i){var r=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,r.get?r:{enumerable:!0,get:function(){return t[i]}})}})),e.default=t,Object.freeze(e)}var o=s(i),h=function(){function t(t){this.cdr=t,this.inputWidth="100px",this.height="46px",this.timezone="Asia/Kolkata",this.startDateEpoch=o().tz(this.timezone).valueOf(),this.endDateEpoch=o().tz(this.timezone).valueOf(),this.clockFormat=12,this.interval=15,this.showTooltip=!0,this.direction="row",this.gap="1rem",this.timeRangeEmitter=new e.EventEmitter,this.firstIntervalForStartPicker=o().valueOf(),this.firstIntervalForEndPicker=o().valueOf(),this.rangeValidity=!0,this.triggerChange=!0}return t.prototype.ngOnInit=function(){},t.prototype.ngOnChanges=function(){this.timeFormat=12===this.clockFormat?"hh:mm a":"HH:mm",i.tz.setDefault(this.timezone),this.startDate=o(this.startDateEpoch).format("DD-MM-YYYY"),this.endDate=o(this.endDateEpoch).format("DD-MM-YYYY"),this.currDate=o().format("DD-MM-YYYY"),this.setFirstIntervals()},t.prototype.setFirstIntervals=function(){var t=o().minutes(),e=this.interval-t%this.interval;if(this.startDate===this.currDate){var i=o().valueOf();this.startDate===this.endDate?i>=o(this.startDateEpoch).endOf("d").subtract(this.interval,"m").valueOf()?(this.firstIntervalForStartPicker=i,this.firstIntervalForEndPicker=o(this.endDateEpoch).endOf("d").valueOf()):(this.firstIntervalForStartPicker=o().add(e,"m").valueOf(),this.firstIntervalForEndPicker=o().add(e,"m").add(this.interval,"m").valueOf()):i>=o(this.startDateEpoch).endOf("d").subtract(this.interval,"m").valueOf()?(this.firstIntervalForStartPicker=i,this.firstIntervalForEndPicker=o(this.endDateEpoch).endOf("d").valueOf()):(this.firstIntervalForStartPicker=o().add(e,"m").valueOf(),this.firstIntervalForEndPicker=o(this.endDateEpoch).valueOf())}else this.startDate===this.endDate?(this.firstIntervalForStartPicker=o(this.startDateEpoch).startOf("d").valueOf(),this.firstIntervalForEndPicker=o(this.endDateEpoch).add(this.interval,"m").valueOf()):(this.firstIntervalForStartPicker=o(this.startDateEpoch).startOf("d").valueOf(),this.firstIntervalForEndPicker=o(this.startDateEpoch).startOf("d").valueOf());this.givenStartTime&&(this.firstIntervalForStartPicker=this.givenStartTime),this.givenEndTime&&(this.firstIntervalForEndPicker=this.givenEndTime),this.startTime={valid:!0,time:o(this.firstIntervalForStartPicker).format(this.timeFormat),epoch:o(this.firstIntervalForStartPicker).valueOf()},this.endTime={valid:!0,time:o(this.firstIntervalForEndPicker).format(this.timeFormat),epoch:o(this.firstIntervalForEndPicker).valueOf()}},t.prototype.emitTimeRange=function(t){this.timeRangeEmitter.emit(t)},t.prototype.startPickerHandler=function(t){if(this.startTime=t,this.rangeValidity=!0,this.startDate===this.endDate){var e=o(this.startTime.time,this.timeFormat).minutes(),i=this.interval-e%this.interval;this.firstIntervalForEndPicker=o(this.startDate+" "+this.startTime.time,"'DD-MM-YYYY' "+this.timeFormat).add(i,"m").valueOf(),o(this.firstIntervalForEndPicker).format(this.timeFormat)===o(o(""+this.startDate,"DD-MM-YYYY "+this.timeFormat).endOf("d").add(1,"m")).format(this.timeFormat)&&(this.firstIntervalForEndPicker=o(this.startDate+" "+this.startTime.time,"'DD-MM-YYYY' "+this.timeFormat).endOf("d").valueOf())}else{var r=this.checkTimeValidity(this.startTime.time.trim(),this.startDateEpoch)&&this.checkTimeValidity(this.endTime.time.trim(),this.endDateEpoch);this.rangeValidation(r),this.emitTimeRange({valid:r&&this.rangeValidity,startTime:this.startTime.time,endTime:this.endTime.time,startEpoch:o(this.startDate+" "+this.startTime.time,"DD-MM-YYYY "+this.timeFormat).valueOf(),endEpoch:o(this.endDate+" "+this.endTime.time,"DD-MM-YYYY "+this.timeFormat).valueOf()})}this.triggerChange=!this.triggerChange},t.prototype.endPickerHandler=function(t){this.endTime=t;var e=this.checkTimeValidity(this.startTime.time.trim(),this.startDateEpoch)&&this.checkTimeValidity(this.endTime.time.trim(),this.endDateEpoch);this.rangeValidation(e),this.emitTimeRange({valid:e&&this.rangeValidity,startTime:this.startTime.time,endTime:this.endTime.time,startEpoch:o(this.startDate+" "+this.startTime.time,"DD-MM-YYYY "+this.timeFormat).valueOf(),endEpoch:o(this.endDate+" "+this.endTime.time,"DD-MM-YYYY "+this.timeFormat).valueOf()})},t.prototype.checkTimeValidity=function(t,e){var i=12===this.clockFormat?/^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i:/^([01][0-9]|2[0-3]):[0-5][0-9]$/,r=o(o(e).format("DD-MM-YYYY")+" "+t,"'DD-MM-YYYY' "+this.timeFormat);return this.givenStartTime&&this.givenEndTime||this.startDate!==this.endDate&&this.startDate!==this.currDate?!!t.match(i):!!(t.match(i)&&r.diff(o(),"m")>=0)},t.prototype.rangeValidation=function(t){if(t&&this.startDate===this.endDate){var e=o(this.startTime.time,this.timeFormat),i=o(this.endTime.time,this.timeFormat);this.rangeValidity=i.diff(e,"m")>=1,this.cdr.detectChanges()}},t}();h.decorators=[{type:e.Component,args:[{selector:"mis-timerangepicker",template:'<div class="rangepicker-container" [ngStyle]="{\'flexDirection\': direction, \'gap\': gap}">\n <mis-timepicker\n [clockFormat]="clockFormat"\n [interval]="interval"\n [dateAsEpoch]="startDateEpoch"\n [firstInterval]="firstIntervalForStartPicker"\n (timeEmitter)="startPickerHandler($event)"\n [timezone]="timezone"\n [height]="height"\n [inputWidth]="inputWidth"\n [dropdownWidth]="dropdownWidth"\n [showTooltip]="showTooltip"\n [givenTime]="givenStartTime"\n ></mis-timepicker>\n <p *ngIf="direction === \'row\'">-</p>\n <mis-timepicker\n [clockFormat]="clockFormat"\n [interval]="interval"\n [dateAsEpoch]="endDateEpoch"\n [firstInterval]="firstIntervalForEndPicker"\n (timeEmitter)="endPickerHandler($event)"\n [rangeValidity]="rangeValidity"\n [timezone]="timezone"\n [height]="height"\n [inputWidth]="inputWidth"\n [dropdownWidth]="dropdownWidth"\n [showTooltip]="showTooltip"\n [givenTime]="givenEndTime"\n [triggerChange]="triggerChange"\n ></mis-timepicker>\n</div>\n',styles:[".rangepicker-container{display:flex;gap:1rem;align-items:center}p{margin:0;display:inline-flex;align-items:center}"]}]}],h.ctorParameters=function(){return[{type:e.ChangeDetectorRef}]},h.propDecorators={inputWidth:[{type:e.Input}],dropdownWidth:[{type:e.Input}],height:[{type:e.Input}],timezone:[{type:e.Input}],startDateEpoch:[{type:e.Input}],endDateEpoch:[{type:e.Input}],givenStartTime:[{type:e.Input}],givenEndTime:[{type:e.Input}],clockFormat:[{type:e.Input}],interval:[{type:e.Input}],showTooltip:[{type:e.Input}],direction:[{type:e.Input}],gap:[{type:e.Input}],timeRangeEmitter:[{type:e.Output}]};var m=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t}();m.decorators=[{type:e.NgModule,args:[{declarations:[h],imports:[r.CommonModule,a.FormsModule,n.TimePickerModule],exports:[h]}]}],t.TimeRangePickerComponent=h,t.TimeRangePickerModule=m,Object.defineProperty(t,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=mis-crystal-design-system-timerangepicker.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts"],"names":["TimeRangePickerComponent","cdr","this","inputWidth","height","timezone","startDateEpoch","moment","tz","valueOf","endDateEpoch","clockFormat","interval","showTooltip","direction","gap","timeRangeEmitter","EventEmitter","firstIntervalForStartPicker","firstIntervalForEndPicker","rangeValidity","triggerChange","prototype","ngOnInit","ngOnChanges","timeFormat","moment.tz","setDefault","startDate","format","endDate","currDate","setFirstIntervals","minutes","offset","console","log","currentTime","endOf","subtract","add","startOf","givenStartTime","givenEndTime","startTime","valid","time","epoch","endTime","emitTimeRange","data","emit","startPickerHandler","validity","checkTimeValidity","trim","rangeValidation","startEpoch","endEpoch","endPickerHandler","date","RE","timeMoment","match","diff","startMoment","endMoment","detectChanges","Component","args","selector","template","ChangeDetectorRef","Input","Output","TimeRangePickerModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","FormsModule","TimePickerModule","exports"],"mappings":"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","sourcesContent":["import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\",\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent {\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() height: string = \"46px\";\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() startDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() endDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() givenStartTime: number;\n @Input() givenEndTime: number;\n @Input() clockFormat: number = 12;\n @Input() interval: number = 15;\n @Input() showTooltip: boolean = true;\n @Input() direction: TDirection = 'row';\n @Input() gap: string = '1rem';\n\n @Output() timeRangeEmitter = new EventEmitter<ITimeRange>();\n\n startDate!: string;\n endDate!: string;\n currDate!: string;\n timeFormat!: string;\n firstIntervalForStartPicker: number = moment().valueOf();\n firstIntervalForEndPicker: number = moment().valueOf();\n startTime!: ITime;\n endTime!: ITime;\n rangeValidity: boolean = true;\n triggerChange: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n ngOnChanges() {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n this.startDate = moment(this.startDateEpoch).format(\"DD-MM-YYYY\");\n this.endDate = moment(this.endDateEpoch).format(\"DD-MM-YYYY\");\n this.currDate = moment().format(\"DD-MM-YYYY\");\n this.setFirstIntervals();\n }\n\n // calculate the first interval of the picker\n setFirstIntervals(): void {\n const minutes = moment().minutes();\n const offset = this.interval - (minutes % this.interval);\n\n // start date, 22 MAY === current date, 22 MAY\n if( this.startDate === this.currDate ){\n console.log(\"start date epoch:\",this.startDateEpoch);\n const currentTime = moment().valueOf();\n\n // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY\n if(this.startDate === this.endDate){\n console.log(\"Current time:\",currentTime);\n console.log(\"end-interval:\",moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf());\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n console.log(\"firstIntervalForStartPicker\",this.firstIntervalForStartPicker);\n console.log(\"firstIntervalForEndPicker\",this.firstIntervalForEndPicker);\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment().add(offset, \"m\").add(this.interval, \"m\").valueOf();\n }\n } \n // start date, 22 MAY === current date, 22 MAY !== end date, 30 MAY\n else {\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).valueOf();\n }\n }\n }\n // start date, 30 MAY !== current date, 22 MAY\n else {\n // start date === end Date\n if( this.startDate === this.endDate){\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).add(this.interval, \"m\").valueOf();\n } \n // start date !== end date\n else {\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n }\n\n }\n\n if(this.givenStartTime)\n this.firstIntervalForStartPicker = this.givenStartTime;\n \n if(this.givenEndTime)\n this.firstIntervalForEndPicker = this.givenEndTime;\n \n this.startTime = {\n valid: true,\n time: moment(this.firstIntervalForStartPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForStartPicker).valueOf()\n };\n\n this.endTime = {\n valid: true,\n time: moment(this.firstIntervalForEndPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForEndPicker).valueOf()\n };\n }\n\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n //handlers catch the emitted values and run validation\n startPickerHandler(time: ITime): void {\n this.startTime = time;\n this.rangeValidity = true;\n // if the start time changes and the start date is the same as the end date\n // and the start time >= end time\n // update the first interval of end picker according to the time set in start picker\n if (this.startDate === this.endDate) {\n let minutes = moment(this.startTime.time, this.timeFormat).minutes();\n let offset = this.interval - (minutes % this.interval);\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n .add(offset, \"m\")\n .valueOf();\n\n // if the first interval == 12:00am, set it as 11:59pm\n const intervalAsString = moment(this.firstIntervalForEndPicker).format(this.timeFormat);\n const endOfDayAsString = moment(moment(`${this.startDate}`, `DD-MM-YYYY ${this.timeFormat}`).endOf(\"d\").add(1, \"m\")).format(this.timeFormat);\n if (intervalAsString === endOfDayAsString) {\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`).endOf(\"d\").valueOf();\n }\n\n } else {\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) &&\n this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n this.triggerChange = !this.triggerChange;\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime = time;\n\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) && this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = moment(`${moment(date).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // then we don't check its validity against the current time\n if ((this.givenStartTime && this.givenEndTime) || (this.startDate !== this.endDate && this.startDate !== this.currDate)) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true : false;\n }\n\n return flag;\n }\n\n // validates end picker's input according to the start picker's input\n rangeValidation(validity: boolean) {\n if (validity && this.startDate === this.endDate) {\n const startMoment = moment(this.startTime.time, this.timeFormat);\n const endMoment = moment(this.endTime.time, this.timeFormat);\n this.rangeValidity = endMoment.diff(startMoment, \"m\") >= 1 ? true : false;\n this.cdr.detectChanges();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}"]}
1
+ {"version":3,"sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts"],"names":["TimeRangePickerComponent","cdr","this","inputWidth","height","timezone","startDateEpoch","moment","tz","valueOf","endDateEpoch","clockFormat","interval","showTooltip","direction","gap","timeRangeEmitter","EventEmitter","firstIntervalForStartPicker","firstIntervalForEndPicker","rangeValidity","triggerChange","prototype","ngOnInit","ngOnChanges","timeFormat","moment.tz","setDefault","startDate","format","endDate","currDate","setFirstIntervals","minutes","offset","currentTime","endOf","subtract","add","startOf","givenStartTime","givenEndTime","startTime","valid","time","epoch","endTime","emitTimeRange","data","emit","startPickerHandler","validity","checkTimeValidity","trim","rangeValidation","startEpoch","endEpoch","endPickerHandler","date","RE","timeMoment","match","diff","startMoment","endMoment","detectChanges","Component","args","selector","template","ChangeDetectorRef","Input","Output","TimeRangePickerModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","FormsModule","TimePickerModule","exports"],"mappings":"8hCAqCE,SAAAA,EAAoBC,GAAAC,KAAAD,IAAAA,EA3BXC,KAAAC,WAAqB,QAErBD,KAAAE,OAAiB,OACjBF,KAAAG,SAAmB,eACnBH,KAAAI,eAAyBC,IAASC,GAAGN,KAAKG,UAAUI,UACpDP,KAAAQ,aAAuBH,IAASC,GAAGN,KAAKG,UAAUI,UAGlDP,KAAAS,YAAsB,GACtBT,KAAAU,SAAmB,GACnBV,KAAAW,aAAuB,EACvBX,KAAAY,UAAwB,MACxBZ,KAAAa,IAAc,OAEbb,KAAAc,iBAAmB,IAAIC,EAAAA,aAMjCf,KAAAgB,4BAAsCX,IAASE,UAC/CP,KAAAiB,0BAAoCZ,IAASE,UAG7CP,KAAAkB,eAAyB,EACzBlB,KAAAmB,eAAyB,SAIzBrB,EAAAsB,UAAAC,SAAA,aAEAvB,EAAAsB,UAAAE,YAAA,WACEtB,KAAKuB,WAAkC,KAArBvB,KAAKS,YAAqB,UAAY,QACxDe,EAAAA,GAAUC,WAAWzB,KAAKG,UAC1BH,KAAK0B,UAAYrB,EAAOL,KAAKI,gBAAgBuB,OAAO,cACpD3B,KAAK4B,QAAUvB,EAAOL,KAAKQ,cAAcmB,OAAO,cAChD3B,KAAK6B,SAAWxB,IAASsB,OAAO,cAChC3B,KAAK8B,qBAIPhC,EAAAsB,UAAAU,kBAAA,WACE,IAAMC,EAAU1B,IAAS0B,UACnBC,EAAShC,KAAKU,SAAYqB,EAAU/B,KAAKU,SAG/C,GAAIV,KAAK0B,YAAc1B,KAAK6B,SAAU,CACpC,IAAMI,EAAc5B,IAASE,UAG1BP,KAAK0B,YAAc1B,KAAK4B,QAGrBK,GAAe5B,EAAOL,KAAKI,gBAAgB8B,MAAM,KAAKC,SAASnC,KAAKU,SAAS,KAAKH,WACpFP,KAAKgB,4BAA8BiB,EACnCjC,KAAKiB,0BAA6BZ,EAAOL,KAAKQ,cAAc0B,MAAM,KAAK3B,YAIvEP,KAAKgB,4BAA8BX,IAAS+B,IAAIJ,EAAQ,KAAKzB,UAC7DP,KAAKiB,0BAA6BZ,IAAS+B,IAAIJ,EAAQ,KAAKI,IAAIpC,KAAKU,SAAU,KAAKH,WAMlF0B,GAAe5B,EAAOL,KAAKI,gBAAgB8B,MAAM,KAAKC,SAASnC,KAAKU,SAAS,KAAKH,WACpFP,KAAKgB,4BAA8BiB,EACnCjC,KAAKiB,0BAA6BZ,EAAOL,KAAKQ,cAAc0B,MAAM,KAAK3B,YAIvEP,KAAKgB,4BAA8BX,IAAS+B,IAAIJ,EAAQ,KAAKzB,UAC7DP,KAAKiB,0BAA6BZ,EAAOL,KAAKQ,cAAcD,gBAO5DP,KAAK0B,YAAc1B,KAAK4B,SAC1B5B,KAAKgB,4BAA8BX,EAAOL,KAAKI,gBAAgBiC,QAAQ,KAAK9B,UAC5EP,KAAKiB,0BAA6BZ,EAAOL,KAAKQ,cAAc4B,IAAIpC,KAAKU,SAAU,KAAKH,YAIpFP,KAAKgB,4BAA8BX,EAAOL,KAAKI,gBAAgBiC,QAAQ,KAAK9B,UAC5EP,KAAKiB,0BAA6BZ,EAAOL,KAAKI,gBAAgBiC,QAAQ,KAAK9B,WAK5EP,KAAKsC,iBACNtC,KAAKgB,4BAA8BhB,KAAKsC,gBAEvCtC,KAAKuC,eACNvC,KAAKiB,0BAA4BjB,KAAKuC,cAExCvC,KAAKwC,UAAY,CACfC,OAAO,EACPC,KAAMrC,EAAOL,KAAKgB,6BAA6BW,OAAO3B,KAAKuB,YAC3DoB,MAAOtC,EAAOL,KAAKgB,6BAA6BT,WAGlDP,KAAK4C,QAAU,CACbH,OAAO,EACPC,KAAMrC,EAAOL,KAAKiB,2BAA2BU,OAAO3B,KAAKuB,YACzDoB,MAAOtC,EAAOL,KAAKiB,2BAA2BV,YAIlDT,EAAAsB,UAAAyB,cAAA,SAAcC,GACZ9C,KAAKc,iBAAiBiC,KAAKD,IAI7BhD,EAAAsB,UAAA4B,mBAAA,SAAmBN,GAMjB,GALA1C,KAAKwC,UAAYE,EACjB1C,KAAKkB,eAAgB,EAIjBlB,KAAK0B,YAAc1B,KAAK4B,QAAS,CACnC,IAAIG,EAAU1B,EAAOL,KAAKwC,UAAUE,KAAM1C,KAAKuB,YAAYQ,UACvDC,EAAShC,KAAKU,SAAYqB,EAAU/B,KAAKU,SAC7CV,KAAKiB,0BAA4BZ,EAAUL,KAAK0B,UAAS,IAAI1B,KAAKwC,UAAUE,KAAQ,gBAAgB1C,KAAKuB,YACtGa,IAAIJ,EAAQ,KACZzB,UAGsBF,EAAOL,KAAKiB,2BAA2BU,OAAO3B,KAAKuB,cACnDlB,EAAOA,EAAO,GAAGL,KAAK0B,UAAa,cAAc1B,KAAKuB,YAAcW,MAAM,KAAKE,IAAI,EAAG,MAAMT,OAAO3B,KAAKuB,cAE/HvB,KAAKiB,0BAA4BZ,EAAUL,KAAK0B,UAAS,IAAI1B,KAAKwC,UAAUE,KAAQ,gBAAgB1C,KAAKuB,YAAcW,MAAM,KAAK3B,eAG/H,CACH,IAAM0C,EACNjD,KAAKkD,kBAAkBlD,KAAKwC,UAAUE,KAAKS,OAAQnD,KAAKI,iBACxDJ,KAAKkD,kBAAkBlD,KAAK4C,QAAQF,KAAKS,OAAQnD,KAAKQ,cAEtDR,KAAKoD,gBAAgBH,GACrBjD,KAAK6C,cAAc,CACjBJ,MAAOQ,GAAYjD,KAAKkB,cACxBsB,UAAWxC,KAAKwC,UAAUE,KAC1BE,QAAS5C,KAAK4C,QAAQF,KACtBW,WAAYhD,EAAUL,KAAK0B,UAAS,IAAI1B,KAAKwC,UAAUE,KAAQ,cAAc1C,KAAKuB,YAAchB,UAChG+C,SAAUjD,EAAUL,KAAK4B,QAAO,IAAI5B,KAAK4C,QAAQF,KAAQ,cAAc1C,KAAKuB,YAAchB,YAIhGP,KAAKmB,eAAiBnB,KAAKmB,eAG7BrB,EAAAsB,UAAAmC,iBAAA,SAAiBb,GACf1C,KAAK4C,QAAUF,EAEf,IAAMO,EACJjD,KAAKkD,kBAAkBlD,KAAKwC,UAAUE,KAAKS,OAAQnD,KAAKI,iBAAmBJ,KAAKkD,kBAAkBlD,KAAK4C,QAAQF,KAAKS,OAAQnD,KAAKQ,cAEnIR,KAAKoD,gBAAgBH,GACrBjD,KAAK6C,cAAc,CACjBJ,MAAOQ,GAAYjD,KAAKkB,cACxBsB,UAAWxC,KAAKwC,UAAUE,KAC1BE,QAAS5C,KAAK4C,QAAQF,KACtBW,WAAYhD,EAAUL,KAAK0B,UAAS,IAAI1B,KAAKwC,UAAUE,KAAQ,cAAc1C,KAAKuB,YAAchB,UAChG+C,SAAUjD,EAAUL,KAAK4B,QAAO,IAAI5B,KAAK4C,QAAQF,KAAQ,cAAc1C,KAAKuB,YAAchB,aAI9FT,EAAAsB,UAAA8B,kBAAA,SAAkBR,EAAcc,GAC9B,IAEMC,EAA0B,KAArBzD,KAAKS,YAFH,uDACA,kCAGPiD,EAAarD,EAAUA,EAAOmD,GAAM7B,OAAO,cAAa,IAAIe,EAAQ,gBAAgB1C,KAAKuB,YAW/F,OANKvB,KAAKsC,gBAAkBtC,KAAKuC,cAAkBvC,KAAK0B,YAAc1B,KAAK4B,SAAW5B,KAAK0B,YAAc1B,KAAK6B,WACrGa,EAAKiB,MAAMF,MAEXf,EAAKiB,MAAMF,IAAOC,EAAWE,KAAKvD,IAAU,MAAQ,IAO/DP,EAAAsB,UAAAgC,gBAAA,SAAgBH,GACd,GAAIA,GAAYjD,KAAK0B,YAAc1B,KAAK4B,QAAS,CAC/C,IAAMiC,EAAcxD,EAAOL,KAAKwC,UAAUE,KAAM1C,KAAKuB,YAC/CuC,EAAYzD,EAAOL,KAAK4C,QAAQF,KAAM1C,KAAKuB,YACjDvB,KAAKkB,cAAgB4C,EAAUF,KAAKC,EAAa,MAAQ,EACzD7D,KAAKD,IAAIgE,2CAzMdC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,sBACVC,SAAA,0sCANyBC,EAAAA,yDAUxBC,EAAAA,6BACAA,EAAAA,sBACAA,EAAAA,wBACAA,EAAAA,8BACAA,EAAAA,4BACAA,EAAAA,8BACAA,EAAAA,4BACAA,EAAAA,2BACAA,EAAAA,wBACAA,EAAAA,2BACAA,EAAAA,yBACAA,EAAAA,mBACAA,EAAAA,gCAEAC,EAAAA,2BCbH,SAAAC,YACSA,EAAAC,QAAP,WACE,MAAO,CAAEC,SAAUF,EAAuBG,UAAW,8BAPxDC,EAAAA,SAAQV,KAAA,CAAC,CACRW,aAAc,CAAC9E,GACf+E,QAAS,CAACC,EAAAA,aAAcC,EAAAA,YAAaC,EAAAA,kBACrCC,QAAS,CAACnF","sourcesContent":["import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\",\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent {\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() height: string = \"46px\";\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() startDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() endDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() givenStartTime: number;\n @Input() givenEndTime: number;\n @Input() clockFormat: number = 12;\n @Input() interval: number = 15;\n @Input() showTooltip: boolean = true;\n @Input() direction: TDirection = 'row';\n @Input() gap: string = '1rem';\n\n @Output() timeRangeEmitter = new EventEmitter<ITimeRange>();\n\n startDate!: string;\n endDate!: string;\n currDate!: string;\n timeFormat!: string;\n firstIntervalForStartPicker: number = moment().valueOf();\n firstIntervalForEndPicker: number = moment().valueOf();\n startTime!: ITime;\n endTime!: ITime;\n rangeValidity: boolean = true;\n triggerChange: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n ngOnChanges() {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n this.startDate = moment(this.startDateEpoch).format(\"DD-MM-YYYY\");\n this.endDate = moment(this.endDateEpoch).format(\"DD-MM-YYYY\");\n this.currDate = moment().format(\"DD-MM-YYYY\");\n this.setFirstIntervals();\n }\n\n // calculate the first interval of the picker\n setFirstIntervals(): void {\n const minutes = moment().minutes();\n const offset = this.interval - (minutes % this.interval);\n\n // start date, 22 MAY === current date, 22 MAY\n if( this.startDate === this.currDate ){\n const currentTime = moment().valueOf();\n\n // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY\n if(this.startDate === this.endDate){\n\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment().add(offset, \"m\").add(this.interval, \"m\").valueOf();\n }\n } \n // start date, 22 MAY === current date, 22 MAY !== end date, 30 MAY\n else {\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).valueOf();\n }\n }\n }\n // start date, 30 MAY !== current date, 22 MAY\n else {\n // start date === end Date\n if( this.startDate === this.endDate){\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).add(this.interval, \"m\").valueOf();\n } \n // start date !== end date\n else {\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n }\n\n }\n\n if(this.givenStartTime)\n this.firstIntervalForStartPicker = this.givenStartTime;\n \n if(this.givenEndTime)\n this.firstIntervalForEndPicker = this.givenEndTime;\n \n this.startTime = {\n valid: true,\n time: moment(this.firstIntervalForStartPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForStartPicker).valueOf()\n };\n\n this.endTime = {\n valid: true,\n time: moment(this.firstIntervalForEndPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForEndPicker).valueOf()\n };\n }\n\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n //handlers catch the emitted values and run validation\n startPickerHandler(time: ITime): void {\n this.startTime = time;\n this.rangeValidity = true;\n // if the start time changes and the start date is the same as the end date\n // and the start time >= end time\n // update the first interval of end picker according to the time set in start picker\n if (this.startDate === this.endDate) {\n let minutes = moment(this.startTime.time, this.timeFormat).minutes();\n let offset = this.interval - (minutes % this.interval);\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n .add(offset, \"m\")\n .valueOf();\n\n // if the first interval == 12:00am, set it as 11:59pm\n const intervalAsString = moment(this.firstIntervalForEndPicker).format(this.timeFormat);\n const endOfDayAsString = moment(moment(`${this.startDate}`, `DD-MM-YYYY ${this.timeFormat}`).endOf(\"d\").add(1, \"m\")).format(this.timeFormat);\n if (intervalAsString === endOfDayAsString) {\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`).endOf(\"d\").valueOf();\n }\n\n } else {\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) &&\n this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n this.triggerChange = !this.triggerChange;\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime = time;\n\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) && this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = moment(`${moment(date).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // then we don't check its validity against the current time\n if ((this.givenStartTime && this.givenEndTime) || (this.startDate !== this.endDate && this.startDate !== this.currDate)) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true : false;\n }\n\n return flag;\n }\n\n // validates end picker's input according to the start picker's input\n rangeValidation(validity: boolean) {\n if (validity && this.startDate === this.endDate) {\n const startMoment = moment(this.startTime.time, this.timeFormat);\n const endMoment = moment(this.endTime.time, this.timeFormat);\n this.rangeValidity = endMoment.diff(startMoment, \"m\") >= 1 ? true : false;\n this.cdr.detectChanges();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}"]}
@@ -30,7 +30,7 @@
30
30
  ToolTipComponent.decorators = [
31
31
  { type: core.Component, args: [{
32
32
  selector: "mis-tooltip",
33
- template: "<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0\" #container>\n <div id=\"tooltip\">\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n",
33
+ template: "<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0 || tooltipTemplate\" #container>\n <div id=\"tooltip\">\n <div *ngIf=\"tooltipTemplate; else tooltipText\">\n <ng-container *ngTemplateOutlet=\"tooltipTemplate\"></ng-container>\n </div>\n\n <ng-template #tooltipText>\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n </ng-template>\n\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n",
34
34
  styles: ["#tooltip-container{position:absolute;z-index:1}#tooltip{position:relative;display:block;padding:8px 12px;border-radius:8px;color:#fff;background:#181f33;font-family:Lato,sans-serif;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px}#tooltip-text{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#arrow{position:absolute;height:12px;width:12px;background:#181f33;z-index:1}.arrow-top{bottom:-6px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%) rotate(-45deg);-webkit-transform:translateX(-50%) rotate(-45deg)}.arrow-bottom{top:-6px}.arrow-left{right:-6px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%) rotate(-45deg);-webkit-transform:translateY(-50%) rotate(-45deg)}.arrow-right{left:-6px}"]
35
35
  },] }
36
36
  ];
@@ -82,6 +82,13 @@
82
82
  enumerable: false,
83
83
  configurable: true
84
84
  });
85
+ Object.defineProperty(ToolTipDirective.prototype, "tooltipTemplate", {
86
+ set: function (value) {
87
+ this.templateRef = value;
88
+ },
89
+ enumerable: false,
90
+ configurable: true
91
+ });
85
92
  ToolTipDirective.prototype.onMouseEnter = function () {
86
93
  if (this.showOnHover)
87
94
  this.displayToolTip();
@@ -117,6 +124,7 @@
117
124
  this.overlayRef = this.overlay.create(config);
118
125
  var tempRef = new portal.ComponentPortal(ToolTipComponent, this.viewContainerRef);
119
126
  var tooltipRef = this.overlayRef.attach(tempRef);
127
+ tooltipRef.instance.tooltipTemplate = this.templateRef;
120
128
  tooltipRef.instance.toolTipText = this.toolTipText;
121
129
  tooltipRef.instance.toolTipPosition = this.toolTipPosition;
122
130
  tooltipRef.instance.toolTipTextAlignment = this.toolTipTextAlignment;
@@ -170,6 +178,7 @@
170
178
  text: [{ type: core.Input }],
171
179
  position: [{ type: core.Input }],
172
180
  alignText: [{ type: core.Input }],
181
+ tooltipTemplate: [{ type: core.Input }],
173
182
  onMouseEnter: [{ type: core.HostListener, args: ["mouseenter",] }],
174
183
  onMouseLeave: [{ type: core.HostListener, args: ["mouseleave",] }]
175
184
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-tooltip.umd.js","sources":["../../../projects/mis-components/tooltip/tooltip-container/tooltip.component.ts","../../../projects/mis-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/tooltip/tooltip.module.ts","../../../projects/mis-components/tooltip/mis-crystal-design-system-tooltip.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild } from \"@angular/core\";\nimport { ITooltipPositions } from \"../models/tooltip.model\";\n\n@Component({\n selector: \"mis-tooltip\",\n templateUrl: \"./tooltip.component.html\",\n styleUrls: [\"./tooltip.component.scss\"]\n})\nexport class ToolTipComponent implements OnInit, AfterViewInit {\n public toolTipText: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n public toolTipTextAlignment: string = \"\";\n\n @ViewChild(\"container\") container: ElementRef;\n\n constructor() {}\n ngOnInit() {}\n ngAfterViewInit() {\n if (!this.container?.nativeElement) return;\n if (this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = eleWidth.width / -2 + \"px\";\n return;\n }\n if (this.toolTipPosition === \"left\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = -eleWidth.width + \"px\";\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnInit, ViewContainerRef } from \"@angular/core\";\nimport { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { take } from \"rxjs/operators\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { ITooltipPositions } from \"./models/tooltip.model\";\n\n@Directive({\n selector: \"[misToolTip]\"\n})\nexport class ToolTipDirective implements OnInit, AfterViewInit {\n public isToolTipDisplayed: boolean = false;\n public toolTipText: string = \"\";\n public toolTipTextAlignment: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n private overlayRef: OverlayRef;\n\n @Input() showOnHover: boolean = true;\n @Input() set showToolTip(value: boolean) {\n this.isToolTipDisplayed = value;\n if (value) this.displayToolTip();\n else this.hideToolTip();\n }\n @Input() set text(value: string) {\n this.toolTipText = value;\n }\n @Input() set position(value: ITooltipPositions) {\n this.toolTipPosition = value;\n }\n @Input() set alignText(value: string) {\n this.toolTipTextAlignment = value;\n }\n\n @HostListener(\"mouseenter\") onMouseEnter() {\n if (this.showOnHover) this.displayToolTip();\n }\n @HostListener(\"mouseleave\") onMouseLeave() {\n if (this.showOnHover) this.hideToolTip();\n }\n\n constructor(private element: ElementRef, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n ngAfterViewInit() {\n if (this.isToolTipDisplayed) this.displayToolTip();\n else this.hideToolTip();\n }\n\n displayToolTip() {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: \"center\",\n positionY: this.toolTipPosition === \"top\" ? \"top\" : \"center\",\n offsetX: this.positionTooltip(\"OFFSET_X\"),\n offsetY: this.positionTooltip(\"OFFSET_Y\")\n },\n false\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);\n const tooltipRef = this.overlayRef.attach(tempRef);\n tooltipRef.instance.toolTipText = this.toolTipText;\n tooltipRef.instance.toolTipPosition = this.toolTipPosition;\n tooltipRef.instance.toolTipTextAlignment = this.toolTipTextAlignment;\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.hideToolTip();\n });\n }\n\n positionTooltip(type: \"OFFSET_X\" | \"OFFSET_Y\") {\n if (type === \"OFFSET_X\") {\n return this.toolTipPosition === \"right\"\n ? this.element.nativeElement.offsetWidth / 2 + 8\n : this.toolTipPosition === \"left\"\n ? (this.element.nativeElement.offsetWidth / 2 + 8) * -1\n : this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\"\n ? 0\n : 8;\n }\n if (type !== \"OFFSET_Y\") return;\n return this.toolTipPosition === \"right\" || this.toolTipPosition === \"left\"\n ? -18\n : this.toolTipPosition === \"top\"\n ? -44\n : this.toolTipPosition === \"bottom\"\n ? this.element.nativeElement.offsetHeight / 2 + 8\n : 8;\n }\n\n hideToolTip() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ToolTipDirective } from \"./tooltip.directive\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\n\n@NgModule({\n declarations: [ToolTipDirective, ToolTipComponent],\n imports: [CommonModule, OverlayModule],\n exports: [ToolTipDirective, ToolTipComponent],\n entryComponents: [ToolTipComponent]\n})\nexport class ToolTipModule {\n static forRoot(): ModuleWithProviders<ToolTipModule> {\n return { ngModule: ToolTipModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Component","ViewChild","genPositionPairs","OverlayConfig","ComponentPortal","take","Directive","ElementRef","Overlay","ViewContainerRef","Input","HostListener","NgModule","CommonModule","OverlayModule"],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-tooltip.umd.js","sources":["../../../projects/mis-components/tooltip/tooltip-container/tooltip.component.ts","../../../projects/mis-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/tooltip/tooltip.module.ts","../../../projects/mis-components/tooltip/mis-crystal-design-system-tooltip.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, Inject, OnInit, TemplateRef, ViewChild } from \"@angular/core\";\nimport { ITooltipPositions } from \"../models/tooltip.model\";\n\n@Component({\n selector: \"mis-tooltip\",\n templateUrl: \"./tooltip.component.html\",\n styleUrls: [\"./tooltip.component.scss\"]\n})\nexport class ToolTipComponent implements OnInit, AfterViewInit {\n public toolTipText: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n public toolTipTextAlignment: string = \"\";\n tooltipTemplate: TemplateRef<any>\n\n @ViewChild(\"container\") container: ElementRef;\n\n constructor() {}\n ngOnInit() {}\n ngAfterViewInit() {\n if (!this.container?.nativeElement) return;\n if (this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = eleWidth.width / -2 + \"px\";\n return;\n }\n if (this.toolTipPosition === \"left\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = -eleWidth.width + \"px\";\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnInit, TemplateRef, ViewContainerRef } from \"@angular/core\";\nimport { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { take } from \"rxjs/operators\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { ITooltipPositions } from \"./models/tooltip.model\";\n\n@Directive({\n selector: \"[misToolTip]\"\n})\nexport class ToolTipDirective implements OnInit, AfterViewInit {\n public isToolTipDisplayed: boolean = false;\n public toolTipText: string = \"\";\n public toolTipTextAlignment: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n private overlayRef: OverlayRef;\n private templateRef: TemplateRef<any>;\n\n @Input() showOnHover: boolean = true;\n @Input() set showToolTip(value: boolean) {\n this.isToolTipDisplayed = value;\n if (value) this.displayToolTip();\n else this.hideToolTip();\n }\n @Input() set text(value: string) {\n this.toolTipText = value;\n }\n @Input() set position(value: ITooltipPositions) {\n this.toolTipPosition = value;\n }\n @Input() set alignText(value: string) {\n this.toolTipTextAlignment = value;\n }\n @Input() set tooltipTemplate(value: TemplateRef<any>){\n this.templateRef = value;\n }\n\n @HostListener(\"mouseenter\") onMouseEnter() {\n if (this.showOnHover) this.displayToolTip();\n }\n @HostListener(\"mouseleave\") onMouseLeave() {\n if (this.showOnHover) this.hideToolTip();\n }\n\n constructor(private element: ElementRef, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n ngAfterViewInit() {\n if (this.isToolTipDisplayed) this.displayToolTip();\n else this.hideToolTip();\n }\n\n displayToolTip() {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: \"center\",\n positionY: this.toolTipPosition === \"top\" ? \"top\" : \"center\",\n offsetX: this.positionTooltip(\"OFFSET_X\"),\n offsetY: this.positionTooltip(\"OFFSET_Y\")\n },\n false\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);\n const tooltipRef = this.overlayRef.attach(tempRef);\n tooltipRef.instance.tooltipTemplate = this.templateRef;\n tooltipRef.instance.toolTipText = this.toolTipText;\n tooltipRef.instance.toolTipPosition = this.toolTipPosition;\n tooltipRef.instance.toolTipTextAlignment = this.toolTipTextAlignment;\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.hideToolTip();\n });\n }\n\n positionTooltip(type: \"OFFSET_X\" | \"OFFSET_Y\") {\n if (type === \"OFFSET_X\") {\n return this.toolTipPosition === \"right\"\n ? this.element.nativeElement.offsetWidth / 2 + 8\n : this.toolTipPosition === \"left\"\n ? (this.element.nativeElement.offsetWidth / 2 + 8) * -1\n : this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\"\n ? 0\n : 8;\n }\n if (type !== \"OFFSET_Y\") return;\n return this.toolTipPosition === \"right\" || this.toolTipPosition === \"left\"\n ? -18\n : this.toolTipPosition === \"top\"\n ? -44\n : this.toolTipPosition === \"bottom\"\n ? this.element.nativeElement.offsetHeight / 2 + 8\n : 8;\n }\n\n hideToolTip() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ToolTipDirective } from \"./tooltip.directive\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\n\n@NgModule({\n declarations: [ToolTipDirective, ToolTipComponent],\n imports: [CommonModule, OverlayModule],\n exports: [ToolTipDirective, ToolTipComponent],\n entryComponents: [ToolTipComponent]\n})\nexport class ToolTipModule {\n static forRoot(): ModuleWithProviders<ToolTipModule> {\n return { ngModule: ToolTipModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Component","ViewChild","genPositionPairs","OverlayConfig","ComponentPortal","take","Directive","ElementRef","Overlay","ViewContainerRef","Input","HostListener","NgModule","CommonModule","OverlayModule"],"mappings":";;;;;;;QAgBE;YAPO,gBAAW,GAAW,EAAE,CAAC;YACzB,oBAAe,GAAsB,QAAQ,CAAC;YAC9C,yBAAoB,GAAW,EAAE,CAAC;SAKzB;QAChB,mCAAQ,GAAR,eAAa;QACb,0CAAe,GAAf;;YACE,IAAI,QAAC,IAAI,CAAC,SAAS,0CAAE,aAAa,CAAA;gBAAE,OAAO;YAC3C,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;gBACvE,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBACtE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;gBACrE,OAAO;aACR;YACD,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,EAAE;gBACnC,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBACtE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;aAClE;SACF;;;;gBA1BFA,cAAS,SAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,wxBAAuC;;iBAExC;;;;4BAOEC,cAAS,SAAC,WAAW;;;;QC+BtB,0BAAoB,OAAmB,EAAU,OAAgB,EAAU,gBAAkC;YAAzF,YAAO,GAAP,OAAO,CAAY;YAAU,YAAO,GAAP,OAAO,CAAS;YAAU,qBAAgB,GAAhB,gBAAgB,CAAkB;YAjCtG,uBAAkB,GAAY,KAAK,CAAC;YACpC,gBAAW,GAAW,EAAE,CAAC;YACzB,yBAAoB,GAAW,EAAE,CAAC;YAClC,oBAAe,GAAsB,QAAQ,CAAC;YAI5C,gBAAW,GAAY,IAAI,CAAC;SA0B4E;QAzBjH,sBAAa,yCAAW;iBAAxB,UAAyB,KAAc;gBACrC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAChC,IAAI,KAAK;oBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;;oBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;aACzB;;;WAAA;QACD,sBAAa,kCAAI;iBAAjB,UAAkB,KAAa;gBAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC1B;;;WAAA;QACD,sBAAa,sCAAQ;iBAArB,UAAsB,KAAwB;gBAC5C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;aAC9B;;;WAAA;QACD,sBAAa,uCAAS;iBAAtB,UAAuB,KAAa;gBAClC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;aACnC;;;WAAA;QACD,sBAAa,6CAAe;iBAA5B,UAA6B,KAAuB;gBAClD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC1B;;;WAAA;QAE2B,uCAAY,GAAZ;YAC1B,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;SAC7C;QAC2B,uCAAY,GAAZ;YAC1B,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,WAAW,EAAE,CAAC;SAC1C;QAID,mCAAQ,GAAR,eAAa;QACb,0CAAe,GAAf;YACE,IAAI,IAAI,CAAC,kBAAkB;gBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;;gBAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;SACzB;QAED,yCAAc,GAAd;YAAA,iBAkCC;YAjCC,IAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO;iBAClC,QAAQ,EAAE;iBACV,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;iBACjC,aAAa,CACZC,sBAAgB,CACd;gBACE,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,IAAI,CAAC,eAAe,KAAK,KAAK,GAAG,KAAK,GAAG,QAAQ;gBAC5D,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;gBACzC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;aAC1C,EACD,KAAK,CACN,CACF;iBACA,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClB,IAAM,MAAM,GAAG,IAAIC,qBAAa,CAAC;gBAC/B,WAAW,EAAE,KAAK;gBAClB,gBAAgB,kBAAA;gBAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;aAC3D,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAM,OAAO,GAAG,IAAIC,sBAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7E,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACnD,UAAU,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC;YACvD,UAAU,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACnD,UAAU,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC3D,UAAU,CAAC,QAAQ,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACrE,IAAI,CAAC,UAAU;iBACZ,aAAa,EAAE;iBACf,IAAI,CAACC,cAAI,CAAC,CAAC,CAAC,CAAC;iBACb,SAAS,CAAC;gBACT,KAAI,CAAC,WAAW,EAAE,CAAC;aACpB,CAAC,CAAC;SACN;QAED,0CAAe,GAAf,UAAgB,IAA6B;YAC3C,IAAI,IAAI,KAAK,UAAU,EAAE;gBACvB,OAAO,IAAI,CAAC,eAAe,KAAK,OAAO;sBACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC;sBAC9C,IAAI,CAAC,eAAe,KAAK,MAAM;0BAC/B,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;0BACrD,IAAI,CAAC,eAAe,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ;8BACnE,CAAC;8BACD,CAAC,CAAC;aACP;YACD,IAAI,IAAI,KAAK,UAAU;gBAAE,OAAO;YAChC,OAAO,IAAI,CAAC,eAAe,KAAK,OAAO,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM;kBACtE,CAAC,EAAE;kBACH,IAAI,CAAC,eAAe,KAAK,KAAK;sBAC9B,CAAC,EAAE;sBACH,IAAI,CAAC,eAAe,KAAK,QAAQ;0BACjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC;0BAC/C,CAAC,CAAC;SACP;QAED,sCAAW,GAAX;;YACE,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM,GAAG;YAC1B,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO,GAAG;SAC5B;;;;gBAxGFC,cAAS,SAAC;oBACT,QAAQ,EAAE,cAAc;iBACzB;;;gBAVkCC,eAAU;gBACpCC,eAAO;gBADyEC,qBAAgB;;;8BAmBtGC,UAAK;8BACLA,UAAK;uBAKLA,UAAK;2BAGLA,UAAK;4BAGLA,UAAK;kCAGLA,UAAK;+BAILC,iBAAY,SAAC,YAAY;+BAGzBA,iBAAY,SAAC,YAAY;;;;QC7B5B;;QACS,qBAAO,GAAd;YACE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;SACnD;;;;gBATFC,aAAQ,SAAC;oBACR,YAAY,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;oBAClD,OAAO,EAAE,CAACC,mBAAY,EAAEC,qBAAa,CAAC;oBACtC,OAAO,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;oBAC7C,eAAe,EAAE,CAAC,gBAAgB,CAAC;iBACpC;;;ICXD;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- !function(t,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@angular/core"),require("@angular/cdk/overlay"),require("rxjs/operators"),require("@angular/cdk/portal"),require("mis-crystal-design-system/utils"),require("@angular/common")):"function"==typeof define&&define.amd?define("mis-crystal-design-system/tooltip",["exports","@angular/core","@angular/cdk/overlay","rxjs/operators","@angular/cdk/portal","mis-crystal-design-system/utils","@angular/common"],o):o(((t="undefined"!=typeof globalThis?globalThis:t||self)["mis-crystal-design-system"]=t["mis-crystal-design-system"]||{},t["mis-crystal-design-system"].tooltip={}),t.ng.core,t.ng.cdk.overlay,t.rxjs.operators,t.ng.cdk.portal,t["mis-crystal-design-system"].utils,t.ng.common)}(this,(function(t,o,e,i,n,r,s){"use strict";var l=function(){function t(){this.toolTipText="",this.toolTipPosition="bottom",this.toolTipTextAlignment=""}return t.prototype.ngOnInit=function(){},t.prototype.ngAfterViewInit=function(){var t;if(null===(t=this.container)||void 0===t?void 0:t.nativeElement)if("top"!==this.toolTipPosition&&"bottom"!==this.toolTipPosition){if("left"===this.toolTipPosition){o=this.container.nativeElement.getBoundingClientRect();this.container.nativeElement.style.left=-o.width+"px"}}else{var o=this.container.nativeElement.getBoundingClientRect();this.container.nativeElement.style.left=o.width/-2+"px"}},t}();l.decorators=[{type:o.Component,args:[{selector:"mis-tooltip",template:"<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0\" #container>\n <div id=\"tooltip\">\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n",styles:["#tooltip-container{position:absolute;z-index:1}#tooltip{position:relative;display:block;padding:8px 12px;border-radius:8px;color:#fff;background:#181f33;font-family:Lato,sans-serif;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px}#tooltip-text{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#arrow{position:absolute;height:12px;width:12px;background:#181f33;z-index:1}.arrow-top{bottom:-6px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%) rotate(-45deg);-webkit-transform:translateX(-50%) rotate(-45deg)}.arrow-bottom{top:-6px}.arrow-left{right:-6px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%) rotate(-45deg);-webkit-transform:translateY(-50%) rotate(-45deg)}.arrow-right{left:-6px}"]}]}],l.ctorParameters=function(){return[]},l.propDecorators={container:[{type:o.ViewChild,args:["container"]}]};var p=function(){function t(t,o,e){this.element=t,this.overlay=o,this.viewContainerRef=e,this.isToolTipDisplayed=!1,this.toolTipText="",this.toolTipTextAlignment="",this.toolTipPosition="bottom",this.showOnHover=!0}return Object.defineProperty(t.prototype,"showToolTip",{set:function(t){this.isToolTipDisplayed=t,t?this.displayToolTip():this.hideToolTip()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"text",{set:function(t){this.toolTipText=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"position",{set:function(t){this.toolTipPosition=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"alignText",{set:function(t){this.toolTipTextAlignment=t},enumerable:!1,configurable:!0}),t.prototype.onMouseEnter=function(){this.showOnHover&&this.displayToolTip()},t.prototype.onMouseLeave=function(){this.showOnHover&&this.hideToolTip()},t.prototype.ngOnInit=function(){},t.prototype.ngAfterViewInit=function(){this.isToolTipDisplayed?this.displayToolTip():this.hideToolTip()},t.prototype.displayToolTip=function(){var t=this,o=this.overlay.position().flexibleConnectedTo(this.element).withPositions(r.genPositionPairs({positionX:"center",positionY:"top"===this.toolTipPosition?"top":"center",offsetX:this.positionTooltip("OFFSET_X"),offsetY:this.positionTooltip("OFFSET_Y")},!1)).withPush(!0),s=new e.OverlayConfig({hasBackdrop:!1,positionStrategy:o,scrollStrategy:this.overlay.scrollStrategies.reposition()});this.overlayRef=this.overlay.create(s);var p=new n.ComponentPortal(l,this.viewContainerRef),a=this.overlayRef.attach(p);a.instance.toolTipText=this.toolTipText,a.instance.toolTipPosition=this.toolTipPosition,a.instance.toolTipTextAlignment=this.toolTipTextAlignment,this.overlayRef.backdropClick().pipe(i.take(1)).subscribe((function(){t.hideToolTip()}))},t.prototype.positionTooltip=function(t){return"OFFSET_X"===t?"right"===this.toolTipPosition?this.element.nativeElement.offsetWidth/2+8:"left"===this.toolTipPosition?-1*(this.element.nativeElement.offsetWidth/2+8):"top"===this.toolTipPosition||"bottom"===this.toolTipPosition?0:8:"OFFSET_Y"===t?"right"===this.toolTipPosition||"left"===this.toolTipPosition?-18:"top"===this.toolTipPosition?-44:"bottom"===this.toolTipPosition?this.element.nativeElement.offsetHeight/2+8:8:void 0},t.prototype.hideToolTip=function(){var t,o;null===(t=this.overlayRef)||void 0===t||t.detach(),null===(o=this.overlayRef)||void 0===o||o.dispose()},t}();p.decorators=[{type:o.Directive,args:[{selector:"[misToolTip]"}]}],p.ctorParameters=function(){return[{type:o.ElementRef},{type:e.Overlay},{type:o.ViewContainerRef}]},p.propDecorators={showOnHover:[{type:o.Input}],showToolTip:[{type:o.Input}],text:[{type:o.Input}],position:[{type:o.Input}],alignText:[{type:o.Input}],onMouseEnter:[{type:o.HostListener,args:["mouseenter"]}],onMouseLeave:[{type:o.HostListener,args:["mouseleave"]}]};var a=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t}();a.decorators=[{type:o.NgModule,args:[{declarations:[p,l],imports:[s.CommonModule,e.OverlayModule],exports:[p,l],entryComponents:[l]}]}],t.ToolTipComponent=l,t.ToolTipDirective=p,t.ToolTipModule=a,Object.defineProperty(t,"__esModule",{value:!0})}));
1
+ !function(t,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@angular/core"),require("@angular/cdk/overlay"),require("rxjs/operators"),require("@angular/cdk/portal"),require("mis-crystal-design-system/utils"),require("@angular/common")):"function"==typeof define&&define.amd?define("mis-crystal-design-system/tooltip",["exports","@angular/core","@angular/cdk/overlay","rxjs/operators","@angular/cdk/portal","mis-crystal-design-system/utils","@angular/common"],o):o(((t="undefined"!=typeof globalThis?globalThis:t||self)["mis-crystal-design-system"]=t["mis-crystal-design-system"]||{},t["mis-crystal-design-system"].tooltip={}),t.ng.core,t.ng.cdk.overlay,t.rxjs.operators,t.ng.cdk.portal,t["mis-crystal-design-system"].utils,t.ng.common)}(this,(function(t,o,e,i,n,r,s){"use strict";var l=function(){function t(){this.toolTipText="",this.toolTipPosition="bottom",this.toolTipTextAlignment=""}return t.prototype.ngOnInit=function(){},t.prototype.ngAfterViewInit=function(){var t;if(null===(t=this.container)||void 0===t?void 0:t.nativeElement)if("top"!==this.toolTipPosition&&"bottom"!==this.toolTipPosition){if("left"===this.toolTipPosition){o=this.container.nativeElement.getBoundingClientRect();this.container.nativeElement.style.left=-o.width+"px"}}else{var o=this.container.nativeElement.getBoundingClientRect();this.container.nativeElement.style.left=o.width/-2+"px"}},t}();l.decorators=[{type:o.Component,args:[{selector:"mis-tooltip",template:"<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0 || tooltipTemplate\" #container>\n <div id=\"tooltip\">\n <div *ngIf=\"tooltipTemplate; else tooltipText\">\n <ng-container *ngTemplateOutlet=\"tooltipTemplate\"></ng-container>\n </div>\n\n <ng-template #tooltipText>\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n </ng-template>\n\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n",styles:["#tooltip-container{position:absolute;z-index:1}#tooltip{position:relative;display:block;padding:8px 12px;border-radius:8px;color:#fff;background:#181f33;font-family:Lato,sans-serif;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px}#tooltip-text{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#arrow{position:absolute;height:12px;width:12px;background:#181f33;z-index:1}.arrow-top{bottom:-6px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%) rotate(-45deg);-webkit-transform:translateX(-50%) rotate(-45deg)}.arrow-bottom{top:-6px}.arrow-left{right:-6px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%) rotate(-45deg);-webkit-transform:translateY(-50%) rotate(-45deg)}.arrow-right{left:-6px}"]}]}],l.ctorParameters=function(){return[]},l.propDecorators={container:[{type:o.ViewChild,args:["container"]}]};var p=function(){function t(t,o,e){this.element=t,this.overlay=o,this.viewContainerRef=e,this.isToolTipDisplayed=!1,this.toolTipText="",this.toolTipTextAlignment="",this.toolTipPosition="bottom",this.showOnHover=!0}return Object.defineProperty(t.prototype,"showToolTip",{set:function(t){this.isToolTipDisplayed=t,t?this.displayToolTip():this.hideToolTip()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"text",{set:function(t){this.toolTipText=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"position",{set:function(t){this.toolTipPosition=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"alignText",{set:function(t){this.toolTipTextAlignment=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tooltipTemplate",{set:function(t){this.templateRef=t},enumerable:!1,configurable:!0}),t.prototype.onMouseEnter=function(){this.showOnHover&&this.displayToolTip()},t.prototype.onMouseLeave=function(){this.showOnHover&&this.hideToolTip()},t.prototype.ngOnInit=function(){},t.prototype.ngAfterViewInit=function(){this.isToolTipDisplayed?this.displayToolTip():this.hideToolTip()},t.prototype.displayToolTip=function(){var t=this,o=this.overlay.position().flexibleConnectedTo(this.element).withPositions(r.genPositionPairs({positionX:"center",positionY:"top"===this.toolTipPosition?"top":"center",offsetX:this.positionTooltip("OFFSET_X"),offsetY:this.positionTooltip("OFFSET_Y")},!1)).withPush(!0),s=new e.OverlayConfig({hasBackdrop:!1,positionStrategy:o,scrollStrategy:this.overlay.scrollStrategies.reposition()});this.overlayRef=this.overlay.create(s);var p=new n.ComponentPortal(l,this.viewContainerRef),a=this.overlayRef.attach(p);a.instance.tooltipTemplate=this.templateRef,a.instance.toolTipText=this.toolTipText,a.instance.toolTipPosition=this.toolTipPosition,a.instance.toolTipTextAlignment=this.toolTipTextAlignment,this.overlayRef.backdropClick().pipe(i.take(1)).subscribe((function(){t.hideToolTip()}))},t.prototype.positionTooltip=function(t){return"OFFSET_X"===t?"right"===this.toolTipPosition?this.element.nativeElement.offsetWidth/2+8:"left"===this.toolTipPosition?-1*(this.element.nativeElement.offsetWidth/2+8):"top"===this.toolTipPosition||"bottom"===this.toolTipPosition?0:8:"OFFSET_Y"===t?"right"===this.toolTipPosition||"left"===this.toolTipPosition?-18:"top"===this.toolTipPosition?-44:"bottom"===this.toolTipPosition?this.element.nativeElement.offsetHeight/2+8:8:void 0},t.prototype.hideToolTip=function(){var t,o;null===(t=this.overlayRef)||void 0===t||t.detach(),null===(o=this.overlayRef)||void 0===o||o.dispose()},t}();p.decorators=[{type:o.Directive,args:[{selector:"[misToolTip]"}]}],p.ctorParameters=function(){return[{type:o.ElementRef},{type:e.Overlay},{type:o.ViewContainerRef}]},p.propDecorators={showOnHover:[{type:o.Input}],showToolTip:[{type:o.Input}],text:[{type:o.Input}],position:[{type:o.Input}],alignText:[{type:o.Input}],tooltipTemplate:[{type:o.Input}],onMouseEnter:[{type:o.HostListener,args:["mouseenter"]}],onMouseLeave:[{type:o.HostListener,args:["mouseleave"]}]};var a=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t}();a.decorators=[{type:o.NgModule,args:[{declarations:[p,l],imports:[s.CommonModule,e.OverlayModule],exports:[p,l],entryComponents:[l]}]}],t.ToolTipComponent=l,t.ToolTipDirective=p,t.ToolTipModule=a,Object.defineProperty(t,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=mis-crystal-design-system-tooltip.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../projects/mis-components/tooltip/tooltip-container/tooltip.component.ts","../../../projects/mis-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/tooltip/tooltip.module.ts"],"names":["ToolTipComponent","this","toolTipText","toolTipPosition","toolTipTextAlignment","prototype","ngOnInit","ngAfterViewInit","_a","container","nativeElement","eleWidth","getBoundingClientRect","style","left","width","Component","args","selector","template","ViewChild","ToolTipDirective","element","overlay","viewContainerRef","isToolTipDisplayed","showOnHover","Object","defineProperty","value","displayToolTip","hideToolTip","onMouseEnter","onMouseLeave","_this","positionStrategy","position","flexibleConnectedTo","withPositions","genPositionPairs","positionX","positionY","offsetX","positionTooltip","offsetY","withPush","config","OverlayConfig","hasBackdrop","scrollStrategy","scrollStrategies","reposition","overlayRef","create","tempRef","ComponentPortal","tooltipRef","attach","instance","backdropClick","pipe","take","subscribe","type","offsetWidth","offsetHeight","detach","_b","dispose","Directive","ElementRef","Overlay","ViewContainerRef","Input","HostListener","ToolTipModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","OverlayModule","exports","entryComponents"],"mappings":"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","sourcesContent":["import { AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild } from \"@angular/core\";\nimport { ITooltipPositions } from \"../models/tooltip.model\";\n\n@Component({\n selector: \"mis-tooltip\",\n templateUrl: \"./tooltip.component.html\",\n styleUrls: [\"./tooltip.component.scss\"]\n})\nexport class ToolTipComponent implements OnInit, AfterViewInit {\n public toolTipText: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n public toolTipTextAlignment: string = \"\";\n\n @ViewChild(\"container\") container: ElementRef;\n\n constructor() {}\n ngOnInit() {}\n ngAfterViewInit() {\n if (!this.container?.nativeElement) return;\n if (this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = eleWidth.width / -2 + \"px\";\n return;\n }\n if (this.toolTipPosition === \"left\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = -eleWidth.width + \"px\";\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnInit, ViewContainerRef } from \"@angular/core\";\nimport { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { take } from \"rxjs/operators\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { ITooltipPositions } from \"./models/tooltip.model\";\n\n@Directive({\n selector: \"[misToolTip]\"\n})\nexport class ToolTipDirective implements OnInit, AfterViewInit {\n public isToolTipDisplayed: boolean = false;\n public toolTipText: string = \"\";\n public toolTipTextAlignment: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n private overlayRef: OverlayRef;\n\n @Input() showOnHover: boolean = true;\n @Input() set showToolTip(value: boolean) {\n this.isToolTipDisplayed = value;\n if (value) this.displayToolTip();\n else this.hideToolTip();\n }\n @Input() set text(value: string) {\n this.toolTipText = value;\n }\n @Input() set position(value: ITooltipPositions) {\n this.toolTipPosition = value;\n }\n @Input() set alignText(value: string) {\n this.toolTipTextAlignment = value;\n }\n\n @HostListener(\"mouseenter\") onMouseEnter() {\n if (this.showOnHover) this.displayToolTip();\n }\n @HostListener(\"mouseleave\") onMouseLeave() {\n if (this.showOnHover) this.hideToolTip();\n }\n\n constructor(private element: ElementRef, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n ngAfterViewInit() {\n if (this.isToolTipDisplayed) this.displayToolTip();\n else this.hideToolTip();\n }\n\n displayToolTip() {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: \"center\",\n positionY: this.toolTipPosition === \"top\" ? \"top\" : \"center\",\n offsetX: this.positionTooltip(\"OFFSET_X\"),\n offsetY: this.positionTooltip(\"OFFSET_Y\")\n },\n false\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);\n const tooltipRef = this.overlayRef.attach(tempRef);\n tooltipRef.instance.toolTipText = this.toolTipText;\n tooltipRef.instance.toolTipPosition = this.toolTipPosition;\n tooltipRef.instance.toolTipTextAlignment = this.toolTipTextAlignment;\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.hideToolTip();\n });\n }\n\n positionTooltip(type: \"OFFSET_X\" | \"OFFSET_Y\") {\n if (type === \"OFFSET_X\") {\n return this.toolTipPosition === \"right\"\n ? this.element.nativeElement.offsetWidth / 2 + 8\n : this.toolTipPosition === \"left\"\n ? (this.element.nativeElement.offsetWidth / 2 + 8) * -1\n : this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\"\n ? 0\n : 8;\n }\n if (type !== \"OFFSET_Y\") return;\n return this.toolTipPosition === \"right\" || this.toolTipPosition === \"left\"\n ? -18\n : this.toolTipPosition === \"top\"\n ? -44\n : this.toolTipPosition === \"bottom\"\n ? this.element.nativeElement.offsetHeight / 2 + 8\n : 8;\n }\n\n hideToolTip() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ToolTipDirective } from \"./tooltip.directive\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\n\n@NgModule({\n declarations: [ToolTipDirective, ToolTipComponent],\n imports: [CommonModule, OverlayModule],\n exports: [ToolTipDirective, ToolTipComponent],\n entryComponents: [ToolTipComponent]\n})\nexport class ToolTipModule {\n static forRoot(): ModuleWithProviders<ToolTipModule> {\n return { ngModule: ToolTipModule, providers: [] };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../projects/mis-components/tooltip/tooltip-container/tooltip.component.ts","../../../projects/mis-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/tooltip/tooltip.module.ts"],"names":["ToolTipComponent","this","toolTipText","toolTipPosition","toolTipTextAlignment","prototype","ngOnInit","ngAfterViewInit","_a","container","nativeElement","eleWidth","getBoundingClientRect","style","left","width","Component","args","selector","template","ViewChild","ToolTipDirective","element","overlay","viewContainerRef","isToolTipDisplayed","showOnHover","Object","defineProperty","value","displayToolTip","hideToolTip","templateRef","onMouseEnter","onMouseLeave","_this","positionStrategy","position","flexibleConnectedTo","withPositions","genPositionPairs","positionX","positionY","offsetX","positionTooltip","offsetY","withPush","config","OverlayConfig","hasBackdrop","scrollStrategy","scrollStrategies","reposition","overlayRef","create","tempRef","ComponentPortal","tooltipRef","attach","instance","tooltipTemplate","backdropClick","pipe","take","subscribe","type","offsetWidth","offsetHeight","detach","_b","dispose","Directive","ElementRef","Overlay","ViewContainerRef","Input","HostListener","ToolTipModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","OverlayModule","exports","entryComponents"],"mappings":"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","sourcesContent":["import { AfterViewInit, Component, ElementRef, Inject, OnInit, TemplateRef, ViewChild } from \"@angular/core\";\nimport { ITooltipPositions } from \"../models/tooltip.model\";\n\n@Component({\n selector: \"mis-tooltip\",\n templateUrl: \"./tooltip.component.html\",\n styleUrls: [\"./tooltip.component.scss\"]\n})\nexport class ToolTipComponent implements OnInit, AfterViewInit {\n public toolTipText: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n public toolTipTextAlignment: string = \"\";\n tooltipTemplate: TemplateRef<any>\n\n @ViewChild(\"container\") container: ElementRef;\n\n constructor() {}\n ngOnInit() {}\n ngAfterViewInit() {\n if (!this.container?.nativeElement) return;\n if (this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = eleWidth.width / -2 + \"px\";\n return;\n }\n if (this.toolTipPosition === \"left\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = -eleWidth.width + \"px\";\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnInit, TemplateRef, ViewContainerRef } from \"@angular/core\";\nimport { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { take } from \"rxjs/operators\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { ITooltipPositions } from \"./models/tooltip.model\";\n\n@Directive({\n selector: \"[misToolTip]\"\n})\nexport class ToolTipDirective implements OnInit, AfterViewInit {\n public isToolTipDisplayed: boolean = false;\n public toolTipText: string = \"\";\n public toolTipTextAlignment: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n private overlayRef: OverlayRef;\n private templateRef: TemplateRef<any>;\n\n @Input() showOnHover: boolean = true;\n @Input() set showToolTip(value: boolean) {\n this.isToolTipDisplayed = value;\n if (value) this.displayToolTip();\n else this.hideToolTip();\n }\n @Input() set text(value: string) {\n this.toolTipText = value;\n }\n @Input() set position(value: ITooltipPositions) {\n this.toolTipPosition = value;\n }\n @Input() set alignText(value: string) {\n this.toolTipTextAlignment = value;\n }\n @Input() set tooltipTemplate(value: TemplateRef<any>){\n this.templateRef = value;\n }\n\n @HostListener(\"mouseenter\") onMouseEnter() {\n if (this.showOnHover) this.displayToolTip();\n }\n @HostListener(\"mouseleave\") onMouseLeave() {\n if (this.showOnHover) this.hideToolTip();\n }\n\n constructor(private element: ElementRef, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n ngAfterViewInit() {\n if (this.isToolTipDisplayed) this.displayToolTip();\n else this.hideToolTip();\n }\n\n displayToolTip() {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: \"center\",\n positionY: this.toolTipPosition === \"top\" ? \"top\" : \"center\",\n offsetX: this.positionTooltip(\"OFFSET_X\"),\n offsetY: this.positionTooltip(\"OFFSET_Y\")\n },\n false\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);\n const tooltipRef = this.overlayRef.attach(tempRef);\n tooltipRef.instance.tooltipTemplate = this.templateRef;\n tooltipRef.instance.toolTipText = this.toolTipText;\n tooltipRef.instance.toolTipPosition = this.toolTipPosition;\n tooltipRef.instance.toolTipTextAlignment = this.toolTipTextAlignment;\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.hideToolTip();\n });\n }\n\n positionTooltip(type: \"OFFSET_X\" | \"OFFSET_Y\") {\n if (type === \"OFFSET_X\") {\n return this.toolTipPosition === \"right\"\n ? this.element.nativeElement.offsetWidth / 2 + 8\n : this.toolTipPosition === \"left\"\n ? (this.element.nativeElement.offsetWidth / 2 + 8) * -1\n : this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\"\n ? 0\n : 8;\n }\n if (type !== \"OFFSET_Y\") return;\n return this.toolTipPosition === \"right\" || this.toolTipPosition === \"left\"\n ? -18\n : this.toolTipPosition === \"top\"\n ? -44\n : this.toolTipPosition === \"bottom\"\n ? this.element.nativeElement.offsetHeight / 2 + 8\n : 8;\n }\n\n hideToolTip() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ToolTipDirective } from \"./tooltip.directive\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\n\n@NgModule({\n declarations: [ToolTipDirective, ToolTipComponent],\n imports: [CommonModule, OverlayModule],\n exports: [ToolTipDirective, ToolTipComponent],\n entryComponents: [ToolTipComponent]\n})\nexport class ToolTipModule {\n static forRoot(): ModuleWithProviders<ToolTipModule> {\n return { ngModule: ToolTipModule, providers: [] };\n }\n}\n"]}
@@ -34,18 +34,13 @@ export class TimeRangePickerComponent {
34
34
  const offset = this.interval - (minutes % this.interval);
35
35
  // start date, 22 MAY === current date, 22 MAY
36
36
  if (this.startDate === this.currDate) {
37
- console.log("start date epoch:", this.startDateEpoch);
38
37
  const currentTime = moment().valueOf();
39
38
  // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY
40
39
  if (this.startDate === this.endDate) {
41
- console.log("Current time:", currentTime);
42
- console.log("end-interval:", moment(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf());
43
40
  // current time is in last interval
44
41
  if (currentTime >= moment(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf()) {
45
42
  this.firstIntervalForStartPicker = currentTime;
46
43
  this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf("d").valueOf();
47
- console.log("firstIntervalForStartPicker", this.firstIntervalForStartPicker);
48
- console.log("firstIntervalForEndPicker", this.firstIntervalForEndPicker);
49
44
  }
50
45
  // current time isn't in last interval
51
46
  else {
@@ -196,4 +191,4 @@ TimeRangePickerComponent.propDecorators = {
196
191
  gap: [{ type: Input }],
197
192
  timeRangeEmitter: [{ type: Output }]
198
193
  };
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQVExQyxNQUFNLE9BQU8sd0JBQXdCO0lBNEJuQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTNCakMsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUU3QixXQUFNLEdBQVcsTUFBTSxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxjQUFjLENBQUM7UUFDbEMsbUJBQWMsR0FBVyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlELGlCQUFZLEdBQVcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUc1RCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBZSxLQUFLLENBQUM7UUFDOUIsUUFBRyxHQUFXLE1BQU0sQ0FBQztRQUVwQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBTTVELGdDQUEyQixHQUFXLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pELDhCQUF5QixHQUFXLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBR3ZELGtCQUFhLEdBQVks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LE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7O1lBL01GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQix3bENBQStDOzthQUVoRDs7O1lBUjBCLGlCQUFpQjs7O3lCQVV6QyxLQUFLOzRCQUNMLEtBQUs7cUJBQ0wsS0FBSzt1QkFDTCxLQUFLOzZCQUNMLEtBQUs7MkJBQ0wsS0FBSzs2QkFDTCxLQUFLOzJCQUNMLEtBQUs7MEJBQ0wsS0FBSzt1QkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBQ0wsS0FBSztrQkFDTCxLQUFLOytCQUVMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IElUaW1lUmFuZ2UsIElUaW1lLCBURGlyZWN0aW9uIH0gZnJvbSBcIi4vdGltZXJhbmdlLm5hbWVzcGFjZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXRpbWVyYW5nZXBpY2tlclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVSYW5nZVBpY2tlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlucHV0V2lkdGg6IHN0cmluZyA9IFwiMTAwcHhcIjtcbiAgQElucHV0KCkgZHJvcGRvd25XaWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSBcIjQ2cHhcIjtcbiAgQElucHV0KCkgdGltZXpvbmU6IHN0cmluZyA9IFwiQXNpYS9Lb2xrYXRhXCI7XG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZUVwb2NoOiBudW1iZXIgPSBtb21lbnQoKS50eih0aGlzLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gIEBJbnB1dCgpIGVuZERhdGVFcG9jaDogbnVtYmVyID0gbW9tZW50KCkudHoodGhpcy50aW1lem9uZSkudmFsdWVPZigpO1xuICBASW5wdXQoKSBnaXZlblN0YXJ0VGltZTogbnVtYmVyO1xuICBASW5wdXQoKSBnaXZlbkVuZFRpbWU6IG51bWJlcjtcbiAgQElucHV0KCkgY2xvY2tGb3JtYXQ6IG51bWJlciA9IDEyO1xuICBASW5wdXQoKSBpbnRlcnZhbDogbnVtYmVyID0gMTU7XG4gIEBJbnB1dCgpIHNob3dUb29sdGlwOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlyZWN0aW9uOiBURGlyZWN0aW9uID0gJ3Jvdyc7XG4gIEBJbnB1dCgpIGdhcDogc3RyaW5nID0gJzFyZW0nO1xuXG4gIEBPdXRwdXQoKSB0aW1lUmFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxJVGltZVJhbmdlPigpO1xuXG4gIHN0YXJ0RGF0ZSE6IHN0cmluZztcbiAgZW5kRGF0ZSE6IHN0cmluZztcbiAgY3VyckRhdGUhOiBzdHJpbmc7XG4gIHRpbWVGb3JtYXQhOiBzdHJpbmc7XG4gIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcjogbnVtYmVyID0gbW9tZW50KCkudmFsdWVPZigpO1xuICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyOiBudW1iZXIgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gIHN0YXJ0VGltZSE6IElUaW1lO1xuICBlbmRUaW1lITogSVRpbWU7XG4gIHJhbmdlVmFsaWRpdHk6IGJvb2xlYW4gPSB0cnVlO1xuICB0cmlnZ2VyQ2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMudGltZUZvcm1hdCA9IHRoaXMuY2xvY2tGb3JtYXQgPT09IDEyID8gXCJoaDptbSBhXCIgOiBcIkhIOm1tXCI7XG4gICAgbW9tZW50LnR6LnNldERlZmF1bHQodGhpcy50aW1lem9uZSk7XG4gICAgdGhpcy5zdGFydERhdGUgPSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgICB0aGlzLmVuZERhdGUgPSBtb21lbnQodGhpcy5lbmREYXRlRXBvY2gpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gICAgdGhpcy5jdXJyRGF0ZSA9IG1vbWVudCgpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gICAgdGhpcy5zZXRGaXJzdEludGVydmFscygpO1xuICB9XG5cbiAgLy8gY2FsY3VsYXRlIHRoZSBmaXJzdCBpbnRlcnZhbCBvZiB0aGUgcGlja2VyXG4gIHNldEZpcnN0SW50ZXJ2YWxzKCk6IHZvaWQge1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBtb21lbnQoKS5taW51dGVzKCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCAtIChtaW51dGVzICUgdGhpcy5pbnRlcnZhbCk7XG5cbiAgICAvLyBzdGFydCBkYXRlLCAyMiBNQVkgPT09ICBjdXJyZW50IGRhdGUsIDIyIE1BWVxuICAgIGlmKCB0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5jdXJyRGF0ZSApe1xuICAgICAgY29uc29sZS5sb2coXCJzdGFydCBkYXRlIGVwb2NoOlwiLHRoaXMuc3RhcnREYXRlRXBvY2gpO1xuICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG5cbiAgICAgIC8vIHN0YXJ0IGRhdGUsIDIyIE1BWSAgPT09IGN1cnJlbnQgZGF0ZSwgMjIgTUFZID09PSBlbmQgZGF0ZSwgMjIgTUFZXG4gICAgICBpZih0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5lbmREYXRlKXtcbiAgICAgICAgY29uc29sZS5sb2coXCJDdXJyZW50IHRpbWU6XCIsY3VycmVudFRpbWUpO1xuICAgICAgICBjb25zb2xlLmxvZyhcImVuZC1pbnRlcnZhbDpcIixtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwsXCJtXCIpLnZhbHVlT2YoKSk7XG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpcyBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGlmKCBjdXJyZW50VGltZSA+PSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwsXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyXCIsdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlclwiLHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3VycmVudCB0aW1lIGlzbid0IGluIGxhc3QgaW50ZXJ2YWxcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBtb21lbnQoKS5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9ICBtb21lbnQoKS5hZGQob2Zmc2V0LCBcIm1cIikuYWRkKHRoaXMuaW50ZXJ2YWwsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH0gXG4gICAgICAvLyBzdGFydCBkYXRlLCAyMiBNQVkgPT09IGN1cnJlbnQgZGF0ZSwgMjIgTUFZICE9PSBlbmQgZGF0ZSwgMzAgTUFZXG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gY3VycmVudCB0aW1lIGlzIGluIGxhc3QgaW50ZXJ2YWxcbiAgICAgICAgaWYoIGN1cnJlbnRUaW1lID49IG1vbWVudCh0aGlzLnN0YXJ0RGF0ZUVwb2NoKS5lbmRPZihcImRcIikuc3VidHJhY3QodGhpcy5pbnRlcnZhbCxcIm1cIikudmFsdWVPZigpKXtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGN1cnJlbnRUaW1lO1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9ICBtb21lbnQodGhpcy5lbmREYXRlRXBvY2gpLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3VycmVudCB0aW1lIGlzbid0IGluIGxhc3QgaW50ZXJ2YWxcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBtb21lbnQoKS5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9ICBtb21lbnQodGhpcy5lbmREYXRlRXBvY2gpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBzdGFydCBkYXRlLCAzMCBNQVkgIT09IGN1cnJlbnQgZGF0ZSwgMjIgTUFZXG4gICAgZWxzZSB7XG4gICAgICAvLyBzdGFydCBkYXRlID09PSBlbmQgRGF0ZVxuICAgICAgaWYoIHRoaXMuc3RhcnREYXRlID09PSB0aGlzLmVuZERhdGUpe1xuICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IG1vbWVudCh0aGlzLnN0YXJ0RGF0ZUVwb2NoKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9ICBtb21lbnQodGhpcy5lbmREYXRlRXBvY2gpLmFkZCh0aGlzLmludGVydmFsLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgfSBcbiAgICAgIC8vIHN0YXJ0IGRhdGUgIT09IGVuZCBkYXRlXG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuc3RhcnREYXRlRXBvY2gpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmKHRoaXMuZ2l2ZW5TdGFydFRpbWUpXG4gICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IHRoaXMuZ2l2ZW5TdGFydFRpbWU7XG4gICBcbiAgICBpZih0aGlzLmdpdmVuRW5kVGltZSlcbiAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IHRoaXMuZ2l2ZW5FbmRUaW1lO1xuICAgICAgXG4gICAgdGhpcy5zdGFydFRpbWUgPSB7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHRpbWU6IG1vbWVudCh0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcikuZm9ybWF0KHRoaXMudGltZUZvcm1hdCksXG4gICAgICBlcG9jaDogbW9tZW50KHRoaXMuZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyKS52YWx1ZU9mKClcbiAgICB9O1xuXG4gICAgdGhpcy5lbmRUaW1lID0ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB0aW1lOiBtb21lbnQodGhpcy5maXJzdEludGVydmFsRm9yRW5kUGlja2VyKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KSxcbiAgICAgIGVwb2NoOiBtb21lbnQodGhpcy5maXJzdEludGVydmFsRm9yRW5kUGlja2VyKS52YWx1ZU9mKClcbiAgICB9O1xuICB9XG5cbiAgZW1pdFRpbWVSYW5nZShkYXRhOiBJVGltZVJhbmdlKTogdm9pZCB7XG4gICAgdGhpcy50aW1lUmFuZ2VFbWl0dGVyLmVtaXQoZGF0YSk7XG4gIH1cblxuICAvL2hhbmRsZXJzIGNhdGNoIHRoZSBlbWl0dGVkIHZhbHVlcyBhbmQgcnVuIHZhbGlkYXRpb25cbiAgc3RhcnRQaWNrZXJIYW5kbGVyKHRpbWU6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydFRpbWUgPSB0aW1lO1xuICAgIHRoaXMucmFuZ2VWYWxpZGl0eSA9IHRydWU7XG4gICAgLy8gaWYgdGhlIHN0YXJ0IHRpbWUgY2hhbmdlcyBhbmQgdGhlIHN0YXJ0IGRhdGUgaXMgdGhlIHNhbWUgYXMgdGhlIGVuZCBkYXRlXG4gICAgLy8gYW5kIHRoZSBzdGFydCB0aW1lID49ICBlbmQgdGltZVxuICAgIC8vIHVwZGF0ZSB0aGUgZmlyc3QgaW50ZXJ2YWwgb2YgZW5kIHBpY2tlciBhY2NvcmRpbmcgdG8gdGhlIHRpbWUgc2V0IGluIHN0YXJ0IHBpY2tlclxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5lbmREYXRlKSB7XG4gICAgICBsZXQgbWludXRlcyA9IG1vbWVudCh0aGlzLnN0YXJ0VGltZS50aW1lLCB0aGlzLnRpbWVGb3JtYXQpLm1pbnV0ZXMoKTtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmludGVydmFsIC0gKG1pbnV0ZXMgJSB0aGlzLmludGVydmFsKTtcbiAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IG1vbWVudChgJHt0aGlzLnN0YXJ0RGF0ZX0gJHt0aGlzLnN0YXJ0VGltZS50aW1lfWAsIGAnREQtTU0tWVlZWScgJHt0aGlzLnRpbWVGb3JtYXR9YClcbiAgICAgICAgLmFkZChvZmZzZXQsIFwibVwiKVxuICAgICAgICAudmFsdWVPZigpO1xuXG4gICAgICAvLyBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgPT0gMTI6MDBhbSwgc2V0IGl0IGFzIDExOjU5cG1cbiAgICAgIGNvbnN0IGludGVydmFsQXNTdHJpbmcgPSBtb21lbnQodGhpcy5maXJzdEludGVydmFsRm9yRW5kUGlja2VyKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIGNvbnN0IGVuZE9mRGF5QXNTdHJpbmcgPSBtb21lbnQobW9tZW50KGAke3RoaXMuc3RhcnREYXRlfWAsIGBERC1NTS1ZWVlZICR7dGhpcy50aW1lRm9ybWF0fWApLmVuZE9mKFwiZFwiKS5hZGQoMSwgXCJtXCIpKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIGlmIChpbnRlcnZhbEFzU3RyaW5nID09PSBlbmRPZkRheUFzU3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IG1vbWVudChgJHt0aGlzLnN0YXJ0RGF0ZX0gJHt0aGlzLnN0YXJ0VGltZS50aW1lfWAsIGAnREQtTU0tWVlZWScgJHt0aGlzLnRpbWVGb3JtYXR9YCkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbGlkaXR5ID1cbiAgICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLnN0YXJ0VGltZS50aW1lLnRyaW0oKSwgdGhpcy5zdGFydERhdGVFcG9jaCkgJiZcbiAgICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKTtcblxuICAgICAgICB0aGlzLnJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eSk7XG4gICAgICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICAgICAgdmFsaWQ6IHZhbGlkaXR5ICYmIHRoaXMucmFuZ2VWYWxpZGl0eSxcbiAgICAgICAgICBzdGFydFRpbWU6IHRoaXMuc3RhcnRUaW1lLnRpbWUsXG4gICAgICAgICAgZW5kVGltZTogdGhpcy5lbmRUaW1lLnRpbWUsXG4gICAgICAgICAgc3RhcnRFcG9jaDogbW9tZW50KGAke3RoaXMuc3RhcnREYXRlfSAke3RoaXMuc3RhcnRUaW1lLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCkudmFsdWVPZigpLFxuICAgICAgICAgIGVuZEVwb2NoOiBtb21lbnQoYCR7dGhpcy5lbmREYXRlfSAke3RoaXMuZW5kVGltZS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy50aW1lRm9ybWF0fWApLnZhbHVlT2YoKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXJDaGFuZ2UgPSAhdGhpcy50cmlnZ2VyQ2hhbmdlO1xuICB9XG5cbiAgZW5kUGlja2VySGFuZGxlcih0aW1lOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMuZW5kVGltZSA9IHRpbWU7XG5cbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKSAmJiB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuZW5kVGltZS50aW1lLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2gpO1xuXG4gICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICB2YWxpZDogdmFsaWRpdHkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5LFxuICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZS50aW1lLFxuICAgICAgZW5kVGltZTogdGhpcy5lbmRUaW1lLnRpbWUsXG4gICAgICBzdGFydEVwb2NoOiBtb21lbnQoYCR7dGhpcy5zdGFydERhdGV9ICR7dGhpcy5zdGFydFRpbWUudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKS52YWx1ZU9mKCksXG4gICAgICBlbmRFcG9jaDogbW9tZW50KGAke3RoaXMuZW5kRGF0ZX0gJHt0aGlzLmVuZFRpbWUudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrVGltZVZhbGlkaXR5KHRpbWU6IHN0cmluZywgZGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgUkUxMiA9IC9eKChbMF1bMS05XXwxWzAtMl0pOihbMC01XVswLTldKSggKT8oYW18cG18QU18UE0pKSQvaTtcbiAgICBjb25zdCBSRTI0ID0gL14oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSQvO1xuICAgIGNvbnN0IFJFID0gdGhpcy5jbG9ja0Zvcm1hdCA9PT0gMTIgPyBSRTEyIDogUkUyNDtcblxuICAgIGNvbnN0IHRpbWVNb21lbnQgPSBtb21lbnQoYCR7bW9tZW50KGRhdGUpLmZvcm1hdChcIkRELU1NLVlZWVlcIil9ICR7dGltZX1gLCBgJ0RELU1NLVlZWVknICR7dGhpcy50aW1lRm9ybWF0fWApO1xuICAgIGxldCBmbGFnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgaXMgc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5XG4gICAgLy8gdGhlbiB3ZSBkb24ndCBjaGVjayBpdHMgdmFsaWRpdHkgYWdhaW5zdCB0aGUgY3VycmVudCB0aW1lXG4gICAgaWYgKCh0aGlzLmdpdmVuU3RhcnRUaW1lICYmIHRoaXMuZ2l2ZW5FbmRUaW1lKSB8fCAodGhpcy5zdGFydERhdGUgIT09IHRoaXMuZW5kRGF0ZSAmJiB0aGlzLnN0YXJ0RGF0ZSAhPT0gdGhpcy5jdXJyRGF0ZSkpIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyA9IHRpbWUubWF0Y2goUkUpICYmIHRpbWVNb21lbnQuZGlmZihtb21lbnQoKSwgXCJtXCIpID49IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYWc7XG4gIH1cblxuICAvLyB2YWxpZGF0ZXMgZW5kIHBpY2tlcidzIGlucHV0IGFjY29yZGluZyB0byB0aGUgc3RhcnQgcGlja2VyJ3MgaW5wdXRcbiAgcmFuZ2VWYWxpZGF0aW9uKHZhbGlkaXR5OiBib29sZWFuKSB7XG4gICAgaWYgKHZhbGlkaXR5ICYmIHRoaXMuc3RhcnREYXRlID09PSB0aGlzLmVuZERhdGUpIHtcbiAgICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50KHRoaXMuc3RhcnRUaW1lLnRpbWUsIHRoaXMudGltZUZvcm1hdCk7XG4gICAgICBjb25zdCBlbmRNb21lbnQgPSBtb21lbnQodGhpcy5lbmRUaW1lLnRpbWUsIHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB0aGlzLnJhbmdlVmFsaWRpdHkgPSBlbmRNb21lbnQuZGlmZihzdGFydE1vbWVudCwgXCJtXCIpID49IDEgPyB0cnVlIDogZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQVExQyxNQUFNLE9BQU8sd0JBQXdCO0lBNEJuQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTNCakMsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUU3QixXQUFNLEdBQVcsTUFBTSxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxjQUFjLENBQUM7UUFDbEMsbUJBQWMsR0FBVyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlELGlCQUFZLEdBQVcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUc1RCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBZSxLQUFLLENBQUM7UUFDOUIsUUFBRyxHQUFXLE1BQU0sQ0FBQztRQUVwQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBTTVELGdDQUEyQixHQUFXLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pELDhCQUF5QixHQUFXLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBR3ZELGtCQUFhLEdBQVks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LEtBQUs7MEJBQ0wsS0FBSzt3QkFDTCxLQUFLO2tCQUNMLEtBQUs7K0JBRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgSVRpbWVSYW5nZSwgSVRpbWUsIFREaXJlY3Rpb24gfSBmcm9tIFwiLi90aW1lcmFuZ2UubmFtZXNwYWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdGltZXJhbmdlcGlja2VyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVGltZVJhbmdlUGlja2VyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaW5wdXRXaWR0aDogc3RyaW5nID0gXCIxMDBweFwiO1xuICBASW5wdXQoKSBkcm9wZG93bldpZHRoPzogc3RyaW5nO1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9IFwiNDZweFwiO1xuICBASW5wdXQoKSB0aW1lem9uZTogc3RyaW5nID0gXCJBc2lhL0tvbGthdGFcIjtcbiAgQElucHV0KCkgc3RhcnREYXRlRXBvY2g6IG51bWJlciA9IG1vbWVudCgpLnR6KHRoaXMudGltZXpvbmUpLnZhbHVlT2YoKTtcbiAgQElucHV0KCkgZW5kRGF0ZUVwb2NoOiBudW1iZXIgPSBtb21lbnQoKS50eih0aGlzLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gIEBJbnB1dCgpIGdpdmVuU3RhcnRUaW1lOiBudW1iZXI7XG4gIEBJbnB1dCgpIGdpdmVuRW5kVGltZTogbnVtYmVyO1xuICBASW5wdXQoKSBjbG9ja0Zvcm1hdDogbnVtYmVyID0gMTI7XG4gIEBJbnB1dCgpIGludGVydmFsOiBudW1iZXIgPSAxNTtcbiAgQElucHV0KCkgc2hvd1Rvb2x0aXA6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBkaXJlY3Rpb246IFREaXJlY3Rpb24gPSAncm93JztcbiAgQElucHV0KCkgZ2FwOiBzdHJpbmcgPSAnMXJlbSc7XG5cbiAgQE91dHB1dCgpIHRpbWVSYW5nZUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPElUaW1lUmFuZ2U+KCk7XG5cbiAgc3RhcnREYXRlITogc3RyaW5nO1xuICBlbmREYXRlITogc3RyaW5nO1xuICBjdXJyRGF0ZSE6IHN0cmluZztcbiAgdGltZUZvcm1hdCE6IHN0cmluZztcbiAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyOiBudW1iZXIgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXI6IG51bWJlciA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgc3RhcnRUaW1lITogSVRpbWU7XG4gIGVuZFRpbWUhOiBJVGltZTtcbiAgcmFuZ2VWYWxpZGl0eTogYm9vbGVhbiA9IHRydWU7XG4gIHRyaWdnZXJDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy50aW1lRm9ybWF0ID0gdGhpcy5jbG9ja0Zvcm1hdCA9PT0gMTIgPyBcImhoOm1tIGFcIiA6IFwiSEg6bW1cIjtcbiAgICBtb21lbnQudHouc2V0RGVmYXVsdCh0aGlzLnRpbWV6b25lKTtcbiAgICB0aGlzLnN0YXJ0RGF0ZSA9IG1vbWVudCh0aGlzLnN0YXJ0RGF0ZUVwb2NoKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpO1xuICAgIHRoaXMuZW5kRGF0ZSA9IG1vbWVudCh0aGlzLmVuZERhdGVFcG9jaCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgICB0aGlzLmN1cnJEYXRlID0gbW9tZW50KCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgICB0aGlzLnNldEZpcnN0SW50ZXJ2YWxzKCk7XG4gIH1cblxuICAvLyBjYWxjdWxhdGUgdGhlIGZpcnN0IGludGVydmFsIG9mIHRoZSBwaWNrZXJcbiAgc2V0Rmlyc3RJbnRlcnZhbHMoKTogdm9pZCB7XG4gICAgY29uc3QgbWludXRlcyA9IG1vbWVudCgpLm1pbnV0ZXMoKTtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmludGVydmFsIC0gKG1pbnV0ZXMgJSB0aGlzLmludGVydmFsKTtcblxuICAgIC8vIHN0YXJ0IGRhdGUsIDIyIE1BWSA9PT0gIGN1cnJlbnQgZGF0ZSwgMjIgTUFZXG4gICAgaWYoIHRoaXMuc3RhcnREYXRlID09PSB0aGlzLmN1cnJEYXRlICl7XG4gICAgICBjb25zdCBjdXJyZW50VGltZSA9IG1vbWVudCgpLnZhbHVlT2YoKTtcblxuICAgICAgLy8gc3RhcnQgZGF0ZSwgMjIgTUFZICA9PT0gY3VycmVudCBkYXRlLCAyMiBNQVkgPT09IGVuZCBkYXRlLCAyMiBNQVlcbiAgICAgIGlmKHRoaXMuc3RhcnREYXRlID09PSB0aGlzLmVuZERhdGUpe1xuXG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpcyBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGlmKCBjdXJyZW50VGltZSA+PSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwsXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpc24ndCBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gbW9tZW50KCkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KCkuYWRkKG9mZnNldCwgXCJtXCIpLmFkZCh0aGlzLmludGVydmFsLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICB9IFxuICAgICAgLy8gc3RhcnQgZGF0ZSwgMjIgTUFZID09PSBjdXJyZW50IGRhdGUsIDIyIE1BWSAhPT0gZW5kIGRhdGUsIDMwIE1BWVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpcyBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGlmKCBjdXJyZW50VGltZSA+PSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwsXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpc24ndCBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gbW9tZW50KCkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gc3RhcnQgZGF0ZSwgMzAgTUFZICE9PSBjdXJyZW50IGRhdGUsIDIyIE1BWVxuICAgIGVsc2Uge1xuICAgICAgLy8gc3RhcnQgZGF0ZSA9PT0gZW5kIERhdGVcbiAgICAgIGlmKCB0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5lbmREYXRlKXtcbiAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS5hZGQodGhpcy5pbnRlcnZhbCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIH0gXG4gICAgICAvLyBzdGFydCBkYXRlICE9PSBlbmQgZGF0ZVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gbW9tZW50KHRoaXMuc3RhcnREYXRlRXBvY2gpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gIG1vbWVudCh0aGlzLnN0YXJ0RGF0ZUVwb2NoKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZih0aGlzLmdpdmVuU3RhcnRUaW1lKVxuICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSB0aGlzLmdpdmVuU3RhcnRUaW1lO1xuICAgXG4gICAgaWYodGhpcy5naXZlbkVuZFRpbWUpXG4gICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSB0aGlzLmdpdmVuRW5kVGltZTtcbiAgICAgIFxuICAgIHRoaXMuc3RhcnRUaW1lID0ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB0aW1lOiBtb21lbnQodGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpLFxuICAgICAgZXBvY2g6IG1vbWVudCh0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcikudmFsdWVPZigpXG4gICAgfTtcblxuICAgIHRoaXMuZW5kVGltZSA9IHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdGltZTogbW9tZW50KHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcikuZm9ybWF0KHRoaXMudGltZUZvcm1hdCksXG4gICAgICBlcG9jaDogbW9tZW50KHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcikudmFsdWVPZigpXG4gICAgfTtcbiAgfVxuXG4gIGVtaXRUaW1lUmFuZ2UoZGF0YTogSVRpbWVSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMudGltZVJhbmdlRW1pdHRlci5lbWl0KGRhdGEpO1xuICB9XG5cbiAgLy9oYW5kbGVycyBjYXRjaCB0aGUgZW1pdHRlZCB2YWx1ZXMgYW5kIHJ1biB2YWxpZGF0aW9uXG4gIHN0YXJ0UGlja2VySGFuZGxlcih0aW1lOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRUaW1lID0gdGltZTtcbiAgICB0aGlzLnJhbmdlVmFsaWRpdHkgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBzdGFydCB0aW1lIGNoYW5nZXMgYW5kIHRoZSBzdGFydCBkYXRlIGlzIHRoZSBzYW1lIGFzIHRoZSBlbmQgZGF0ZVxuICAgIC8vIGFuZCB0aGUgc3RhcnQgdGltZSA+PSAgZW5kIHRpbWVcbiAgICAvLyB1cGRhdGUgdGhlIGZpcnN0IGludGVydmFsIG9mIGVuZCBwaWNrZXIgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIHNldCBpbiBzdGFydCBwaWNrZXJcbiAgICBpZiAodGhpcy5zdGFydERhdGUgPT09IHRoaXMuZW5kRGF0ZSkge1xuICAgICAgbGV0IG1pbnV0ZXMgPSBtb21lbnQodGhpcy5zdGFydFRpbWUudGltZSwgdGhpcy50aW1lRm9ybWF0KS5taW51dGVzKCk7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCAtIChtaW51dGVzICUgdGhpcy5pbnRlcnZhbCk7XG4gICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBtb21lbnQoYCR7dGhpcy5zdGFydERhdGV9ICR7dGhpcy5zdGFydFRpbWUudGltZX1gLCBgJ0RELU1NLVlZWVknICR7dGhpcy50aW1lRm9ybWF0fWApXG4gICAgICAgIC5hZGQob2Zmc2V0LCBcIm1cIilcbiAgICAgICAgLnZhbHVlT2YoKTtcblxuICAgICAgLy8gaWYgdGhlIGZpcnN0IGludGVydmFsID09IDEyOjAwYW0sIHNldCBpdCBhcyAxMTo1OXBtXG4gICAgICBjb25zdCBpbnRlcnZhbEFzU3RyaW5nID0gbW9tZW50KHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcikuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICBjb25zdCBlbmRPZkRheUFzU3RyaW5nID0gbW9tZW50KG1vbWVudChgJHt0aGlzLnN0YXJ0RGF0ZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKS5lbmRPZihcImRcIikuYWRkKDEsIFwibVwiKSkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICBpZiAoaW50ZXJ2YWxBc1N0cmluZyA9PT0gZW5kT2ZEYXlBc1N0cmluZykge1xuICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBtb21lbnQoYCR7dGhpcy5zdGFydERhdGV9ICR7dGhpcy5zdGFydFRpbWUudGltZX1gLCBgJ0RELU1NLVlZWVknICR7dGhpcy50aW1lRm9ybWF0fWApLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5zdGFydFRpbWUudGltZS50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2gpICYmXG4gICAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5lbmRUaW1lLnRpbWUudHJpbSgpLCB0aGlzLmVuZERhdGVFcG9jaCk7XG5cbiAgICAgICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgICAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHksXG4gICAgICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZS50aW1lLFxuICAgICAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZS50aW1lLFxuICAgICAgICAgIHN0YXJ0RXBvY2g6IG1vbWVudChgJHt0aGlzLnN0YXJ0RGF0ZX0gJHt0aGlzLnN0YXJ0VGltZS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy50aW1lRm9ybWF0fWApLnZhbHVlT2YoKSxcbiAgICAgICAgICBlbmRFcG9jaDogbW9tZW50KGAke3RoaXMuZW5kRGF0ZX0gJHt0aGlzLmVuZFRpbWUudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKS52YWx1ZU9mKClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlID0gIXRoaXMudHJpZ2dlckNoYW5nZTtcbiAgfVxuXG4gIGVuZFBpY2tlckhhbmRsZXIodGltZTogSVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLmVuZFRpbWUgPSB0aW1lO1xuXG4gICAgY29uc3QgdmFsaWRpdHkgPVxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLnN0YXJ0VGltZS50aW1lLnRyaW0oKSwgdGhpcy5zdGFydERhdGVFcG9jaCkgJiYgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKTtcblxuICAgIHRoaXMucmFuZ2VWYWxpZGF0aW9uKHZhbGlkaXR5KTtcbiAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgdmFsaWQ6IHZhbGlkaXR5ICYmIHRoaXMucmFuZ2VWYWxpZGl0eSxcbiAgICAgIHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUudGltZSxcbiAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZS50aW1lLFxuICAgICAgc3RhcnRFcG9jaDogbW9tZW50KGAke3RoaXMuc3RhcnREYXRlfSAke3RoaXMuc3RhcnRUaW1lLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCkudmFsdWVPZigpLFxuICAgICAgZW5kRXBvY2g6IG1vbWVudChgJHt0aGlzLmVuZERhdGV9ICR7dGhpcy5lbmRUaW1lLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCkudmFsdWVPZigpXG4gICAgfSk7XG4gIH1cblxuICBjaGVja1RpbWVWYWxpZGl0eSh0aW1lOiBzdHJpbmcsIGRhdGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IFJFMTIgPSAvXigoWzBdWzEtOV18MVswLTJdKTooWzAtNV1bMC05XSkoICk/KGFtfHBtfEFNfFBNKSkkL2k7XG4gICAgY29uc3QgUkUyNCA9IC9eKFswMV1bMC05XXwyWzAtM10pOlswLTVdWzAtOV0kLztcbiAgICBjb25zdCBSRSA9IHRoaXMuY2xvY2tGb3JtYXQgPT09IDEyID8gUkUxMiA6IFJFMjQ7XG5cbiAgICBjb25zdCB0aW1lTW9tZW50ID0gbW9tZW50KGAke21vbWVudChkYXRlKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpfSAke3RpbWV9YCwgYCdERC1NTS1ZWVlZJyAke3RoaXMudGltZUZvcm1hdH1gKTtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gaWYgdGhlIGZpcnN0IGludGVydmFsIGlzIHNldCB0byB0aGUgc3RhcnQgb2YgdGhlIGRheVxuICAgIC8vIHRoZW4gd2UgZG9uJ3QgY2hlY2sgaXRzIHZhbGlkaXR5IGFnYWluc3QgdGhlIGN1cnJlbnQgdGltZVxuICAgIGlmICgodGhpcy5naXZlblN0YXJ0VGltZSAmJiB0aGlzLmdpdmVuRW5kVGltZSkgfHwgKHRoaXMuc3RhcnREYXRlICE9PSB0aGlzLmVuZERhdGUgJiYgdGhpcy5zdGFydERhdGUgIT09IHRoaXMuY3VyckRhdGUpKSB7XG4gICAgICBmbGFnID0gdGltZS5tYXRjaChSRSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSAmJiB0aW1lTW9tZW50LmRpZmYobW9tZW50KCksIFwibVwiKSA+PSAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBmbGFnO1xuICB9XG5cbiAgLy8gdmFsaWRhdGVzIGVuZCBwaWNrZXIncyBpbnB1dCBhY2NvcmRpbmcgdG8gdGhlIHN0YXJ0IHBpY2tlcidzIGlucHV0XG4gIHJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eTogYm9vbGVhbikge1xuICAgIGlmICh2YWxpZGl0eSAmJiB0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5lbmREYXRlKSB7XG4gICAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudCh0aGlzLnN0YXJ0VGltZS50aW1lLCB0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgY29uc3QgZW5kTW9tZW50ID0gbW9tZW50KHRoaXMuZW5kVGltZS50aW1lLCB0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgdGhpcy5yYW5nZVZhbGlkaXR5ID0gZW5kTW9tZW50LmRpZmYoc3RhcnRNb21lbnQsIFwibVwiKSA+PSAxID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -24,7 +24,7 @@ export class ToolTipComponent {
24
24
  ToolTipComponent.decorators = [
25
25
  { type: Component, args: [{
26
26
  selector: "mis-tooltip",
27
- template: "<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0\" #container>\n <div id=\"tooltip\">\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n",
27
+ template: "<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0 || tooltipTemplate\" #container>\n <div id=\"tooltip\">\n <div *ngIf=\"tooltipTemplate; else tooltipText\">\n <ng-container *ngTemplateOutlet=\"tooltipTemplate\"></ng-container>\n </div>\n\n <ng-template #tooltipText>\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n </ng-template>\n\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n",
28
28
  styles: ["#tooltip-container{position:absolute;z-index:1}#tooltip{position:relative;display:block;padding:8px 12px;border-radius:8px;color:#fff;background:#181f33;font-family:Lato,sans-serif;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px}#tooltip-text{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#arrow{position:absolute;height:12px;width:12px;background:#181f33;z-index:1}.arrow-top{bottom:-6px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%) rotate(-45deg);-webkit-transform:translateX(-50%) rotate(-45deg)}.arrow-bottom{top:-6px}.arrow-left{right:-6px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%) rotate(-45deg);-webkit-transform:translateY(-50%) rotate(-45deg)}.arrow-right{left:-6px}"]
29
29
  },] }
30
30
  ];
@@ -32,4 +32,4 @@ ToolTipComponent.ctorParameters = () => [];
32
32
  ToolTipComponent.propDecorators = {
33
33
  container: [{ type: ViewChild, args: ["container",] }]
34
34
  };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAtY29udGFpbmVyL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUE4QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRaEcsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQjtRQU5PLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLG9CQUFlLEdBQXNCLFFBQVEsQ0FBQztRQUM5Qyx5QkFBb0IsR0FBVyxFQUFFLENBQUM7SUFJMUIsQ0FBQztJQUNoQixRQUFRLEtBQUksQ0FBQztJQUNiLGVBQWU7O1FBQ2IsSUFBSSxRQUFDLElBQUksQ0FBQyxTQUFTLDBDQUFFLGFBQWEsQ0FBQTtZQUFFLE9BQU87UUFDM0MsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRTtZQUN2RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDckUsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLE1BQU0sRUFBRTtZQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNsRTtJQUNILENBQUM7OztZQXpCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLDJqQkFBdUM7O2FBRXhDOzs7O3dCQU1FLFNBQVMsU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElUb29sdGlwUG9zaXRpb25zIH0gZnJvbSBcIi4uL21vZGVscy90b29sdGlwLm1vZGVsXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdG9vbHRpcFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3Rvb2x0aXAuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVG9vbFRpcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHB1YmxpYyB0b29sVGlwVGV4dDogc3RyaW5nID0gXCJcIjtcbiAgcHVibGljIHRvb2xUaXBQb3NpdGlvbjogSVRvb2x0aXBQb3NpdGlvbnMgPSBcImJvdHRvbVwiO1xuICBwdWJsaWMgdG9vbFRpcFRleHRBbGlnbm1lbnQ6IHN0cmluZyA9IFwiXCI7XG5cbiAgQFZpZXdDaGlsZChcImNvbnRhaW5lclwiKSBjb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuICBuZ09uSW5pdCgpIHt9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgaWYgKHRoaXMudG9vbFRpcFBvc2l0aW9uID09PSBcInRvcFwiIHx8IHRoaXMudG9vbFRpcFBvc2l0aW9uID09PSBcImJvdHRvbVwiKSB7XG4gICAgICBjb25zdCBlbGVXaWR0aCA9IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBlbGVXaWR0aC53aWR0aCAvIC0yICsgXCJweFwiO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy50b29sVGlwUG9zaXRpb24gPT09IFwibGVmdFwiKSB7XG4gICAgICBjb25zdCBlbGVXaWR0aCA9IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAtZWxlV2lkdGgud2lkdGggKyBcInB4XCI7XG4gICAgfVxuICB9XG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAtY29udGFpbmVyL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUEyQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRN0csTUFBTSxPQUFPLGdCQUFnQjtJQVEzQjtRQVBPLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLG9CQUFlLEdBQXNCLFFBQVEsQ0FBQztRQUM5Qyx5QkFBb0IsR0FBVyxFQUFFLENBQUM7SUFLMUIsQ0FBQztJQUNoQixRQUFRLEtBQUksQ0FBQztJQUNiLGVBQWU7O1FBQ2IsSUFBSSxRQUFDLElBQUksQ0FBQyxTQUFTLDBDQUFFLGFBQWEsQ0FBQTtZQUFFLE9BQU87UUFDM0MsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRTtZQUN2RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDckUsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLE1BQU0sRUFBRTtZQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNsRTtJQUNILENBQUM7OztZQTFCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLHd4QkFBdUM7O2FBRXhDOzs7O3dCQU9FLFNBQVMsU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJVG9vbHRpcFBvc2l0aW9ucyB9IGZyb20gXCIuLi9tb2RlbHMvdG9vbHRpcC5tb2RlbFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXRvb2x0aXBcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90b29sdGlwLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90b29sdGlwLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xUaXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwdWJsaWMgdG9vbFRpcFRleHQ6IHN0cmluZyA9IFwiXCI7XG4gIHB1YmxpYyB0b29sVGlwUG9zaXRpb246IElUb29sdGlwUG9zaXRpb25zID0gXCJib3R0b21cIjtcbiAgcHVibGljIHRvb2xUaXBUZXh0QWxpZ25tZW50OiBzdHJpbmcgPSBcIlwiO1xuICB0b29sdGlwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT5cblxuICBAVmlld0NoaWxkKFwiY29udGFpbmVyXCIpIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG4gIG5nT25Jbml0KCkge31cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgICBpZiAodGhpcy50b29sVGlwUG9zaXRpb24gPT09IFwidG9wXCIgfHwgdGhpcy50b29sVGlwUG9zaXRpb24gPT09IFwiYm90dG9tXCIpIHtcbiAgICAgIGNvbnN0IGVsZVdpZHRoID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGVsZVdpZHRoLndpZHRoIC8gLTIgKyBcInB4XCI7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnRvb2xUaXBQb3NpdGlvbiA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgIGNvbnN0IGVsZVdpZHRoID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IC1lbGVXaWR0aC53aWR0aCArIFwicHhcIjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -31,6 +31,9 @@ export class ToolTipDirective {
31
31
  set alignText(value) {
32
32
  this.toolTipTextAlignment = value;
33
33
  }
34
+ set tooltipTemplate(value) {
35
+ this.templateRef = value;
36
+ }
34
37
  onMouseEnter() {
35
38
  if (this.showOnHover)
36
39
  this.displayToolTip();
@@ -65,6 +68,7 @@ export class ToolTipDirective {
65
68
  this.overlayRef = this.overlay.create(config);
66
69
  const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);
67
70
  const tooltipRef = this.overlayRef.attach(tempRef);
71
+ tooltipRef.instance.tooltipTemplate = this.templateRef;
68
72
  tooltipRef.instance.toolTipText = this.toolTipText;
69
73
  tooltipRef.instance.toolTipPosition = this.toolTipPosition;
70
74
  tooltipRef.instance.toolTipTextAlignment = this.toolTipTextAlignment;
@@ -117,7 +121,8 @@ ToolTipDirective.propDecorators = {
117
121
  text: [{ type: Input }],
118
122
  position: [{ type: Input }],
119
123
  alignText: [{ type: Input }],
124
+ tooltipTemplate: [{ type: Input }],
120
125
  onMouseEnter: [{ type: HostListener, args: ["mouseenter",] }],
121
126
  onMouseLeave: [{ type: HostListener, args: ["mouseleave",] }]
122
127
  };
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU1uRSxNQUFNLE9BQU8sZ0JBQWdCO0lBOEIzQixZQUFvQixPQUFtQixFQUFVLE9BQWdCLEVBQVUsZ0JBQWtDO1FBQXpGLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTdCdEcsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLHlCQUFvQixHQUFXLEVBQUUsQ0FBQztRQUNsQyxvQkFBZSxHQUFzQixRQUFRLENBQUM7UUFHNUMsZ0JBQVcsR0FBWSxJQUFJLENBQUM7SUF1QjJFLENBQUM7SUF0QmpILElBQWEsV0FBVyxDQUFDLEtBQWM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7O1lBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBYSxJQUFJLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBYSxRQUFRLENBQUMsS0FBd0I7UUFDNUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQWEsU0FBUyxDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRTJCLFlBQVk7UUFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVztZQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBQzJCLFlBQVk7UUFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVztZQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBSUQsUUFBUSxLQUFJLENBQUM7SUFDYixlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsa0JBQWtCO1lBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDOztZQUM5QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2xDLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDakMsYUFBYSxDQUNaLGdCQUFnQixDQUNkO1lBQ0UsU0FBUyxFQUFFLFFBQVE7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDNUQsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztTQUMxQyxFQUNELEtBQUssQ0FDTixDQUNGO2FBQ0EsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQy9CLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGdCQUFnQjtZQUNoQixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7U0FDM0QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDM0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDckUsSUFBSSxDQUFDLFVBQVU7YUFDWixhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBNkI7UUFDM0MsSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsS0FBSyxPQUFPO2dCQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsS0FBSyxNQUFNO29CQUNqQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssUUFBUTt3QkFDckUsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNQO1FBQ0QsSUFBSSxJQUFJLEtBQUssVUFBVTtZQUFFLE9BQU87UUFDaEMsT0FBTyxJQUFJLENBQUMsZUFBZSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLE1BQU07WUFDeEUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxLQUFLLEtBQUs7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssUUFBUTtvQkFDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQztvQkFDakQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxXQUFXOztRQUNULE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsTUFBTSxHQUFHO1FBQzFCLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsT0FBTyxHQUFHO0lBQzdCLENBQUM7OztZQW5HRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGNBQWM7YUFDekI7OztZQVZrQyxVQUFVO1lBQ3BDLE9BQU87WUFENEQsZ0JBQWdCOzs7MEJBa0J6RixLQUFLOzBCQUNMLEtBQUs7bUJBS0wsS0FBSzt1QkFHTCxLQUFLO3dCQUdMLEtBQUs7MkJBSUwsWUFBWSxTQUFDLFlBQVk7MkJBR3pCLFlBQVksU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7IFRvb2xUaXBDb21wb25lbnQgfSBmcm9tIFwiLi90b29sdGlwLWNvbnRhaW5lci90b29sdGlwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZ2VuUG9zaXRpb25QYWlycyB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3V0aWxzXCI7XG5pbXBvcnQgeyBJVG9vbHRpcFBvc2l0aW9ucyB9IGZyb20gXCIuL21vZGVscy90b29sdGlwLm1vZGVsXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbbWlzVG9vbFRpcF1cIlxufSlcbmV4cG9ydCBjbGFzcyBUb29sVGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHVibGljIGlzVG9vbFRpcERpc3BsYXllZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgdG9vbFRpcFRleHQ6IHN0cmluZyA9IFwiXCI7XG4gIHB1YmxpYyB0b29sVGlwVGV4dEFsaWdubWVudDogc3RyaW5nID0gXCJcIjtcbiAgcHVibGljIHRvb2xUaXBQb3NpdGlvbjogSVRvb2x0aXBQb3NpdGlvbnMgPSBcImJvdHRvbVwiO1xuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG5cbiAgQElucHV0KCkgc2hvd09uSG92ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzZXQgc2hvd1Rvb2xUaXAodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzVG9vbFRpcERpc3BsYXllZCA9IHZhbHVlO1xuICAgIGlmICh2YWx1ZSkgdGhpcy5kaXNwbGF5VG9vbFRpcCgpO1xuICAgIGVsc2UgdGhpcy5oaWRlVG9vbFRpcCgpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB0ZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRvb2xUaXBUZXh0ID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KCkgc2V0IHBvc2l0aW9uKHZhbHVlOiBJVG9vbHRpcFBvc2l0aW9ucykge1xuICAgIHRoaXMudG9vbFRpcFBvc2l0aW9uID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KCkgc2V0IGFsaWduVGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy50b29sVGlwVGV4dEFsaWdubWVudCA9IHZhbHVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIikgb25Nb3VzZUVudGVyKCkge1xuICAgIGlmICh0aGlzLnNob3dPbkhvdmVyKSB0aGlzLmRpc3BsYXlUb29sVGlwKCk7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIikgb25Nb3VzZUxlYXZlKCkge1xuICAgIGlmICh0aGlzLnNob3dPbkhvdmVyKSB0aGlzLmhpZGVUb29sVGlwKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge31cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmlzVG9vbFRpcERpc3BsYXllZCkgdGhpcy5kaXNwbGF5VG9vbFRpcCgpO1xuICAgIGVsc2UgdGhpcy5oaWRlVG9vbFRpcCgpO1xuICB9XG5cbiAgZGlzcGxheVRvb2xUaXAoKSB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudClcbiAgICAgIC53aXRoUG9zaXRpb25zKFxuICAgICAgICBnZW5Qb3NpdGlvblBhaXJzKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIHBvc2l0aW9uWTogdGhpcy50b29sVGlwUG9zaXRpb24gPT09IFwidG9wXCIgPyBcInRvcFwiIDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIG9mZnNldFg6IHRoaXMucG9zaXRpb25Ub29sdGlwKFwiT0ZGU0VUX1hcIiksXG4gICAgICAgICAgICBvZmZzZXRZOiB0aGlzLnBvc2l0aW9uVG9vbHRpcChcIk9GRlNFVF9ZXCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApXG4gICAgICApXG4gICAgICAud2l0aFB1c2godHJ1ZSk7XG4gICAgY29uc3QgY29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICB9KTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XG4gICAgY29uc3QgdGVtcFJlZiA9IG5ldyBDb21wb25lbnRQb3J0YWwoVG9vbFRpcENvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICBjb25zdCB0b29sdGlwUmVmID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0ZW1wUmVmKTtcbiAgICB0b29sdGlwUmVmLmluc3RhbmNlLnRvb2xUaXBUZXh0ID0gdGhpcy50b29sVGlwVGV4dDtcbiAgICB0b29sdGlwUmVmLmluc3RhbmNlLnRvb2xUaXBQb3NpdGlvbiA9IHRoaXMudG9vbFRpcFBvc2l0aW9uO1xuICAgIHRvb2x0aXBSZWYuaW5zdGFuY2UudG9vbFRpcFRleHRBbGlnbm1lbnQgPSB0aGlzLnRvb2xUaXBUZXh0QWxpZ25tZW50O1xuICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHBvc2l0aW9uVG9vbHRpcCh0eXBlOiBcIk9GRlNFVF9YXCIgfCBcIk9GRlNFVF9ZXCIpIHtcbiAgICBpZiAodHlwZSA9PT0gXCJPRkZTRVRfWFwiKSB7XG4gICAgICByZXR1cm4gdGhpcy50b29sVGlwUG9zaXRpb24gPT09IFwicmlnaHRcIlxuICAgICAgICA/IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC8gMiArIDhcbiAgICAgICAgOiB0aGlzLnRvb2xUaXBQb3NpdGlvbiA9PT0gXCJsZWZ0XCJcbiAgICAgICAgPyAodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyAyICsgOCkgKiAtMVxuICAgICAgICA6IHRoaXMudG9vbFRpcFBvc2l0aW9uID09PSBcInRvcFwiIHx8IHRoaXMudG9vbFRpcFBvc2l0aW9uID09PSBcImJvdHRvbVwiXG4gICAgICAgID8gMFxuICAgICAgICA6IDg7XG4gICAgfVxuICAgIGlmICh0eXBlICE9PSBcIk9GRlNFVF9ZXCIpIHJldHVybjtcbiAgICByZXR1cm4gdGhpcy50b29sVGlwUG9zaXRpb24gPT09IFwicmlnaHRcIiB8fCB0aGlzLnRvb2xUaXBQb3NpdGlvbiA9PT0gXCJsZWZ0XCJcbiAgICAgID8gLTE4XG4gICAgICA6IHRoaXMudG9vbFRpcFBvc2l0aW9uID09PSBcInRvcFwiXG4gICAgICA/IC00NFxuICAgICAgOiB0aGlzLnRvb2xUaXBQb3NpdGlvbiA9PT0gXCJib3R0b21cIlxuICAgICAgPyB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyICsgOFxuICAgICAgOiA4O1xuICB9XG5cbiAgaGlkZVRvb2xUaXAoKSB7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgfVxufVxuIl19
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF1QixnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFNbkUsTUFBTSxPQUFPLGdCQUFnQjtJQWtDM0IsWUFBb0IsT0FBbUIsRUFBVSxPQUFnQixFQUFVLGdCQUFrQztRQUF6RixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFqQ3RHLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6Qix5QkFBb0IsR0FBVyxFQUFFLENBQUM7UUFDbEMsb0JBQWUsR0FBc0IsUUFBUSxDQUFDO1FBSTVDLGdCQUFXLEdBQVksSUFBSSxDQUFDO0lBMEIyRSxDQUFDO0lBekJqSCxJQUFhLFdBQVcsQ0FBQyxLQUFjO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDOztZQUM1QixJQUFJLENBQUMs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TCxLQUFLO21CQUtMLEtBQUs7dUJBR0wsS0FBSzt3QkFHTCxLQUFLOzhCQUdMLEtBQUs7MkJBSUwsWUFBWSxTQUFDLFlBQVk7MkJBR3pCLFlBQVksU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQgeyBUb29sVGlwQ29tcG9uZW50IH0gZnJvbSBcIi4vdG9vbHRpcC1jb250YWluZXIvdG9vbHRpcC5jb21wb25lbnRcIjtcbmltcG9ydCB7IGdlblBvc2l0aW9uUGFpcnMgfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS91dGlsc1wiO1xuaW1wb3J0IHsgSVRvb2x0aXBQb3NpdGlvbnMgfSBmcm9tIFwiLi9tb2RlbHMvdG9vbHRpcC5tb2RlbFwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW21pc1Rvb2xUaXBdXCJcbn0pXG5leHBvcnQgY2xhc3MgVG9vbFRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHB1YmxpYyBpc1Rvb2xUaXBEaXNwbGF5ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHRvb2xUaXBUZXh0OiBzdHJpbmcgPSBcIlwiO1xuICBwdWJsaWMgdG9vbFRpcFRleHRBbGlnbm1lbnQ6IHN0cmluZyA9IFwiXCI7XG4gIHB1YmxpYyB0b29sVGlwUG9zaXRpb246IElUb29sdGlwUG9zaXRpb25zID0gXCJib3R0b21cIjtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpIHNob3dPbkhvdmVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2V0IHNob3dUb29sVGlwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc1Rvb2xUaXBEaXNwbGF5ZWQgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUpIHRoaXMuZGlzcGxheVRvb2xUaXAoKTtcbiAgICBlbHNlIHRoaXMuaGlkZVRvb2xUaXAoKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy50b29sVGlwVGV4dCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHNldCBwb3NpdGlvbih2YWx1ZTogSVRvb2x0aXBQb3NpdGlvbnMpIHtcbiAgICB0aGlzLnRvb2xUaXBQb3NpdGlvbiA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHNldCBhbGlnblRleHQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudG9vbFRpcFRleHRBbGlnbm1lbnQgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdG9vbHRpcFRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+KXtcbiAgICB0aGlzLnRlbXBsYXRlUmVmID0gdmFsdWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwibW91c2VlbnRlclwiKSBvbk1vdXNlRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuc2hvd09uSG92ZXIpIHRoaXMuZGlzcGxheVRvb2xUaXAoKTtcbiAgfVxuICBASG9zdExpc3RlbmVyKFwibW91c2VsZWF2ZVwiKSBvbk1vdXNlTGVhdmUoKSB7XG4gICAgaWYgKHRoaXMuc2hvd09uSG92ZXIpIHRoaXMuaGlkZVRvb2xUaXAoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNUb29sVGlwRGlzcGxheWVkKSB0aGlzLmRpc3BsYXlUb29sVGlwKCk7XG4gICAgZWxzZSB0aGlzLmhpZGVUb29sVGlwKCk7XG4gIH1cblxuICBkaXNwbGF5VG9vbFRpcCgpIHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50KVxuICAgICAgLndpdGhQb3NpdGlvbnMoXG4gICAgICAgIGdlblBvc2l0aW9uUGFpcnMoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9zaXRpb25YOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgcG9zaXRpb25ZOiB0aGlzLnRvb2xUaXBQb3NpdGlvbiA9PT0gXCJ0b3BcIiA/IFwidG9wXCIgOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgb2Zmc2V0WDogdGhpcy5wb3NpdGlvblRvb2x0aXAoXCJPRkZTRVRfWFwiKSxcbiAgICAgICAgICAgIG9mZnNldFk6IHRoaXMucG9zaXRpb25Ub29sdGlwKFwiT0ZGU0VUX1lcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC53aXRoUHVzaCh0cnVlKTtcbiAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxuICAgIH0pO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgICBjb25zdCB0ZW1wUmVmID0gbmV3IENvbXBvbmVudFBvcnRhbChUb29sVGlwQ29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgIGNvbnN0IHRvb2x0aXBSZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRlbXBSZWYpO1xuICAgIHRvb2x0aXBSZWYuaW5zdGFuY2UudG9vbHRpcFRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZVJlZjtcbiAgICB0b29sdGlwUmVmLmluc3RhbmNlLnRvb2xUaXBUZXh0ID0gdGhpcy50b29sVGlwVGV4dDtcbiAgICB0b29sdGlwUmVmLmluc3RhbmNlLnRvb2xUaXBQb3NpdGlvbiA9IHRoaXMudG9vbFRpcFBvc2l0aW9uO1xuICAgIHRvb2x0aXBSZWYuaW5zdGFuY2UudG9vbFRpcFRleHRBbGlnbm1lbnQgPSB0aGlzLnRvb2xUaXBUZXh0QWxpZ25tZW50O1xuICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHBvc2l0aW9uVG9vbHRpcCh0eXBlOiBcIk9GRlNFVF9YXCIgfCBcIk9GRlNFVF9ZXCIpIHtcbiAgICBpZiAodHlwZSA9PT0gXCJPRkZTRVRfWFwiKSB7XG4gICAgICByZXR1cm4gdGhpcy50b29sVGlwUG9zaXRpb24gPT09IFwicmlnaHRcIlxuICAgICAgICA/IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC8gMiArIDhcbiAgICAgICAgOiB0aGlzLnRvb2xUaXBQb3NpdGlvbiA9PT0gXCJsZWZ0XCJcbiAgICAgICAgPyAodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyAyICsgOCkgKiAtMVxuICAgICAgICA6IHRoaXMudG9vbFRpcFBvc2l0aW9uID09PSBcInRvcFwiIHx8IHRoaXMudG9vbFRpcFBvc2l0aW9uID09PSBcImJvdHRvbVwiXG4gICAgICAgID8gMFxuICAgICAgICA6IDg7XG4gICAgfVxuICAgIGlmICh0eXBlICE9PSBcIk9GRlNFVF9ZXCIpIHJldHVybjtcbiAgICByZXR1cm4gdGhpcy50b29sVGlwUG9zaXRpb24gPT09IFwicmlnaHRcIiB8fCB0aGlzLnRvb2xUaXBQb3NpdGlvbiA9PT0gXCJsZWZ0XCJcbiAgICAgID8gLTE4XG4gICAgICA6IHRoaXMudG9vbFRpcFBvc2l0aW9uID09PSBcInRvcFwiXG4gICAgICA/IC00NFxuICAgICAgOiB0aGlzLnRvb2xUaXBQb3NpdGlvbiA9PT0gXCJib3R0b21cIlxuICAgICAgPyB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyICsgOFxuICAgICAgOiA4O1xuICB9XG5cbiAgaGlkZVRvb2xUaXAoKSB7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgfVxufVxuIl19
@@ -39,18 +39,13 @@ class TimeRangePickerComponent {
39
39
  const offset = this.interval - (minutes % this.interval);
40
40
  // start date, 22 MAY === current date, 22 MAY
41
41
  if (this.startDate === this.currDate) {
42
- console.log("start date epoch:", this.startDateEpoch);
43
42
  const currentTime = moment().valueOf();
44
43
  // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY
45
44
  if (this.startDate === this.endDate) {
46
- console.log("Current time:", currentTime);
47
- console.log("end-interval:", moment(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf());
48
45
  // current time is in last interval
49
46
  if (currentTime >= moment(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf()) {
50
47
  this.firstIntervalForStartPicker = currentTime;
51
48
  this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf("d").valueOf();
52
- console.log("firstIntervalForStartPicker", this.firstIntervalForStartPicker);
53
- console.log("firstIntervalForEndPicker", this.firstIntervalForEndPicker);
54
49
  }
55
50
  // current time isn't in last interval
56
51
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-timerangepicker.js","sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts","../../../projects/mis-components/timerangepicker/mis-crystal-design-system-timerangepicker.ts"],"sourcesContent":["import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\",\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent {\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() height: string = \"46px\";\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() startDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() endDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() givenStartTime: number;\n @Input() givenEndTime: number;\n @Input() clockFormat: number = 12;\n @Input() interval: number = 15;\n @Input() showTooltip: boolean = true;\n @Input() direction: TDirection = 'row';\n @Input() gap: string = '1rem';\n\n @Output() timeRangeEmitter = new EventEmitter<ITimeRange>();\n\n startDate!: string;\n endDate!: string;\n currDate!: string;\n timeFormat!: string;\n firstIntervalForStartPicker: number = moment().valueOf();\n firstIntervalForEndPicker: number = moment().valueOf();\n startTime!: ITime;\n endTime!: ITime;\n rangeValidity: boolean = true;\n triggerChange: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n ngOnChanges() {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n this.startDate = moment(this.startDateEpoch).format(\"DD-MM-YYYY\");\n this.endDate = moment(this.endDateEpoch).format(\"DD-MM-YYYY\");\n this.currDate = moment().format(\"DD-MM-YYYY\");\n this.setFirstIntervals();\n }\n\n // calculate the first interval of the picker\n setFirstIntervals(): void {\n const minutes = moment().minutes();\n const offset = this.interval - (minutes % this.interval);\n\n // start date, 22 MAY === current date, 22 MAY\n if( this.startDate === this.currDate ){\n console.log(\"start date epoch:\",this.startDateEpoch);\n const currentTime = moment().valueOf();\n\n // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY\n if(this.startDate === this.endDate){\n console.log(\"Current time:\",currentTime);\n console.log(\"end-interval:\",moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf());\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n console.log(\"firstIntervalForStartPicker\",this.firstIntervalForStartPicker);\n console.log(\"firstIntervalForEndPicker\",this.firstIntervalForEndPicker);\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment().add(offset, \"m\").add(this.interval, \"m\").valueOf();\n }\n } \n // start date, 22 MAY === current date, 22 MAY !== end date, 30 MAY\n else {\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).valueOf();\n }\n }\n }\n // start date, 30 MAY !== current date, 22 MAY\n else {\n // start date === end Date\n if( this.startDate === this.endDate){\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).add(this.interval, \"m\").valueOf();\n } \n // start date !== end date\n else {\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n }\n\n }\n\n if(this.givenStartTime)\n this.firstIntervalForStartPicker = this.givenStartTime;\n \n if(this.givenEndTime)\n this.firstIntervalForEndPicker = this.givenEndTime;\n \n this.startTime = {\n valid: true,\n time: moment(this.firstIntervalForStartPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForStartPicker).valueOf()\n };\n\n this.endTime = {\n valid: true,\n time: moment(this.firstIntervalForEndPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForEndPicker).valueOf()\n };\n }\n\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n //handlers catch the emitted values and run validation\n startPickerHandler(time: ITime): void {\n this.startTime = time;\n this.rangeValidity = true;\n // if the start time changes and the start date is the same as the end date\n // and the start time >= end time\n // update the first interval of end picker according to the time set in start picker\n if (this.startDate === this.endDate) {\n let minutes = moment(this.startTime.time, this.timeFormat).minutes();\n let offset = this.interval - (minutes % this.interval);\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n .add(offset, \"m\")\n .valueOf();\n\n // if the first interval == 12:00am, set it as 11:59pm\n const intervalAsString = moment(this.firstIntervalForEndPicker).format(this.timeFormat);\n const endOfDayAsString = moment(moment(`${this.startDate}`, `DD-MM-YYYY ${this.timeFormat}`).endOf(\"d\").add(1, \"m\")).format(this.timeFormat);\n if (intervalAsString === endOfDayAsString) {\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`).endOf(\"d\").valueOf();\n }\n\n } else {\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) &&\n this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n this.triggerChange = !this.triggerChange;\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime = time;\n\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) && this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = moment(`${moment(date).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // then we don't check its validity against the current time\n if ((this.givenStartTime && this.givenEndTime) || (this.startDate !== this.endDate && this.startDate !== this.currDate)) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true : false;\n }\n\n return flag;\n }\n\n // validates end picker's input according to the start picker's input\n rangeValidation(validity: boolean) {\n if (validity && this.startDate === this.endDate) {\n const startMoment = moment(this.startTime.time, this.timeFormat);\n const endMoment = moment(this.endTime.time, this.timeFormat);\n this.rangeValidity = endMoment.diff(startMoment, \"m\") >= 1 ? true : false;\n this.cdr.detectChanges();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["moment.tz"],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-timerangepicker.js","sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts","../../../projects/mis-components/timerangepicker/mis-crystal-design-system-timerangepicker.ts"],"sourcesContent":["import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\",\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent {\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() height: string = \"46px\";\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() startDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() endDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() givenStartTime: number;\n @Input() givenEndTime: number;\n @Input() clockFormat: number = 12;\n @Input() interval: number = 15;\n @Input() showTooltip: boolean = true;\n @Input() direction: TDirection = 'row';\n @Input() gap: string = '1rem';\n\n @Output() timeRangeEmitter = new EventEmitter<ITimeRange>();\n\n startDate!: string;\n endDate!: string;\n currDate!: string;\n timeFormat!: string;\n firstIntervalForStartPicker: number = moment().valueOf();\n firstIntervalForEndPicker: number = moment().valueOf();\n startTime!: ITime;\n endTime!: ITime;\n rangeValidity: boolean = true;\n triggerChange: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n ngOnChanges() {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n this.startDate = moment(this.startDateEpoch).format(\"DD-MM-YYYY\");\n this.endDate = moment(this.endDateEpoch).format(\"DD-MM-YYYY\");\n this.currDate = moment().format(\"DD-MM-YYYY\");\n this.setFirstIntervals();\n }\n\n // calculate the first interval of the picker\n setFirstIntervals(): void {\n const minutes = moment().minutes();\n const offset = this.interval - (minutes % this.interval);\n\n // start date, 22 MAY === current date, 22 MAY\n if( this.startDate === this.currDate ){\n const currentTime = moment().valueOf();\n\n // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY\n if(this.startDate === this.endDate){\n\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment().add(offset, \"m\").add(this.interval, \"m\").valueOf();\n }\n } \n // start date, 22 MAY === current date, 22 MAY !== end date, 30 MAY\n else {\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).valueOf();\n }\n }\n }\n // start date, 30 MAY !== current date, 22 MAY\n else {\n // start date === end Date\n if( this.startDate === this.endDate){\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).add(this.interval, \"m\").valueOf();\n } \n // start date !== end date\n else {\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n }\n\n }\n\n if(this.givenStartTime)\n this.firstIntervalForStartPicker = this.givenStartTime;\n \n if(this.givenEndTime)\n this.firstIntervalForEndPicker = this.givenEndTime;\n \n this.startTime = {\n valid: true,\n time: moment(this.firstIntervalForStartPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForStartPicker).valueOf()\n };\n\n this.endTime = {\n valid: true,\n time: moment(this.firstIntervalForEndPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForEndPicker).valueOf()\n };\n }\n\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n //handlers catch the emitted values and run validation\n startPickerHandler(time: ITime): void {\n this.startTime = time;\n this.rangeValidity = true;\n // if the start time changes and the start date is the same as the end date\n // and the start time >= end time\n // update the first interval of end picker according to the time set in start picker\n if (this.startDate === this.endDate) {\n let minutes = moment(this.startTime.time, this.timeFormat).minutes();\n let offset = this.interval - (minutes % this.interval);\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n .add(offset, \"m\")\n .valueOf();\n\n // if the first interval == 12:00am, set it as 11:59pm\n const intervalAsString = moment(this.firstIntervalForEndPicker).format(this.timeFormat);\n const endOfDayAsString = moment(moment(`${this.startDate}`, `DD-MM-YYYY ${this.timeFormat}`).endOf(\"d\").add(1, \"m\")).format(this.timeFormat);\n if (intervalAsString === endOfDayAsString) {\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`).endOf(\"d\").valueOf();\n }\n\n } else {\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) &&\n this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n this.triggerChange = !this.triggerChange;\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime = time;\n\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) && this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = moment(`${moment(date).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // then we don't check its validity against the current time\n if ((this.givenStartTime && this.givenEndTime) || (this.startDate !== this.endDate && this.startDate !== this.currDate)) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true : false;\n }\n\n return flag;\n }\n\n // validates end picker's input according to the start picker's input\n rangeValidation(validity: boolean) {\n if (validity && this.startDate === this.endDate) {\n const startMoment = moment(this.startTime.time, this.timeFormat);\n const endMoment = moment(this.endTime.time, this.timeFormat);\n this.rangeValidity = endMoment.diff(startMoment, \"m\") >= 1 ? true : false;\n this.cdr.detectChanges();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["moment.tz"],"mappings":"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"}
@@ -30,7 +30,7 @@ class ToolTipComponent {
30
30
  ToolTipComponent.decorators = [
31
31
  { type: Component, args: [{
32
32
  selector: "mis-tooltip",
33
- template: "<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0\" #container>\n <div id=\"tooltip\">\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n",
33
+ template: "<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0 || tooltipTemplate\" #container>\n <div id=\"tooltip\">\n <div *ngIf=\"tooltipTemplate; else tooltipText\">\n <ng-container *ngTemplateOutlet=\"tooltipTemplate\"></ng-container>\n </div>\n\n <ng-template #tooltipText>\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n </ng-template>\n\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n",
34
34
  styles: ["#tooltip-container{position:absolute;z-index:1}#tooltip{position:relative;display:block;padding:8px 12px;border-radius:8px;color:#fff;background:#181f33;font-family:Lato,sans-serif;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px}#tooltip-text{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#arrow{position:absolute;height:12px;width:12px;background:#181f33;z-index:1}.arrow-top{bottom:-6px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%) rotate(-45deg);-webkit-transform:translateX(-50%) rotate(-45deg)}.arrow-bottom{top:-6px}.arrow-left{right:-6px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%) rotate(-45deg);-webkit-transform:translateY(-50%) rotate(-45deg)}.arrow-right{left:-6px}"]
35
35
  },] }
36
36
  ];
@@ -66,6 +66,9 @@ class ToolTipDirective {
66
66
  set alignText(value) {
67
67
  this.toolTipTextAlignment = value;
68
68
  }
69
+ set tooltipTemplate(value) {
70
+ this.templateRef = value;
71
+ }
69
72
  onMouseEnter() {
70
73
  if (this.showOnHover)
71
74
  this.displayToolTip();
@@ -100,6 +103,7 @@ class ToolTipDirective {
100
103
  this.overlayRef = this.overlay.create(config);
101
104
  const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);
102
105
  const tooltipRef = this.overlayRef.attach(tempRef);
106
+ tooltipRef.instance.tooltipTemplate = this.templateRef;
103
107
  tooltipRef.instance.toolTipText = this.toolTipText;
104
108
  tooltipRef.instance.toolTipPosition = this.toolTipPosition;
105
109
  tooltipRef.instance.toolTipTextAlignment = this.toolTipTextAlignment;
@@ -152,6 +156,7 @@ ToolTipDirective.propDecorators = {
152
156
  text: [{ type: Input }],
153
157
  position: [{ type: Input }],
154
158
  alignText: [{ type: Input }],
159
+ tooltipTemplate: [{ type: Input }],
155
160
  onMouseEnter: [{ type: HostListener, args: ["mouseenter",] }],
156
161
  onMouseLeave: [{ type: HostListener, args: ["mouseleave",] }]
157
162
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-tooltip.js","sources":["../../../projects/mis-components/tooltip/tooltip-container/tooltip.component.ts","../../../projects/mis-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/tooltip/tooltip.module.ts","../../../projects/mis-components/tooltip/mis-crystal-design-system-tooltip.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild } from \"@angular/core\";\nimport { ITooltipPositions } from \"../models/tooltip.model\";\n\n@Component({\n selector: \"mis-tooltip\",\n templateUrl: \"./tooltip.component.html\",\n styleUrls: [\"./tooltip.component.scss\"]\n})\nexport class ToolTipComponent implements OnInit, AfterViewInit {\n public toolTipText: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n public toolTipTextAlignment: string = \"\";\n\n @ViewChild(\"container\") container: ElementRef;\n\n constructor() {}\n ngOnInit() {}\n ngAfterViewInit() {\n if (!this.container?.nativeElement) return;\n if (this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = eleWidth.width / -2 + \"px\";\n return;\n }\n if (this.toolTipPosition === \"left\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = -eleWidth.width + \"px\";\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnInit, ViewContainerRef } from \"@angular/core\";\nimport { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { take } from \"rxjs/operators\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { ITooltipPositions } from \"./models/tooltip.model\";\n\n@Directive({\n selector: \"[misToolTip]\"\n})\nexport class ToolTipDirective implements OnInit, AfterViewInit {\n public isToolTipDisplayed: boolean = false;\n public toolTipText: string = \"\";\n public toolTipTextAlignment: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n private overlayRef: OverlayRef;\n\n @Input() showOnHover: boolean = true;\n @Input() set showToolTip(value: boolean) {\n this.isToolTipDisplayed = value;\n if (value) this.displayToolTip();\n else this.hideToolTip();\n }\n @Input() set text(value: string) {\n this.toolTipText = value;\n }\n @Input() set position(value: ITooltipPositions) {\n this.toolTipPosition = value;\n }\n @Input() set alignText(value: string) {\n this.toolTipTextAlignment = value;\n }\n\n @HostListener(\"mouseenter\") onMouseEnter() {\n if (this.showOnHover) this.displayToolTip();\n }\n @HostListener(\"mouseleave\") onMouseLeave() {\n if (this.showOnHover) this.hideToolTip();\n }\n\n constructor(private element: ElementRef, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n ngAfterViewInit() {\n if (this.isToolTipDisplayed) this.displayToolTip();\n else this.hideToolTip();\n }\n\n displayToolTip() {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: \"center\",\n positionY: this.toolTipPosition === \"top\" ? \"top\" : \"center\",\n offsetX: this.positionTooltip(\"OFFSET_X\"),\n offsetY: this.positionTooltip(\"OFFSET_Y\")\n },\n false\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);\n const tooltipRef = this.overlayRef.attach(tempRef);\n tooltipRef.instance.toolTipText = this.toolTipText;\n tooltipRef.instance.toolTipPosition = this.toolTipPosition;\n tooltipRef.instance.toolTipTextAlignment = this.toolTipTextAlignment;\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.hideToolTip();\n });\n }\n\n positionTooltip(type: \"OFFSET_X\" | \"OFFSET_Y\") {\n if (type === \"OFFSET_X\") {\n return this.toolTipPosition === \"right\"\n ? this.element.nativeElement.offsetWidth / 2 + 8\n : this.toolTipPosition === \"left\"\n ? (this.element.nativeElement.offsetWidth / 2 + 8) * -1\n : this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\"\n ? 0\n : 8;\n }\n if (type !== \"OFFSET_Y\") return;\n return this.toolTipPosition === \"right\" || this.toolTipPosition === \"left\"\n ? -18\n : this.toolTipPosition === \"top\"\n ? -44\n : this.toolTipPosition === \"bottom\"\n ? this.element.nativeElement.offsetHeight / 2 + 8\n : 8;\n }\n\n hideToolTip() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ToolTipDirective } from \"./tooltip.directive\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\n\n@NgModule({\n declarations: [ToolTipDirective, ToolTipComponent],\n imports: [CommonModule, OverlayModule],\n exports: [ToolTipDirective, ToolTipComponent],\n entryComponents: [ToolTipComponent]\n})\nexport class ToolTipModule {\n static forRoot(): ModuleWithProviders<ToolTipModule> {\n return { ngModule: ToolTipModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-tooltip.js","sources":["../../../projects/mis-components/tooltip/tooltip-container/tooltip.component.ts","../../../projects/mis-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/tooltip/tooltip.module.ts","../../../projects/mis-components/tooltip/mis-crystal-design-system-tooltip.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, Inject, OnInit, TemplateRef, ViewChild } from \"@angular/core\";\nimport { ITooltipPositions } from \"../models/tooltip.model\";\n\n@Component({\n selector: \"mis-tooltip\",\n templateUrl: \"./tooltip.component.html\",\n styleUrls: [\"./tooltip.component.scss\"]\n})\nexport class ToolTipComponent implements OnInit, AfterViewInit {\n public toolTipText: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n public toolTipTextAlignment: string = \"\";\n tooltipTemplate: TemplateRef<any>\n\n @ViewChild(\"container\") container: ElementRef;\n\n constructor() {}\n ngOnInit() {}\n ngAfterViewInit() {\n if (!this.container?.nativeElement) return;\n if (this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = eleWidth.width / -2 + \"px\";\n return;\n }\n if (this.toolTipPosition === \"left\") {\n const eleWidth = this.container.nativeElement.getBoundingClientRect();\n this.container.nativeElement.style.left = -eleWidth.width + \"px\";\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnInit, TemplateRef, ViewContainerRef } from \"@angular/core\";\nimport { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { take } from \"rxjs/operators\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { ITooltipPositions } from \"./models/tooltip.model\";\n\n@Directive({\n selector: \"[misToolTip]\"\n})\nexport class ToolTipDirective implements OnInit, AfterViewInit {\n public isToolTipDisplayed: boolean = false;\n public toolTipText: string = \"\";\n public toolTipTextAlignment: string = \"\";\n public toolTipPosition: ITooltipPositions = \"bottom\";\n private overlayRef: OverlayRef;\n private templateRef: TemplateRef<any>;\n\n @Input() showOnHover: boolean = true;\n @Input() set showToolTip(value: boolean) {\n this.isToolTipDisplayed = value;\n if (value) this.displayToolTip();\n else this.hideToolTip();\n }\n @Input() set text(value: string) {\n this.toolTipText = value;\n }\n @Input() set position(value: ITooltipPositions) {\n this.toolTipPosition = value;\n }\n @Input() set alignText(value: string) {\n this.toolTipTextAlignment = value;\n }\n @Input() set tooltipTemplate(value: TemplateRef<any>){\n this.templateRef = value;\n }\n\n @HostListener(\"mouseenter\") onMouseEnter() {\n if (this.showOnHover) this.displayToolTip();\n }\n @HostListener(\"mouseleave\") onMouseLeave() {\n if (this.showOnHover) this.hideToolTip();\n }\n\n constructor(private element: ElementRef, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n ngAfterViewInit() {\n if (this.isToolTipDisplayed) this.displayToolTip();\n else this.hideToolTip();\n }\n\n displayToolTip() {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: \"center\",\n positionY: this.toolTipPosition === \"top\" ? \"top\" : \"center\",\n offsetX: this.positionTooltip(\"OFFSET_X\"),\n offsetY: this.positionTooltip(\"OFFSET_Y\")\n },\n false\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(ToolTipComponent, this.viewContainerRef);\n const tooltipRef = this.overlayRef.attach(tempRef);\n tooltipRef.instance.tooltipTemplate = this.templateRef;\n tooltipRef.instance.toolTipText = this.toolTipText;\n tooltipRef.instance.toolTipPosition = this.toolTipPosition;\n tooltipRef.instance.toolTipTextAlignment = this.toolTipTextAlignment;\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.hideToolTip();\n });\n }\n\n positionTooltip(type: \"OFFSET_X\" | \"OFFSET_Y\") {\n if (type === \"OFFSET_X\") {\n return this.toolTipPosition === \"right\"\n ? this.element.nativeElement.offsetWidth / 2 + 8\n : this.toolTipPosition === \"left\"\n ? (this.element.nativeElement.offsetWidth / 2 + 8) * -1\n : this.toolTipPosition === \"top\" || this.toolTipPosition === \"bottom\"\n ? 0\n : 8;\n }\n if (type !== \"OFFSET_Y\") return;\n return this.toolTipPosition === \"right\" || this.toolTipPosition === \"left\"\n ? -18\n : this.toolTipPosition === \"top\"\n ? -44\n : this.toolTipPosition === \"bottom\"\n ? this.element.nativeElement.offsetHeight / 2 + 8\n : 8;\n }\n\n hideToolTip() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ToolTipDirective } from \"./tooltip.directive\";\nimport { ToolTipComponent } from \"./tooltip-container/tooltip.component\";\n\n@NgModule({\n declarations: [ToolTipDirective, ToolTipComponent],\n imports: [CommonModule, OverlayModule],\n exports: [ToolTipDirective, ToolTipComponent],\n entryComponents: [ToolTipComponent]\n})\nexport class ToolTipModule {\n static forRoot(): ModuleWithProviders<ToolTipModule> {\n return { ngModule: ToolTipModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mis-crystal-design-system",
3
- "version": "4.0.46-test-1",
3
+ "version": "4.0.48",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "*",
6
6
  "@angular/core": "*",
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"ToolTipDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":8,"character":1},"arguments":[{"selector":"[misToolTip]"}]}],"members":{"showOnHover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"showToolTip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"text":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"alignText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"onMouseEnter":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":34,"character":3},"arguments":["mouseenter"]}]}],"onMouseLeave":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":37,"character":3},"arguments":["mouseleave"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":41,"character":31},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"Overlay","line":41,"character":60},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":41,"character":95}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"displayToolTip":[{"__symbolic":"method"}],"positionTooltip":[{"__symbolic":"method"}],"hideToolTip":[{"__symbolic":"method"}]}},"ToolTipComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"mis-tooltip","template":"<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0\" #container>\n <div id=\"tooltip\">\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n","styles":["#tooltip-container{position:absolute;z-index:1}#tooltip{position:relative;display:block;padding:8px 12px;border-radius:8px;color:#fff;background:#181f33;font-family:Lato,sans-serif;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px}#tooltip-text{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#arrow{position:absolute;height:12px;width:12px;background:#181f33;z-index:1}.arrow-top{bottom:-6px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%) rotate(-45deg);-webkit-transform:translateX(-50%) rotate(-45deg)}.arrow-bottom{top:-6px}.arrow-left{right:-6px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%) rotate(-45deg);-webkit-transform:translateY(-50%) rotate(-45deg)}.arrow-right{left:-6px}"]}]}],"members":{"container":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":13,"character":3},"arguments":["container"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}]}},"ToolTipModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ToolTipDirective"},{"__symbolic":"reference","name":"ToolTipComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":12},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":8,"character":26}],"exports":[{"__symbolic":"reference","name":"ToolTipDirective"},{"__symbolic":"reference","name":"ToolTipComponent"}],"entryComponents":[{"__symbolic":"reference","name":"ToolTipComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"ToolTipModule"},"providers":[]}}}},"ITooltipPositions":{"__symbolic":"interface"}},"origins":{"ToolTipDirective":"./tooltip.directive","ToolTipComponent":"./tooltip-container/tooltip.component","ToolTipModule":"./tooltip.module","ITooltipPositions":"./models/tooltip.model"},"importAs":"mis-crystal-design-system/tooltip"}
1
+ {"__symbolic":"module","version":4,"metadata":{"ToolTipDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":8,"character":1},"arguments":[{"selector":"[misToolTip]"}]}],"members":{"showOnHover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"showToolTip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"text":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"alignText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"tooltipTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"onMouseEnter":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":38,"character":3},"arguments":["mouseenter"]}]}],"onMouseLeave":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":41,"character":3},"arguments":["mouseleave"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"Overlay","line":45,"character":60},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":45,"character":95}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"displayToolTip":[{"__symbolic":"method"}],"positionTooltip":[{"__symbolic":"method"}],"hideToolTip":[{"__symbolic":"method"}]}},"ToolTipComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"mis-tooltip","template":"<div id=\"tooltip-container\" *ngIf=\"toolTipText.length > 0 || tooltipTemplate\" #container>\n <div id=\"tooltip\">\n <div *ngIf=\"tooltipTemplate; else tooltipText\">\n <ng-container *ngTemplateOutlet=\"tooltipTemplate\"></ng-container>\n </div>\n\n <ng-template #tooltipText>\n <div id=\"tooltip-text\" [innerHTML]=\"toolTipText\" \n [ngStyle]=\"{'text-align' : toolTipTextAlignment ? toolTipTextAlignment : '' }\"></div>\n </ng-template>\n\n <span\n id=\"arrow\"\n [ngClass]=\"{\n 'arrow-left': toolTipPosition === 'left',\n 'arrow-right': toolTipPosition === 'right',\n 'arrow-top': toolTipPosition === 'top',\n 'arrow-bottom': toolTipPosition === 'bottom'\n }\"\n ></span>\n </div>\n</div>\n","styles":["#tooltip-container{position:absolute;z-index:1}#tooltip{position:relative;display:block;padding:8px 12px;border-radius:8px;color:#fff;background:#181f33;font-family:Lato,sans-serif;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px}#tooltip-text{width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#arrow{position:absolute;height:12px;width:12px;background:#181f33;z-index:1}.arrow-top{bottom:-6px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%) rotate(-45deg);-webkit-transform:translateX(-50%) rotate(-45deg)}.arrow-bottom{top:-6px}.arrow-left{right:-6px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%) rotate(-45deg);-webkit-transform:translateY(-50%) rotate(-45deg)}.arrow-right{left:-6px}"]}]}],"members":{"container":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":14,"character":3},"arguments":["container"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}]}},"ToolTipModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ToolTipDirective"},{"__symbolic":"reference","name":"ToolTipComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":12},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":8,"character":26}],"exports":[{"__symbolic":"reference","name":"ToolTipDirective"},{"__symbolic":"reference","name":"ToolTipComponent"}],"entryComponents":[{"__symbolic":"reference","name":"ToolTipComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"ToolTipModule"},"providers":[]}}}},"ITooltipPositions":{"__symbolic":"interface"}},"origins":{"ToolTipDirective":"./tooltip.directive","ToolTipComponent":"./tooltip-container/tooltip.component","ToolTipModule":"./tooltip.module","ITooltipPositions":"./models/tooltip.model"},"importAs":"mis-crystal-design-system/tooltip"}
@@ -1,9 +1,10 @@
1
- import { AfterViewInit, ElementRef, OnInit } from "@angular/core";
1
+ import { AfterViewInit, ElementRef, OnInit, TemplateRef } from "@angular/core";
2
2
  import { ITooltipPositions } from "../models/tooltip.model";
3
3
  export declare class ToolTipComponent implements OnInit, AfterViewInit {
4
4
  toolTipText: string;
5
5
  toolTipPosition: ITooltipPositions;
6
6
  toolTipTextAlignment: string;
7
+ tooltipTemplate: TemplateRef<any>;
7
8
  container: ElementRef;
8
9
  constructor();
9
10
  ngOnInit(): void;
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, ElementRef, OnInit, ViewContainerRef } from "@angular/core";
1
+ import { AfterViewInit, ElementRef, OnInit, TemplateRef, ViewContainerRef } from "@angular/core";
2
2
  import { Overlay } from "@angular/cdk/overlay";
3
3
  import { ITooltipPositions } from "./models/tooltip.model";
4
4
  export declare class ToolTipDirective implements OnInit, AfterViewInit {
@@ -10,11 +10,13 @@ export declare class ToolTipDirective implements OnInit, AfterViewInit {
10
10
  toolTipTextAlignment: string;
11
11
  toolTipPosition: ITooltipPositions;
12
12
  private overlayRef;
13
+ private templateRef;
13
14
  showOnHover: boolean;
14
15
  set showToolTip(value: boolean);
15
16
  set text(value: string);
16
17
  set position(value: ITooltipPositions);
17
18
  set alignText(value: string);
19
+ set tooltipTemplate(value: TemplateRef<any>);
18
20
  onMouseEnter(): void;
19
21
  onMouseLeave(): void;
20
22
  constructor(element: ElementRef, overlay: Overlay, viewContainerRef: ViewContainerRef);