blob: 3a22e67b94d6fea14c61509aed7a4804e2d21e79 [file] [log] [blame]
{"version":3,"sources":["../../src/platform/core/common/forms/auto-trim/auto-trim.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../src/platform/core/common/directives/fullscreen/fullscreen.directive.ts","../../src/platform/core/common/pipes/time-ago/time-ago.pipe.ts","../../src/platform/core/common/pipes/time-difference/time-difference.pipe.ts","../../src/platform/core/common/pipes/time-until/time-until.pipe.ts","../../src/platform/core/common/pipes/bytes/bytes.pipe.ts","../../src/platform/core/common/pipes/decimal-bytes/decimal-bytes.pipe.ts","../../src/platform/core/common/pipes/digits/digits.pipe.ts","../../src/platform/core/common/pipes/truncate/truncate.pipe.ts","../../../src/platform/core/common/services/router-path.service.ts","../../../src/platform/core/common/services/icon.service.ts","../../../../src/platform/core/common/common.module.ts","../../src/platform/core/common/animations/rotate/rotate.animation.ts","../../src/platform/core/common/animations/collapse/collapse.animation.ts","../../src/platform/core/common/animations/fade/fadeInOut.animation.ts","../../src/platform/core/common/animations/bounce/bounce.animation.ts","../../src/platform/core/common/animations/flash/flash.animation.ts","../../src/platform/core/common/animations/headshake/headshake.animation.ts","../../src/platform/core/common/animations/jello/jello.animation.ts","../../src/platform/core/common/animations/pulse/pulse.animation.ts","../../../src/platform/core/common/behaviors/control-value-accesor.mixin.ts","../../src/platform/core/common/forms/validators/validators.ts","../../../src/platform/core/common/functions/convert.ts","../../../src/platform/core/common/functions/download.ts","../../../src/platform/core/common/functions/clipboard.ts","../../../src/platform/core/common/behaviors/disable-ripple.mixin.ts","../../../src/platform/core/common/behaviors/disabled.mixin.ts","../../../src/platform/core/common/functions/file.ts"],"names":["TdAutoTrimDirective","_model","this","prototype","onBlur","event","value","update","emit","trim","Directive","args","selector","NgModel","decorators","type","Optional","Host","HostListener","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__extends","__","constructor","create","__values","o","s","Symbol","iterator","m","i","length","next","done","TypeError","__read","n","r","e","ar","push","error","__spread","arguments","concat","TdFullscreenDirective","_document","_el","fullScreenIsActive","fsChangeHandler","srcElement","_getFullScreenElement","toggleFullScreen","nativeElement","exitFullScreen","enterFullScreen","enterFullScreenMap","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","_b","keys","_c","handler","exitFullScreenMap","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","_d","tdFullScreenElementMap","fullscreenElement","webkitFullscreenElement","mozFullscreenElement","msFullscreenElement","props","exportAs","Inject","DOCUMENT","ElementRef","TdTimeAgoPipe","transform","time","reference","Date","ref","getTime","startTime","isNaN","now","diff","Math","floor","Pipe","name","TdTimeDifferencePipe","start","end","endTime","undefined","days","hours","minutes","seconds","pad","daysFormatted","substring","TdTimeUntilPipe","TdBytesPipe","bytes","precision","parseInt","log","parseFloat","pow","toFixed","TdDecimalBytesPipe","TdDigitsPipe","_locale","_decimalPipe","DecimalPipe","digits","size","LOCALE_ID","TdTruncatePipe","text","truncated","substr","lastIndexOf","RouterPathService","_router","events","pipe","filter","RoutesRecognized","pairwise","subscribe","_previousRoute","urlAfterRedirects","getPreviousRoute","Injectable","Router","IconService","_icons","defineProperty","query","icons","el","toLowerCase","indexOf","TD_DIRECTIVES","TD_VALIDATORS","TD_PIPES","NgModule","imports","FormsModule","CommonModule","declarations","exports","providers","tdRotateAnimation","trigger","state","style","params","degressStart","degreesEnd","transition","group","animateChild","optional","animate","duration","delay","ease","tdCollapseAnimation","height","overflow","AUTO_STYLE","tdFadeInOutAnimation","opacity","visibility","easeOnIn","easeOnOut","tdBounceAnimation","keyframes","animationTimingFunction","offset","tdFlashAnimation","tdHeadshakeAnimation","tdJelloAnimation","tdPulseAnimation","noop","CovalentValidators","min","minValue","c","Validators","required","v","actualValue","max","maxValue","numberRequired","Number","convertObjectsToCSV","objects","keySeparator","lineSeparator","outputString","forEach","key","line","index","headers","join","formatJSON","json","indent","JSON","stringify","downloadFile","fileName","contents","mimeType","blob","Blob","url","window","URL","createObjectURL","a","document","createElement","setAttribute","href","body","appendChild","click","revokeObjectURL","removeChild","csv","csvArray","split","newObjects","newObject","values","j","fakeTextArea","select","success","execCommand","fileBaseName","format","parse","base","initialValue","_super","class_1","_i","_this","apply","_value","assign","onChange","_","onTouched","_subjectValueChanges","Subject","valueChanges","asObservable","_changeDetectorRef","markForCheck","writeValue","registerOnChange","fn","registerOnTouched","_disableRipple","newValue","coerceBooleanProperty","onDisableRippleChange","_disabled","onDisabledChange","file","Promise","resolve","reader","FileReader","readAsText","onload"],"mappings":"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ACA,uBACA,YACA,SACA,OACA,WACA,kBACA,YACA,aACA,QACA,SACA,iBACA,oBACA,iBACA,uBACA,gBACA,kBACA,cACA,iBACA,eACA,uBACA,qBACA,QACA,OACA,UACA,iBACA,kBACA,cACA,YACA,cACA,YACA,aACA,SACA,iBACA,iBACA,cACA,MACA,OACA,WACA,eACA,cACA,cACA,iBACA,MACA,QACA,cACA,QACA,aACA,cACA,UACA,cACA,YACA,OACA,WACA,kBACA,WACA,eACA,eACA,cACA,cACA,iBACA,eACA,gBACA,cACA,QACA,UACA,MACA,QACA,aACA,OACA,eACA,gBACA,UACA,OACA,mBACA,kBACA,iBACA,OACA,QACA,oBACA,OACA,QACA,gBACA,QACA,kBACA,YACA,WACA,SACA,aACA,cACA,OACA,OACA,YACA,UACA,qBACA,WACA,WACA,aACA,WACA,eACA,cACA,UACA,kBACA,cACA,YACA,WACA,WACA,UACA,kBACA,wBACA,oBACA,0BACA,gBACA,aACA,iBACA,iBACA,OACA,qBACA,yBACA,gBACA,UACA,qBACA,iBACA,QACA,gBACA,kBACA,UACA,oBACA,SACA,uBACA,UACA,iBACA,UACA,qBACA,eACA,OACA,iBACA,SACA,WACA,SACA,wBACA,0BACA,qBACA,sBACA,gBACA,oBACA,yBACA,2BACA,2BACA,sBACA,wBACA,oBACA,iBACA,iBACA,kBACA,iBACA,OACA,WACA,kBACA,gBACA,gBACA,oBACA,aACA,QACA,QACA,UACA,yBACA,qBACA,aACA,yBACA,YACA,uBACA,WACA,oBACA,MACA,iBACA,iBACA,uBACA,0BACA,wBACA,qBACA,qBACA,WACA,aACA,WACA,iBACA,WACA,MACA,QACA,OACA,YACA,gBACA,YACA,gBACA,gBACA,cACA,YACA,gBACA,SACA,gBACA,iBACA,cACA,aACA,gBACA,cACA,WACA,gBACA,YACA,cACA,aACA,cACA,YACA,aACA,iBACA,iBACA,cACA,OACA,WACA,eACA,uBACA,UACA,WACA,YACA,QACA,gBACA,yBACA,UACA,KACA,eACA,UACA,QACA,YACA,WACA,qBACA,iBACA,iBACA,iBACA,YACA,WACA,eACA,cACA,qBACA,iBACA,YACA,sBACA,YACA,YACA,qBACA,aACA,aACA,YACA,QACA,KACA,UACA,eACA,cACA,gBACA,gBACA,OACA,MACA,WACA,UACA,oBACA,QACA,cACA,eACA,iBACA,OACA,QACA,sBACA,uBACA,aACA,qBACA,sBACA,eACA,qBACA,gBACA,QACA,cACA,kBACA,QACA,gBACA,oBACA,SACA,aACA,SACA,YACA,YACA,WACA,UACA,YACA,gBACA,oBACA,SACA,gBACA,QACA,OACA,gBACA,YACA,iBACA,aACA,cACA,gBACA,WACA,eACA,cACA,cACA,aACA,YACA,MACA,YACA,WACA,OACA,WACA,YACA,aACA,cACA,uBACA,gBACA,aACA,sBACA,OACA,cACA,sBACA,YACA,UACA,eACA,gBACA,WACA,0BACA,aACA,UACA,kBACA,MACA,QACA,QACA,kBACA,gBACA,oBACA,WACA,YACA,eACA,UACA,sBACA,SACA,qBACA,sBACA,QACA,iBACA,gBACA,kBACA,iBACA,iBACA,kBACA,oBACA,iBACA,iBACA,cACA,WACA,eACA,0BACA,gBACA,yBACA,wBACA,yBACA,wBACA,oBACA,aACA,UACA,cACA,YACA,UACA,MACA,UACA,aACA,qBACA,cACA,UACA,YACA,SACA,QACA,QACA,SACA,eACA,SACA,eACA,YACA,cACA,OACA,gBACA,UACA,UACA,aACA,cACA,QACA,OACA,WACA,eACA,OACA,aACA,gBACA,YACA,gBACA,SACA,OACA,SACA,gBACA,wBACA,QACA,YACA,SACA,aACA,OACA,WACA,aACA,OACA,OACA,cACA,cACA,YACA,OACA,QACA,gBACA,eACA,gBACA,cACA,YACA,qBACA,sBACA,wBACA,gBACA,wBACA,eACA,cACA,kBACA,YACA,sBACA,qBACA,sBACA,kBACA,kBACA,iBACA,oBACA,aACA,iBACA,UACA,MACA,YACA,gBACA,UACA,aACA,oBACA,qBACA,kBACA,aACA,MACA,wBACA,uBACA,uBACA,kBACA,aACA,2BACA,wBACA,sBACA,8CACA,yBACA,uBACA,sBACA,oBACA,yBACA,kBACA,UACA,MACA,YACA,UACA,YACA,iBACA,cACA,cACA,eACA,YACA,aACA,gBACA,eACA,oBACA,eACA,cACA,eACA,eACA,eACA,aACA,kBACA,eACA,cACA,sBACA,uBACA,oBACA,qBACA,cACA,eACA,qBACA,yBACA,yBACA,gBACA,sBACA,uBACA,uBACA,2BACA,eACA,eACA,gBACA,cACA,uBACA,8BACA,8BACA,oBACA,YACA,SACA,YACA,eACA,wBACA,iBACA,oBACA,kBACA,oBACA,cACA,eACA,eACA,aACA,eACA,kBACA,YACA,kBACA,QACA,YACA,WACA,UACA,eACA,QACA,aACA,aACA,YACA,kBACA,cACA,cACA,QACA,wBACA,wBACA,qBACA,YACA,aACA,QACA,eACA,aACA,iBACA,YACA,cACA,eACA,oBACA,SACA,cACA,gBACA,OACA,iBACA,WACA,cACA,kBACA,kBACA,aACA,iBACA,gBACA,OACA,UACA,UACA,cACA,WACA,sBACA,sBACA,uBACA,oBACA,qBACA,oBACA,gBACA,kBACA,eACA,iBACA,SACA,oBACA,aACA,iBACA,SACA,QACA,gBACA,eACA,YACA,gBACA,cACA,SACA,UACA,WACA,WACA,aACA,UACA,gBACA,SACA,iBACA,aACA,OACA,KACA,kBACA,QACA,cACA,sBACA,gBACA,SACA,YACA,kBACA,aACA,gBACA,cACA,WACA,UACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,QACA,aACA,SACA,aACA,eACA,cACA,cACA,sBACA,oBACA,cACA,uBACA,aACA,WACA,UACA,gBACA,0BACA,OACA,YACA,WACA,WACA,WACA,WACA,YACA,iBACA,gBACA,gBACA,cACA,cACA,SACA,UACA,OACA,OACA,WACA,iBACA,iBACA,kBACA,kBACA,gBACA,SACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,gBACA,iBACA,sBACA,eACA,gBACA,aACA,cACA,oBACA,iBACA,QACA,aACA,YACA,WACA,OACA,sBACA,kBACA,WACA,QACA,WACA,UACA,UACA,SACA,aACA,WACA,UACA,QACA,qBACA,eACA,MACA,YACA,WACA,cACA,OACA,gBACA,QACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,oBACA,iBACA,eACA,aACA,YACA,SACA,gBACA,kBACA,gBACA,UACA,WACA,oBACA,sBACA,oBACA,sBACA,QACA,cACA,eACA,eACA,gBACA,2BACA,0BACA,0BACA,iBACA,WACA,iBACA,wBACA,cACA,eACA,gBACA,YACA,aACA,QACA,gBACA,eACA,YACA,UACA,YACA,QACA,WACA,UACA,YACA,WACA,YACA,OACA,aACA,eACA,WACA,UACA,YACA,kBACA,gBACA,WACA,MACA,MACA,WACA,WACA,sBACA,kBACA,aACA,kBACA,kBACA,iBACA,iBACA,qBACA,iBACA,oBACA,qBACA,kBACA,kBACA,aACA,WACA,SACA,QACA,SACA,eACA,iBACA,gBACA,YACA,YACA,aACA,iBACA,0BACA,eACA,cACA,gBACA,oBACA,sBACA,iBACA,cACA,wBACA,gBACA,aACA,eACA,cACA,gBACA,iBACA,cACA,cACA,aACA,oBACA,kBACA,YACA,iBACA,aACA,MACA,YACA,QACA,SACA,cACA,aACA,UACA,aACA,cACA,aACA,kBACA,YACA,uBACA,aACA,SACA,UACA,UACA,QACA,OACA,4BACA,oBACA,cACA,eACA,OACA,aACA,iBACA,iBACA,kBACA,yBACA,gBACA,gBACA,oBACA,aACA,cACA,eACA,SACA,QACA,eACA,gBACA,QACA,eACA,cACA,cACA,aACA,aACA,kBACA,YACA,YACA,OACA,YACA,aACA,YACA,UACA,0BACA,2BACA,cACA,cACA,eACA,MACA,oBACA,2BACA,gCACA,6BACA,8BACA,+BACA,6BACA,8BACA,kBACA,sBACA,YACA,YACA,sBACA,kBACA,aACA,aACA,iBACA,UACA,MACA,OACA,gBACA,iBACA,gBACA,iBACA,iBACA,0BACA,iBACA,kBACA,gBACA,eACA,eACA,eACA,QACA,YACA,gBACA,UACA,MACA,aACA,OACA,gBACA,eACA,gBACA,eACA,gBACA,SACA,YACA,aACA,WACA,KACA,OACA,WACA,UACA,kBACA,gBACA,YACA,UACA,eACA,kBACA,SACA,aACA,iBACA,iBACA,iBACA,cACA,UACA,QACA,UACA,eACA,kBACA,OACA,eACA,YACA,aACA,gBACA,MACA,aACA,OACA,OACA,iBACA,eACA,cACA,sBACA,eACA,gBACA,eACA,gBACA,uBACA,YACA,QACA,YACA,WACA,gBACA,OACA,WACA,cACA,gBACA,uBACA,qBACA,oBACA,uBACA,gBACA,QACA,aACA,SACA,aACA,iBACA,SACA,aACA,iBACA,WACA,OACA,SACA,SACA,yBACA,sBACA,8BACA,2BACA,QACA,aACA,SACA,kBACA,oBACA,iBACA,iBACA,kBACA,cACA,kBACA,gBACA,iBACA,aACA,qBACA,eACA,gBACA,gBACA,oBACA,iBACA,eACA,WACA,YACA,0BACA,0BACA,uBACA,yBACA,OACA,cACA,YACA,aACA,oBAGFnI,OAAAoI,eAAIF,EAAArJ,UAAA,QAAK,KAAT,WACE,OAAOD,KAAKuJ,wCAGdD,EAAArJ,UAAA4I,OAAA,SAAOY,GACL,OAAOzJ,KAAK0J,MAAMb,QAAM,SAAEc,GACxB,OAAOA,EAAGC,cAAcC,QAAQJ,EAAQA,EAAMG,cAAgB,KAAO,+BAljC1ER,EAAAA,iBCMKU,EAA6B,CAAChK,EAAqBsD,GAGnD2G,EAA6B,GAa7BC,EAAwB,CAC5BxE,EACAe,EACAY,EACAC,EACAQ,EACAC,EACAO,KAgBF,iCANC6B,EAAAA,SAAQxJ,KAAA,CAAC,CACRyJ,QAAS,CAACC,EAAAA,YAAaC,EAAAA,cACvBC,aAAc,CAACP,EAAeE,EAAUD,GACxCO,QAAS,CAACH,EAAAA,YAAaC,EAAAA,aAAcN,E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","sourcesContent":["import { Directive } from '@angular/core';\nimport { HostListener, Host, Optional } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdAutoTrim]',\n})\nexport class TdAutoTrimDirective {\n constructor(@Optional() @Host() private _model: NgModel) {}\n\n /**\n * Listens to host's (blur) event and trims value.\n */\n @HostListener('blur', ['$event'])\n onBlur(event: Event): void {\n if (this._model && this._model.value && typeof this._model.value === 'string') {\n this._model.update.emit(this._model.value.trim());\n }\n }\n}\n","/*! *****************************************************************************\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 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\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\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 __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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Directive, HostListener, ElementRef, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\ninterface IFsDocument extends HTMLDocument {\n fullscreenElement: Element;\n webkitFullscreenElement: Element;\n mozFullscreenElement: Element;\n msFullscreenElement: Element;\n webkitExitFullscreen: () => void;\n mozCancelFullScreen: () => void;\n msExitFullscreen: () => void;\n}\n\n@Directive({\n selector: '[tdFullScreen]',\n exportAs: 'tdFullScreen',\n})\nexport class TdFullscreenDirective {\n fullScreenIsActive: boolean = false;\n constructor(@Inject(DOCUMENT) private _document: IFsDocument, private _el: ElementRef) {}\n\n @HostListener('document:fullscreenchange', ['$event'])\n @HostListener('document:webkitfullscreenchange', ['$event'])\n @HostListener('document:mozfullscreenchange', ['$event'])\n @HostListener('document:msfullscreenchange', ['$event'])\n public fsChangeHandler(event: Event): void {\n this.fullScreenIsActive = event.srcElement === this._getFullScreenElement();\n }\n\n public toggleFullScreen(): void {\n this._getFullScreenElement() === this._el.nativeElement ? this.exitFullScreen() : this.enterFullScreen();\n }\n\n public enterFullScreen(): void {\n const {\n _el: { nativeElement },\n }: TdFullscreenDirective = this;\n const enterFullScreenMap: object = {\n requestFullscreen: () => nativeElement.requestFullscreen(), // Chrome\n webkitRequestFullscreen: () => nativeElement.webkitRequestFullscreen(), // Safari\n mozRequestFullScreen: () => nativeElement.mozRequestFullScreen(), // Firefox\n msRequestFullscreen: () => nativeElement.msRequestFullscreen(), // IE\n };\n\n for (const handler of Object.keys(enterFullScreenMap)) {\n if (nativeElement[handler]) {\n enterFullScreenMap[handler]();\n }\n }\n }\n\n public exitFullScreen(): void {\n const {\n _document,\n _el: { nativeElement },\n }: TdFullscreenDirective = this;\n const exitFullScreenMap: object = {\n exitFullscreen: () => _document.exitFullscreen(), // Chrome\n webkitExitFullscreen: () => _document.webkitExitFullscreen(), // Safari\n mozCancelFullScreen: () => _document.mozCancelFullScreen(), // Firefox\n msExitFullscreen: () => _document.msExitFullscreen(), // IE\n };\n\n for (const handler of Object.keys(exitFullScreenMap)) {\n if (_document[handler] && this._getFullScreenElement() === nativeElement) {\n exitFullScreenMap[handler]();\n }\n }\n }\n\n private _getFullScreenElement(): Element {\n const { _document }: TdFullscreenDirective = this;\n const tdFullScreenElementMap: object = {\n fullscreenElement: () => _document.fullscreenElement, // Chrome, Opera\n webkitFullscreenElement: () => _document.webkitFullscreenElement, // Safari\n mozFullscreenElement: () => _document.mozFullscreenElement, // Firefox\n msFullscreenElement: () => _document.msFullscreenElement, // IE, Edge\n };\n for (const props of Object.keys(tdFullScreenElementMap)) {\n if (_document[props]) {\n return _document[props];\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timeAgo',\n})\nexport class TdTimeAgoPipe implements PipeTransform {\n transform(time: any, reference?: any): string {\n // Convert time to date object if not already\n time = new Date(time);\n const ref: Date = new Date(reference);\n\n // If not a valid timestamp, return 'Invalid Date'\n if (!time.getTime()) {\n return 'Invalid Date';\n }\n\n // For unit testing, we need to be able to declare a static start time\n // for calculations, or else speed of tests can bork.\n const startTime: number = isNaN(ref.getTime()) ? Date.now() : ref.getTime();\n let diff: number = Math.floor((startTime - time.getTime()) / 1000);\n\n if (diff < 2) {\n return '1 second ago';\n }\n if (diff < 60) {\n return Math.floor(diff) + ' seconds ago';\n }\n // Minutes\n diff = diff / 60;\n if (diff < 2) {\n return '1 minute ago';\n }\n if (diff < 60) {\n return Math.floor(diff) + ' minutes ago';\n }\n // Hours\n diff = diff / 60;\n if (diff < 2) {\n return '1 hour ago';\n }\n if (diff < 24) {\n return Math.floor(diff) + ' hours ago';\n }\n // Days\n diff = diff / 24;\n if (diff < 2) {\n return '1 day ago';\n }\n if (diff < 30) {\n return Math.floor(diff) + ' days ago';\n }\n // Months\n diff = diff / 30;\n if (diff < 2) {\n return '1 month ago';\n }\n if (diff < 12) {\n return Math.floor(diff) + ' months ago';\n }\n // Years\n diff = diff / 12;\n if (diff < 2) {\n return '1 year ago';\n } else {\n return Math.floor(diff) + ' years ago';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timeDifference',\n})\nexport class TdTimeDifferencePipe implements PipeTransform {\n transform(start: any, end?: any): string {\n const startTime: Date = new Date(start);\n let endTime: Date;\n\n if (end !== undefined) {\n endTime = new Date(end);\n } else {\n endTime = new Date();\n }\n\n if (!startTime.getTime() || !endTime.getTime()) {\n return 'Invalid Date';\n }\n\n let diff: number = Math.floor((endTime.getTime() - startTime.getTime()) / 1000);\n\n const days: number = Math.floor(diff / (60 * 60 * 24));\n diff = diff - days * (60 * 60 * 24);\n\n const hours: number = Math.floor(diff / (60 * 60));\n diff = diff - hours * (60 * 60);\n\n const minutes: number = Math.floor(diff / 60);\n diff -= minutes * 60;\n\n const seconds: number = diff;\n\n const pad: string = '00';\n\n let daysFormatted: string = '';\n\n if (days > 0 && days < 2) {\n daysFormatted = ' day - ';\n } else if (days > 1) {\n daysFormatted = ' days - ';\n }\n\n return (\n (days > 0 ? days + daysFormatted : daysFormatted) +\n pad.substring(0, pad.length - (hours + '').length) +\n hours +\n ':' +\n pad.substring(0, pad.length - (minutes + '').length) +\n minutes +\n ':' +\n pad.substring(0, pad.length - (seconds + '').length) +\n seconds\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timeUntil',\n})\nexport class TdTimeUntilPipe implements PipeTransform {\n transform(time: any, reference?: any): string {\n // Convert time to date object if not already\n time = new Date(time);\n const ref: Date = new Date(reference);\n\n // If not a valid timestamp, return 'Invalid Date'\n if (!time.getTime()) {\n return 'Invalid Date';\n }\n\n // For unit testing, we need to be able to declare a static start time\n // for calculations, or else speed of tests can bork.\n const startTime: number = isNaN(ref.getTime()) ? Date.now() : ref.getTime();\n let diff: number = Math.floor((time.getTime() - startTime) / 1000);\n\n if (diff < 2) {\n return 'in 1 second';\n }\n if (diff < 60) {\n return 'in ' + Math.floor(diff) + ' seconds';\n }\n // Minutes\n diff = diff / 60;\n if (diff < 2) {\n return 'in 1 minute';\n }\n if (diff < 60) {\n return 'in ' + Math.floor(diff) + ' minutes';\n }\n // Hours\n diff = diff / 60;\n if (diff < 2) {\n return 'in 1 hour';\n }\n if (diff < 24) {\n return 'in ' + Math.floor(diff) + ' hours';\n }\n // Days\n diff = diff / 24;\n if (diff < 2) {\n return 'in 1 day';\n }\n if (diff < 30) {\n return 'in ' + Math.floor(diff) + ' days';\n }\n // Months\n diff = diff / 30;\n if (diff < 2) {\n return 'in 1 month';\n }\n if (diff < 12) {\n return 'in ' + Math.floor(diff) + ' months';\n }\n // Years\n diff = diff / 12;\n if (diff < 2) {\n return 'in 1 year';\n } else {\n return 'in ' + Math.floor(diff) + ' years';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'bytes',\n})\nexport class TdBytesPipe implements PipeTransform {\n /* `bytes` needs to be `any` or TypeScript complains\n Tried both `number` and `number | string` */\n transform(bytes: any, precision: number = 2): string {\n if (bytes === 0) {\n return '0 B';\n } else if (isNaN(parseInt(bytes, 10))) {\n /* If not a valid number, return 'Invalid Number' */\n return 'Invalid Number';\n }\n const k: number = 1024;\n const sizes: string[] = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];\n const i: number = Math.floor(Math.log(bytes) / Math.log(k));\n // if less than 1\n if (i < 0) {\n return 'Invalid Number';\n }\n return parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'decimalBytes',\n})\nexport class TdDecimalBytesPipe implements PipeTransform {\n /* `bytes` needs to be `any` or TypeScript complains\n Tried both `number` and `number | string` */\n transform(bytes: any, precision: number = 2): string {\n if (bytes === 0) {\n return '0 B';\n } else if (isNaN(parseInt(bytes, 10))) {\n /* If not a valid number, return 'Invalid Number' */\n return 'Invalid Number';\n }\n const k: number = 1000;\n const sizes: string[] = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i: number = Math.floor(Math.log(bytes) / Math.log(k));\n // if less than 1\n if (i < 0) {\n return 'Invalid Number';\n }\n return parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i];\n }\n}\n","import { Pipe, PipeTransform, Inject, LOCALE_ID } from '@angular/core';\nimport { DecimalPipe } from '@angular/common';\n\n@Pipe({\n name: 'digits',\n})\nexport class TdDigitsPipe implements PipeTransform {\n private _decimalPipe: DecimalPipe;\n\n constructor(@Inject(LOCALE_ID) private _locale: string = 'en') {\n this._decimalPipe = new DecimalPipe(this._locale);\n }\n\n /* `digits` needs to be type `digits: any` or TypeScript complains */\n transform(digits: any, precision: number = 1): string {\n if (digits === 0) {\n return '0';\n } else if (isNaN(parseInt(digits, 10))) {\n /* If not a valid number, return the value */\n return digits;\n } else if (digits < 1) {\n return this._decimalPipe.transform(digits.toFixed(precision));\n }\n const k: number = 1000;\n const sizes: string[] = ['', 'K', 'M', 'B', 'T', 'Q'];\n const i: number = Math.floor(Math.log(digits) / Math.log(k));\n const size: string = sizes[i];\n return (\n this._decimalPipe.transform(parseFloat((digits / Math.pow(k, i)).toFixed(precision))) + (size ? ' ' + size : '')\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n})\nexport class TdTruncatePipe implements PipeTransform {\n transform(text: any, length: number): string {\n if (typeof text !== 'string') {\n return '';\n }\n\n // Truncate\n let truncated: string = text.substr(0, length);\n\n if (text.length > length) {\n if (truncated.lastIndexOf(' ') > 0) {\n truncated = truncated.trim();\n }\n\n truncated += '…';\n }\n\n return truncated;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RoutesRecognized } from '@angular/router';\n\nimport { filter, pairwise } from 'rxjs/operators';\n\n@Injectable()\nexport class RouterPathService {\n private static _previousRoute: string = '/';\n constructor(private _router: Router) {\n this._router.events\n .pipe(\n filter((e: any) => e instanceof RoutesRecognized),\n pairwise(),\n )\n .subscribe((e: any[]) => {\n RouterPathService._previousRoute = e[0].urlAfterRedirects;\n });\n }\n\n /*\n * Utility function to get the route the user previously went to\n * good for use in a \"back button\"\n */\n getPreviousRoute(): string {\n return RouterPathService._previousRoute;\n }\n}\n","/*\n * Copyright (C) 2016-2017 by Teradata Corporation. All rights reserved.\n * TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET\n */\n\nimport { Injectable } from '@angular/core';\n@Injectable()\nexport class IconService {\n // To update, run this little script on https://material.io/resources/icons/?style=baseline\n // JSON.stringify(\n // Array.from(document.querySelectorAll('icons-library .material-icons.icon-image-preview')).map(\n // ({textContent}) => textContent\n // )\n // );\n private _icons: string[] = [\n '3d_rotation',\n 'accessibility',\n 'accessibility_new',\n 'accessible',\n 'accessible_forward',\n 'account_balance',\n 'account_balance_wallet',\n 'account_box',\n 'account_circle',\n 'add_shopping_cart',\n 'alarm',\n 'alarm_add',\n 'alarm_off',\n 'alarm_on',\n 'all_inbox',\n 'all_out',\n 'android',\n 'announcement',\n 'arrow_right_alt',\n 'aspect_ratio',\n 'assessment',\n 'assignment',\n 'assignment_ind',\n 'assignment_late',\n 'assignment_return',\n 'assignment_returned',\n 'assignment_turned_in',\n 'autorenew',\n 'backup',\n 'book',\n 'bookmark',\n 'bookmark_border',\n 'bookmarks',\n 'bug_report',\n 'build',\n 'cached',\n 'calendar_today',\n 'calendar_view_day',\n 'camera_enhance',\n 'cancel_schedule_send',\n 'card_giftcard',\n 'card_membership',\n 'card_travel',\n 'change_history',\n 'check_circle',\n 'check_circle_outline',\n 'chrome_reader_mode',\n 'class',\n 'code',\n 'commute',\n 'compare_arrows',\n 'contact_support',\n 'contactless',\n 'copyright',\n 'credit_card',\n 'dashboard',\n 'date_range',\n 'delete',\n 'delete_forever',\n 'delete_outline',\n 'description',\n 'dns',\n 'done',\n 'done_all',\n 'done_outline',\n 'donut_large',\n 'donut_small',\n 'drag_indicator',\n 'eco',\n 'eject',\n 'euro_symbol',\n 'event',\n 'event_seat',\n 'exit_to_app',\n 'explore',\n 'explore_off',\n 'extension',\n 'face',\n 'favorite',\n 'favorite_border',\n 'feedback',\n 'find_in_page',\n 'find_replace',\n 'fingerprint',\n 'flight_land',\n 'flight_takeoff',\n 'flip_to_back',\n 'flip_to_front',\n 'g_translate',\n 'gavel',\n 'get_app',\n 'gif',\n 'grade',\n 'group_work',\n 'help',\n 'help_outline',\n 'highlight_off',\n 'history',\n 'home',\n 'horizontal_split',\n 'hourglass_empty',\n 'hourglass_full',\n 'http',\n 'https',\n 'important_devices',\n 'info',\n 'input',\n 'invert_colors',\n 'label',\n 'label_important',\n 'label_off',\n 'language',\n 'launch',\n 'line_style',\n 'line_weight',\n 'list',\n 'lock',\n 'lock_open',\n 'loyalty',\n 'markunread_mailbox',\n 'maximize',\n 'minimize',\n 'motorcycle',\n 'note_add',\n 'offline_bolt',\n 'offline_pin',\n 'opacity',\n 'open_in_browser',\n 'open_in_new',\n 'open_with',\n 'pageview',\n 'pan_tool',\n 'payment',\n 'perm_camera_mic',\n 'perm_contact_calendar',\n 'perm_data_setting',\n 'perm_device_information',\n 'perm_identity',\n 'perm_media',\n 'perm_phone_msg',\n 'perm_scan_wifi',\n 'pets',\n 'picture_in_picture',\n 'picture_in_picture_alt',\n 'play_for_work',\n 'polymer',\n 'power_settings_new',\n 'pregnant_woman',\n 'print',\n 'query_builder',\n 'question_answer',\n 'receipt',\n 'record_voice_over',\n 'redeem',\n 'remove_shopping_cart',\n 'reorder',\n 'report_problem',\n 'restore',\n 'restore_from_trash',\n 'restore_page',\n 'room',\n 'rounded_corner',\n 'rowing',\n 'schedule',\n 'search',\n 'settings_applications',\n 'settings_backup_restore',\n 'settings_bluetooth',\n 'settings_brightness',\n 'settings_cell',\n 'settings_ethernet',\n 'settings_input_antenna',\n 'settings_input_component',\n 'settings_input_composite',\n 'settings_input_hdmi',\n 'settings_input_svideo',\n 'settings_overscan',\n 'settings_phone',\n 'settings_power',\n 'settings_remote',\n 'settings_voice',\n 'shop',\n 'shop_two',\n 'shopping_basket',\n 'shopping_cart',\n 'speaker_notes',\n 'speaker_notes_off',\n 'spellcheck',\n 'stars',\n 'store',\n 'subject',\n 'supervised_user_circle',\n 'supervisor_account',\n 'swap_horiz',\n 'swap_horizontal_circle',\n 'swap_vert',\n 'swap_vertical_circle',\n 'sync_alt',\n 'system_update_alt',\n 'tab',\n 'tab_unselected',\n 'text_rotate_up',\n 'text_rotate_vertical',\n 'text_rotation_angledown',\n 'text_rotation_angleup',\n 'text_rotation_down',\n 'text_rotation_none',\n 'theaters',\n 'thumb_down',\n 'thumb_up',\n 'thumbs_up_down',\n 'timeline',\n 'toc',\n 'today',\n 'toll',\n 'touch_app',\n 'track_changes',\n 'translate',\n 'trending_down',\n 'trending_flat',\n 'trending_up',\n 'turned_in',\n 'turned_in_not',\n 'update',\n 'verified_user',\n 'vertical_split',\n 'view_agenda',\n 'view_array',\n 'view_carousel',\n 'view_column',\n 'view_day',\n 'view_headline',\n 'view_list',\n 'view_module',\n 'view_quilt',\n 'view_stream',\n 'view_week',\n 'visibility',\n 'visibility_off',\n 'voice_over_off',\n 'watch_later',\n 'work',\n 'work_off',\n 'work_outline',\n 'youtube_searched_for',\n 'zoom_in',\n 'zoom_out',\n 'add_alert',\n 'error',\n 'error_outline',\n 'notification_important',\n 'warning',\n '4k',\n 'add_to_queue',\n 'airplay',\n 'album',\n 'art_track',\n 'av_timer',\n 'branding_watermark',\n 'call_to_action',\n 'closed_caption',\n 'control_camera',\n 'equalizer',\n 'explicit',\n 'fast_forward',\n 'fast_rewind',\n 'featured_play_list',\n 'featured_video',\n 'fiber_dvr',\n 'fiber_manual_record',\n 'fiber_new',\n 'fiber_pin',\n 'fiber_smart_record',\n 'forward_10',\n 'forward_30',\n 'forward_5',\n 'games',\n 'hd',\n 'hearing',\n 'high_quality',\n 'library_add',\n 'library_books',\n 'library_music',\n 'loop',\n 'mic',\n 'mic_none',\n 'mic_off',\n 'missed_video_call',\n 'movie',\n 'music_video',\n 'new_releases',\n 'not_interested',\n 'note',\n 'pause',\n 'pause_circle_filled',\n 'pause_circle_outline',\n 'play_arrow',\n 'play_circle_filled',\n 'play_circle_outline',\n 'playlist_add',\n 'playlist_add_check',\n 'playlist_play',\n 'queue',\n 'queue_music',\n 'queue_play_next',\n 'radio',\n 'recent_actors',\n 'remove_from_queue',\n 'repeat',\n 'repeat_one',\n 'replay',\n 'replay_10',\n 'replay_30',\n 'replay_5',\n 'shuffle',\n 'skip_next',\n 'skip_previous',\n 'slow_motion_video',\n 'snooze',\n 'sort_by_alpha',\n 'speed',\n 'stop',\n 'subscriptions',\n 'subtitles',\n 'surround_sound',\n 'video_call',\n 'video_label',\n 'video_library',\n 'videocam',\n 'videocam_off',\n 'volume_down',\n 'volume_mute',\n 'volume_off',\n 'volume_up',\n 'web',\n 'web_asset',\n 'business',\n 'call',\n 'call_end',\n 'call_made',\n 'call_merge',\n 'call_missed',\n 'call_missed_outgoing',\n 'call_received',\n 'call_split',\n 'cancel_presentation',\n 'chat',\n 'chat_bubble',\n 'chat_bubble_outline',\n 'clear_all',\n 'comment',\n 'contact_mail',\n 'contact_phone',\n 'contacts',\n 'desktop_access_disabled',\n 'dialer_sip',\n 'dialpad',\n 'domain_disabled',\n 'duo',\n 'email',\n 'forum',\n 'import_contacts',\n 'import_export',\n 'invert_colors_off',\n 'list_alt',\n 'live_help',\n 'mail_outline',\n 'message',\n 'mobile_screen_share',\n 'no_sim',\n 'pause_presentation',\n 'person_add_disabled',\n 'phone',\n 'phone_disabled',\n 'phone_enabled',\n 'phonelink_erase',\n 'phonelink_lock',\n 'phonelink_ring',\n 'phonelink_setup',\n 'portable_wifi_off',\n 'present_to_all',\n 'print_disabled',\n 'ring_volume',\n 'rss_feed',\n 'screen_share',\n 'sentiment_satisfied_alt',\n 'speaker_phone',\n 'stay_current_landscape',\n 'stay_current_portrait',\n 'stay_primary_landscape',\n 'stay_primary_portrait',\n 'stop_screen_share',\n 'swap_calls',\n 'textsms',\n 'unsubscribe',\n 'voicemail',\n 'vpn_key',\n 'add',\n 'add_box',\n 'add_circle',\n 'add_circle_outline',\n 'amp_stories',\n 'archive',\n 'backspace',\n 'ballot',\n 'block',\n 'clear',\n 'create',\n 'delete_sweep',\n 'drafts',\n 'dynamic_feed',\n 'file_copy',\n 'filter_list',\n 'flag',\n 'font_download',\n 'forward',\n 'gesture',\n 'how_to_reg',\n 'how_to_vote',\n 'inbox',\n 'link',\n 'link_off',\n 'low_priority',\n 'mail',\n 'markunread',\n 'move_to_inbox',\n 'next_week',\n 'outlined_flag',\n 'policy',\n 'redo',\n 'remove',\n 'remove_circle',\n 'remove_circle_outline',\n 'reply',\n 'reply_all',\n 'report',\n 'report_off',\n 'save',\n 'save_alt',\n 'select_all',\n 'send',\n 'sort',\n 'square_foot',\n 'text_format',\n 'unarchive',\n 'undo',\n 'waves',\n 'where_to_vote',\n 'access_alarm',\n 'access_alarms',\n 'access_time',\n 'add_alarm',\n 'add_to_home_screen',\n 'airplanemode_active',\n 'airplanemode_inactive',\n 'battery_alert',\n 'battery_charging_full',\n 'battery_full',\n 'battery_std',\n 'battery_unknown',\n 'bluetooth',\n 'bluetooth_connected',\n 'bluetooth_disabled',\n 'bluetooth_searching',\n 'brightness_auto',\n 'brightness_high',\n 'brightness_low',\n 'brightness_medium',\n 'data_usage',\n 'developer_mode',\n 'devices',\n 'dvr',\n 'gps_fixed',\n 'gps_not_fixed',\n 'gps_off',\n 'graphic_eq',\n 'location_disabled',\n 'location_searching',\n 'mobile_friendly',\n 'mobile_off',\n 'nfc',\n 'screen_lock_landscape',\n 'screen_lock_portrait',\n 'screen_lock_rotation',\n 'screen_rotation',\n 'sd_storage',\n 'settings_system_daydream',\n 'signal_cellular_4_bar',\n 'signal_cellular_alt',\n 'signal_cellular_connected_no_internet_4_bar',\n 'signal_cellular_no_sim',\n 'signal_cellular_null',\n 'signal_cellular_off',\n 'signal_wifi_4_bar',\n 'signal_wifi_4_bar_lock',\n 'signal_wifi_off',\n 'storage',\n 'usb',\n 'wallpaper',\n 'widgets',\n 'wifi_lock',\n 'wifi_tethering',\n 'add_comment',\n 'attach_file',\n 'attach_money',\n 'bar_chart',\n 'border_all',\n 'border_bottom',\n 'border_clear',\n 'border_horizontal',\n 'border_inner',\n 'border_left',\n 'border_outer',\n 'border_right',\n 'border_style',\n 'border_top',\n 'border_vertical',\n 'bubble_chart',\n 'drag_handle',\n 'format_align_center',\n 'format_align_justify',\n 'format_align_left',\n 'format_align_right',\n 'format_bold',\n 'format_clear',\n 'format_color_reset',\n 'format_indent_decrease',\n 'format_indent_increase',\n 'format_italic',\n 'format_line_spacing',\n 'format_list_bulleted',\n 'format_list_numbered',\n 'format_list_numbered_rtl',\n 'format_paint',\n 'format_quote',\n 'format_shapes',\n 'format_size',\n 'format_strikethrough',\n 'format_textdirection_l_to_r',\n 'format_textdirection_r_to_l',\n 'format_underlined',\n 'functions',\n 'height',\n 'highlight',\n 'insert_chart',\n 'insert_chart_outlined',\n 'insert_comment',\n 'insert_drive_file',\n 'insert_emoticon',\n 'insert_invitation',\n 'insert_link',\n 'insert_photo',\n 'linear_scale',\n 'merge_type',\n 'mode_comment',\n 'monetization_on',\n 'money_off',\n 'multiline_chart',\n 'notes',\n 'pie_chart',\n 'post_add',\n 'publish',\n 'scatter_plot',\n 'score',\n 'short_text',\n 'show_chart',\n 'space_bar',\n 'strikethrough_s',\n 'table_chart',\n 'text_fields',\n 'title',\n 'vertical_align_bottom',\n 'vertical_align_center',\n 'vertical_align_top',\n 'wrap_text',\n 'attachment',\n 'cloud',\n 'cloud_circle',\n 'cloud_done',\n 'cloud_download',\n 'cloud_off',\n 'cloud_queue',\n 'cloud_upload',\n 'create_new_folder',\n 'folder',\n 'folder_open',\n 'folder_shared',\n 'cast',\n 'cast_connected',\n 'computer',\n 'desktop_mac',\n 'desktop_windows',\n 'developer_board',\n 'device_hub',\n 'device_unknown',\n 'devices_other',\n 'dock',\n 'gamepad',\n 'headset',\n 'headset_mic',\n 'keyboard',\n 'keyboard_arrow_down',\n 'keyboard_arrow_left',\n 'keyboard_arrow_right',\n 'keyboard_arrow_up',\n 'keyboard_backspace',\n 'keyboard_capslock',\n 'keyboard_hide',\n 'keyboard_return',\n 'keyboard_tab',\n 'keyboard_voice',\n 'laptop',\n 'laptop_chromebook',\n 'laptop_mac',\n 'laptop_windows',\n 'memory',\n 'mouse',\n 'phone_android',\n 'phone_iphone',\n 'phonelink',\n 'phonelink_off',\n 'power_input',\n 'router',\n 'scanner',\n 'security',\n 'sim_card',\n 'smartphone',\n 'speaker',\n 'speaker_group',\n 'tablet',\n 'tablet_android',\n 'tablet_mac',\n 'toys',\n 'tv',\n 'videogame_asset',\n 'watch',\n 'add_a_photo',\n 'add_photo_alternate',\n 'add_to_photos',\n 'adjust',\n 'assistant',\n 'assistant_photo',\n 'audiotrack',\n 'blur_circular',\n 'blur_linear',\n 'blur_off',\n 'blur_on',\n 'brightness_1',\n 'brightness_2',\n 'brightness_3',\n 'brightness_4',\n 'brightness_5',\n 'brightness_6',\n 'brightness_7',\n 'broken_image',\n 'brush',\n 'burst_mode',\n 'camera',\n 'camera_alt',\n 'camera_front',\n 'camera_rear',\n 'camera_roll',\n 'center_focus_strong',\n 'center_focus_weak',\n 'collections',\n 'collections_bookmark',\n 'color_lens',\n 'colorize',\n 'compare',\n 'control_point',\n 'control_point_duplicate',\n 'crop',\n 'crop_16_9',\n 'crop_3_2',\n 'crop_5_4',\n 'crop_7_5',\n 'crop_din',\n 'crop_free',\n 'crop_landscape',\n 'crop_original',\n 'crop_portrait',\n 'crop_rotate',\n 'crop_square',\n 'dehaze',\n 'details',\n 'edit',\n 'euro',\n 'exposure',\n 'exposure_neg_1',\n 'exposure_neg_2',\n 'exposure_plus_1',\n 'exposure_plus_2',\n 'exposure_zero',\n 'filter',\n 'filter_1',\n 'filter_2',\n 'filter_3',\n 'filter_4',\n 'filter_5',\n 'filter_6',\n 'filter_7',\n 'filter_8',\n 'filter_9',\n 'filter_9_plus',\n 'filter_b_and_w',\n 'filter_center_focus',\n 'filter_drama',\n 'filter_frames',\n 'filter_hdr',\n 'filter_none',\n 'filter_tilt_shift',\n 'filter_vintage',\n 'flare',\n 'flash_auto',\n 'flash_off',\n 'flash_on',\n 'flip',\n 'flip_camera_android',\n 'flip_camera_ios',\n 'gradient',\n 'grain',\n 'grid_off',\n 'grid_on',\n 'hdr_off',\n 'hdr_on',\n 'hdr_strong',\n 'hdr_weak',\n 'healing',\n 'image',\n 'image_aspect_ratio',\n 'image_search',\n 'iso',\n 'landscape',\n 'leak_add',\n 'leak_remove',\n 'lens',\n 'linked_camera',\n 'looks',\n 'looks_3',\n 'looks_4',\n 'looks_5',\n 'looks_6',\n 'looks_one',\n 'looks_two',\n 'loupe',\n 'monochrome_photos',\n 'movie_creation',\n 'movie_filter',\n 'music_note',\n 'music_off',\n 'nature',\n 'nature_people',\n 'navigate_before',\n 'navigate_next',\n 'palette',\n 'panorama',\n 'panorama_fish_eye',\n 'panorama_horizontal',\n 'panorama_vertical',\n 'panorama_wide_angle',\n 'photo',\n 'photo_album',\n 'photo_camera',\n 'photo_filter',\n 'photo_library',\n 'photo_size_select_actual',\n 'photo_size_select_large',\n 'photo_size_select_small',\n 'picture_as_pdf',\n 'portrait',\n 'remove_red_eye',\n 'rotate_90_degrees_ccw',\n 'rotate_left',\n 'rotate_right',\n 'shutter_speed',\n 'slideshow',\n 'straighten',\n 'style',\n 'switch_camera',\n 'switch_video',\n 'tag_faces',\n 'texture',\n 'timelapse',\n 'timer',\n 'timer_10',\n 'timer_3',\n 'timer_off',\n 'tonality',\n 'transform',\n 'tune',\n 'view_comfy',\n 'view_compact',\n 'vignette',\n 'wb_auto',\n 'wb_cloudy',\n 'wb_incandescent',\n 'wb_iridescent',\n 'wb_sunny',\n '360',\n 'atm',\n 'beenhere',\n 'category',\n 'compass_calibration',\n 'departure_board',\n 'directions',\n 'directions_bike',\n 'directions_boat',\n 'directions_bus',\n 'directions_car',\n 'directions_railway',\n 'directions_run',\n 'directions_subway',\n 'directions_transit',\n 'directions_walk',\n 'edit_attributes',\n 'ev_station',\n 'fastfood',\n 'flight',\n 'hotel',\n 'layers',\n 'layers_clear',\n 'local_activity',\n 'local_airport',\n 'local_atm',\n 'local_bar',\n 'local_cafe',\n 'local_car_wash',\n 'local_convenience_store',\n 'local_dining',\n 'local_drink',\n 'local_florist',\n 'local_gas_station',\n 'local_grocery_store',\n 'local_hospital',\n 'local_hotel',\n 'local_laundry_service',\n 'local_library',\n 'local_mall',\n 'local_movies',\n 'local_offer',\n 'local_parking',\n 'local_pharmacy',\n 'local_phone',\n 'local_pizza',\n 'local_play',\n 'local_post_office',\n 'local_printshop',\n 'local_see',\n 'local_shipping',\n 'local_taxi',\n 'map',\n 'menu_book',\n 'money',\n 'museum',\n 'my_location',\n 'navigation',\n 'near_me',\n 'person_pin',\n 'rate_review',\n 'restaurant',\n 'restaurant_menu',\n 'satellite',\n 'store_mall_directory',\n 'streetview',\n 'subway',\n 'terrain',\n 'traffic',\n 'train',\n 'tram',\n 'transfer_within_a_station',\n 'transit_enterexit',\n 'trip_origin',\n 'zoom_out_map',\n 'apps',\n 'arrow_back',\n 'arrow_back_ios',\n 'arrow_downward',\n 'arrow_drop_down',\n 'arrow_drop_down_circle',\n 'arrow_drop_up',\n 'arrow_forward',\n 'arrow_forward_ios',\n 'arrow_left',\n 'arrow_right',\n 'arrow_upward',\n 'cancel',\n 'check',\n 'chevron_left',\n 'chevron_right',\n 'close',\n 'double_arrow',\n 'expand_less',\n 'expand_more',\n 'first_page',\n 'fullscreen',\n 'fullscreen_exit',\n 'home_work',\n 'last_page',\n 'menu',\n 'menu_open',\n 'more_horiz',\n 'more_vert',\n 'refresh',\n 'subdirectory_arrow_left',\n 'subdirectory_arrow_right',\n 'unfold_less',\n 'unfold_more',\n 'account_tree',\n 'adb',\n 'airline_seat_flat',\n 'airline_seat_flat_angled',\n 'airline_seat_individual_suite',\n 'airline_seat_legroom_extra',\n 'airline_seat_legroom_normal',\n 'airline_seat_legroom_reduced',\n 'airline_seat_recline_extra',\n 'airline_seat_recline_normal',\n 'bluetooth_audio',\n 'confirmation_number',\n 'disc_full',\n 'drive_eta',\n 'enhanced_encryption',\n 'event_available',\n 'event_busy',\n 'event_note',\n 'folder_special',\n 'live_tv',\n 'mms',\n 'more',\n 'network_check',\n 'network_locked',\n 'no_encryption',\n 'ondemand_video',\n 'personal_video',\n 'phone_bluetooth_speaker',\n 'phone_callback',\n 'phone_forwarded',\n 'phone_in_talk',\n 'phone_locked',\n 'phone_missed',\n 'phone_paused',\n 'power',\n 'power_off',\n 'priority_high',\n 'sd_card',\n 'sms',\n 'sms_failed',\n 'sync',\n 'sync_disabled',\n 'sync_problem',\n 'system_update',\n 'tap_and_play',\n 'time_to_leave',\n 'tv_off',\n 'vibration',\n 'voice_chat',\n 'vpn_lock',\n 'wc',\n 'wifi',\n 'wifi_off',\n 'ac_unit',\n 'airport_shuttle',\n 'all_inclusive',\n 'apartment',\n 'bathtub',\n 'beach_access',\n 'business_center',\n 'casino',\n 'child_care',\n 'child_friendly',\n 'fitness_center',\n 'free_breakfast',\n 'golf_course',\n 'hot_tub',\n 'house',\n 'kitchen',\n 'meeting_room',\n 'no_meeting_room',\n 'pool',\n 'room_service',\n 'rv_hookup',\n 'smoke_free',\n 'smoking_rooms',\n 'spa',\n 'storefront',\n 'cake',\n 'deck',\n 'emoji_emotions',\n 'emoji_events',\n 'emoji_flags',\n 'emoji_food_beverage',\n 'emoji_nature',\n 'emoji_objects',\n 'emoji_people',\n 'emoji_symbols',\n 'emoji_transportation',\n 'fireplace',\n 'group',\n 'group_add',\n 'king_bed',\n 'location_city',\n 'mood',\n 'mood_bad',\n 'nights_stay',\n 'notifications',\n 'notifications_active',\n 'notifications_none',\n 'notifications_off',\n 'notifications_paused',\n 'outdoor_grill',\n 'pages',\n 'party_mode',\n 'people',\n 'people_alt',\n 'people_outline',\n 'person',\n 'person_add',\n 'person_outline',\n 'plus_one',\n 'poll',\n 'public',\n 'school',\n 'sentiment_dissatisfied',\n 'sentiment_satisfied',\n 'sentiment_very_dissatisfied',\n 'sentiment_very_satisfied',\n 'share',\n 'single_bed',\n 'sports',\n 'sports_baseball',\n 'sports_basketball',\n 'sports_cricket',\n 'sports_esports',\n 'sports_football',\n 'sports_golf',\n 'sports_handball',\n 'sports_hockey',\n 'sports_kabaddi',\n 'sports_mma',\n 'sports_motorsports',\n 'sports_rugby',\n 'sports_soccer',\n 'sports_tennis',\n 'sports_volleyball',\n 'thumb_down_alt',\n 'thumb_up_alt',\n 'whatshot',\n 'check_box',\n 'check_box_outline_blank',\n 'indeterminate_check_box',\n 'radio_button_checked',\n 'radio_button_unchecked',\n 'star',\n 'star_border',\n 'star_half',\n 'toggle_off',\n 'toggle_on',\n ];\n\n get icons(): string[] {\n return this._icons;\n }\n\n filter(query: string): string[] {\n return this.icons.filter((el: string) => {\n return el.toLowerCase().indexOf(query ? query.toLowerCase() : '') > -1;\n });\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Directives\n */\nimport { TdAutoTrimDirective } from './forms/auto-trim/auto-trim.directive';\nimport { TdFullscreenDirective } from './directives/fullscreen/fullscreen.directive';\n\nconst TD_DIRECTIVES: Type<any>[] = [TdAutoTrimDirective, TdFullscreenDirective];\n\n// Validators\nconst TD_VALIDATORS: Type<any>[] = [];\n\n/**\n * PIPES\n */\nimport { TdTimeAgoPipe } from './pipes/time-ago/time-ago.pipe';\nimport { TdTimeDifferencePipe } from './pipes/time-difference/time-difference.pipe';\nimport { TdTimeUntilPipe } from './pipes/time-until/time-until.pipe';\nimport { TdBytesPipe } from './pipes/bytes/bytes.pipe';\nimport { TdDecimalBytesPipe } from './pipes/decimal-bytes/decimal-bytes.pipe';\nimport { TdDigitsPipe } from './pipes/digits/digits.pipe';\nimport { TdTruncatePipe } from './pipes/truncate/truncate.pipe';\n\nconst TD_PIPES: Type<any>[] = [\n TdTimeAgoPipe,\n TdTimeDifferencePipe,\n TdTimeUntilPipe,\n TdBytesPipe,\n TdDecimalBytesPipe,\n TdDigitsPipe,\n TdTruncatePipe,\n];\n\n/**\n * Services\n */\n\nimport { RouterPathService } from './services/router-path.service';\nimport { IconService } from './services/icon.service';\n\n@NgModule({\n imports: [FormsModule, CommonModule],\n declarations: [TD_DIRECTIVES, TD_PIPES, TD_VALIDATORS],\n exports: [FormsModule, CommonModule, TD_DIRECTIVES, TD_PIPES, TD_VALIDATORS],\n providers: [RouterPathService, IconService],\n})\nexport class CovalentCommonModule {}\n","import {\n trigger,\n state,\n style,\n transition,\n animate,\n AnimationTriggerMetadata,\n query,\n animateChild,\n group,\n} from '@angular/animations';\n\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface IRotateAnimation extends IAnimationOptions {\n degrees?: number;\n ease?: string;\n}\n\n/**\n * const tdRotateAnimation\n *\n * Parameter Options:\n * * degressStart: Degrees of rotation that the dom object will end up in during the \"false\" state\n * * degreesEnd: Degrees of rotation that the dom object will end up in during the \"true\" state\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerates and decelerates. Defaults to ease-in.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a rotation animation.\n *\n * usage: [@tdRotate]=\"{ value: true | false, params: { degreesEnd: 90 }}\"\n */\n\nexport const tdRotateAnimation: AnimationTriggerMetadata = trigger('tdRotate', [\n state(\n '0',\n style({\n transform: 'rotate({{ degressStart }}deg)',\n }),\n { params: { degressStart: 0 } },\n ),\n state(\n '1',\n style({\n transform: 'rotate({{ degreesEnd }}deg)',\n }),\n { params: { degreesEnd: 180 } },\n ),\n transition(\n '0 <=> 1',\n [group([query('@*', animateChild(), { optional: true }), animate('{{ duration }}ms {{ delay }}ms {{ ease }}')])],\n { params: { duration: 250, delay: '0', ease: 'ease-in' } },\n ),\n]);\n","import {\n trigger,\n state,\n style,\n transition,\n animate,\n AnimationTriggerMetadata,\n AUTO_STYLE,\n query,\n animateChild,\n group,\n} from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface ICollapseAnimation extends IAnimationOptions {\n easeOnClose?: string;\n easeOnOpen?: string;\n}\n\n/**\n * const tdCollapseAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * easeOnClose: Animation accelerates and decelerates when closing. Defaults to ease-in.\n * * easeOnOpen: Animation accelerates and decelerates when opening. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a collapse/expand animation.\n *\n * usage: [@tdCollapse]=\"{ value: true | false, params: { duration: 500 }}\"\n */\nexport const tdCollapseAnimation: AnimationTriggerMetadata = trigger('tdCollapse', [\n state(\n '1',\n style({\n height: '0',\n overflow: 'hidden',\n }),\n ),\n state(\n '0',\n style({\n height: AUTO_STYLE,\n overflow: AUTO_STYLE,\n }),\n ),\n transition(\n '0 => 1',\n [\n style({\n overflow: 'hidden',\n height: AUTO_STYLE,\n }),\n group([\n query('@*', animateChild(), { optional: true }),\n animate(\n '{{ duration }}ms {{ delay }}ms {{ ease }}',\n style({\n height: '0',\n overflow: 'hidden',\n }),\n ),\n ]),\n ],\n { params: { duration: 150, delay: '0', ease: 'ease-in' } },\n ),\n transition(\n '1 => 0',\n [\n style({\n height: '0',\n overflow: 'hidden',\n }),\n group([\n query('@*', animateChild(), { optional: true }),\n animate(\n '{{ duration }}ms {{ delay }}ms {{ ease }}',\n style({\n overflow: 'hidden',\n height: AUTO_STYLE,\n }),\n ),\n ]),\n ],\n { params: { duration: 150, delay: '0', ease: 'ease-out' } },\n ),\n]);\n","import {\n trigger,\n state,\n style,\n transition,\n animate,\n AnimationTriggerMetadata,\n AUTO_STYLE,\n query,\n animateChild,\n group,\n} from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface IFadeInOutAnimation extends IAnimationOptions {\n easeOnIn?: string;\n easeOnOut?: string;\n}\n\n/**\n * const tdFadeInOutAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * easeOnIn: Animation accelerates and decelerates when fading in. Defaults to ease-in.\n * * easeOnOut: Animation accelerates and decelerates when fading out. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a fade animation.\n *\n * usage: [@tdFadeInOut]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdFadeInOutAnimation: AnimationTriggerMetadata = trigger('tdFadeInOut', [\n state(\n '0',\n style({\n opacity: '0',\n visibility: 'hidden',\n }),\n ),\n state(\n '1',\n style({\n opacity: AUTO_STYLE,\n visibility: AUTO_STYLE,\n }),\n ),\n transition(\n '0 => 1',\n [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ easeOnIn }}'),\n ]),\n ],\n { params: { duration: 150, delay: '0', easeOnIn: 'ease-in' } },\n ),\n transition(\n '1 => 0',\n [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ easeOnOut }}'),\n ]),\n ],\n { params: { duration: 150, delay: '0', easeOnOut: 'ease-out' } },\n ),\n]);\n","import {\n trigger,\n state,\n style,\n keyframes,\n transition,\n animate,\n AnimationTriggerMetadata,\n query,\n animateChild,\n group,\n} from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdBounceAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a bounce animation.\n *\n * usage: [@tdBounce]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdBounceAnimation: AnimationTriggerMetadata = trigger('tdBounce', [\n state(\n '0',\n style({\n transform: 'translate3d(0, 0, 0)',\n }),\n ),\n state(\n '1',\n style({\n transform: 'translate3d(0, 0, 0)',\n }),\n ),\n transition(\n '0 <=> 1',\n [\n group([\n query('@*', animateChild(), { optional: true }),\n animate(\n '{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({\n animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',\n transform: 'translate3d(0, 0, 0)',\n offset: 0,\n }),\n style({\n animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',\n transform: 'translate3d(0, 0, 0)',\n offset: 0.2,\n }),\n style({\n animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',\n transform: 'translate3d(0, -30px, 0)',\n offset: 0.4,\n }),\n style({\n animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',\n transform: 'translate3d(0, -30px, 0)',\n offset: 0.43,\n }),\n style({\n animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',\n transform: 'translate3d(0, 0, 0)',\n offset: 0.53,\n }),\n style({\n animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',\n transform: 'translate3d(0, -15px, 0)',\n offset: 0.7,\n }),\n style({\n animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',\n transform: 'translate3d(0, 0, 0)',\n offset: 0.8,\n }),\n style({ transform: 'translate3d(0, -4px, 0)', offset: 0.9 }),\n style({\n animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',\n transform: 'translate3d(0, 0, 0)',\n offset: 1.0,\n }),\n ]),\n ),\n ]),\n ],\n { params: { duration: 500, delay: '0', ease: 'ease-out' } },\n ),\n]);\n","import {\n trigger,\n state,\n style,\n keyframes,\n transition,\n animate,\n AnimationTriggerMetadata,\n AUTO_STYLE,\n query,\n animateChild,\n group,\n} from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdFlashAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a flash animation.\n *\n * usage: [@tdFlash]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdFlashAnimation: AnimationTriggerMetadata = trigger('tdFlash', [\n state(\n '0',\n style({\n opacity: 1,\n }),\n ),\n state(\n '1',\n style({\n opacity: 1,\n }),\n ),\n transition(\n '0 <=> 1',\n [\n group([\n query('@*', animateChild(), { optional: true }),\n animate(\n '{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0, offset: 0.25 }),\n style({ opacity: 1, offset: 0.5 }),\n style({ opacity: 0, offset: 0.75 }),\n style({ opacity: 1, offset: 1.0 }),\n ]),\n ),\n ]),\n ],\n { params: { duration: 500, delay: '0', ease: 'ease-out' } },\n ),\n]);\n","import {\n trigger,\n state,\n style,\n keyframes,\n transition,\n animate,\n AnimationTriggerMetadata,\n AUTO_STYLE,\n query,\n animateChild,\n group,\n} from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdHeadshakeAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a headshake animation.\n *\n * usage: [@tdHeadshake]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdHeadshakeAnimation: AnimationTriggerMetadata = trigger('tdHeadshake', [\n state(\n '0',\n style({\n transform: 'translateX(0)',\n }),\n ),\n state(\n '1',\n style({\n transform: 'translateX(0)',\n }),\n ),\n transition(\n '0 <=> 1',\n [\n group([\n query('@*', animateChild(), { optional: true }),\n animate(\n '{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({ transform: 'translateX(0)', offset: 0 }),\n style({ transform: 'translateX(-6px) rotateY(-9deg)', offset: 0.065 }),\n style({ transform: 'translateX(5px) rotateY(7deg)', offset: 0.185 }),\n style({ transform: 'translateX(-3px) rotateY(-5deg)', offset: 0.315 }),\n style({ transform: 'translateX(2px) rotateY(3deg)', offset: 0.435 }),\n style({ transform: 'translateX(0)', offset: 0.5 }),\n ]),\n ),\n ]),\n ],\n { params: { duration: 500, delay: '0', ease: 'ease-out' } },\n ),\n]);\n","import {\n trigger,\n state,\n style,\n keyframes,\n transition,\n animate,\n AnimationTriggerMetadata,\n AUTO_STYLE,\n query,\n animateChild,\n group,\n} from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdJelloAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a jello animation.\n *\n * usage: [@tdJello]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdJelloAnimation: AnimationTriggerMetadata = trigger('tdJello', [\n state(\n '0',\n style({\n transform: 'none',\n }),\n ),\n state(\n '1',\n style({\n transform: 'none',\n }),\n ),\n transition(\n '0 <=> 1',\n [\n group([\n query('@*', animateChild(), { optional: true }),\n animate(\n '{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({ transform: 'none', offset: 0 }),\n style({ transform: 'none', offset: 0.011 }),\n style({ transform: 'skewX(-12.5deg) skewY(-12.5deg)', offset: 0.222 }),\n style({ transform: 'skewX(6.25deg) skewY(6.25deg)', offset: 0.333 }),\n style({ transform: 'skewX(-3.125deg) skewY(-3.125deg)', offset: 0.444 }),\n style({ transform: 'skewX(1.5625deg) skewY(1.5625deg)', offset: 0.555 }),\n style({ transform: 'skewX(-0.78125deg) skewY(-0.78125deg)', offset: 0.666 }),\n style({ transform: 'skewX(0.390625deg) skewY(0.390625deg)', offset: 0.777 }),\n style({ transform: 'skewX(-0.1953125deg) skewY(-0.1953125deg)', offset: 0.888 }),\n ]),\n ),\n ]),\n ],\n { params: { duration: 500, delay: '0', ease: 'ease-out' } },\n ),\n]);\n","import {\n trigger,\n state,\n style,\n keyframes,\n transition,\n animate,\n AnimationTriggerMetadata,\n AUTO_STYLE,\n query,\n animateChild,\n group,\n} from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdPulseAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a pulse animation.\n *\n * usage: [@tdPulse]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdPulseAnimation: AnimationTriggerMetadata = trigger('tdPulse', [\n state(\n '0',\n style({\n transform: 'scale3d(1, 1, 1)',\n }),\n ),\n state(\n '1',\n style({\n transform: 'scale3d(1, 1, 1)',\n }),\n ),\n transition(\n '0 <=> 1',\n [\n group([\n query('@*', animateChild(), { optional: true }),\n animate(\n '{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({ transform: 'scale3d(1, 1, 1)', offset: 0 }),\n style({ transform: 'scale3d(1.05, 1.05, 1.05)', offset: 0.5 }),\n style({ transform: 'scale3d(1, 1, 1)', offset: 1.0 }),\n ]),\n ),\n ]),\n ],\n { params: { duration: 500, delay: '0', ease: 'ease-out' } },\n ),\n]);\n","import { ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\nconst noop: any = () => {\n // empty method\n};\n\nexport interface IControlValueAccessor extends ControlValueAccessor {\n value: any;\n valueChanges: Observable<any>;\n onChange: (_: any) => any;\n onTouched: () => any;\n}\n\nexport interface IHasChangeDetectorRef {\n _changeDetectorRef: ChangeDetectorRef;\n}\n\n/** Mixin to augment a component with ngModel support. */\nexport function mixinControlValueAccessor<T extends Constructor<IHasChangeDetectorRef>>(\n base: T,\n initialValue?: any,\n): Constructor<IControlValueAccessor> & T {\n return class extends base {\n private _value: any = initialValue instanceof Array ? Object.assign([], initialValue) : initialValue;\n private _subjectValueChanges: Subject<any>;\n valueChanges: Observable<any>;\n\n constructor(...args: any[]) {\n super(...args);\n this._subjectValueChanges = new Subject<any>();\n this.valueChanges = this._subjectValueChanges.asObservable();\n }\n\n set value(v: any) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n this._changeDetectorRef.markForCheck();\n this._subjectValueChanges.next(v);\n }\n }\n get value(): any {\n return this._value;\n }\n\n writeValue(value: any): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onChange = (_: any) => noop;\n onTouched = () => noop;\n };\n}\n","import { Validators, AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport class CovalentValidators {\n static min(minValue: any): ValidatorFn {\n // tslint:disable-next-line:prefer-immediate-return\n const func: ValidatorFn = (c: AbstractControl): { [key: string]: any } => {\n if (!!Validators.required(c) || (!minValue && minValue !== 0)) {\n return undefined;\n }\n const v: number = c.value;\n return v < minValue ? { min: { minValue, actualValue: v } } : undefined;\n };\n return func;\n }\n\n static max(maxValue: any): ValidatorFn {\n // tslint:disable-next-line:prefer-immediate-return\n const func: ValidatorFn = (c: AbstractControl): { [key: string]: any } => {\n if (!!Validators.required(c) || (!maxValue && maxValue !== 0)) {\n return undefined;\n }\n const v: number = c.value;\n return v > maxValue ? { max: { maxValue, actualValue: v } } : undefined;\n };\n return func;\n }\n\n static numberRequired(c: AbstractControl): { [key: string]: any } {\n return Number.isNaN(c.value) ? { required: true } : undefined;\n }\n}\n","/**\n * Conversion function that takes an array of objects and converts\n * them to CSV format. Custom key and line separators can be specified.\n *\n * @param objects list of strings in JSON format or actual objects\n * @param keySeparator optional parameter to specify custom value separator\n * @param lineSeparator optional parameter to specify custom end of line separator\n * @returns CSV formatted string\n */\nexport function convertObjectsToCSV(\n objects: any[],\n keySeparator: string = ',',\n lineSeparator: string = '\\r\\n',\n): string {\n if (!objects) {\n return '';\n }\n\n let outputString: string = '';\n\n // Iterate through array, creating one output line per object\n objects.forEach((value: object, key: number) => {\n let line: string = '';\n for (const index of Object.keys(objects[key])) {\n if (line !== '') {\n line += keySeparator;\n }\n if (objects[key][index] === null || objects[key][index] === undefined) {\n objects[key][index] = '';\n }\n line += objects[key][index];\n }\n outputString += `${line}${lineSeparator}`;\n });\n\n // Append header row identifying keys into output\n if (objects[0]) {\n const headers: string = Object.keys(objects[0]).join(keySeparator);\n outputString = `${headers}${lineSeparator}${outputString}`;\n }\n\n return outputString;\n}\n\n/**\n * Conversion function that takes a CSV representation\n * of objects and converts them to JSON.\n * The first row in the input must be the object keys.\n * Custom key separator and line separator can be specified.\n * Indentation size for output JSON can be specified.\n *\n * @param csv list of strings in JSON format or actual objects\n * @param keySeparator optional parameter to specify custom value separator\n * @param lineSeparator optional parameter to specify custom end of line separator\n * @param indent optional parameter indicating space indentation for pretty output. Default is 2.\n * @returns JSON formatted string\n */\nexport function convertCSVToJSON(\n csv: string,\n keySeparator: string = ',',\n lineSeparator: string = '\\r\\n',\n indent: number = 2,\n): string {\n if (!csv) {\n return '';\n }\n\n const csvArray: string[] = csv.split(lineSeparator);\n // Input CSV must have a minimum of two rows\n if (csvArray.length < 2) {\n return '';\n }\n\n const newObjects: any[] = [];\n\n // Extract object keys from header row\n const keys: string[] = csvArray[0].split(keySeparator);\n // Iterate through array, creating one output line per object\n for (let i: number = 1; i < csvArray.length; i++) {\n const newObject: any = {};\n\n const values: string[] = csvArray[i].split(keySeparator);\n if (values.length !== keys.length) {\n continue;\n }\n for (let j: number = 0; j < keys.length; j++) {\n newObject[keys[j]] = values[j];\n }\n newObjects.push(newObject);\n }\n\n return formatJSON(newObjects, indent);\n}\n\n/**\n * Convert object to JSON using stringify. Indentation size for output JSON can be specified.\n *\n * @param json object to be converted\n * @param indent optional parameter indicating space indentation for pretty output. Default is 2.\n */\nexport function formatJSON(json: object, indent: number = 2): string {\n return JSON.stringify(json, undefined, indent);\n}\n","import { convertObjectsToCSV, formatJSON } from './convert';\n\n/**\n * Download CSV content to the specified file with .csv extension\n * appended to the provided base file name.\n *\n * @param fileBaseName base name of destination file\n * @param csv CSV contents\n */\nexport function downloadCSV(fileBaseName: string, csv: string): void {\n downloadFile(`${fileBaseName}.csv`, csv, 'text/csv');\n}\n\n/**\n * Download JSON content to the specified file with .json extension\n * appended to the provided base file name.\n *\n * @param fileBaseName base name of destination file\n * @param json JSON contents\n * @param format indicates if JSON should be prettied\n * @param indent optional parameter indicating space indentation for pretty output. Default is 2\n */\nexport function downloadJSON(fileBaseName: string, json: string, format: boolean = false, indent: number = 2): void {\n downloadFile(`${fileBaseName}.json`, format ? formatJSON(JSON.parse(json), indent) : json, 'application/json');\n}\n\n/**\n * Convert objects to CSV format and download to file with .csv\n * extension appended to the provided base file name. Custom key\n * separator and line separator can be specified.\n *\n * @param fileBaseName base name of destination file\n * @param objects object array to be converted to CSV format\n * prior to writing to download destination\n * @param keySeparator optional parameter to specify custom value separator\n * @param lineSeparator optional parameter to specify custom end of line separator\n */\nexport function downloadObjectsToCSV(\n fileBaseName: string,\n objects: any[],\n keySeparator: string = ',',\n lineSeparator: string = '\\r\\n',\n): void {\n downloadFile(`${fileBaseName}.csv`, convertObjectsToCSV(objects, keySeparator, lineSeparator), 'text/csv');\n}\n\n/**\n * Convert objects to JSON format and download to file with .json\n * extension appended to the provided base file name.\n *\n * @param fileBaseName base name of destination file\n * @param objects object array to be converted to JSON format\n * prior to writing to download destination\n * @param indent optional parameter indicating space indentation for pretty output. Default is 2\n */\nexport function downloadObjectsToJSON(fileBaseName: string, objects: any[], indent: number = 2): void {\n downloadFile(`${fileBaseName}.json`, formatJSON(objects, indent), 'application/json');\n}\n\n/**\n * Download string content to the specified file with desired mime type.\n *\n * @param fileName full filename (including appropriate extension) of destination file\n * @param contents string contents to be written to download destination\n * @param mimeType mime type appropriate to file content to support consumption of destination file\n */\nexport function downloadFile(fileName: string, contents: string, mimeType: string = 'text/plain'): void {\n if (!fileName || !contents) {\n return;\n }\n\n // Create blob object and assign URL\n const blob: Blob = new Blob([contents], { type: mimeType });\n const url: string = window.URL.createObjectURL(blob);\n\n // Construct anchor for URL, append to DOM, click and cleanup.\n const a: HTMLAnchorElement = document.createElement('a');\n a.setAttribute('style', 'display: none');\n a.setAttribute('download', fileName);\n a.href = url;\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n}\n","/**\n * Assign a text value to the system clipboard. Note: Due to browser\n * security restrictions, the copy will only succeed if this method\n * is invoked as a result of a user action (eg. user button click).\n *\n * @param value text value to be assigned to clipboard.\n * @returns boolean indicating success/failure of copy operation.\n */\nexport function copyToClipboard(value: string): boolean {\n // Create a temporary textarea element and append to DOM\n const fakeTextArea: HTMLTextAreaElement = document.createElement('textarea');\n document.body.appendChild(fakeTextArea);\n\n // Assign value to be copied to clipboard\n fakeTextArea.value = value;\n fakeTextArea.select();\n\n // Copy to clipboard\n const success: boolean = document.execCommand('copy');\n\n // Remove temporary textarea\n document.body.removeChild(fakeTextArea);\n\n // Return boolean indicating if exec command succeeded\n return success;\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\n/** Interface to implement when applying the disabled mixin */\nexport interface ICanDisableRipple {\n disableRipple: boolean;\n onDisableRippleChange(v: boolean): void;\n}\n\n/** Mixin to augment a component or directive with a `disabled` property. */\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): Constructor<ICanDisableRipple> & T {\n return class extends base {\n private _disableRipple: boolean = false;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n get disableRipple(): boolean {\n return this._disableRipple;\n }\n set disableRipple(value: boolean) {\n const newValue: boolean = coerceBooleanProperty(value);\n if (this._disableRipple !== newValue) {\n this._disableRipple = newValue;\n this.onDisableRippleChange(this._disableRipple);\n }\n }\n\n onDisableRippleChange(v: boolean): void {\n /** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */\n }\n };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\n/** Interface to implement when applying the disabled mixin */\nexport interface ICanDisable {\n disabled: boolean;\n onDisabledChange(v: boolean): void;\n}\n\n/** Mixin to augment a component or directive with a `disabled` property. */\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): Constructor<ICanDisable> & T {\n return class extends base {\n private _disabled: boolean = false;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n const newValue: boolean = coerceBooleanProperty(value);\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.onDisabledChange(this._disabled);\n }\n }\n\n onDisabledChange(v: boolean): void {\n /** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */\n }\n };\n}\n","/**\n * Read file as UTF-8 text. Return string contents on read completion.\n *\n * @param file filename or File object\n * @returns promise that resolves to file content string\n */\nexport function readFile(file: File): Promise<string> {\n return new Promise<string>((resolve: (value: string) => void) => {\n const reader: FileReader = new FileReader();\n reader.readAsText(file, 'UTF-8');\n reader.onload = () => {\n resolve(<string>reader.result);\n };\n });\n}\n"]}