mis-crystal-design-system 4.0.19 → 4.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/bundles/mis-crystal-design-system-mobile-filter.umd.js +85 -0
  2. package/bundles/mis-crystal-design-system-mobile-filter.umd.js.map +1 -0
  3. package/bundles/mis-crystal-design-system-mobile-filter.umd.min.js +2 -0
  4. package/bundles/mis-crystal-design-system-mobile-filter.umd.min.js.map +1 -0
  5. package/bundles/mis-crystal-design-system-table.umd.js +1 -1
  6. package/bundles/mis-crystal-design-system-table.umd.js.map +1 -1
  7. package/bundles/mis-crystal-design-system-table.umd.min.js +1 -1
  8. package/bundles/mis-crystal-design-system-table.umd.min.js.map +1 -1
  9. package/bundles/mis-crystal-design-system-timepicker.umd.js +23 -20
  10. package/bundles/mis-crystal-design-system-timepicker.umd.js.map +1 -1
  11. package/bundles/mis-crystal-design-system-timepicker.umd.min.js +2 -2
  12. package/bundles/mis-crystal-design-system-timepicker.umd.min.js.map +1 -1
  13. package/esm2015/mobile-filter/index.js +2 -0
  14. package/esm2015/mobile-filter/mis-crystal-design-system-mobile-filter.js +5 -0
  15. package/esm2015/mobile-filter/mobile-filter.component.js +51 -0
  16. package/esm2015/mobile-filter/mobile-filter.module.js +15 -0
  17. package/esm2015/mobile-filter/public_api.js +3 -0
  18. package/esm2015/table/table.component.js +2 -2
  19. package/esm2015/timepicker/timepicker.component.js +21 -17
  20. package/fesm2015/mis-crystal-design-system-mobile-filter.js +71 -0
  21. package/fesm2015/mis-crystal-design-system-mobile-filter.js.map +1 -0
  22. package/fesm2015/mis-crystal-design-system-table.js +1 -1
  23. package/fesm2015/mis-crystal-design-system-table.js.map +1 -1
  24. package/fesm2015/mis-crystal-design-system-timepicker.js +20 -17
  25. package/fesm2015/mis-crystal-design-system-timepicker.js.map +1 -1
  26. package/mobile-filter/index.d.ts +1 -0
  27. package/mobile-filter/mis-crystal-design-system-mobile-filter.d.ts +4 -0
  28. package/mobile-filter/mis-crystal-design-system-mobile-filter.metadata.json +1 -0
  29. package/mobile-filter/mobile-filter.component.d.ts +30 -0
  30. package/mobile-filter/mobile-filter.module.d.ts +2 -0
  31. package/mobile-filter/package.json +11 -0
  32. package/mobile-filter/public_api.d.ts +2 -0
  33. package/package.json +1 -1
  34. package/timepicker/mis-crystal-design-system-timepicker.metadata.json +1 -1
  35. package/timepicker/timepicker.component.d.ts +2 -0
@@ -1,4 +1,4 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("moment-timezone"),require("@angular/cdk/overlay"),require("@angular/cdk/portal"),require("@angular/common"),require("@angular/forms"),require("mis-crystal-design-system/tooltip")):"function"==typeof define&&define.amd?define("mis-crystal-design-system/timepicker",["exports","@angular/core","moment-timezone","@angular/cdk/overlay","@angular/cdk/portal","@angular/common","@angular/forms","mis-crystal-design-system/tooltip"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self)["mis-crystal-design-system"]=t["mis-crystal-design-system"]||{},t["mis-crystal-design-system"].timepicker={}),t.ng.core,t.moment,t.ng.cdk.overlay,t.ng.cdk.portal,t.ng.common,t.ng.forms,t["mis-crystal-design-system"].tooltip)}(this,(function(t,e,i,n,o,r,s,a){"use strict";function l(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(i){if("default"!==i){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}})),e.default=t,Object.freeze(e)}var h=l(i);
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("moment-timezone"),require("@angular/cdk/overlay"),require("@angular/cdk/portal"),require("mis-crystal-design-system/tooltip"),require("@angular/common"),require("@angular/forms")):"function"==typeof define&&define.amd?define("mis-crystal-design-system/timepicker",["exports","@angular/core","moment-timezone","@angular/cdk/overlay","@angular/cdk/portal","mis-crystal-design-system/tooltip","@angular/common","@angular/forms"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self)["mis-crystal-design-system"]=t["mis-crystal-design-system"]||{},t["mis-crystal-design-system"].timepicker={}),t.ng.core,t.moment,t.ng.cdk.overlay,t.ng.cdk.portal,t["mis-crystal-design-system"].tooltip,t.ng.common,t.ng.forms)}(this,(function(t,e,i,n,o,r,s,a){"use strict";function l(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(i){if("default"!==i){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}})),e.default=t,Object.freeze(e)}var h=l(i);
2
2
  /*! *****************************************************************************
3
3
  Copyright (c) Microsoft Corporation.
4
4
 
@@ -12,5 +12,5 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */Object.create;function p(t,e){var i="function"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,o,r=i.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=r.next()).done;)s.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(o)throw o.error}}return s}function m(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(p(arguments[e]));return t}Object.create;var c=function(){function t(t,i,n){this.templateRef=t,this.overlay=i,this.viewContainerRef=n,this.openStatus=!1,this.statusEmitter=new e.EventEmitter}return Object.defineProperty(t.prototype,"createOverlayOnInput",{set:function(t){this.openStatus=t,this.originEl&&this.openStatus&&this.createOverlay(this.originEl)},enumerable:!1,configurable:!0}),t.prototype.createOverlay=function(t){var e=this,i=[new n.ConnectionPositionPair({originX:"start",originY:"bottom"},{overlayX:"start",overlayY:"top"},0,4),new n.ConnectionPositionPair({originX:"end",originY:"bottom"},{overlayX:"end",overlayY:"top"},0,4)],r=new n.OverlayConfig({hasBackdrop:!0,backdropClass:"cdk-overlay-transparent-backdrop",positionStrategy:this.overlay.position().flexibleConnectedTo(t).withPositions(m(i)).withPush(!0)});this.overlayRef=this.overlay.create(r);var s=new o.TemplatePortal(this.templateRef,this.viewContainerRef);this.overlayRef.attach(s),this.overlayRef.backdropClick().subscribe((function(t){e.openStatus=!1,e.statusEmitter.emit(!1),e.overlayRef.detach()}))},t.prototype.destroyOverlay=function(){this.overlayRef.detach()},t}();c.decorators=[{type:e.Directive,args:[{selector:"[libTimepicker]"}]}],c.ctorParameters=function(){return[{type:e.TemplateRef},{type:n.Overlay},{type:e.ViewContainerRef}]},c.propDecorators={originEl:[{type:e.Input,args:["originEl"]}],statusEmitter:[{type:e.Output}],createOverlayOnInput:[{type:e.Input,args:["openStatus"]}]};var d=function(){function t(){this.openStatus=!1,this.isHighlighted=0,this.isInvalid=!1,this.timeIntervals=[],this.shouldScroll=!1,this.userInputFlag=!1,this.givenTimeFlag=!0,this.clockFormat=12,this.timezone="Asia/Kolkata",this.height="max-content",this.inputWidth="100px",this.interval=15,this.dateAsEpoch=h().valueOf(),this.rangeValidity=!0,this.showTooltip=!0,this.triggerChange=!0,this.timeEmitter=new e.EventEmitter}return Object.defineProperty(t.prototype,"timeIntervalRefs",{set:function(t){t.forEach((function(t){if("highlight"===t.nativeElement.classList[0]){var e=t.nativeElement;setTimeout((function(){return e.scrollIntoView({block:"center"})}))}}))},enumerable:!1,configurable:!0}),t.prototype.ngOnInit=function(){if(!this.givenTime&&!this.minTime){this.chosenTime=h(this.firstInterval).format(this.timeFormat);var t=this.getMoment(this.chosenTime);this.emitTime({valid:!this.isInvalid,time:this.chosenTime,epoch:t.valueOf()})}},t.prototype.ngOnChanges=function(){if(this.timeFormat=12===this.clockFormat?"hh:mm a":"HH:mm",i.tz.setDefault(this.timezone),this.timeFormat){var t=this.getMoment(this.chosenTime);this.firstInterval>=t.valueOf()&&this.rangeValidity&&!this.userInputFlag&&(this.chosenTime=h(this.firstInterval).format(this.timeFormat),t=this.getMoment(this.chosenTime)),(this.givenTimeFlag&&this.givenTime||this.minTime)&&(this.chosenTime=h(this.minTime||this.givenTime).format(this.timeFormat)),t=this.getMoment(this.chosenTime),this.userInputFlag||this.populateDropdown(),this.userInputFlag=!1,this.chosenTime&&(this.isInvalid=!this.checkTimeValidity(this.chosenTime.trim()),this.emitTime({valid:!this.isInvalid,time:this.chosenTime,epoch:t.valueOf()}),this.calculateClosestInterval(this.chosenTime))}},t.prototype.emitTime=function(t){this.timeEmitter.emit(t)},t.prototype.getMoment=function(t){return h(h(this.dateAsEpoch).format("DD-MM-YYYY")+" "+t,"'DD-MM-YYYY' "+this.timeFormat)},t.prototype.closeDropdown=function(){this.userInputFlag=!1,this.openStatus=!1,this.timepickerDirective&&this.timepickerDirective.destroyOverlay()},t.prototype.openDropdown=function(){this.openStatus=!0},t.prototype.checkTimeValidity=function(t){var e=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]$/,i=this.getMoment(t);return this.minTime||this.givenTime||this.firstInterval&&h(this.firstInterval).format(this.timeFormat).valueOf()===h().startOf("d").format(this.timeFormat).valueOf()?!!t.match(e):!!(t.match(e)&&i.diff(h(),"m")>=0)},t.prototype.onTimeSelect=function(t){this.isInvalid=!this.checkTimeValidity(t.trim()),this.isInvalid||(this.chosenTime=t,this.calculateClosestInterval(this.chosenTime));var e=this.getMoment(t);this.emitTime({valid:!this.isInvalid,time:t,epoch:e.valueOf()}),this.openStatus=!1,this.timepickerDirective&&this.timepickerDirective.destroyOverlay()},t.prototype.onTimeChange=function(t){this.isInvalid=!this.checkTimeValidity(t.trim()),this.isInvalid||(this.userInputFlag=!0,this.openStatus=!1,this.timepickerDirective&&this.timepickerDirective.destroyOverlay(),this.calculateClosestInterval(t));var e=this.getMoment(t);this.emitTime({valid:!this.isInvalid,time:t,epoch:e.valueOf()})},t.prototype.calculateClosestInterval=function(t){var e=this,i=60*this.interval*1e3,n=h(this.dateAsEpoch).format("DD-MM-YYYY"),o=h(n+" "+t,"DD-MM-YYYY "+this.timeFormat).valueOf(),r=o%i,s=r>=i/2?o+(i-r):o-r;h(o).format(this.timeFormat)===h(this.dateAsEpoch).endOf("d").format(this.timeFormat)?this.isHighlighted=this.timeIntervals.lastIndexOf(this.timeIntervals.slice(-1)[0]):this.timeIntervals.forEach((function(t,i,o){h(n+" "+t,"DD-MM-YYYY "+e.timeFormat).valueOf()===s&&(e.isHighlighted=i),1===o.length&&(e.isHighlighted=0)}))},t.prototype.populateDropdown=function(){if(this.timeIntervals=[],!this.firstInterval)if(h(this.dateAsEpoch).format("DD-MM-YYYY")!==h().format("DD-MM-YYYY")||this.minTime)if(this.minTime){t=this.interval-h(this.minTime).minutes()%this.interval;this.firstInterval=h(this.minTime).add(t,"m").valueOf()}else this.firstInterval=h().startOf("d").valueOf();else{var t=this.interval-h().minutes()%this.interval;this.firstInterval=h().add(t,"m").valueOf()}this.givenTime&&this.givenTimeFlag&&(this.firstInterval=h(this.givenTime).startOf("d").valueOf(),this.givenTimeFlag=!1);for(var e=h(this.dateAsEpoch).format("DD-MM-YYYY"),i=h(this.firstInterval).format(this.timeFormat),n=h(e+" "+i,"DD-MM-YYYY "+this.timeFormat),o=h(""+e,"DD-MM-YYYY").endOf("d");n.valueOf()<o.valueOf();)this.timeIntervals.push(n.format(this.timeFormat)),n.add(this.interval,"m");0===this.timeIntervals.length&&(this.chosenTime=h().endOf("d").format(this.timeFormat),this.timeIntervals.push(h().endOf("d").format(this.timeFormat)))},t.prototype.ngOnDestroy=function(){this.showTooltip=!1,this.isInvalid=!1},t}();d.decorators=[{type:e.Component,args:[{selector:"mis-timepicker",template:'<div class="timepicker-container" [ngStyle]="{ height: height }">\n <input\n type="text"\n [(ngModel)]="chosenTime"\n (ngModelChange)="onTimeChange(chosenTime)"\n [ngClass]="{ invalid: isInvalid || !rangeValidity }"\n [ngStyle]="{ width: inputWidth }"\n (click)="openDropdown()"\n misToolTip\n [showToolTip]="showTooltip && (isInvalid || !rangeValidity)"\n [text]="\'Invalid Time\'"\n [position]="\'top\'"\n [showOnHover]="false"\n #input\n cdkOverlayOrigin\n class="h7"\n />\n\n <ng-template #dropdownContainer libDropdownScroll libTimepicker [originEl]="input" [openStatus]="openStatus" (statusEmitter)="closeDropdown()">\n <div *ngIf="openStatus" class="timepicker-dropdown" [ngStyle]="{ width: dropdownWidth || inputWidth }">\n <ul #dropdown>\n <li #timeInterval (click)="onTimeSelect(interval)" *ngFor="let interval of timeIntervals; index as i" [ngClass]="{ highlight: i === isHighlighted }">\n {{ interval }}\n <div class="ic-ui-check-24 selected-icon" *ngIf="interval === chosenTime"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n',styles:[".h1{font-size:40px;line-height:48px}.h1,.h2{font-weight:400;letter-spacing:0}.h2{font-size:32px;line-height:40px}.h3{font-size:28px;line-height:36px}.h3,.h4{font-weight:400;letter-spacing:0}.h4{font-size:24px;line-height:32px}.h5-b{font-weight:700;letter-spacing:.25px}.h5,.h5-b{font-size:20px;line-height:28px}.h5{font-weight:400;letter-spacing:.15px}.h6-b{font-weight:700}.h6,.h6-b{font-size:16px;letter-spacing:0;line-height:24px}.h6,.p{font-weight:400}.p{font-size:16px;letter-spacing:0;line-height:180%}.h7-b{font-weight:700;letter-spacing:.25px}.h7,.h7-b{font-size:14px;line-height:20px}.h7{font-weight:400;letter-spacing:.2px}.h8-b{font-weight:700;letter-spacing:.25px}.h8,.h8-b{font-size:12px;line-height:18px}.h8{letter-spacing:.2px}.h8,.h9{font-weight:400}.h9{font-size:10px;letter-spacing:0;line-height:15px}.btn-lg-b{font-weight:700;letter-spacing:.5px}.btn-lg,.btn-lg-b{font-size:16px;line-height:24px}.btn-lg{font-weight:400;letter-spacing:.2px}.btn-sm{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link{font-size:16px;line-height:24px}.btn-link,.display-1{font-weight:400;letter-spacing:0}.display-1{font-size:48px;line-height:56px}.display-2{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}*{box-sizing:border-box;font-family:Lato}.timepicker-container{display:inline-block;position:relative}input{text-align:center;border:none;border-bottom:1px solid #e0e0e0;outline:none;height:100%;width:100px;padding:4px 16px}input:hover{background:#f5f7fc}input:active,input:focus{background:#e6ebf7;border-bottom:1px solid #0937b2}.timepicker-dropdown{position:absolute;top:calc(100% + 4px);left:0;max-height:200px;overflow-y:auto;border:1px solid #e0e0e0;box-shadow:0 12px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.12);border-radius:4px;padding:8px;background:#fff}.timepicker-dropdown::-webkit-scrollbar{display:none}.timepicker-dropdown ul{margin:0;padding:0}.timepicker-dropdown li{text-align:start;list-style:none;padding:6px 12px;cursor:pointer;font-size:14px;color:#181f33;display:flex;justify-content:space-between;align-items:center}.timepicker-dropdown li:hover{background:#f5f7fc;border-radius:6px}.timepicker-dropdown li .selected-icon{font-weight:900}.highlight{background-color:#f5f7fc;border-radius:6px}.invalid{background:#fae1ea!important;border-bottom:1px solid #b00020!important}"]}]}],d.ctorParameters=function(){return[]},d.propDecorators={clockFormat:[{type:e.Input}],timezone:[{type:e.Input}],height:[{type:e.Input}],inputWidth:[{type:e.Input}],dropdownWidth:[{type:e.Input}],interval:[{type:e.Input}],dateAsEpoch:[{type:e.Input}],firstInterval:[{type:e.Input}],rangeValidity:[{type:e.Input}],showTooltip:[{type:e.Input}],givenTime:[{type:e.Input}],minTime:[{type:e.Input}],triggerChange:[{type:e.Input}],timeEmitter:[{type:e.Output}],input:[{type:e.ViewChild,args:["input",{static:!0}]}],timepickerDirective:[{type:e.ViewChild,args:[c]}],timeIntervalRefs:[{type:e.ViewChildren,args:["timeInterval"]}]};var f=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t}();f.decorators=[{type:e.NgModule,args:[{declarations:[d,c],imports:[r.CommonModule,s.FormsModule,a.ToolTipModule,n.OverlayModule],exports:[d]}]}],t.TimePickerComponent=d,t.TimePickerModule=f,t.ɵa=c,Object.defineProperty(t,"__esModule",{value:!0})}));
15
+ ***************************************************************************** */Object.create;function p(t,e){var i="function"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,o,r=i.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=r.next()).done;)s.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(o)throw o.error}}return s}function m(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(p(arguments[e]));return t}Object.create;var c=function(){function t(t,i,n){this.templateRef=t,this.overlay=i,this.viewContainerRef=n,this.openStatus=!1,this.statusEmitter=new e.EventEmitter}return Object.defineProperty(t.prototype,"createOverlayOnInput",{set:function(t){this.openStatus=t,this.originEl&&this.openStatus&&this.createOverlay(this.originEl)},enumerable:!1,configurable:!0}),t.prototype.createOverlay=function(t){var e=this,i=[new n.ConnectionPositionPair({originX:"start",originY:"bottom"},{overlayX:"start",overlayY:"top"},0,4),new n.ConnectionPositionPair({originX:"end",originY:"bottom"},{overlayX:"end",overlayY:"top"},0,4)],r=new n.OverlayConfig({hasBackdrop:!0,backdropClass:"cdk-overlay-transparent-backdrop",positionStrategy:this.overlay.position().flexibleConnectedTo(t).withPositions(m(i)).withPush(!0)});this.overlayRef=this.overlay.create(r);var s=new o.TemplatePortal(this.templateRef,this.viewContainerRef);this.overlayRef.attach(s),this.overlayRef.backdropClick().subscribe((function(t){e.openStatus=!1,e.statusEmitter.emit(!1),e.overlayRef.detach()}))},t.prototype.destroyOverlay=function(){this.overlayRef.detach()},t}();c.decorators=[{type:e.Directive,args:[{selector:"[libTimepicker]"}]}],c.ctorParameters=function(){return[{type:e.TemplateRef},{type:n.Overlay},{type:e.ViewContainerRef}]},c.propDecorators={originEl:[{type:e.Input,args:["originEl"]}],statusEmitter:[{type:e.Output}],createOverlayOnInput:[{type:e.Input,args:["openStatus"]}]};var d=function(){function t(){this.openStatus=!1,this.isHighlighted=0,this.isInvalid=!1,this.timeIntervals=[],this.shouldScroll=!1,this.userInputFlag=!1,this.givenTimeFlag=!0,this.clockFormat=12,this.timezone="Asia/Kolkata",this.height="max-content",this.inputWidth="100px",this.interval=15,this.dateAsEpoch=h().valueOf(),this.rangeValidity=!0,this.showTooltip=!0,this.triggerChange=!0,this.timeEmitter=new e.EventEmitter}return Object.defineProperty(t.prototype,"timeIntervalRefs",{set:function(t){t.forEach((function(t){if("highlight"===t.nativeElement.classList[0]){var e=t.nativeElement;setTimeout((function(){return e.scrollIntoView({block:"center"})}))}}))},enumerable:!1,configurable:!0}),t.prototype.ngOnInit=function(){if(!this.givenTime&&!this.minTime){this.chosenTime=h(this.firstInterval).format(this.timeFormat);var t=this.getMoment(this.chosenTime);this.emitTime({valid:!this.isInvalid,time:this.chosenTime,epoch:t.valueOf()})}},t.prototype.ngOnChanges=function(){if(this.timeFormat=12===this.clockFormat?"hh:mm a":"HH:mm",i.tz.setDefault(this.timezone),this.timeFormat){var t=this.getMoment(this.chosenTime);this.firstInterval>=t.valueOf()&&this.rangeValidity&&!this.userInputFlag&&(this.chosenTime=h(this.firstInterval).format(this.timeFormat),t=this.getMoment(this.chosenTime)),(this.givenTimeFlag&&this.givenTime||this.minTime)&&(this.chosenTime=h(this.minTime||this.givenTime).format(this.timeFormat)),t=this.getMoment(this.chosenTime),this.userInputFlag||this.populateDropdown(),this.userInputFlag=!1,this.chosenTime&&(this.isInvalid=!this.checkTimeValidity(this.chosenTime.trim()),this.emitTime({valid:!this.isInvalid,time:this.chosenTime,epoch:t.valueOf()}),this.calculateClosestInterval(this.chosenTime))}},t.prototype.emitTime=function(t){this.timeEmitter.emit(t)},t.prototype.getMoment=function(t){return h(h(this.dateAsEpoch).format("DD-MM-YYYY")+" "+t,"'DD-MM-YYYY' "+this.timeFormat)},t.prototype.closeDropdown=function(){this.userInputFlag=!1,this.openStatus=!1,this.timepickerDirective&&this.timepickerDirective.destroyOverlay()},t.prototype.openDropdown=function(){this.openStatus=!0},t.prototype.checkTimeValidity=function(t){var e=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]$/,i=this.getMoment(t);return this.minTime||this.givenTime||this.firstInterval&&h(this.firstInterval).format(this.timeFormat).valueOf()===h().startOf("d").format(this.timeFormat).valueOf()?!!t.match(e):!!(t.match(e)&&i.diff(h(),"m")>=0)},t.prototype.onTimeSelect=function(t){this.isInvalid=!this.checkTimeValidity(t.trim()),this.isInvalid||(this.chosenTime=t,this.calculateClosestInterval(this.chosenTime));var e=this.getMoment(t);this.emitTime({valid:!this.isInvalid,time:t,epoch:e.valueOf()}),this.openStatus=!1,this.timepickerDirective&&this.timepickerDirective.destroyOverlay()},t.prototype.onTimeChange=function(t){this.isInvalid=!this.checkTimeValidity(t.trim()),this.isInvalid||(this.userInputFlag=!0,this.openStatus=!1,this.timepickerDirective&&this.timepickerDirective.destroyOverlay(),this.calculateClosestInterval(t));var e=this.getMoment(t);this.emitTime({valid:!this.isInvalid,time:t,epoch:e.valueOf()})},t.prototype.calculateClosestInterval=function(t){var e,i=this,n=h(this.dateAsEpoch).format("DD-MM-YYYY"),o=h(n+" "+t,"DD-MM-YYYY "+this.timeFormat).valueOf(),r=this.interval-h(o).minutes()%this.interval;if(!this.minTime||this.givenTime)if(e=r>=this.interval/2?h(o).subtract(this.interval-r,"m").valueOf():h(o).add(r,"m").valueOf(),h(o).format(this.timeFormat)>h(this.dateAsEpoch).endOf("d").subtract(this.interval,"m").format(this.timeFormat))this.isHighlighted=this.timeIntervals.length-1;else{var s=h(e);this.isHighlighted=this.timeIntervals.findIndex((function(t){return h(n+" "+t,"DD-MM-YYYY "+i.timeFormat).isSame(s)}))}else this.isHighlighted=0},t.prototype.populateDropdown=function(){if(this.timeIntervals=[],!this.firstInterval)if(h(this.dateAsEpoch).format("DD-MM-YYYY")!==h().format("DD-MM-YYYY")||this.minTime)if(this.minTime){t=this.interval-h(this.minTime).minutes()%this.interval;this.firstInterval=h(this.minTime).add(t,"m").valueOf()}else this.firstInterval=h().startOf("d").valueOf();else{var t=this.interval-h().minutes()%this.interval;this.firstInterval=h().add(t,"m").valueOf()}this.givenTime&&this.givenTimeFlag&&(this.firstInterval=h(this.givenTime).startOf("d").valueOf(),this.givenTimeFlag=!1);for(var e=h(this.dateAsEpoch).format("DD-MM-YYYY"),i=h(this.firstInterval).format(this.timeFormat),n=h(e+" "+i,"DD-MM-YYYY "+this.timeFormat),o=h(""+e,"DD-MM-YYYY").endOf("d");n.valueOf()<o.valueOf();)this.timeIntervals.push(n.format(this.timeFormat)),n.add(this.interval,"m");0===this.timeIntervals.length&&(this.chosenTime=h().endOf("d").format(this.timeFormat),this.timeIntervals.push(h().endOf("d").format(this.timeFormat)))},t.prototype.ngOnDestroy=function(){this.tooltipDirective&&this.tooltipDirective.hideToolTip()},t}();d.decorators=[{type:e.Component,args:[{selector:"mis-timepicker",template:'<div class="timepicker-container" [ngStyle]="{ height: height }">\n <input\n type="text"\n [(ngModel)]="chosenTime"\n (ngModelChange)="onTimeChange(chosenTime)"\n [ngClass]="{ invalid: isInvalid || !rangeValidity }"\n [ngStyle]="{ width: inputWidth }"\n (click)="openDropdown()"\n misToolTip\n [showToolTip]="showTooltip && (isInvalid || !rangeValidity)"\n [text]="\'Invalid Time\'"\n [position]="\'top\'"\n [showOnHover]="false"\n #input\n cdkOverlayOrigin\n class="h7"\n />\n\n <ng-template #dropdownContainer libDropdownScroll libTimepicker [originEl]="input" [openStatus]="openStatus" (statusEmitter)="closeDropdown()">\n <div *ngIf="openStatus" class="timepicker-dropdown" [ngStyle]="{ width: dropdownWidth || inputWidth }">\n <ul #dropdown>\n <li #timeInterval (click)="onTimeSelect(interval)" *ngFor="let interval of timeIntervals; index as i" [ngClass]="{ highlight: i === isHighlighted }">\n {{ interval }}\n <div class="ic-ui-check-24 selected-icon" *ngIf="interval === chosenTime"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n',styles:[".h1{font-size:40px;line-height:48px}.h1,.h2{font-weight:400;letter-spacing:0}.h2{font-size:32px;line-height:40px}.h3{font-size:28px;line-height:36px}.h3,.h4{font-weight:400;letter-spacing:0}.h4{font-size:24px;line-height:32px}.h5-b{font-weight:700;letter-spacing:.25px}.h5,.h5-b{font-size:20px;line-height:28px}.h5{font-weight:400;letter-spacing:.15px}.h6-b{font-weight:700}.h6,.h6-b{font-size:16px;letter-spacing:0;line-height:24px}.h6,.p{font-weight:400}.p{font-size:16px;letter-spacing:0;line-height:180%}.h7-b{font-weight:700;letter-spacing:.25px}.h7,.h7-b{font-size:14px;line-height:20px}.h7{font-weight:400;letter-spacing:.2px}.h8-b{font-weight:700;letter-spacing:.25px}.h8,.h8-b{font-size:12px;line-height:18px}.h8{letter-spacing:.2px}.h8,.h9{font-weight:400}.h9{font-size:10px;letter-spacing:0;line-height:15px}.btn-lg-b{font-weight:700;letter-spacing:.5px}.btn-lg,.btn-lg-b{font-size:16px;line-height:24px}.btn-lg{font-weight:400;letter-spacing:.2px}.btn-sm{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link{font-size:16px;line-height:24px}.btn-link,.display-1{font-weight:400;letter-spacing:0}.display-1{font-size:48px;line-height:56px}.display-2{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}*{box-sizing:border-box;font-family:Lato}.timepicker-container{display:inline-block;position:relative}input{text-align:center;border:none;border-bottom:1px solid #e0e0e0;outline:none;height:100%;width:100px;padding:4px 16px}input:hover{background:#f5f7fc}input:active,input:focus{background:#e6ebf7;border-bottom:1px solid #0937b2}.timepicker-dropdown{position:absolute;top:calc(100% + 4px);left:0;max-height:200px;overflow-y:auto;border:1px solid #e0e0e0;box-shadow:0 12px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.12);border-radius:4px;padding:8px;background:#fff}.timepicker-dropdown::-webkit-scrollbar{display:none}.timepicker-dropdown ul{margin:0;padding:0}.timepicker-dropdown li{text-align:start;list-style:none;padding:6px 12px;cursor:pointer;font-size:14px;color:#181f33;display:flex;justify-content:space-between;align-items:center}.timepicker-dropdown li:hover{background:#f5f7fc;border-radius:6px}.timepicker-dropdown li .selected-icon{font-weight:900}.highlight{background-color:#f5f7fc;border-radius:6px}.invalid{background:#fae1ea!important;border-bottom:1px solid #b00020!important}"]}]}],d.ctorParameters=function(){return[]},d.propDecorators={clockFormat:[{type:e.Input}],timezone:[{type:e.Input}],height:[{type:e.Input}],inputWidth:[{type:e.Input}],dropdownWidth:[{type:e.Input}],interval:[{type:e.Input}],dateAsEpoch:[{type:e.Input}],firstInterval:[{type:e.Input}],rangeValidity:[{type:e.Input}],showTooltip:[{type:e.Input}],givenTime:[{type:e.Input}],minTime:[{type:e.Input}],triggerChange:[{type:e.Input}],timeEmitter:[{type:e.Output}],input:[{type:e.ViewChild,args:["input",{static:!0}]}],timepickerDirective:[{type:e.ViewChild,args:[c]}],tooltipDirective:[{type:e.ViewChild,args:[r.ToolTipDirective]}],timeIntervalRefs:[{type:e.ViewChildren,args:["timeInterval"]}]};var u=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t}();u.decorators=[{type:e.NgModule,args:[{declarations:[d,c],imports:[s.CommonModule,a.FormsModule,r.ToolTipModule,n.OverlayModule],exports:[d]}]}],t.TimePickerComponent=d,t.TimePickerModule=u,t.ɵa=c,Object.defineProperty(t,"__esModule",{value:!0})}));
16
16
  //# sourceMappingURL=mis-crystal-design-system-timepicker.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/mis-components/timepicker/timepicker.directive.ts","../../../projects/mis-components/timepicker/timepicker.component.ts","../../../projects/mis-components/timepicker/timepicker.module.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","__spread","arguments","length","concat","TimepickerDirective","templateRef","overlay","viewContainerRef","this","openStatus","statusEmitter","EventEmitter","defineProperty","prototype","originEl","createOverlay","origin","_this","positions","ConnectionPositionPair","originX","originY","overlayX","overlayY","overlayConfig","OverlayConfig","hasBackdrop","backdropClass","positionStrategy","position","flexibleConnectedTo","withPositions","withPush","overlayRef","dropdownPortal","TemplatePortal","attach","backdropClick","subscribe","resp","emit","detach","destroyOverlay","Directive","args","selector","TemplateRef","Overlay","ViewContainerRef","Input","Output","TimePickerComponent","isHighlighted","isInvalid","timeIntervals","shouldScroll","userInputFlag","givenTimeFlag","clockFormat","timezone","height","inputWidth","interval","dateAsEpoch","moment","valueOf","rangeValidity","showTooltip","triggerChange","timeEmitter","intervals","forEach","nativeElement","classList","highlighted_1","setTimeout","scrollIntoView","block","ngOnInit","givenTime","minTime","chosenTime","firstInterval","format","timeFormat","chosenTimeMoment","getMoment","emitTime","valid","time","epoch","ngOnChanges","moment.tz","setDefault","populateDropdown","checkTimeValidity","trim","calculateClosestInterval","data","closeDropdown","timepickerDirective","openDropdown","RE","timeMoment","startOf","match","diff","onTimeSelect","onTimeChange","intervalMS","chosenDate","currEpoch","offset","roundedEpoch","endOf","lastIndexOf","slice","index","array","minutes","add","dateAsString","intervalAsString","start","end","ngOnDestroy","Component","template","ViewChild","static","ViewChildren","TimePickerModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","FormsModule","ToolTipModule","OverlayModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Directive, Output, TemplateRef } from '@angular/core';\nimport { EventEmitter, Input, ViewContainerRef } from \"@angular/core\";\nimport { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\n\n@Directive({\n selector: '[libTimepicker]'\n})\nexport class TimepickerDirective {\n private openStatus: boolean = false;\n @Input('originEl') originEl : any;\n @Output() statusEmitter = new EventEmitter<boolean>(); \n\n @Input('openStatus') set createOverlayOnInput(openStatus){\n this.openStatus = openStatus;\n if(this.originEl && this.openStatus) this.createOverlay(this.originEl);\n }; \n private overlayRef!: OverlayRef;\n constructor(private templateRef: TemplateRef<Element>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n createOverlay(origin: any): void {\n const positions = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n positionStrategy: this.overlay\n .position()\n //connecting the dropdown overlay to the input element\n .flexibleConnectedTo(origin)\n .withPositions([...positions])\n .withPush(true)\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const dropdownPortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n this.overlayRef.attach(dropdownPortal);\n this.overlayRef.backdropClick().subscribe(resp => {\n this.openStatus = false;\n this.statusEmitter.emit(false);\n this.overlayRef.detach();\n });\n }\n\n destroyOverlay(){\n this.overlayRef.detach();\n }\n \n}\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewChildren } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITime } from \"./time.namespace\";\nimport { TimepickerDirective } from \"./timepicker.directive\";\n\n@Component({\n selector: \"mis-timepicker\",\n templateUrl: \"./timepicker.component.html\",\n styleUrls: [\"./timepicker.component.scss\"]\n})\nexport class TimePickerComponent implements OnInit, OnChanges, OnDestroy {\n currTime!: string;\n chosenTime: string;\n openStatus: boolean = false;\n isHighlighted: number = 0;\n isInvalid: boolean = false;\n timeIntervals: string[] = [];\n shouldScroll: boolean = false;\n userInputFlag: boolean = false;\n givenTimeFlag: boolean = true;\n\n @Input() clockFormat: number = 12;\n timeFormat!: string;\n\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() height: string = \"max-content\";\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() interval: number = 15;\n @Input() dateAsEpoch: number = moment().valueOf();\n @Input() firstInterval!: number;\n @Input() rangeValidity: boolean = true;\n @Input() showTooltip: boolean = true;\n @Input() givenTime: number;\n @Input() minTime?: number;\n @Input() triggerChange: boolean = true;\n\n @Output() timeEmitter = new EventEmitter<ITime>();\n @ViewChild(\"input\", { static: true }) input: ElementRef;\n @ViewChild(TimepickerDirective) timepickerDirective: TimepickerDirective;\n\n // gets all the li elements from the dropdown and scrolls to the highlighted element\n @ViewChildren(\"timeInterval\") set timeIntervalRefs(intervals) {\n intervals.forEach(interval => {\n if (interval.nativeElement.classList[0] === \"highlight\") {\n const highlighted = interval.nativeElement;\n setTimeout(() => highlighted.scrollIntoView({ block: \"center\" }));\n }\n });\n }\n\n constructor(){}\n ngOnInit(): void {\n if(!this.givenTime && !this.minTime) {\n this.chosenTime = moment(this.firstInterval).format(this.timeFormat);\n let chosenTimeMoment = this.getMoment(this.chosenTime);\n this.emitTime({\n valid: !this.isInvalid,\n time: this.chosenTime,\n epoch: chosenTimeMoment.valueOf()\n });\n }\n }\n\n ngOnChanges(): void {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n\n if (this.timeFormat) {\n let chosenTimeMoment = this.getMoment(this.chosenTime);\n \n // if the first interval is >= the chosen time\n // then only update the value of chosen time\n // else it remains the same\n if (this.firstInterval >= chosenTimeMoment.valueOf() && this.rangeValidity && !this.userInputFlag) {\n this.chosenTime = moment(this.firstInterval).format(this.timeFormat);\n chosenTimeMoment = this.getMoment(this.chosenTime)\n }\n\n if((this.givenTimeFlag && this.givenTime) || this.minTime ) {\n this.chosenTime = moment(this.minTime || this.givenTime).format(this.timeFormat);\n }\n chosenTimeMoment = this.getMoment(this.chosenTime)\n\n if (!this.userInputFlag) this.populateDropdown();\n this.userInputFlag = false;\n \n if(this.chosenTime) {\n this.isInvalid = !this.checkTimeValidity(this.chosenTime.trim());\n this.emitTime({\n valid: !this.isInvalid,\n time: this.chosenTime,\n epoch: chosenTimeMoment.valueOf()\n });\n this.calculateClosestInterval(this.chosenTime);\n }\n }\n }\n\n emitTime(data: ITime): void {\n this.timeEmitter.emit(data);\n }\n\n // function to get moment object when time is given in string\n getMoment(time: string){\n return moment(`${moment(this.dateAsEpoch).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n }\n\n closeDropdown() {\n this.userInputFlag = false;\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // toggle timepicker dropdown\n openDropdown(): void {\n this.openStatus = true;\n }\n\n checkTimeValidity(time: string): 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 = this.getMoment(time);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // or a time is already provided to the component to show\n // then we don't check its validity against the current time\n if (\n this.minTime || \n this.givenTime ||\n (this.firstInterval &&\n moment(this.firstInterval).format(this.timeFormat).valueOf() === moment().startOf(\"d\").format(this.timeFormat).valueOf())\n ) {\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 // update chosen time as soon as the user clicks on an interval\n onTimeSelect(time: string): void {\n this.isInvalid = !this.checkTimeValidity(time.trim());\n if (!this.isInvalid) {\n this.chosenTime = time;\n this.calculateClosestInterval(this.chosenTime);\n }\n\n const timeMoment = this.getMoment(time);\n this.emitTime({\n valid: !this.isInvalid,\n time: time,\n epoch: timeMoment.valueOf() \n });\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // checks validity of time on input change and calculates the closest interval\n onTimeChange(time: string): void {\n this.isInvalid = !this.checkTimeValidity(time.trim());\n\n if (!this.isInvalid) {\n this.userInputFlag = true;\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n this.calculateClosestInterval(time);\n }\n const timeMoment = this.getMoment(time);\n this.emitTime({\n valid: !this.isInvalid,\n time: time,\n epoch: timeMoment.valueOf() \n });\n }\n\n calculateClosestInterval(time: string): void {\n const intervalMS = this.interval * 60 * 1000;\n const chosenDate = moment(this.dateAsEpoch).format(\"DD-MM-YYYY\");\n\n // converting time passed as parameter to moment object and adding date\n const parsedTimeWithDate = moment(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`);\n\n // converting moment object to epoch so that calculations for rounding off are easier to do\n const currEpoch = parsedTimeWithDate.valueOf();\n\n const offset = currEpoch % intervalMS;\n const roundedEpoch = offset >= intervalMS / 2 ? currEpoch + (intervalMS - offset) : currEpoch - offset;\n\n // finding the index of element that needs to be highlighted\n if(moment(currEpoch).format(this.timeFormat) === moment(this.dateAsEpoch).endOf('d').format(this.timeFormat)){\n this.isHighlighted = this.timeIntervals.lastIndexOf(this.timeIntervals.slice(-1)[0]);\n } else{\n this.timeIntervals.forEach((interval, index, array) => {\n const intervalObj = moment(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`);\n if (intervalObj.valueOf() === roundedEpoch) this.isHighlighted = index;\n if (array.length === 1) this.isHighlighted = 0;\n });\n }\n }\n\n // populates the dropdown according to the first interval received\n populateDropdown(): void {\n this.timeIntervals = [];\n\n // if picker is used as an individual component\n if (!this.firstInterval) {\n // firstInterval is initialised according to the current time\n // if the date is same as the current date\n if (moment(this.dateAsEpoch).format(\"DD-MM-YYYY\") === moment().format(\"DD-MM-YYYY\") && !this.minTime) {\n const offset = this.interval - (moment().minutes() % this.interval);\n this.firstInterval = moment().add(offset, \"m\").valueOf();\n }\n // if minimum time to show is provided\n else if(this.minTime){\n const offset = this.interval - (moment(this.minTime).minutes() % this.interval);\n this.firstInterval = moment(this.minTime).add(offset, \"m\").valueOf();\n }\n // else the firstInterval is initialised as start of day\n else {\n this.firstInterval = moment().startOf(\"d\").valueOf();\n }\n }\n\n if(this.givenTime && this.givenTimeFlag){\n this.firstInterval = moment(this.givenTime).startOf('d').valueOf();\n this.givenTimeFlag = false;\n }\n\n const dateAsString = moment(this.dateAsEpoch).format('DD-MM-YYYY');\n const intervalAsString = moment(this.firstInterval).format(this.timeFormat);\n const start = moment(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`);\n const end = moment(`${dateAsString}`, 'DD-MM-YYYY').endOf('d');\n\n \n while (start.valueOf() < end.valueOf()) {\n this.timeIntervals.push(start.format(this.timeFormat));\n start.add(this.interval, \"m\");\n }\n\n // if the start time is equal to the interval just before midnight\n // and the start date = end date\n // push 11:59pm only\n if (this.timeIntervals.length === 0) {\n this.chosenTime = moment().endOf(\"d\").format(this.timeFormat);\n this.timeIntervals.push(moment().endOf(\"d\").format(this.timeFormat));\n }\n }\n\n ngOnDestroy() {\n this.showTooltip = false;\n this.isInvalid = false;\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimePickerComponent } from \"./timepicker.component\";\nimport { ToolTipModule } from \"mis-crystal-design-system/tooltip\";\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TimepickerDirective } from './timepicker.directive';\n\n@NgModule({\n declarations: [TimePickerComponent, TimepickerDirective],\n imports: [CommonModule, FormsModule, ToolTipModule, OverlayModule],\n exports: [TimePickerComponent]\n})\nexport class TimePickerModule {\n static forRoot(): ModuleWithProviders<TimePickerModule> {\n return { ngModule: TimePickerModule, providers: [] };\n }\n}"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/mis-components/timepicker/timepicker.directive.ts","../../../projects/mis-components/timepicker/timepicker.component.ts","../../../projects/mis-components/timepicker/timepicker.module.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","__spread","arguments","length","concat","TimepickerDirective","templateRef","overlay","viewContainerRef","this","openStatus","statusEmitter","EventEmitter","defineProperty","prototype","originEl","createOverlay","origin","_this","positions","ConnectionPositionPair","originX","originY","overlayX","overlayY","overlayConfig","OverlayConfig","hasBackdrop","backdropClass","positionStrategy","position","flexibleConnectedTo","withPositions","withPush","overlayRef","dropdownPortal","TemplatePortal","attach","backdropClick","subscribe","resp","emit","detach","destroyOverlay","Directive","args","selector","TemplateRef","Overlay","ViewContainerRef","Input","Output","TimePickerComponent","isHighlighted","isInvalid","timeIntervals","shouldScroll","userInputFlag","givenTimeFlag","clockFormat","timezone","height","inputWidth","interval","dateAsEpoch","moment","valueOf","rangeValidity","showTooltip","triggerChange","timeEmitter","intervals","forEach","nativeElement","classList","highlighted_1","setTimeout","scrollIntoView","block","ngOnInit","givenTime","minTime","chosenTime","firstInterval","format","timeFormat","chosenTimeMoment","getMoment","emitTime","valid","time","epoch","ngOnChanges","moment.tz","setDefault","populateDropdown","checkTimeValidity","trim","calculateClosestInterval","data","closeDropdown","timepickerDirective","openDropdown","RE","timeMoment","startOf","match","diff","onTimeSelect","onTimeChange","roundedEpoch","chosenDate","chosenTimeEpoch","offset","minutes","subtract","add","endOf","roundedEpochMoment_1","findIndex","isSame","dateAsString","intervalAsString","start","end","ngOnDestroy","tooltipDirective","hideToolTip","Component","template","ViewChild","static","ToolTipDirective","ViewChildren","TimePickerModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","FormsModule","ToolTipModule","OverlayModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Directive, Output, TemplateRef } from '@angular/core';\nimport { EventEmitter, Input, ViewContainerRef } from \"@angular/core\";\nimport { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\n\n@Directive({\n selector: '[libTimepicker]'\n})\nexport class TimepickerDirective {\n private openStatus: boolean = false;\n @Input('originEl') originEl : any;\n @Output() statusEmitter = new EventEmitter<boolean>(); \n\n @Input('openStatus') set createOverlayOnInput(openStatus){\n this.openStatus = openStatus;\n if(this.originEl && this.openStatus) this.createOverlay(this.originEl);\n }; \n private overlayRef!: OverlayRef;\n constructor(private templateRef: TemplateRef<Element>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n createOverlay(origin: any): void {\n const positions = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n positionStrategy: this.overlay\n .position()\n //connecting the dropdown overlay to the input element\n .flexibleConnectedTo(origin)\n .withPositions([...positions])\n .withPush(true)\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const dropdownPortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n this.overlayRef.attach(dropdownPortal);\n this.overlayRef.backdropClick().subscribe(resp => {\n this.openStatus = false;\n this.statusEmitter.emit(false);\n this.overlayRef.detach();\n });\n }\n\n destroyOverlay(){\n this.overlayRef.detach();\n }\n \n}\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewChildren } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITime } from \"./time.namespace\";\nimport { TimepickerDirective } from \"./timepicker.directive\";\nimport { ToolTipDirective } from \"mis-crystal-design-system/tooltip\";\n\n\n@Component({\n selector: \"mis-timepicker\",\n templateUrl: \"./timepicker.component.html\",\n styleUrls: [\"./timepicker.component.scss\"]\n})\nexport class TimePickerComponent implements OnInit, OnChanges, OnDestroy {\n currTime!: string;\n chosenTime: string;\n openStatus: boolean = false;\n isHighlighted: number = 0;\n isInvalid: boolean = false;\n timeIntervals: string[] = [];\n shouldScroll: boolean = false;\n userInputFlag: boolean = false;\n givenTimeFlag: boolean = true;\n\n @Input() clockFormat: number = 12;\n timeFormat!: string;\n\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() height: string = \"max-content\";\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() interval: number = 15;\n @Input() dateAsEpoch: number = moment().valueOf();\n @Input() firstInterval!: number;\n @Input() rangeValidity: boolean = true;\n @Input() showTooltip: boolean = true;\n @Input() givenTime: number;\n @Input() minTime?: number;\n @Input() triggerChange: boolean = true;\n\n @Output() timeEmitter = new EventEmitter<ITime>();\n @ViewChild(\"input\", { static: true }) input: ElementRef;\n @ViewChild(TimepickerDirective) timepickerDirective: TimepickerDirective;\n @ViewChild(ToolTipDirective) tooltipDirective: ToolTipDirective;\n\n // gets all the li elements from the dropdown and scrolls to the highlighted element\n @ViewChildren(\"timeInterval\") set timeIntervalRefs(intervals) {\n intervals.forEach(interval => {\n if (interval.nativeElement.classList[0] === \"highlight\") {\n const highlighted = interval.nativeElement;\n setTimeout(() => highlighted.scrollIntoView({ block: \"center\" }));\n }\n });\n }\n\n constructor(){}\n ngOnInit(): void {\n if(!this.givenTime && !this.minTime) {\n this.chosenTime = moment(this.firstInterval).format(this.timeFormat);\n let chosenTimeMoment = this.getMoment(this.chosenTime);\n this.emitTime({\n valid: !this.isInvalid,\n time: this.chosenTime,\n epoch: chosenTimeMoment.valueOf()\n });\n }\n }\n\n ngOnChanges(): void {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n\n if (this.timeFormat) {\n let chosenTimeMoment = this.getMoment(this.chosenTime);\n \n // if the first interval is >= the chosen time\n // then only update the value of chosen time\n // else it remains the same\n if (this.firstInterval >= chosenTimeMoment.valueOf() && this.rangeValidity && !this.userInputFlag) {\n this.chosenTime = moment(this.firstInterval).format(this.timeFormat);\n chosenTimeMoment = this.getMoment(this.chosenTime)\n }\n\n if((this.givenTimeFlag && this.givenTime) || this.minTime ) {\n this.chosenTime = moment(this.minTime || this.givenTime).format(this.timeFormat);\n }\n chosenTimeMoment = this.getMoment(this.chosenTime)\n\n if (!this.userInputFlag) this.populateDropdown();\n this.userInputFlag = false;\n \n if(this.chosenTime) {\n this.isInvalid = !this.checkTimeValidity(this.chosenTime.trim());\n this.emitTime({\n valid: !this.isInvalid,\n time: this.chosenTime,\n epoch: chosenTimeMoment.valueOf()\n });\n this.calculateClosestInterval(this.chosenTime);\n }\n }\n }\n\n emitTime(data: ITime): void {\n this.timeEmitter.emit(data);\n }\n\n // function to get moment object when time is given in string\n getMoment(time: string){\n return moment(`${moment(this.dateAsEpoch).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n }\n\n closeDropdown() {\n this.userInputFlag = false;\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // toggle timepicker dropdown\n openDropdown(): void {\n this.openStatus = true;\n }\n\n checkTimeValidity(time: string): 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 = this.getMoment(time);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // or a time is already provided to the component to show\n // then we don't check its validity against the current time\n if (\n this.minTime || \n this.givenTime ||\n (this.firstInterval &&\n moment(this.firstInterval).format(this.timeFormat).valueOf() === moment().startOf(\"d\").format(this.timeFormat).valueOf())\n ) {\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 // update chosen time as soon as the user clicks on an interval\n onTimeSelect(time: string): void {\n this.isInvalid = !this.checkTimeValidity(time.trim());\n if (!this.isInvalid) {\n this.chosenTime = time;\n this.calculateClosestInterval(this.chosenTime);\n }\n\n const timeMoment = this.getMoment(time);\n this.emitTime({\n valid: !this.isInvalid,\n time: time,\n epoch: timeMoment.valueOf() \n });\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // checks validity of time on input change and calculates the closest interval\n onTimeChange(time: string): void {\n this.isInvalid = !this.checkTimeValidity(time.trim());\n\n if (!this.isInvalid) {\n this.userInputFlag = true;\n this.openStatus = false;\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n this.calculateClosestInterval(time);\n }\n const timeMoment = this.getMoment(time);\n this.emitTime({\n valid: !this.isInvalid,\n time: time,\n epoch: timeMoment.valueOf() \n });\n }\n\n calculateClosestInterval(time: string): void {\n let roundedEpoch: number;\n // Converting time and date to a moment object \n const chosenDate = moment(this.dateAsEpoch).format(\"DD-MM-YYYY\"); // 05-01-2024\n const parsedTimeWithDate = moment(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`);\n // Converting moment object to epoch\n const chosenTimeEpoch = parsedTimeWithDate.valueOf();\n const offset = this.interval - (moment(chosenTimeEpoch).minutes() % this.interval);\n\n if (this.minTime && !this.givenTime) {\n this.isHighlighted = 0;\n return;\n }\n roundedEpoch = offset >= this.interval / 2 ? (moment(chosenTimeEpoch).subtract(this.interval - offset, \"m\")).valueOf() : (moment(chosenTimeEpoch).add( offset, \"m\")).valueOf();\n\n // finding the index of element that needs to be highlighted\n if (moment(chosenTimeEpoch).format(this.timeFormat) > moment(this.dateAsEpoch).endOf(\"d\").subtract(this.interval, \"m\").format(this.timeFormat)) {\n this.isHighlighted = this.timeIntervals.length - 1;\n } else {\n const roundedEpochMoment = moment(roundedEpoch);\n this.isHighlighted = this.timeIntervals.findIndex(interval => {\n const intervalObj = moment(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`);\n return intervalObj.isSame(roundedEpochMoment);\n });\n }\n }\n\n\n // populates the dropdown according to the first interval received\n populateDropdown(): void {\n this.timeIntervals = [];\n\n // if picker is used as an individual component\n if (!this.firstInterval) {\n // firstInterval is initialised according to the current time\n // if the date is same as the current date\n if (moment(this.dateAsEpoch).format(\"DD-MM-YYYY\") === moment().format(\"DD-MM-YYYY\") && !this.minTime) {\n const offset = this.interval - (moment().minutes() % this.interval);\n this.firstInterval = moment().add(offset, \"m\").valueOf();\n }\n // if minimum time to show is provided\n else if(this.minTime){\n const offset = this.interval - (moment(this.minTime).minutes() % this.interval);\n this.firstInterval = moment(this.minTime).add(offset, \"m\").valueOf();\n }\n // else the firstInterval is initialised as start of day\n else {\n this.firstInterval = moment().startOf(\"d\").valueOf();\n }\n }\n\n if(this.givenTime && this.givenTimeFlag){\n this.firstInterval = moment(this.givenTime).startOf('d').valueOf();\n this.givenTimeFlag = false;\n }\n\n const dateAsString = moment(this.dateAsEpoch).format('DD-MM-YYYY');\n const intervalAsString = moment(this.firstInterval).format(this.timeFormat);\n const start = moment(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`);\n const end = moment(`${dateAsString}`, 'DD-MM-YYYY').endOf('d');\n\n \n while (start.valueOf() < end.valueOf()) {\n this.timeIntervals.push(start.format(this.timeFormat));\n start.add(this.interval, \"m\");\n }\n\n // if the start time is equal to the interval just before midnight\n // and the start date = end date\n // push 11:59pm only\n if (this.timeIntervals.length === 0) {\n this.chosenTime = moment().endOf(\"d\").format(this.timeFormat);\n this.timeIntervals.push(moment().endOf(\"d\").format(this.timeFormat));\n }\n }\n\n ngOnDestroy() {\n if (this.tooltipDirective) this.tooltipDirective.hideToolTip();\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimePickerComponent } from \"./timepicker.component\";\nimport { ToolTipModule } from \"mis-crystal-design-system/tooltip\";\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TimepickerDirective } from './timepicker.directive';\n\n@NgModule({\n declarations: [TimePickerComponent, TimepickerDirective],\n imports: [CommonModule, FormsModule, ToolTipModule, OverlayModule],\n exports: [TimePickerComponent]\n})\nexport class TimePickerModule {\n static forRoot(): ModuleWithProviders<TimePickerModule> {\n return { ngModule: TimePickerModule, providers: [] };\n }\n}"]}
@@ -0,0 +1,2 @@
1
+ export * from "./public_api";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9tb2JpbGUtZmlsdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcHVibGljX2FwaVwiOyJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS1tb2JpbGUtZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvbW9iaWxlLWZpbHRlci9taXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtLW1vYmlsZS1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,51 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ export class MobileFilterComponent {
3
+ constructor() {
4
+ this.currentSelectedItem = 'Sort';
5
+ this.backIcon = '';
6
+ this.headerName = 'Filters';
7
+ this.applyBtnName = 'Apply';
8
+ this.clearBtnName = 'Clear Filters';
9
+ this.closeFilters = new EventEmitter();
10
+ this.clearFilters = new EventEmitter();
11
+ this.applyFilters = new EventEmitter();
12
+ }
13
+ set filterOptions(options) {
14
+ this.localFilterOptions = options;
15
+ }
16
+ ;
17
+ ngOnInit() {
18
+ }
19
+ originalOrder() {
20
+ return 0;
21
+ }
22
+ toggleFilter(data, isSelectedItem) {
23
+ const isMultiSelect = this.localFilterOptions[this.currentSelectedItem].multiSelect;
24
+ this.localFilterOptions[this.currentSelectedItem].options = this.localFilterOptions[this.currentSelectedItem].options.map(option => {
25
+ const isSelectedValue = option.value === data;
26
+ return Object.assign(Object.assign({}, option), { selected: isSelectedValue ? isMultiSelect ? !option.selected : true : isMultiSelect ? option.selected : false });
27
+ });
28
+ // changing number of selected items for multiselect filters
29
+ const noOfSelectedItems = this.localFilterOptions[this.currentSelectedItem].noOfSelectedItems;
30
+ isMultiSelect ? this.localFilterOptions[this.currentSelectedItem].noOfSelectedItems = isSelectedItem ? noOfSelectedItems - 1 : noOfSelectedItems + 1 : null;
31
+ }
32
+ }
33
+ MobileFilterComponent.decorators = [
34
+ { type: Component, args: [{
35
+ selector: 'mis-mobile-filter',
36
+ template: "<div class=\"filters-container\">\n <div class=\"head display-flex\">\n <img (click)=\"closeFilters.emit();\" [src]=\"backIcon\" alt=\"\">\n <span>{{headerName}}</span>\n </div>\n <div class=\"body display-flex\">\n <div class=\"filters\">\n <ng-container *ngFor=\"let filter of localFilterOptions | keyvalue : originalOrder\">\n <div class=\"filter display-flex\" (click)=\"currentSelectedItem = filter.key\">\n <span class=\"filterName\" [ngStyle]=\"{'color': filter.key === currentSelectedItem ? '#0937B2' : '#181F33'}\">{{ filter.key }}</span>\n <span class=\"selectedNumber\" *ngIf=\"localFilterOptions[filter.key]['multiSelect'] && localFilterOptions[filter.key]['noOfSelectedItems'] > 0\">{{ localFilterOptions[filter.key]['noOfSelectedItems'] }}</span>\n <div class=\"highlightor\" *ngIf=\"filter.key === currentSelectedItem\"></div>\n </div>\n </ng-container>\n </div>\n <div class=\"filter-options-container\">\n <div class=\"filter-options-title\">\n <span>{{ currentSelectedItem }}</span>\n </div>\n <div class=\"filter-options\">\n <ng-container *ngFor=\"let option of localFilterOptions[currentSelectedItem]?.options; let i = index\">\n <div class=\"filter-option display-flex\" (click)=\"toggleFilter(option.value, option.selected)\" >\n <mis-checkbox *ngIf=\"localFilterOptions[currentSelectedItem].multiSelect\" [checked]=\"option.selected\"></mis-checkbox>\n <input type=\"radio\" *ngIf=\"!localFilterOptions[currentSelectedItem].multiSelect\" [checked]=\"option.selected\">\n <span [ngStyle]=\"{'color': option.selected ? '#181F33' : '#6A737D'}\">{{ option.label }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"footer display-flex\">\n <button\n mis-button\n size=\"md\"\n type=\"text\"\n (click)=\"clearFilters.emit()\">\n {{clearBtnName}}\n </button>\n <button\n mis-button\n size=\"md\"\n type=\"primary\"\n (click)=\"applyFilters.emit(localFilterOptions)\"\n >\n {{applyBtnName}}\n </button>\n </div>\n</div>\n",
37
+ styles: [".display-flex{display:flex}.filters-container{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#fff;cursor:default}.filters-container *{font-family:Lato}.filters-container .head{height:56px;border-bottom:1px solid #e0e0e0;justify-content:flex-start;align-items:center;padding:0 16px;gap:12px}.filters-container .head img{cursor:pointer}.filters-container .head span{font-weight:700;font-size:17px;line-height:24px;letter-spacing:.2px}.filters-container .body{height:calc(100vh - 129px)}.filters-container .body .filters{width:120px;border-right:1px solid #e0e0e0;flex-shrink:0}.filters-container .body .filters .filter{height:56px;padding:0 16px;border-bottom:1px solid #e0e0e0;align-items:center;font-size:15px;justify-content:space-between;position:relative}.filters-container .body .filters .filter .filterName{color:#6a737d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filters .filter .selectedNumber{background-color:#f5f5f5;height:24px;width:auto;font-size:14px;min-width:24px;border-radius:50%;text-align:center;line-height:24px;padding:0 8px}.filters-container .body .filters .filter .highlightor{position:absolute;left:0;height:100%;width:4px;background-color:#0937b2}.filters-container .body .filter-options-container{padding:16px 16px 0 12px;width:calc(100% - 56px);overflow-x:hidden}.filters-container .body .filter-options-container *{color:#181f33}.filters-container .body .filter-options-container .filter-options-title{text-transform:uppercase;font-size:12px;line-height:16px;letter-spacing:.25px}.filters-container .body .filter-options-container .filter-options-title span{color:#6a737d}.filters-container .body .filter-options-container .filter-options{margin-top:16px;overflow-y:scroll;height:calc(100% - 32px)}.filters-container .body .filter-options-container .filter-options .filter-option{height:48px;border-bottom:1px solid #e0e0e0;align-items:center;padding-left:16px;gap:13px;font-size:15px}.filters-container .body .filter-options-container .filter-options .filter-option span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filter-options-container .filter-options .filter-option input[type=radio]{accent-color:#0937b2;width:20px;height:20px}.filters-container .footer{height:73px;border-top:1px solid #e0e0e0;padding:0 16px;align-items:center;justify-content:space-between}.filters-container .footer button{width:160px}"]
38
+ },] }
39
+ ];
40
+ MobileFilterComponent.ctorParameters = () => [];
41
+ MobileFilterComponent.propDecorators = {
42
+ filterOptions: [{ type: Input }],
43
+ backIcon: [{ type: Input }],
44
+ headerName: [{ type: Input }],
45
+ applyBtnName: [{ type: Input }],
46
+ clearBtnName: [{ type: Input }],
47
+ closeFilters: [{ type: Output }],
48
+ clearFilters: [{ type: Output }],
49
+ applyFilters: [{ type: Output }]
50
+ };
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9tb2JpbGUtZmlsdGVyL21vYmlsZS1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0UsTUFBTSxPQUFPLHFCQUFxQjtJQW1CaEM7UUFoQkEsd0JBQW1CLEdBQVcsTUFBTSxDQUFDO1FBTTVCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsZUFBVSxHQUFXLFNBQVMsQ0FBQztRQUMvQixpQkFBWSxHQUFXLE9BQU8sQ0FBQztRQUMvQixpQkFBWSxHQUFXLGVBQWUsQ0FBQztRQUV0QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7SUFFNUMsQ0FBQztJQWRqQixJQUFhLGFBQWEsQ0FBQyxPQUFPO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUM7SUFDcEMsQ0FBQztJQUFBLENBQUM7SUFjRixRQUFRO0lBQ1IsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBSSxFQUFFLGNBQWM7UUFDL0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNwRixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pJLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDO1lBQzlDLHVDQUNLLE1BQU0sS0FDVCxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFDOUc7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILDREQUE0RDtRQUM1RCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUM5RixhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUosQ0FBQzs7O1lBOUNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QiwwN0VBQTZDOzthQUU5Qzs7Ozs0QkFNRSxLQUFLO3VCQUlMLEtBQUs7eUJBRUwsS0FBSzsyQkFDTCxLQUFLOzJCQUNMLEtBQUs7MkJBRUwsTUFBTTsyQkFDTixNQUFNOzJCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21pcy1tb2JpbGUtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vYmlsZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2JpbGUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTW9iaWxlRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBsb2NhbEZpbHRlck9wdGlvbnM6IElGaWx0ZXJPcHRpb25zO1xuICBjdXJyZW50U2VsZWN0ZWRJdGVtOiBzdHJpbmcgPSAnU29ydCc7XG5cbiAgQElucHV0KCkgc2V0IGZpbHRlck9wdGlvbnMob3B0aW9ucykge1xuICAgIHRoaXMubG9jYWxGaWx0ZXJPcHRpb25zID0gb3B0aW9ucztcbiAgfTtcblxuICBASW5wdXQoKSBiYWNrSWNvbjogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgaGVhZGVyTmFtZTogc3RyaW5nID0gJ0ZpbHRlcnMnO1xuICBASW5wdXQoKSBhcHBseUJ0bk5hbWU6IHN0cmluZyA9ICdBcHBseSc7XG4gIEBJbnB1dCgpIGNsZWFyQnRuTmFtZTogc3RyaW5nID0gJ0NsZWFyIEZpbHRlcnMnO1xuXG4gIEBPdXRwdXQoKSBjbG9zZUZpbHRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjbGVhckZpbHRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhcHBseUZpbHRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyPElGaWx0ZXJPcHRpb25zPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBvcmlnaW5hbE9yZGVyKCkgeyAgLy8gdXNlZCBpbiB0ZW1wbGF0ZSBmb3Iga2V5dmFsdWUgcGlwZSBzb3J0aW5nXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB0b2dnbGVGaWx0ZXIoZGF0YSwgaXNTZWxlY3RlZEl0ZW0pIHtcbiAgICBjb25zdCBpc011bHRpU2VsZWN0ID0gdGhpcy5sb2NhbEZpbHRlck9wdGlvbnNbdGhpcy5jdXJyZW50U2VsZWN0ZWRJdGVtXS5tdWx0aVNlbGVjdDtcbiAgICB0aGlzLmxvY2FsRmlsdGVyT3B0aW9uc1t0aGlzLmN1cnJlbnRTZWxlY3RlZEl0ZW1dLm9wdGlvbnMgPSB0aGlzLmxvY2FsRmlsdGVyT3B0aW9uc1t0aGlzLmN1cnJlbnRTZWxlY3RlZEl0ZW1dLm9wdGlvbnMubWFwKG9wdGlvbiA9PiB7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkVmFsdWUgPSBvcHRpb24udmFsdWUgPT09IGRhdGE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vcHRpb24sXG4gICAgICAgIHNlbGVjdGVkOiBpc1NlbGVjdGVkVmFsdWUgPyBpc011bHRpU2VsZWN0ID8gIW9wdGlvbi5zZWxlY3RlZCA6IHRydWUgOiBpc011bHRpU2VsZWN0ID8gb3B0aW9uLnNlbGVjdGVkIDogZmFsc2VcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGNoYW5naW5nIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtcyBmb3IgbXVsdGlzZWxlY3QgZmlsdGVyc1xuICAgIGNvbnN0IG5vT2ZTZWxlY3RlZEl0ZW1zID0gdGhpcy5sb2NhbEZpbHRlck9wdGlvbnNbdGhpcy5jdXJyZW50U2VsZWN0ZWRJdGVtXS5ub09mU2VsZWN0ZWRJdGVtcztcbiAgICBpc011bHRpU2VsZWN0ID8gdGhpcy5sb2NhbEZpbHRlck9wdGlvbnNbdGhpcy5jdXJyZW50U2VsZWN0ZWRJdGVtXS5ub09mU2VsZWN0ZWRJdGVtcyA9IGlzU2VsZWN0ZWRJdGVtID8gbm9PZlNlbGVjdGVkSXRlbXMgLSAxIDogbm9PZlNlbGVjdGVkSXRlbXMgKyAxIDogbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJPcHRpb25zIHtcbiAgW2ZpbHRlck5hbWU6IHN0cmluZ106IHtcbiAgICAgIG9wdGlvbnM6IHtsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzZWxlY3RlZDogYm9vbGVhbiwgY2FwYWNpdGllcz86IG51bWJlcltdLCBhbWVuaXRpZXM/OiBzdHJpbmdbXX1bXSwgICAgLy8gY2FwYWNpdGllcyAmIGFtZW5pdGllcyBhcmUgZm9yIGZsb29yXG4gICAgICBtdWx0aVNlbGVjdDogYm9vbGVhbixcbiAgICAgIG5vT2ZTZWxlY3RlZEl0ZW1zPzogbnVtYmVyXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { NgModule } from "@angular/core";
3
+ import { MobileFilterComponent } from "./mobile-filter.component";
4
+ import { ButtonModule } from "mis-crystal-design-system/button";
5
+ import { CheckboxModule } from "mis-crystal-design-system/checkbox";
6
+ export class MobileFilterModule {
7
+ }
8
+ MobileFilterModule.decorators = [
9
+ { type: NgModule, args: [{
10
+ declarations: [MobileFilterComponent],
11
+ imports: [CommonModule, ButtonModule, CheckboxModule],
12
+ exports: [MobileFilterComponent]
13
+ },] }
14
+ ];
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWZpbHRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9tb2JpbGUtZmlsdGVyL21vYmlsZS1maWx0ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFPcEUsTUFBTSxPQUFPLGtCQUFrQjs7O1lBTDlCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUM7Z0JBQ3JELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2FBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTW9iaWxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSBcIi4vbW9iaWxlLWZpbHRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL2J1dHRvblwiO1xuaW1wb3J0IHsgQ2hlY2tib3hNb2R1bGUgfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9jaGVja2JveFwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtNb2JpbGVGaWx0ZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25Nb2R1bGUsIENoZWNrYm94TW9kdWxlXSxcbiAgZXhwb3J0czogW01vYmlsZUZpbHRlckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgTW9iaWxlRmlsdGVyTW9kdWxlIHtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { MobileFilterModule } from './mobile-filter.module';
2
+ export { MobileFilterComponent } from './mobile-filter.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL21vYmlsZS1maWx0ZXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE1vYmlsZUZpbHRlck1vZHVsZSB9IGZyb20gJy4vbW9iaWxlLWZpbHRlci5tb2R1bGUnO1xuZXhwb3J0IHsgTW9iaWxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9tb2JpbGUtZmlsdGVyLmNvbXBvbmVudCc7Il19
@@ -20,7 +20,7 @@ export class TableComponent {
20
20
  // Function to handle row click
21
21
  selectRow(index) {
22
22
  this.activeRowIndex = index; // Set the selected index to the clicked row's index
23
- this.config.rowConfig.action(index);
23
+ !!this.config.rowConfig.action && this.config.rowConfig.action(index);
24
24
  }
25
25
  ngOnInit() {
26
26
  this.tableLength = !!this.tableData ? this.tableData.length : 0;
@@ -204,4 +204,4 @@ TableComponent.propDecorators = {
204
204
  subTableDataLoading: [{ type: Input }],
205
205
  table: [{ type: ViewChild, args: ["table",] }]
206
206
  };
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFRdkIsTUFBTSxPQUFPLGNBQWM7SUFnQ3pCLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUE5QnZDLG9FQUFvRTtRQUNwRSxtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUUzQiwyQkFBMkI7UUFDM0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQy9CLDBCQUFxQixHQUFRLEVBQUUsQ0FBQztRQUNoQyxtQkFBYyxHQUE4RCxFQUFFLENBQUM7UUFDckUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFFdkMsQ0FBQztRQUtMLCtCQUErQjtRQUMvQixVQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUVoQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFNM0MsY0FBUyxHQUFzQixFQUFFLENBQUM7UUFDbEMsaUJBQVksR0FBc0IsRUFBRSxDQUFDO0lBSUgsQ0FBQztJQUU1QywrQkFBK0I7SUFDL0IsU0FBUyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxvREFBb0Q7UUFDakYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNB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QUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSywwQ0FBRSxTQUFTLENBQUEsRUFBRTtZQUN2RixhQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSywwQ0FBRSxTQUFTLENBQUM7U0FDekQ7O1lBQU0sT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNELDRCQUE0Qjs7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixXQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSywwQ0FBRSxZQUFZLENBQUEsRUFBRTtZQUMxRixhQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSywwQ0FBRSxZQUFZLENBQUM7U0FDNUQ7O1lBQU0sT0FBTyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDOzs7WUF0TEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixvdlFBQW1DOzthQUVwQzs7O1lBVkMsU0FBUzs7OzZCQXNCUixNQUFNO3FCQUlOLFNBQVMsU0FBQyxRQUFRO3lCQUNsQixZQUFZLFNBQUMsY0FBYzsyQkFLM0IsTUFBTTtxQkFFTixLQUFLLFNBQUMsYUFBYTs2QkFDbkIsS0FBSzsrQkFDTCxLQUFLOzRCQUNMLEtBQUs7d0JBQ0wsS0FBSzsyQkFDTCxLQUFLO2tDQUNMLEtBQUs7b0JBQ0wsU0FBUyxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRmlsdGVyLCBUYWJsZUZpbHRlckNvbXBvbmVudCB9IGZyb20gXCIuL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdGFibGVcIixcbiAgdGVtcGxhdGVVcmw6IFwidGFibGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCJ0YWJsZS5jb21wb25lbnQuY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG4gIC8vIEluaXRpYWxpemUgd2l0aCAtMSB0byBpbmRpY2F0ZSBubyByb3cgaXMgY29sb3JlZCBhdCB0aGUgYmVnaW5uaW5nXG4gIGFjdGl2ZVJvd0luZGV4OiBudW1iZXIgPSAwOyBcblxuICAvLyBGaWx0ZXIgcmVsYXRlZCB2YXJpYWJsZXNcbiAgc2hvd0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXJOYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBmaWx0ZXJEYXRhOiBBcnJheTxGaWx0ZXI+ID0gW107XG4gIGZpbHRlckNvbnRhaW5lclN0eWxlczogYW55ID0ge307XG4gIGFwcGxpZWRGaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+IH0gPSB7fTtcbiAgQE91dHB1dCgpIGZpbHRlcnNVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgW2tleTogc3RyaW5nXTogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XG4gIH0+KCk7XG5cbiAgQFZpZXdDaGlsZChcImZpbHRlclwiKSBmaWx0ZXI6IFRhYmxlRmlsdGVyQ29tcG9uZW50IHwgYW55O1xuICBAVmlld0NoaWxkcmVuKFwiY29sSGVhZGVyUmVmXCIpIGNvbEhlYWRlcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPiB8IGFueTtcblxuICAvLyBQYWdpbmF0aW9uIHJlbGF0ZWQgdmFyaWFibGVzXG4gIHBhZ2VzOiBBcnJheTxudW1iZXI+ID0gW107XG4gIHRhYmxlTGVuZ3RoOiBudW1iZXI7XG4gIEBPdXRwdXQoKSBwYWdlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBASW5wdXQoXCJ0YWJsZUNvbmZpZ1wiKSBjb25maWc6IFRhYmxlQ29uZmlnIHwgYW55O1xuICBASW5wdXQoKSBzdWJUYWJsZWNvbmZpZzogVGFibGVDb25maWcgfCBhbnk7XG4gIEBJbnB1dCgpIHRhYmxlRGF0YUxvYWRpbmc6IGJvb2xlYW4gfCBhbnk7XG4gIEBJbnB1dCgpIGV4cGFuZGVkSW5kZXg6IG51bWJlciB8IGFueTtcbiAgQElucHV0KCkgdGFibGVEYXRhOiBBcnJheTxBcnJheTxhbnk+PiA9IFtdO1xuICBASW5wdXQoKSBzdWJUYWJsZURhdGE6IEFycmF5PEFycmF5PGFueT4+ID0gW107XG4gIEBJbnB1dCgpIHN1YlRhYmxlRGF0YUxvYWRpbmc6IGJvb2xlYW4gfCBhbnk7XG4gIEBWaWV3Q2hpbGQoXCJ0YWJsZVwiKSB0YWJsZTogRWxlbWVudFJlZiB8IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxuXG4gIC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSByb3cgY2xpY2tcbiAgc2VsZWN0Um93KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVJvd0luZGV4ID0gaW5kZXg7IC8vIFNldCB0aGUgc2VsZWN0ZWQgaW5kZXggdG8gdGhlIGNsaWNrZWQgcm93J3MgaW5kZXhcbiAgICB0aGlzLmNvbmZpZy5yb3dDb25maWcuYWN0aW9uKGluZGV4KTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlTGVuZ3RoID0gISF0aGlzLnRhYmxlRGF0YSA/IHRoaXMudGFibGVEYXRhLmxlbmd0aCA6IDA7XG4gICAgdGhpcy5pbml0aWFsaXplRmlsdGVycygpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVQYWdpbmF0aW9uKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5jYW5TY3JvbGxIb3Jpem9udGFsbHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb25maWcuY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID0gZmFsc2U7XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBldmVudCA9PiB7XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgbGV0IGlzQ2hlY2tCb3hDbGlja2VkID0gdHJ1ZTtcbiAgICAgICAgbGV0IHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICBpZiAodGFyZ2V0RWxlbWVudC5jbGFzc05hbWUgPT09IFwiY2hlY2ttYXJrXCIpIHtcbiAgICAgICAgICBpc0NoZWNrQm94Q2xpY2tlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zaG93RmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXNDbGlja0luc2lkZUVsZW1lbnQgPSB0aGlzLmZpbHRlci5jb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICBpZiAoIWlzQ2xpY2tJbnNpZGVFbGVtZW50ICYmICFpc0NoZWNrQm94Q2xpY2tlZCkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyKHRoaXMuZmlsdGVyTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcpIHtcbiAgICAgIGxldCBoZWlnaHQgPSB0aGlzLmNvbmZpZy5oZWlnaHQ7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgXCJoZWlnaHRcIiwgaGVpZ2h0IC0gNTYgKyBcInB4XCIpO1xuICAgIH1cbiAgfVxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnRhYmxlTGVuZ3RoID0gISF0aGlzLnRhYmxlRGF0YSA/IHRoaXMudGFibGVEYXRhLmxlbmd0aCA6IDA7XG4gICAgdGhpcy5hY3RpdmVSb3dJbmRleCA9IHRoaXMuY29uZmlnLmFjdGl2ZVJvd0luZGV4IHx8IDA7XG4gIH1cblxuICAvLyBGaWx0ZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgaW5pdGlhbGl6ZUZpbHRlcnMoKSB7XG4gICAgZm9yIChsZXQgY29sSGVhZGVyIG9mIHRoaXMuY29uZmlnPy5jb2xIZWFkZXJDb25maWcpIHtcbiAgICAgIGlmIChjb2xIZWFkZXIuZmlsdGVycykge1xuICAgICAgICBsZXQgZmlsdGVycyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBmaWx0ZXIgb2YgY29sSGVhZGVyLmZpbHRlcnMpIHtcbiAgICAgICAgICBpZiAoZmlsdGVyLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVyLnZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnMubGVuZ3RoID4gMCkgdGhpcy5hcHBsaWVkRmlsdGVyc1tjb2xIZWFkZXIuZGF0YV0gPSBmaWx0ZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB0b2dnbGVGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnNob3dGaWx0ZXIpIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZSA9IGZpbHRlck5hbWU7XG4gICAgICB0aGlzLnNob3dGaWx0ZXIgPSB0cnVlO1xuXG4gICAgICBsZXQgb2ZmU2V0ID0gMDtcbiAgICAgIGxldCBjb2xIZWFkZXJzUmV2ZXJzZWQgPSB0aGlzLmNvbEhlYWRlcnMudG9BcnJheSgpLnJldmVyc2UoKTtcblxuICAgICAgZm9yIChsZXQgaGVhZGVyIG9mIGNvbEhlYWRlcnNSZXZlcnNlZCkge1xuICAgICAgICBpZiAoaGVhZGVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID09PSBmaWx0ZXJOYW1lKSBicmVhaztcbiAgICAgICAgb2ZmU2V0ICs9IGhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJDb250YWluZXJTdHlsZXMgPSB7XG4gICAgICAgIHRvcDogXCI0NHB4XCIsXG4gICAgICAgIHJpZ2h0OiBvZmZTZXQgPiAwID8gb2ZmU2V0IC0gMTE2ICsgXCJweFwiIDogXCIxMnB4XCJcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZSA9IFwiXCI7XG4gICAgICB0aGlzLmZpbHRlckRhdGEgPSBbXTtcbiAgICAgIHRoaXMuc2hvd0ZpbHRlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB1cGRhdGVBcHBsaWVkRmlsdGVycyhhcHBsaWVkRmlsdGVyczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pIHtcbiAgICBpZiAoYXBwbGllZEZpbHRlcnMubGVuZ3RoID09IDApIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmFwcGxpZWRGaWx0ZXJzW3RoaXMuZmlsdGVyTmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwbGllZEZpbHRlcnNbdGhpcy5maWx0ZXJOYW1lXSA9IGFwcGxpZWRGaWx0ZXJzO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcnNVcGRhdGVkLmVtaXQoeyAuLi50aGlzLmFwcGxpZWRGaWx0ZXJzIH0pO1xuICAgIHRoaXMudG9nZ2xlRmlsdGVyKHRoaXMuZmlsdGVyTmFtZSk7XG4gIH1cblxuICAvLyBQYWdpbmF0aW9uIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGluaXRpYWxpemVQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICBsZXQgbGVuID0gdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXM7XG4gICAgICBpZiAobGVuIDw9IDcpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICB0aGlzLnBhZ2VzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbMSwgMiwgMywgNCwgMCwgbGVuXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmIChwYWdlTnVtYmVyIDwgMSB8fCBwYWdlTnVtYmVyID4gdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXMpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnNlbGVjdGVkUGFnZSA9IHBhZ2VOdW1iZXI7XG4gICAgbGV0IGxlbiA9IHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcubm9PZlBhZ2VzO1xuICAgIGlmIChsZW4gPiA3KSB7XG4gICAgICBpZiAocGFnZU51bWJlciAtIDIgPD0gMSkge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDIsIDMsIDQsIDAsIGxlbl07XG4gICAgICB9IGVsc2UgaWYgKHBhZ2VOdW1iZXIgLSAyID4gMSAmJiBwYWdlTnVtYmVyICsgMiA8IGxlbikge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDAsIHBhZ2VOdW1iZXIgLSAxLCBwYWdlTnVtYmVyLCBwYWdlTnVtYmVyICsgMSwgMCwgbGVuXTtcbiAgICAgIH0gZWxzZSBpZiAocGFnZU51bWJlciArIDIgPj0gbGVuKSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbMSwgMCwgbGVuIC0gMywgbGVuIC0gMiwgbGVuIC0gMSwgbGVuXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wYWdlU2VsZWN0ZWQuZW1pdCh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UpO1xuICB9XG5cbiAgLy8gTWFpbiBjb250YWluZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29udGFpbmVySGVpZ2h0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uaGVpZ2h0KSByZXR1cm4gdGhpcy5jb25maWcuaGVpZ2h0O1xuICAgIGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cbiAgZ2V0Q29udGFpbmVyV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnPy53aWR0aCkgcmV0dXJuIHRoaXMuY29uZmlnLndpZHRoO1xuICAgIGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvLyBDb2x1bW4gSGVhZGVycyByZWxhdGVkIGZ1bmN0aW9uc1xuICBnZXRDb2xIZWFkZXJzUm93SGVpZ2h0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb2xIZWFkZXJzUm93Q29uZmlnICYmIHRoaXMuY29uZmlnLmNvbEhlYWRlcnNSb3dDb25maWcuaGVpZ2h0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuY29sSGVhZGVyc1Jvd0NvbmZpZy5oZWlnaHQ7XG4gICAgfSBlbHNlIHJldHVybiBcIjQ0cHhcIjtcbiAgfVxuICBnZXRDb2xIZWFkZXJzUm93Qm9yZGVyVG9wKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb2xIZWFkZXJzUm93Q29uZmlnICYmIHRoaXMuY29uZmlnLmNvbEhlYWRlcnNSb3dDb25maWcuc3R5bGU/LmJvcmRlclRvcCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvbEhlYWRlcnNSb3dDb25maWcuc3R5bGU/LmJvcmRlclRvcDtcbiAgICB9IGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cbiAgZ2V0Q29sSGVhZGVyc1Jvd0JvcmRlckJvdHRvbSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuY29sSGVhZGVyc1Jvd0NvbmZpZyAmJiB0aGlzLmNvbmZpZy5jb2xIZWFkZXJzUm93Q29uZmlnLnN0eWxlPy5ib3JkZXJCb3R0b20pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb2xIZWFkZXJzUm93Q29uZmlnLnN0eWxlPy5ib3JkZXJCb3R0b207XG4gICAgfSBlbHNlIHJldHVybiBcIjFweCBzb2xpZCAjRTBFMEUwXCI7XG4gIH1cblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnIHtcbiAgaGVpZ2h0OiBzdHJpbmcgfCBcIjEwMCVcIjtcbiAgd2lkdGg6IHN0cmluZyB8IFwiMTAwJVwiO1xuICBwYWdpbmF0aW9uQ29uZmlnPzogUGFnaW5hdGlvbkNvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGNvbEhlYWRlcnNSb3dDb25maWc6IFJvd0NvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIHJvd0NvbmZpZzogUm93Q29uZmlnIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgY29sSGVhZGVyQ29uZmlnOiBBcnJheTxDb2xIZWFkZXJDb25maWc+O1xuICBjb2xDb25maWc6IEFycmF5PENvbENvbmZpZz47XG4gIGNhbkV4cGFuZD86IGJvb2xlYW47XG4gIGNhblNjcm9sbEhvcml6b250YWxseT86IGJvb2xlYW47XG4gIGNlbGxIb3Zlcj86IGJvb2xlYW47XG4gIGFjdGl2ZVJvd0luZGV4PzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ29uZmlnIHtcbiAgbm9PZlBhZ2VzOiBudW1iZXI7XG4gIHJvd3NQZXJQYWdlOiBudW1iZXI7XG4gIHRvdGFsTm9PZlJvd3M6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYWdlPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3dDb25maWcge1xuICBoZWlnaHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbEhlYWRlckNvbmZpZyB7XG4gIHR5cGU6IFwidGV4dFwiIHwgXCJudW1iZXJcIiB8IFwiY3VzdG9tXCI7XG4gIGRhdGE6IGFueTtcbiAgY29tcG9uZW50UmVmPzogYW55O1xuICBmaWx0ZXJzPzogQXJyYXk8RmlsdGVyPiB8IG51bGw7XG4gIHN0eWxlPzoge307XG4gIGFjdGlvbj86IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sQ29uZmlnIHtcbiAgdHlwZTogXCJ0ZXh0XCIgfCBcIm51bWJlclwiIHwgXCJjdXN0b21cIjtcbiAgY29tcG9uZW50UmVmPzogYW55O1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG59XG4iXX0=
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFRdkIsTUFBTSxPQUFPLGNBQWM7SUFnQ3pCLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUE5QnZDLG9FQUFvRTtRQUNwRSxtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUUzQiwyQkFBMkI7UUFDM0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQy9CLDBCQUFxQixHQUFRLEVBQUUsQ0FBQztRQUNoQyxtQkFBYyxHQUE4RCxFQUFFLENBQUM7UUFDckUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFFdkMsQ0FBQztRQUtMLCtCQUErQjtRQUMvQixVQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUVoQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFNM0MsY0FBUyxHQUFzQixFQUFFLENBQUM7UUFDbEMsaUJBQVksR0FBc0IsRUFBRSxDQUFDO0lBSUgsQ0FBQztJQUU1QywrQkFBK0I7SUFDL0IsU0FBUyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxvREFBb0Q7UUFDakYsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELFFB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QXlCOztRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLFdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLDBDQUFFLFNBQVMsQ0FBQSxFQUFFO1lBQ3ZGLGFBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLDBDQUFFLFNBQVMsQ0FBQztTQUN6RDs7WUFBTSxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsNEJBQTRCOztRQUMxQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLFdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLDBDQUFFLFlBQVksQ0FBQSxFQUFFO1lBQzFGLGFBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLDBDQUFFLFlBQVksQ0FBQztTQUM1RDs7WUFBTSxPQUFPLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7OztZQXRMRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLG92UUFBbUM7O2FBRXBDOzs7WUFWQyxTQUFTOzs7NkJBc0JSLE1BQU07cUJBSU4sU0FBUyxTQUFDLFFBQVE7eUJBQ2xCLFlBQVksU0FBQyxjQUFjOzJCQUszQixNQUFNO3FCQUVOLEtBQUssU0FBQyxhQUFhOzZCQUNuQixLQUFLOytCQUNMLEtBQUs7NEJBQ0wsS0FBSzt3QkFDTCxLQUFLOzJCQUNMLEtBQUs7a0NBQ0wsS0FBSztvQkFDTCxTQUFTLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGaWx0ZXIsIFRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCJ0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcInRhYmxlLmNvbXBvbmVudC5jc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG5cbiAgLy8gSW5pdGlhbGl6ZSB3aXRoIC0xIHRvIGluZGljYXRlIG5vIHJvdyBpcyBjb2xvcmVkIGF0IHRoZSBiZWdpbm5pbmdcbiAgYWN0aXZlUm93SW5kZXg6IG51bWJlciA9IDA7IFxuXG4gIC8vIEZpbHRlciByZWxhdGVkIHZhcmlhYmxlc1xuICBzaG93RmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlck5hbWU6IHN0cmluZyA9IFwiXCI7XG4gIGZpbHRlckRhdGE6IEFycmF5PEZpbHRlcj4gPSBbXTtcbiAgZmlsdGVyQ29udGFpbmVyU3R5bGVzOiBhbnkgPSB7fTtcbiAgYXBwbGllZEZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4gfSA9IHt9O1xuICBAT3V0cHV0KCkgZmlsdGVyc1VwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBba2V5OiBzdHJpbmddOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PjtcbiAgfT4oKTtcblxuICBAVmlld0NoaWxkKFwiZmlsdGVyXCIpIGZpbHRlcjogVGFibGVGaWx0ZXJDb21wb25lbnQgfCBhbnk7XG4gIEBWaWV3Q2hpbGRyZW4oXCJjb2xIZWFkZXJSZWZcIikgY29sSGVhZGVyczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+IHwgYW55O1xuXG4gIC8vIFBhZ2luYXRpb24gcmVsYXRlZCB2YXJpYWJsZXNcbiAgcGFnZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcbiAgdGFibGVMZW5ndGg6IG51bWJlcjtcbiAgQE91dHB1dCgpIHBhZ2VTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBJbnB1dChcInRhYmxlQ29uZmlnXCIpIGNvbmZpZzogVGFibGVDb25maWcgfCBhbnk7XG4gIEBJbnB1dCgpIHN1YlRhYmxlY29uZmlnOiBUYWJsZUNvbmZpZyB8IGFueTtcbiAgQElucHV0KCkgdGFibGVEYXRhTG9hZGluZzogYm9vbGVhbiB8IGFueTtcbiAgQElucHV0KCkgZXhwYW5kZWRJbmRleDogbnVtYmVyIHwgYW55O1xuICBASW5wdXQoKSB0YWJsZURhdGE6IEFycmF5PEFycmF5PGFueT4+ID0gW107XG4gIEBJbnB1dCgpIHN1YlRhYmxlRGF0YTogQXJyYXk8QXJyYXk8YW55Pj4gPSBbXTtcbiAgQElucHV0KCkgc3ViVGFibGVEYXRhTG9hZGluZzogYm9vbGVhbiB8IGFueTtcbiAgQFZpZXdDaGlsZChcInRhYmxlXCIpIHRhYmxlOiBFbGVtZW50UmVmIHwgYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikgeyB9XG5cbiAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIHJvdyBjbGlja1xuICBzZWxlY3RSb3coaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuYWN0aXZlUm93SW5kZXggPSBpbmRleDsgLy8gU2V0IHRoZSBzZWxlY3RlZCBpbmRleCB0byB0aGUgY2xpY2tlZCByb3cncyBpbmRleFxuICAgICEhdGhpcy5jb25maWcucm93Q29uZmlnLmFjdGlvbiAmJiB0aGlzLmNvbmZpZy5yb3dDb25maWcuYWN0aW9uKGluZGV4KTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlTGVuZ3RoID0gISF0aGlzLnRhYmxlRGF0YSA/IHRoaXMudGFibGVEYXRhLmxlbmd0aCA6IDA7XG4gICAgdGhpcy5pbml0aWFsaXplRmlsdGVycygpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVQYWdpbmF0aW9uKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5jYW5TY3JvbGxIb3Jpem9udGFsbHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb25maWcuY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID0gZmFsc2U7XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBldmVudCA9PiB7XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgbGV0IGlzQ2hlY2tCb3hDbGlja2VkID0gdHJ1ZTtcbiAgICAgICAgbGV0IHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICBpZiAodGFyZ2V0RWxlbWVudC5jbGFzc05hbWUgPT09IFwiY2hlY2ttYXJrXCIpIHtcbiAgICAgICAgICBpc0NoZWNrQm94Q2xpY2tlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zaG93RmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXNDbGlja0luc2lkZUVsZW1lbnQgPSB0aGlzLmZpbHRlci5jb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICBpZiAoIWlzQ2xpY2tJbnNpZGVFbGVtZW50ICYmICFpc0NoZWNrQm94Q2xpY2tlZCkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyKHRoaXMuZmlsdGVyTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcpIHtcbiAgICAgIGxldCBoZWlnaHQgPSB0aGlzLmNvbmZpZy5oZWlnaHQ7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgXCJoZWlnaHRcIiwgaGVpZ2h0IC0gNTYgKyBcInB4XCIpO1xuICAgIH1cbiAgfVxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnRhYmxlTGVuZ3RoID0gISF0aGlzLnRhYmxlRGF0YSA/IHRoaXMudGFibGVEYXRhLmxlbmd0aCA6IDA7XG4gICAgdGhpcy5hY3RpdmVSb3dJbmRleCA9IHRoaXMuY29uZmlnLmFjdGl2ZVJvd0luZGV4IHx8IDA7XG4gIH1cblxuICAvLyBGaWx0ZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgaW5pdGlhbGl6ZUZpbHRlcnMoKSB7XG4gICAgZm9yIChsZXQgY29sSGVhZGVyIG9mIHRoaXMuY29uZmlnPy5jb2xIZWFkZXJDb25maWcpIHtcbiAgICAgIGlmIChjb2xIZWFkZXIuZmlsdGVycykge1xuICAgICAgICBsZXQgZmlsdGVycyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBmaWx0ZXIgb2YgY29sSGVhZGVyLmZpbHRlcnMpIHtcbiAgICAgICAgICBpZiAoZmlsdGVyLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVyLnZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnMubGVuZ3RoID4gMCkgdGhpcy5hcHBsaWVkRmlsdGVyc1tjb2xIZWFkZXIuZGF0YV0gPSBmaWx0ZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB0b2dnbGVGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnNob3dGaWx0ZXIpIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZSA9IGZpbHRlck5hbWU7XG4gICAgICB0aGlzLnNob3dGaWx0ZXIgPSB0cnVlO1xuXG4gICAgICBsZXQgb2ZmU2V0ID0gMDtcbiAgICAgIGxldCBjb2xIZWFkZXJzUmV2ZXJzZWQgPSB0aGlzLmNvbEhlYWRlcnMudG9BcnJheSgpLnJldmVyc2UoKTtcblxuICAgICAgZm9yIChsZXQgaGVhZGVyIG9mIGNvbEhlYWRlcnNSZXZlcnNlZCkge1xuICAgICAgICBpZiAoaGVhZGVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID09PSBmaWx0ZXJOYW1lKSBicmVhaztcbiAgICAgICAgb2ZmU2V0ICs9IGhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJDb250YWluZXJTdHlsZXMgPSB7XG4gICAgICAgIHRvcDogXCI0NHB4XCIsXG4gICAgICAgIHJpZ2h0OiBvZmZTZXQgPiAwID8gb2ZmU2V0IC0gMTE2ICsgXCJweFwiIDogXCIxMnB4XCJcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZSA9IFwiXCI7XG4gICAgICB0aGlzLmZpbHRlckRhdGEgPSBbXTtcbiAgICAgIHRoaXMuc2hvd0ZpbHRlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB1cGRhdGVBcHBsaWVkRmlsdGVycyhhcHBsaWVkRmlsdGVyczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pIHtcbiAgICBpZiAoYXBwbGllZEZpbHRlcnMubGVuZ3RoID09IDApIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmFwcGxpZWRGaWx0ZXJzW3RoaXMuZmlsdGVyTmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwbGllZEZpbHRlcnNbdGhpcy5maWx0ZXJOYW1lXSA9IGFwcGxpZWRGaWx0ZXJzO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcnNVcGRhdGVkLmVtaXQoeyAuLi50aGlzLmFwcGxpZWRGaWx0ZXJzIH0pO1xuICAgIHRoaXMudG9nZ2xlRmlsdGVyKHRoaXMuZmlsdGVyTmFtZSk7XG4gIH1cblxuICAvLyBQYWdpbmF0aW9uIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGluaXRpYWxpemVQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICBsZXQgbGVuID0gdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXM7XG4gICAgICBpZiAobGVuIDw9IDcpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICB0aGlzLnBhZ2VzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbMSwgMiwgMywgNCwgMCwgbGVuXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmIChwYWdlTnVtYmVyIDwgMSB8fCBwYWdlTnVtYmVyID4gdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXMpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnNlbGVjdGVkUGFnZSA9IHBhZ2VOdW1iZXI7XG4gICAgbGV0IGxlbiA9IHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcubm9PZlBhZ2VzO1xuICAgIGlmIChsZW4gPiA3KSB7XG4gICAgICBpZiAocGFnZU51bWJlciAtIDIgPD0gMSkge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDIsIDMsIDQsIDAsIGxlbl07XG4gICAgICB9IGVsc2UgaWYgKHBhZ2VOdW1iZXIgLSAyID4gMSAmJiBwYWdlTnVtYmVyICsgMiA8IGxlbikge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDAsIHBhZ2VOdW1iZXIgLSAxLCBwYWdlTnVtYmVyLCBwYWdlTnVtYmVyICsgMSwgMCwgbGVuXTtcbiAgICAgIH0gZWxzZSBpZiAocGFnZU51bWJlciArIDIgPj0gbGVuKSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbMSwgMCwgbGVuIC0gMywgbGVuIC0gMiwgbGVuIC0gMSwgbGVuXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wYWdlU2VsZWN0ZWQuZW1pdCh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UpO1xuICB9XG5cbiAgLy8gTWFpbiBjb250YWluZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29udGFpbmVySGVpZ2h0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uaGVpZ2h0KSByZXR1cm4gdGhpcy5jb25maWcuaGVpZ2h0O1xuICAgIGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cbiAgZ2V0Q29udGFpbmVyV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnPy53aWR0aCkgcmV0dXJuIHRoaXMuY29uZmlnLndpZHRoO1xuICAgIGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvLyBDb2x1bW4gSGVhZGVycyByZWxhdGVkIGZ1bmN0aW9uc1xuICBnZXRDb2xIZWFkZXJzUm93SGVpZ2h0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb2xIZWFkZXJzUm93Q29uZmlnICYmIHRoaXMuY29uZmlnLmNvbEhlYWRlcnNSb3dDb25maWcuaGVpZ2h0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuY29sSGVhZGVyc1Jvd0NvbmZpZy5oZWlnaHQ7XG4gICAgfSBlbHNlIHJldHVybiBcIjQ0cHhcIjtcbiAgfVxuICBnZXRDb2xIZWFkZXJzUm93Qm9yZGVyVG9wKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb2xIZWFkZXJzUm93Q29uZmlnICYmIHRoaXMuY29uZmlnLmNvbEhlYWRlcnNSb3dDb25maWcuc3R5bGU/LmJvcmRlclRvcCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvbEhlYWRlcnNSb3dDb25maWcuc3R5bGU/LmJvcmRlclRvcDtcbiAgICB9IGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cbiAgZ2V0Q29sSGVhZGVyc1Jvd0JvcmRlckJvdHRvbSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuY29sSGVhZGVyc1Jvd0NvbmZpZyAmJiB0aGlzLmNvbmZpZy5jb2xIZWFkZXJzUm93Q29uZmlnLnN0eWxlPy5ib3JkZXJCb3R0b20pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb2xIZWFkZXJzUm93Q29uZmlnLnN0eWxlPy5ib3JkZXJCb3R0b207XG4gICAgfSBlbHNlIHJldHVybiBcIjFweCBzb2xpZCAjRTBFMEUwXCI7XG4gIH1cblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnIHtcbiAgaGVpZ2h0OiBzdHJpbmcgfCBcIjEwMCVcIjtcbiAgd2lkdGg6IHN0cmluZyB8IFwiMTAwJVwiO1xuICBwYWdpbmF0aW9uQ29uZmlnPzogUGFnaW5hdGlvbkNvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGNvbEhlYWRlcnNSb3dDb25maWc6IFJvd0NvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIHJvd0NvbmZpZzogUm93Q29uZmlnIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgY29sSGVhZGVyQ29uZmlnOiBBcnJheTxDb2xIZWFkZXJDb25maWc+O1xuICBjb2xDb25maWc6IEFycmF5PENvbENvbmZpZz47XG4gIGNhbkV4cGFuZD86IGJvb2xlYW47XG4gIGNhblNjcm9sbEhvcml6b250YWxseT86IGJvb2xlYW47XG4gIGNlbGxIb3Zlcj86IGJvb2xlYW47XG4gIGFjdGl2ZVJvd0luZGV4PzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ29uZmlnIHtcbiAgbm9PZlBhZ2VzOiBudW1iZXI7XG4gIHJvd3NQZXJQYWdlOiBudW1iZXI7XG4gIHRvdGFsTm9PZlJvd3M6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYWdlPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3dDb25maWcge1xuICBoZWlnaHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbEhlYWRlckNvbmZpZyB7XG4gIHR5cGU6IFwidGV4dFwiIHwgXCJudW1iZXJcIiB8IFwiY3VzdG9tXCI7XG4gIGRhdGE6IGFueTtcbiAgY29tcG9uZW50UmVmPzogYW55O1xuICBmaWx0ZXJzPzogQXJyYXk8RmlsdGVyPiB8IG51bGw7XG4gIHN0eWxlPzoge307XG4gIGFjdGlvbj86IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sQ29uZmlnIHtcbiAgdHlwZTogXCJ0ZXh0XCIgfCBcIm51bWJlclwiIHwgXCJjdXN0b21cIjtcbiAgY29tcG9uZW50UmVmPzogYW55O1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG59XG4iXX0=