UNPKG

73 kBJavaScriptView Raw
1import * as i0 from '@angular/core';
2import { Directive, Optional, Host, HostListener, Inject, Pipe, LOCALE_ID, Injectable, NgModule } from '@angular/core';
3import { DOCUMENT, DecimalPipe, CommonModule } from '@angular/common';
4import * as i1 from '@angular/forms';
5import { FormsModule, Validators } from '@angular/forms';
6import { MAT_ICON_DEFAULT_OPTIONS } from '@angular/material/icon';
7import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
8import * as i1$1 from '@angular/router';
9import { RoutesRecognized } from '@angular/router';
10import { filter, pairwise } from 'rxjs/operators';
11import { trigger, state, style, transition, group, query, animateChild, animate, AUTO_STYLE, keyframes } from '@angular/animations';
12import { Subject } from 'rxjs';
13import { coerceBooleanProperty } from '@angular/cdk/coercion';
14
15class TdAutoTrimDirective {
16 _model;
17 constructor(_model) {
18 this._model = _model;
19 }
20 /**
21 * Listens to host's (blur) event and trims value.
22 */
23 onBlur(event) {
24 if (this._model &&
25 this._model.value &&
26 typeof this._model.value === 'string') {
27 this._model.update.emit(this._model.value.trim());
28 }
29 }
30 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdAutoTrimDirective, deps: [{ token: i1.NgModel, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
31 static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: TdAutoTrimDirective, selector: "[tdAutoTrim]", host: { listeners: { "blur": "onBlur($event)" } }, ngImport: i0 });
32}
33i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdAutoTrimDirective, decorators: [{
34 type: Directive,
35 args: [{
36 selector: '[tdAutoTrim]',
37 }]
38 }], ctorParameters: () => [{ type: i1.NgModel, decorators: [{
39 type: Optional
40 }, {
41 type: Host
42 }] }], propDecorators: { onBlur: [{
43 type: HostListener,
44 args: ['blur', ['$event']]
45 }] } });
46
47class TdFullscreenDirective {
48 _document;
49 _el;
50 fullScreenIsActive = false;
51 constructor(_document, _el) {
52 this._document = _document;
53 this._el = _el;
54 }
55 fsChangeHandler(event) {
56 this.fullScreenIsActive = event.srcElement === this._getFullScreenElement();
57 }
58 toggleFullScreen() {
59 this._getFullScreenElement() === this._el.nativeElement
60 ? this.exitFullScreen()
61 : this.enterFullScreen();
62 }
63 enterFullScreen() {
64 const { _el: { nativeElement }, } = this;
65 const enterFullScreenMap = {
66 requestFullscreen: () => nativeElement.requestFullscreen(), // Chrome
67 webkitRequestFullscreen: () => nativeElement.webkitRequestFullscreen(), // Safari
68 mozRequestFullScreen: () => nativeElement.mozRequestFullScreen(), // Firefox
69 msRequestFullscreen: () => nativeElement.msRequestFullscreen(), // IE
70 };
71 for (const handler of Object.keys(enterFullScreenMap)) {
72 if (nativeElement[handler]) {
73 enterFullScreenMap[handler]();
74 }
75 }
76 }
77 exitFullScreen() {
78 const exitFullScreenMap = {
79 exitFullscreen: () => this._document.exitFullscreen(), // Chrome
80 webkitExitFullscreen: () => this._document.webkitExitFullscreen(), // Safari
81 mozCancelFullScreen: () => this._document.mozCancelFullScreen(), // Firefox
82 msExitFullscreen: () => this._document.msExitFullscreen(), // IE
83 };
84 for (const handler of Object.keys(exitFullScreenMap)) {
85 if (exitFullScreenMap[handler] &&
86 this._getFullScreenElement() === this._el.nativeElement) {
87 exitFullScreenMap[handler]();
88 }
89 }
90 }
91 _getFullScreenElement() {
92 const tdFullScreenElementMap = {
93 fullscreenElement: () => this._document.fullscreenElement, // Chrome, Opera
94 webkitFullscreenElement: () => this._document.webkitFullscreenElement, // Safari
95 mozFullscreenElement: () => this._document.mozFullscreenElement, // Firefox
96 msFullscreenElement: () => this._document.msFullscreenElement, // IE, Edge
97 };
98 for (const props of Object.keys(tdFullScreenElementMap)) {
99 if (tdFullScreenElementMap[props]) {
100 return tdFullScreenElementMap[props]();
101 }
102 }
103 return undefined;
104 }
105 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdFullscreenDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
106 static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: TdFullscreenDirective, selector: "[tdFullScreen]", host: { listeners: { "document:fullscreenchange": "fsChangeHandler($event)", "document:webkitfullscreenchange": "fsChangeHandler($event)", "document:mozfullscreenchange": "fsChangeHandler($event)", "document:msfullscreenchange": "fsChangeHandler($event)" } }, exportAs: ["tdFullScreen"], ngImport: i0 });
107}
108i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdFullscreenDirective, decorators: [{
109 type: Directive,
110 args: [{
111 selector: '[tdFullScreen]',
112 exportAs: 'tdFullScreen',
113 }]
114 }], ctorParameters: () => [{ type: undefined, decorators: [{
115 type: Inject,
116 args: [DOCUMENT]
117 }] }, { type: i0.ElementRef }], propDecorators: { fsChangeHandler: [{
118 type: HostListener,
119 args: ['document:fullscreenchange', ['$event']]
120 }, {
121 type: HostListener,
122 args: ['document:webkitfullscreenchange', ['$event']]
123 }, {
124 type: HostListener,
125 args: ['document:mozfullscreenchange', ['$event']]
126 }, {
127 type: HostListener,
128 args: ['document:msfullscreenchange', ['$event']]
129 }] } });
130
131class TdTimeAgoPipe {
132 transform(time, reference) {
133 // Convert time to date object if not already
134 time = new Date(time);
135 const ref = new Date(reference);
136 // If not a valid timestamp, return 'Invalid Date'
137 if (!time.getTime()) {
138 return 'Invalid Date';
139 }
140 // For unit testing, we need to be able to declare a static start time
141 // for calculations, or else speed of tests can bork.
142 const startTime = isNaN(ref.getTime()) ? Date.now() : ref.getTime();
143 let diff = Math.floor((startTime - time.getTime()) / 1000);
144 if (diff < 2) {
145 return '1 second ago';
146 }
147 if (diff < 60) {
148 return Math.floor(diff) + ' seconds ago';
149 }
150 // Minutes
151 diff = diff / 60;
152 if (diff < 2) {
153 return '1 minute ago';
154 }
155 if (diff < 60) {
156 return Math.floor(diff) + ' minutes ago';
157 }
158 // Hours
159 diff = diff / 60;
160 if (diff < 2) {
161 return '1 hour ago';
162 }
163 if (diff < 24) {
164 return Math.floor(diff) + ' hours ago';
165 }
166 // Days
167 diff = diff / 24;
168 if (diff < 2) {
169 return '1 day ago';
170 }
171 if (diff < 30) {
172 return Math.floor(diff) + ' days ago';
173 }
174 // Months
175 diff = diff / 30;
176 if (diff < 2) {
177 return '1 month ago';
178 }
179 if (diff < 12) {
180 return Math.floor(diff) + ' months ago';
181 }
182 // Years
183 diff = diff / 12;
184 if (diff < 2) {
185 return '1 year ago';
186 }
187 else {
188 return Math.floor(diff) + ' years ago';
189 }
190 }
191 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdTimeAgoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
192 static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: TdTimeAgoPipe, name: "timeAgo" });
193}
194i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdTimeAgoPipe, decorators: [{
195 type: Pipe,
196 args: [{
197 name: 'timeAgo',
198 }]
199 }] });
200
201class TdTimeDifferencePipe {
202 transform(start, end) {
203 const startTime = new Date(start);
204 let endTime;
205 if (end !== undefined) {
206 endTime = new Date(end);
207 }
208 else {
209 endTime = new Date();
210 }
211 if (!startTime.getTime() || !endTime.getTime()) {
212 return 'Invalid Date';
213 }
214 let diff = Math.floor((endTime.getTime() - startTime.getTime()) / 1000);
215 const days = Math.floor(diff / (60 * 60 * 24));
216 diff = diff - days * (60 * 60 * 24);
217 const hours = Math.floor(diff / (60 * 60));
218 diff = diff - hours * (60 * 60);
219 const minutes = Math.floor(diff / 60);
220 diff -= minutes * 60;
221 const seconds = diff;
222 const pad = '00';
223 let daysFormatted = '';
224 if (days > 0 && days < 2) {
225 daysFormatted = ' day - ';
226 }
227 else if (days > 1) {
228 daysFormatted = ' days - ';
229 }
230 return ((days > 0 ? days + daysFormatted : daysFormatted) +
231 pad.substring(0, pad.length - (hours + '').length) +
232 hours +
233 ':' +
234 pad.substring(0, pad.length - (minutes + '').length) +
235 minutes +
236 ':' +
237 pad.substring(0, pad.length - (seconds + '').length) +
238 seconds);
239 }
240 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdTimeDifferencePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
241 static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: TdTimeDifferencePipe, name: "timeDifference" });
242}
243i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdTimeDifferencePipe, decorators: [{
244 type: Pipe,
245 args: [{
246 name: 'timeDifference',
247 }]
248 }] });
249
250class TdTimeUntilPipe {
251 transform(time, reference) {
252 // Convert time to date object if not already
253 time = new Date(time);
254 const ref = new Date(reference);
255 // If not a valid timestamp, return 'Invalid Date'
256 if (!time.getTime()) {
257 return 'Invalid Date';
258 }
259 // For unit testing, we need to be able to declare a static start time
260 // for calculations, or else speed of tests can bork.
261 const startTime = isNaN(ref.getTime()) ? Date.now() : ref.getTime();
262 let diff = Math.floor((time.getTime() - startTime) / 1000);
263 if (diff < 2) {
264 return 'in 1 second';
265 }
266 if (diff < 60) {
267 return 'in ' + Math.floor(diff) + ' seconds';
268 }
269 // Minutes
270 diff = diff / 60;
271 if (diff < 2) {
272 return 'in 1 minute';
273 }
274 if (diff < 60) {
275 return 'in ' + Math.floor(diff) + ' minutes';
276 }
277 // Hours
278 diff = diff / 60;
279 if (diff < 2) {
280 return 'in 1 hour';
281 }
282 if (diff < 24) {
283 return 'in ' + Math.floor(diff) + ' hours';
284 }
285 // Days
286 diff = diff / 24;
287 if (diff < 2) {
288 return 'in 1 day';
289 }
290 if (diff < 30) {
291 return 'in ' + Math.floor(diff) + ' days';
292 }
293 // Months
294 diff = diff / 30;
295 if (diff < 2) {
296 return 'in 1 month';
297 }
298 if (diff < 12) {
299 return 'in ' + Math.floor(diff) + ' months';
300 }
301 // Years
302 diff = diff / 12;
303 if (diff < 2) {
304 return 'in 1 year';
305 }
306 else {
307 return 'in ' + Math.floor(diff) + ' years';
308 }
309 }
310 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdTimeUntilPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
311 static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: TdTimeUntilPipe, name: "timeUntil" });
312}
313i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdTimeUntilPipe, decorators: [{
314 type: Pipe,
315 args: [{
316 name: 'timeUntil',
317 }]
318 }] });
319
320class TdBytesPipe {
321 /* `bytes` needs to be `any` or TypeScript complains
322 Tried both `number` and `number | string` */
323 transform(bytes, precision = 2) {
324 if (bytes === 0) {
325 return '0 B';
326 }
327 else if (isNaN(parseInt(bytes, 10))) {
328 /* If not a valid number, return 'Invalid Number' */
329 return 'Invalid Number';
330 }
331 const k = 1024;
332 const sizes = [
333 'B',
334 'KiB',
335 'MiB',
336 'GiB',
337 'TiB',
338 'PiB',
339 'EiB',
340 'ZiB',
341 'YiB',
342 ];
343 const i = Math.floor(Math.log(bytes) / Math.log(k));
344 // if less than 1
345 if (i < 0) {
346 return 'Invalid Number';
347 }
348 return (parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i]);
349 }
350 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
351 static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: TdBytesPipe, name: "bytes" });
352}
353i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdBytesPipe, decorators: [{
354 type: Pipe,
355 args: [{
356 name: 'bytes',
357 }]
358 }] });
359
360class TdDecimalBytesPipe {
361 /* `bytes` needs to be `any` or TypeScript complains
362 Tried both `number` and `number | string` */
363 transform(bytes, precision = 2) {
364 if (bytes === 0) {
365 return '0 B';
366 }
367 else if (isNaN(parseInt(bytes, 10))) {
368 /* If not a valid number, return 'Invalid Number' */
369 return 'Invalid Number';
370 }
371 const k = 1000;
372 const sizes = [
373 'B',
374 'KB',
375 'MB',
376 'GB',
377 'TB',
378 'PB',
379 'EB',
380 'ZB',
381 'YB',
382 ];
383 const i = Math.floor(Math.log(bytes) / Math.log(k));
384 // if less than 1
385 if (i < 0) {
386 return 'Invalid Number';
387 }
388 return (parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i]);
389 }
390 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdDecimalBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
391 static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: TdDecimalBytesPipe, name: "decimalBytes" });
392}
393i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdDecimalBytesPipe, decorators: [{
394 type: Pipe,
395 args: [{
396 name: 'decimalBytes',
397 }]
398 }] });
399
400class TdDigitsPipe {
401 _locale;
402 _decimalPipe;
403 constructor(_locale = 'en') {
404 this._locale = _locale;
405 this._decimalPipe = new DecimalPipe(this._locale);
406 }
407 /* `digits` needs to be type `digits: any` or TypeScript complains */
408 transform(digits, precision = 1) {
409 if (digits === 0) {
410 return '0';
411 }
412 else if (isNaN(parseInt(digits, 10))) {
413 /* If not a valid number, return the value */
414 return digits;
415 }
416 else if (digits < 1) {
417 return this._decimalPipe.transform(digits.toFixed(precision)) ?? '';
418 }
419 const k = 1000;
420 const sizes = ['', 'K', 'M', 'B', 'T', 'Q'];
421 const i = Math.floor(Math.log(digits) / Math.log(k));
422 const size = sizes[i];
423 return (this._decimalPipe.transform(parseFloat((digits / Math.pow(k, i)).toFixed(precision))) + (size ? ' ' + size : ''));
424 }
425 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdDigitsPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
426 static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: TdDigitsPipe, name: "digits" });
427}
428i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdDigitsPipe, decorators: [{
429 type: Pipe,
430 args: [{
431 name: 'digits',
432 }]
433 }], ctorParameters: () => [{ type: undefined, decorators: [{
434 type: Inject,
435 args: [LOCALE_ID]
436 }] }] });
437
438class TdTruncatePipe {
439 transform(text, length = 54) {
440 if (typeof text !== 'string') {
441 return '';
442 }
443 // Truncate
444 let truncated = text.substring(0, length);
445 if (text.length > length) {
446 if (truncated.lastIndexOf(' ') > 0) {
447 truncated = truncated.trim();
448 }
449 truncated += '…';
450 }
451 return truncated;
452 }
453 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdTruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
454 static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: TdTruncatePipe, name: "truncate" });
455}
456i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdTruncatePipe, decorators: [{
457 type: Pipe,
458 args: [{
459 name: 'truncate',
460 }]
461 }] });
462
463class RouterPathService {
464 _router;
465 static _previousRoute = '/';
466 constructor(_router) {
467 this._router = _router;
468 this._router.events
469 .pipe(filter((e) => e instanceof RoutesRecognized), pairwise())
470 .subscribe((e) => {
471 RouterPathService._previousRoute = e[0].urlAfterRedirects;
472 });
473 }
474 /*
475 * Utility function to get the route the user previously went to
476 * good for use in a "back button"
477 */
478 getPreviousRoute() {
479 return RouterPathService._previousRoute;
480 }
481 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RouterPathService, deps: [{ token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
482 static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RouterPathService });
483}
484i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RouterPathService, decorators: [{
485 type: Injectable
486 }], ctorParameters: () => [{ type: i1$1.Router }] });
487
488/*
489 * Copyright (C) 2016-2017 by Teradata Corporation. All rights reserved.
490 * TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
491 */
492class IconService {
493 // To update, run this little script on https://material.io/resources/icons/?style=baseline
494 // JSON.stringify(
495 // Array.from(document.querySelectorAll('icons-library .material-icons.icon-image-preview')).map(
496 // ({textContent}) => textContent
497 // )
498 // );
499 _icons = [
500 '3d_rotation',
501 'accessibility',
502 'accessibility_new',
503 'accessible',
504 'accessible_forward',
505 'account_balance',
506 'account_balance_wallet',
507 'account_box',
508 'account_circle',
509 'add_shopping_cart',
510 'alarm',
511 'alarm_add',
512 'alarm_off',
513 'alarm_on',
514 'all_inbox',
515 'all_out',
516 'android',
517 'announcement',
518 'arrow_right_alt',
519 'aspect_ratio',
520 'assessment',
521 'assignment',
522 'assignment_ind',
523 'assignment_late',
524 'assignment_return',
525 'assignment_returned',
526 'assignment_turned_in',
527 'autorenew',
528 'backup',
529 'book',
530 'bookmark',
531 'bookmark_border',
532 'bookmarks',
533 'bug_report',
534 'build',
535 'cached',
536 'calendar_today',
537 'calendar_view_day',
538 'camera_enhance',
539 'cancel_schedule_send',
540 'card_giftcard',
541 'card_membership',
542 'card_travel',
543 'change_history',
544 'check_circle',
545 'check_circle_outline',
546 'chrome_reader_mode',
547 'class',
548 'code',
549 'commute',
550 'compare_arrows',
551 'contact_support',
552 'contactless',
553 'copyright',
554 'credit_card',
555 'dashboard',
556 'date_range',
557 'delete',
558 'delete_forever',
559 'delete_outline',
560 'description',
561 'dns',
562 'done',
563 'done_all',
564 'done_outline',
565 'donut_large',
566 'donut_small',
567 'drag_indicator',
568 'eco',
569 'eject',
570 'euro_symbol',
571 'event',
572 'event_seat',
573 'exit_to_app',
574 'explore',
575 'explore_off',
576 'extension',
577 'face',
578 'favorite',
579 'favorite_border',
580 'feedback',
581 'find_in_page',
582 'find_replace',
583 'fingerprint',
584 'flight_land',
585 'flight_takeoff',
586 'flip_to_back',
587 'flip_to_front',
588 'g_translate',
589 'gavel',
590 'get_app',
591 'gif',
592 'grade',
593 'group_work',
594 'help',
595 'help_outline',
596 'highlight_off',
597 'history',
598 'home',
599 'horizontal_split',
600 'hourglass_empty',
601 'hourglass_full',
602 'http',
603 'https',
604 'important_devices',
605 'info',
606 'input',
607 'invert_colors',
608 'label',
609 'label_important',
610 'label_off',
611 'language',
612 'launch',
613 'line_style',
614 'line_weight',
615 'list',
616 'lock',
617 'lock_open',
618 'loyalty',
619 'markunread_mailbox',
620 'maximize',
621 'minimize',
622 'motorcycle',
623 'note_add',
624 'offline_bolt',
625 'offline_pin',
626 'opacity',
627 'open_in_browser',
628 'open_in_new',
629 'open_with',
630 'pageview',
631 'pan_tool',
632 'payment',
633 'perm_camera_mic',
634 'perm_contact_calendar',
635 'perm_data_setting',
636 'perm_device_information',
637 'perm_identity',
638 'perm_media',
639 'perm_phone_msg',
640 'perm_scan_wifi',
641 'pets',
642 'picture_in_picture',
643 'picture_in_picture_alt',
644 'play_for_work',
645 'polymer',
646 'power_settings_new',
647 'pregnant_woman',
648 'print',
649 'query_builder',
650 'question_answer',
651 'receipt',
652 'record_voice_over',
653 'redeem',
654 'remove_shopping_cart',
655 'reorder',
656 'report_problem',
657 'restore',
658 'restore_from_trash',
659 'restore_page',
660 'room',
661 'rounded_corner',
662 'rowing',
663 'schedule',
664 'search',
665 'settings_applications',
666 'settings_backup_restore',
667 'settings_bluetooth',
668 'settings_brightness',
669 'settings_cell',
670 'settings_ethernet',
671 'settings_input_antenna',
672 'settings_input_component',
673 'settings_input_composite',
674 'settings_input_hdmi',
675 'settings_input_svideo',
676 'settings_overscan',
677 'settings_phone',
678 'settings_power',
679 'settings_remote',
680 'settings_voice',
681 'shop',
682 'shop_two',
683 'shopping_basket',
684 'shopping_cart',
685 'speaker_notes',
686 'speaker_notes_off',
687 'spellcheck',
688 'stars',
689 'store',
690 'subject',
691 'supervised_user_circle',
692 'supervisor_account',
693 'swap_horiz',
694 'swap_horizontal_circle',
695 'swap_vert',
696 'swap_vertical_circle',
697 'sync_alt',
698 'system_update_alt',
699 'tab',
700 'tab_unselected',
701 'text_rotate_up',
702 'text_rotate_vertical',
703 'text_rotation_angledown',
704 'text_rotation_angleup',
705 'text_rotation_down',
706 'text_rotation_none',
707 'theaters',
708 'thumb_down',
709 'thumb_up',
710 'thumbs_up_down',
711 'timeline',
712 'toc',
713 'today',
714 'toll',
715 'touch_app',
716 'track_changes',
717 'translate',
718 'trending_down',
719 'trending_flat',
720 'trending_up',
721 'turned_in',
722 'turned_in_not',
723 'update',
724 'verified_user',
725 'vertical_split',
726 'view_agenda',
727 'view_array',
728 'view_carousel',
729 'view_column',
730 'view_day',
731 'view_headline',
732 'view_list',
733 'view_module',
734 'view_quilt',
735 'view_stream',
736 'view_week',
737 'visibility',
738 'visibility_off',
739 'voice_over_off',
740 'watch_later',
741 'work',
742 'work_off',
743 'work_outline',
744 'youtube_searched_for',
745 'zoom_in',
746 'zoom_out',
747 'add_alert',
748 'error',
749 'error_outline',
750 'notification_important',
751 'warning',
752 '4k',
753 'add_to_queue',
754 'airplay',
755 'album',
756 'art_track',
757 'av_timer',
758 'branding_watermark',
759 'call_to_action',
760 'closed_caption',
761 'control_camera',
762 'equalizer',
763 'explicit',
764 'fast_forward',
765 'fast_rewind',
766 'featured_play_list',
767 'featured_video',
768 'fiber_dvr',
769 'fiber_manual_record',
770 'fiber_new',
771 'fiber_pin',
772 'fiber_smart_record',
773 'forward_10',
774 'forward_30',
775 'forward_5',
776 'games',
777 'hd',
778 'hearing',
779 'high_quality',
780 'library_add',
781 'library_books',
782 'library_music',
783 'loop',
784 'mic',
785 'mic_none',
786 'mic_off',
787 'missed_video_call',
788 'movie',
789 'music_video',
790 'new_releases',
791 'not_interested',
792 'note',
793 'pause',
794 'pause_circle_filled',
795 'pause_circle_outline',
796 'play_arrow',
797 'play_circle_filled',
798 'play_circle_outline',
799 'playlist_add',
800 'playlist_add_check',
801 'playlist_play',
802 'queue',
803 'queue_music',
804 'queue_play_next',
805 'radio',
806 'recent_actors',
807 'remove_from_queue',
808 'repeat',
809 'repeat_one',
810 'replay',
811 'replay_10',
812 'replay_30',
813 'replay_5',
814 'shuffle',
815 'skip_next',
816 'skip_previous',
817 'slow_motion_video',
818 'snooze',
819 'sort_by_alpha',
820 'speed',
821 'stop',
822 'subscriptions',
823 'subtitles',
824 'surround_sound',
825 'video_call',
826 'video_label',
827 'video_library',
828 'videocam',
829 'videocam_off',
830 'volume_down',
831 'volume_mute',
832 'volume_off',
833 'volume_up',
834 'web',
835 'web_asset',
836 'business',
837 'call',
838 'call_end',
839 'call_made',
840 'call_merge',
841 'call_missed',
842 'call_missed_outgoing',
843 'call_received',
844 'call_split',
845 'cancel_presentation',
846 'chat',
847 'chat_bubble',
848 'chat_bubble_outline',
849 'clear_all',
850 'comment',
851 'contact_mail',
852 'contact_phone',
853 'contacts',
854 'desktop_access_disabled',
855 'dialer_sip',
856 'dialpad',
857 'domain_disabled',
858 'duo',
859 'email',
860 'forum',
861 'import_contacts',
862 'import_export',
863 'invert_colors_off',
864 'list_alt',
865 'live_help',
866 'mail_outline',
867 'message',
868 'mobile_screen_share',
869 'no_sim',
870 'pause_presentation',
871 'person_add_disabled',
872 'phone',
873 'phone_disabled',
874 'phone_enabled',
875 'phonelink_erase',
876 'phonelink_lock',
877 'phonelink_ring',
878 'phonelink_setup',
879 'portable_wifi_off',
880 'present_to_all',
881 'print_disabled',
882 'ring_volume',
883 'rss_feed',
884 'screen_share',
885 'sentiment_satisfied_alt',
886 'speaker_phone',
887 'stay_current_landscape',
888 'stay_current_portrait',
889 'stay_primary_landscape',
890 'stay_primary_portrait',
891 'stop_screen_share',
892 'swap_calls',
893 'textsms',
894 'unsubscribe',
895 'voicemail',
896 'vpn_key',
897 'add',
898 'add_box',
899 'add_circle',
900 'add_circle_outline',
901 'amp_stories',
902 'archive',
903 'backspace',
904 'ballot',
905 'block',
906 'clear',
907 'create',
908 'delete_sweep',
909 'drafts',
910 'dynamic_feed',
911 'file_copy',
912 'filter_list',
913 'flag',
914 'font_download',
915 'forward',
916 'gesture',
917 'how_to_reg',
918 'how_to_vote',
919 'inbox',
920 'link',
921 'link_off',
922 'low_priority',
923 'mail',
924 'markunread',
925 'move_to_inbox',
926 'next_week',
927 'outlined_flag',
928 'policy',
929 'redo',
930 'remove',
931 'remove_circle',
932 'remove_circle_outline',
933 'reply',
934 'reply_all',
935 'report',
936 'report_off',
937 'save',
938 'save_alt',
939 'select_all',
940 'send',
941 'sort',
942 'square_foot',
943 'text_format',
944 'unarchive',
945 'undo',
946 'waves',
947 'where_to_vote',
948 'access_alarm',
949 'access_alarms',
950 'access_time',
951 'add_alarm',
952 'add_to_home_screen',
953 'airplanemode_active',
954 'airplanemode_inactive',
955 'battery_alert',
956 'battery_charging_full',
957 'battery_full',
958 'battery_std',
959 'battery_unknown',
960 'bluetooth',
961 'bluetooth_connected',
962 'bluetooth_disabled',
963 'bluetooth_searching',
964 'brightness_auto',
965 'brightness_high',
966 'brightness_low',
967 'brightness_medium',
968 'data_usage',
969 'developer_mode',
970 'devices',
971 'dvr',
972 'gps_fixed',
973 'gps_not_fixed',
974 'gps_off',
975 'graphic_eq',
976 'location_disabled',
977 'location_searching',
978 'mobile_friendly',
979 'mobile_off',
980 'nfc',
981 'screen_lock_landscape',
982 'screen_lock_portrait',
983 'screen_lock_rotation',
984 'screen_rotation',
985 'sd_storage',
986 'settings_system_daydream',
987 'signal_cellular_4_bar',
988 'signal_cellular_alt',
989 'signal_cellular_connected_no_internet_4_bar',
990 'signal_cellular_no_sim',
991 'signal_cellular_null',
992 'signal_cellular_off',
993 'signal_wifi_4_bar',
994 'signal_wifi_4_bar_lock',
995 'signal_wifi_off',
996 'storage',
997 'usb',
998 'wallpaper',
999 'widgets',
1000 'wifi_lock',
1001 'wifi_tethering',
1002 'add_comment',
1003 'attach_file',
1004 'attach_money',
1005 'bar_chart',
1006 'border_all',
1007 'border_bottom',
1008 'border_clear',
1009 'border_horizontal',
1010 'border_inner',
1011 'border_left',
1012 'border_outer',
1013 'border_right',
1014 'border_style',
1015 'border_top',
1016 'border_vertical',
1017 'bubble_chart',
1018 'drag_handle',
1019 'format_align_center',
1020 'format_align_justify',
1021 'format_align_left',
1022 'format_align_right',
1023 'format_bold',
1024 'format_clear',
1025 'format_color_reset',
1026 'format_indent_decrease',
1027 'format_indent_increase',
1028 'format_italic',
1029 'format_line_spacing',
1030 'format_list_bulleted',
1031 'format_list_numbered',
1032 'format_list_numbered_rtl',
1033 'format_paint',
1034 'format_quote',
1035 'format_shapes',
1036 'format_size',
1037 'format_strikethrough',
1038 'format_textdirection_l_to_r',
1039 'format_textdirection_r_to_l',
1040 'format_underlined',
1041 'functions',
1042 'height',
1043 'highlight',
1044 'insert_chart',
1045 'insert_chart_outlined',
1046 'insert_comment',
1047 'insert_drive_file',
1048 'insert_emoticon',
1049 'insert_invitation',
1050 'insert_link',
1051 'insert_photo',
1052 'linear_scale',
1053 'merge_type',
1054 'mode_comment',
1055 'monetization_on',
1056 'money_off',
1057 'multiline_chart',
1058 'notes',
1059 'pie_chart',
1060 'post_add',
1061 'publish',
1062 'scatter_plot',
1063 'score',
1064 'short_text',
1065 'show_chart',
1066 'space_bar',
1067 'strikethrough_s',
1068 'table_chart',
1069 'text_fields',
1070 'title',
1071 'vertical_align_bottom',
1072 'vertical_align_center',
1073 'vertical_align_top',
1074 'wrap_text',
1075 'attachment',
1076 'cloud',
1077 'cloud_circle',
1078 'cloud_done',
1079 'cloud_download',
1080 'cloud_off',
1081 'cloud_queue',
1082 'cloud_upload',
1083 'create_new_folder',
1084 'folder',
1085 'folder_open',
1086 'folder_shared',
1087 'cast',
1088 'cast_connected',
1089 'computer',
1090 'desktop_mac',
1091 'desktop_windows',
1092 'developer_board',
1093 'device_hub',
1094 'device_unknown',
1095 'devices_other',
1096 'dock',
1097 'gamepad',
1098 'headset',
1099 'headset_mic',
1100 'keyboard',
1101 'keyboard_arrow_down',
1102 'keyboard_arrow_left',
1103 'keyboard_arrow_right',
1104 'keyboard_arrow_up',
1105 'keyboard_backspace',
1106 'keyboard_capslock',
1107 'keyboard_hide',
1108 'keyboard_return',
1109 'keyboard_tab',
1110 'keyboard_voice',
1111 'laptop',
1112 'laptop_chromebook',
1113 'laptop_mac',
1114 'laptop_windows',
1115 'memory',
1116 'mouse',
1117 'phone_android',
1118 'phone_iphone',
1119 'phonelink',
1120 'phonelink_off',
1121 'power_input',
1122 'router',
1123 'scanner',
1124 'security',
1125 'sim_card',
1126 'smartphone',
1127 'speaker',
1128 'speaker_group',
1129 'tablet',
1130 'tablet_android',
1131 'tablet_mac',
1132 'toys',
1133 'tv',
1134 'videogame_asset',
1135 'watch',
1136 'add_a_photo',
1137 'add_photo_alternate',
1138 'add_to_photos',
1139 'adjust',
1140 'assistant',
1141 'assistant_photo',
1142 'audiotrack',
1143 'blur_circular',
1144 'blur_linear',
1145 'blur_off',
1146 'blur_on',
1147 'brightness_1',
1148 'brightness_2',
1149 'brightness_3',
1150 'brightness_4',
1151 'brightness_5',
1152 'brightness_6',
1153 'brightness_7',
1154 'broken_image',
1155 'brush',
1156 'burst_mode',
1157 'camera',
1158 'camera_alt',
1159 'camera_front',
1160 'camera_rear',
1161 'camera_roll',
1162 'center_focus_strong',
1163 'center_focus_weak',
1164 'collections',
1165 'collections_bookmark',
1166 'color_lens',
1167 'colorize',
1168 'compare',
1169 'control_point',
1170 'control_point_duplicate',
1171 'crop',
1172 'crop_16_9',
1173 'crop_3_2',
1174 'crop_5_4',
1175 'crop_7_5',
1176 'crop_din',
1177 'crop_free',
1178 'crop_landscape',
1179 'crop_original',
1180 'crop_portrait',
1181 'crop_rotate',
1182 'crop_square',
1183 'dehaze',
1184 'details',
1185 'edit',
1186 'euro',
1187 'exposure',
1188 'exposure_neg_1',
1189 'exposure_neg_2',
1190 'exposure_plus_1',
1191 'exposure_plus_2',
1192 'exposure_zero',
1193 'filter',
1194 'filter_1',
1195 'filter_2',
1196 'filter_3',
1197 'filter_4',
1198 'filter_5',
1199 'filter_6',
1200 'filter_7',
1201 'filter_8',
1202 'filter_9',
1203 'filter_9_plus',
1204 'filter_b_and_w',
1205 'filter_center_focus',
1206 'filter_drama',
1207 'filter_frames',
1208 'filter_hdr',
1209 'filter_none',
1210 'filter_tilt_shift',
1211 'filter_vintage',
1212 'flare',
1213 'flash_auto',
1214 'flash_off',
1215 'flash_on',
1216 'flip',
1217 'flip_camera_android',
1218 'flip_camera_ios',
1219 'gradient',
1220 'grain',
1221 'grid_off',
1222 'grid_on',
1223 'hdr_off',
1224 'hdr_on',
1225 'hdr_strong',
1226 'hdr_weak',
1227 'healing',
1228 'image',
1229 'image_aspect_ratio',
1230 'image_search',
1231 'iso',
1232 'landscape',
1233 'leak_add',
1234 'leak_remove',
1235 'lens',
1236 'linked_camera',
1237 'looks',
1238 'looks_3',
1239 'looks_4',
1240 'looks_5',
1241 'looks_6',
1242 'looks_one',
1243 'looks_two',
1244 'loupe',
1245 'monochrome_photos',
1246 'movie_creation',
1247 'movie_filter',
1248 'music_note',
1249 'music_off',
1250 'nature',
1251 'nature_people',
1252 'navigate_before',
1253 'navigate_next',
1254 'palette',
1255 'panorama',
1256 'panorama_fish_eye',
1257 'panorama_horizontal',
1258 'panorama_vertical',
1259 'panorama_wide_angle',
1260 'photo',
1261 'photo_album',
1262 'photo_camera',
1263 'photo_filter',
1264 'photo_library',
1265 'photo_size_select_actual',
1266 'photo_size_select_large',
1267 'photo_size_select_small',
1268 'picture_as_pdf',
1269 'portrait',
1270 'remove_red_eye',
1271 'rotate_90_degrees_ccw',
1272 'rotate_left',
1273 'rotate_right',
1274 'shutter_speed',
1275 'slideshow',
1276 'straighten',
1277 'style',
1278 'switch_camera',
1279 'switch_video',
1280 'tag_faces',
1281 'texture',
1282 'timelapse',
1283 'timer',
1284 'timer_10',
1285 'timer_3',
1286 'timer_off',
1287 'tonality',
1288 'transform',
1289 'tune',
1290 'view_comfy',
1291 'view_compact',
1292 'vignette',
1293 'wb_auto',
1294 'wb_cloudy',
1295 'wb_incandescent',
1296 'wb_iridescent',
1297 'wb_sunny',
1298 '360',
1299 'atm',
1300 'beenhere',
1301 'category',
1302 'compass_calibration',
1303 'departure_board',
1304 'directions',
1305 'directions_bike',
1306 'directions_boat',
1307 'directions_bus',
1308 'directions_car',
1309 'directions_railway',
1310 'directions_run',
1311 'directions_subway',
1312 'directions_transit',
1313 'directions_walk',
1314 'edit_attributes',
1315 'ev_station',
1316 'fastfood',
1317 'flight',
1318 'hotel',
1319 'layers',
1320 'layers_clear',
1321 'local_activity',
1322 'local_airport',
1323 'local_atm',
1324 'local_bar',
1325 'local_cafe',
1326 'local_car_wash',
1327 'local_convenience_store',
1328 'local_dining',
1329 'local_drink',
1330 'local_florist',
1331 'local_gas_station',
1332 'local_grocery_store',
1333 'local_hospital',
1334 'local_hotel',
1335 'local_laundry_service',
1336 'local_library',
1337 'local_mall',
1338 'local_movies',
1339 'local_offer',
1340 'local_parking',
1341 'local_pharmacy',
1342 'local_phone',
1343 'local_pizza',
1344 'local_play',
1345 'local_post_office',
1346 'local_printshop',
1347 'local_see',
1348 'local_shipping',
1349 'local_taxi',
1350 'map',
1351 'menu_book',
1352 'money',
1353 'museum',
1354 'my_location',
1355 'navigation',
1356 'near_me',
1357 'person_pin',
1358 'rate_review',
1359 'restaurant',
1360 'restaurant_menu',
1361 'satellite',
1362 'store_mall_directory',
1363 'streetview',
1364 'subway',
1365 'terrain',
1366 'traffic',
1367 'train',
1368 'tram',
1369 'transfer_within_a_station',
1370 'transit_enterexit',
1371 'trip_origin',
1372 'zoom_out_map',
1373 'apps',
1374 'arrow_back',
1375 'arrow_back_ios',
1376 'arrow_downward',
1377 'arrow_drop_down',
1378 'arrow_drop_down_circle',
1379 'arrow_drop_up',
1380 'arrow_forward',
1381 'arrow_forward_ios',
1382 'arrow_left',
1383 'arrow_right',
1384 'arrow_upward',
1385 'cancel',
1386 'check',
1387 'chevron_left',
1388 'chevron_right',
1389 'close',
1390 'double_arrow',
1391 'expand_less',
1392 'expand_more',
1393 'first_page',
1394 'fullscreen',
1395 'fullscreen_exit',
1396 'home_work',
1397 'last_page',
1398 'menu',
1399 'menu_open',
1400 'more_horiz',
1401 'more_vert',
1402 'refresh',
1403 'subdirectory_arrow_left',
1404 'subdirectory_arrow_right',
1405 'unfold_less',
1406 'unfold_more',
1407 'account_tree',
1408 'adb',
1409 'airline_seat_flat',
1410 'airline_seat_flat_angled',
1411 'airline_seat_individual_suite',
1412 'airline_seat_legroom_extra',
1413 'airline_seat_legroom_normal',
1414 'airline_seat_legroom_reduced',
1415 'airline_seat_recline_extra',
1416 'airline_seat_recline_normal',
1417 'bluetooth_audio',
1418 'confirmation_number',
1419 'disc_full',
1420 'drive_eta',
1421 'enhanced_encryption',
1422 'event_available',
1423 'event_busy',
1424 'event_note',
1425 'folder_special',
1426 'live_tv',
1427 'mms',
1428 'more',
1429 'network_check',
1430 'network_locked',
1431 'no_encryption',
1432 'ondemand_video',
1433 'personal_video',
1434 'phone_bluetooth_speaker',
1435 'phone_callback',
1436 'phone_forwarded',
1437 'phone_in_talk',
1438 'phone_locked',
1439 'phone_missed',
1440 'phone_paused',
1441 'power',
1442 'power_off',
1443 'priority_high',
1444 'sd_card',
1445 'sms',
1446 'sms_failed',
1447 'sync',
1448 'sync_disabled',
1449 'sync_problem',
1450 'system_update',
1451 'tap_and_play',
1452 'time_to_leave',
1453 'tv_off',
1454 'vibration',
1455 'voice_chat',
1456 'vpn_lock',
1457 'wc',
1458 'wifi',
1459 'wifi_off',
1460 'ac_unit',
1461 'airport_shuttle',
1462 'all_inclusive',
1463 'apartment',
1464 'bathtub',
1465 'beach_access',
1466 'business_center',
1467 'casino',
1468 'child_care',
1469 'child_friendly',
1470 'fitness_center',
1471 'free_breakfast',
1472 'golf_course',
1473 'hot_tub',
1474 'house',
1475 'kitchen',
1476 'meeting_room',
1477 'no_meeting_room',
1478 'pool',
1479 'room_service',
1480 'rv_hookup',
1481 'smoke_free',
1482 'smoking_rooms',
1483 'spa',
1484 'storefront',
1485 'cake',
1486 'deck',
1487 'emoji_emotions',
1488 'emoji_events',
1489 'emoji_flags',
1490 'emoji_food_beverage',
1491 'emoji_nature',
1492 'emoji_objects',
1493 'emoji_people',
1494 'emoji_symbols',
1495 'emoji_transportation',
1496 'fireplace',
1497 'group',
1498 'group_add',
1499 'king_bed',
1500 'location_city',
1501 'mood',
1502 'mood_bad',
1503 'nights_stay',
1504 'notifications',
1505 'notifications_active',
1506 'notifications_none',
1507 'notifications_off',
1508 'notifications_paused',
1509 'outdoor_grill',
1510 'pages',
1511 'party_mode',
1512 'people',
1513 'people_alt',
1514 'people_outline',
1515 'person',
1516 'person_add',
1517 'person_outline',
1518 'plus_one',
1519 'poll',
1520 'public',
1521 'school',
1522 'sentiment_dissatisfied',
1523 'sentiment_satisfied',
1524 'sentiment_very_dissatisfied',
1525 'sentiment_very_satisfied',
1526 'share',
1527 'single_bed',
1528 'sports',
1529 'sports_baseball',
1530 'sports_basketball',
1531 'sports_cricket',
1532 'sports_esports',
1533 'sports_football',
1534 'sports_golf',
1535 'sports_handball',
1536 'sports_hockey',
1537 'sports_kabaddi',
1538 'sports_mma',
1539 'sports_motorsports',
1540 'sports_rugby',
1541 'sports_soccer',
1542 'sports_tennis',
1543 'sports_volleyball',
1544 'thumb_down_alt',
1545 'thumb_up_alt',
1546 'whatshot',
1547 'check_box',
1548 'check_box_outline_blank',
1549 'indeterminate_check_box',
1550 'radio_button_checked',
1551 'radio_button_unchecked',
1552 'star',
1553 'star_border',
1554 'star_half',
1555 'toggle_off',
1556 'toggle_on',
1557 ];
1558 get icons() {
1559 return this._icons;
1560 }
1561 filter(query) {
1562 return this.icons.filter((el) => {
1563 return el.toLowerCase().indexOf(query ? query.toLowerCase() : '') > -1;
1564 });
1565 }
1566 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1567 static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: IconService });
1568}
1569i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: IconService, decorators: [{
1570 type: Injectable
1571 }] });
1572
1573const TD_DIRECTIVES = [TdAutoTrimDirective, TdFullscreenDirective];
1574// Validators
1575const TD_VALIDATORS = [];
1576const TD_PIPES = [
1577 TdTimeAgoPipe,
1578 TdTimeDifferencePipe,
1579 TdTimeUntilPipe,
1580 TdBytesPipe,
1581 TdDecimalBytesPipe,
1582 TdDigitsPipe,
1583 TdTruncatePipe,
1584];
1585const TD_DEFAULT_ICON_OPTIONS = {
1586 provide: MAT_ICON_DEFAULT_OPTIONS,
1587 useValue: { fontSet: 'material-symbols-outlined' },
1588};
1589const TD_DEFAULT_FORM_FIELD_OPTIONS = {
1590 provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,
1591 useValue: { appearance: 'outline' },
1592};
1593class CovalentCommonModule {
1594 static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CovalentCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1595 static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: CovalentCommonModule, declarations: [TdAutoTrimDirective, TdFullscreenDirective, TdTimeAgoPipe,
1596 TdTimeDifferencePipe,
1597 TdTimeUntilPipe,
1598 TdBytesPipe,
1599 TdDecimalBytesPipe,
1600 TdDigitsPipe,
1601 TdTruncatePipe], imports: [FormsModule, CommonModule], exports: [FormsModule, CommonModule, TdAutoTrimDirective, TdFullscreenDirective, TdTimeAgoPipe,
1602 TdTimeDifferencePipe,
1603 TdTimeUntilPipe,
1604 TdBytesPipe,
1605 TdDecimalBytesPipe,
1606 TdDigitsPipe,
1607 TdTruncatePipe] });
1608 static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CovalentCommonModule, providers: [
1609 RouterPathService,
1610 IconService,
1611 TD_DEFAULT_ICON_OPTIONS,
1612 TD_DEFAULT_FORM_FIELD_OPTIONS,
1613 ], imports: [FormsModule, CommonModule, FormsModule, CommonModule] });
1614}
1615i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CovalentCommonModule, decorators: [{
1616 type: NgModule,
1617 args: [{
1618 imports: [FormsModule, CommonModule],
1619 declarations: [TD_DIRECTIVES, TD_PIPES, TD_VALIDATORS],
1620 exports: [FormsModule, CommonModule, TD_DIRECTIVES, TD_PIPES, TD_VALIDATORS],
1621 providers: [
1622 RouterPathService,
1623 IconService,
1624 TD_DEFAULT_ICON_OPTIONS,
1625 TD_DEFAULT_FORM_FIELD_OPTIONS,
1626 ],
1627 }]
1628 }] });
1629
1630/**
1631 * const tdRotateAnimation
1632 *
1633 * Parameter Options:
1634 * * degressStart: Degrees of rotation that the dom object will end up in during the "false" state
1635 * * degreesEnd: Degrees of rotation that the dom object will end up in during the "true" state
1636 * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.
1637 * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.
1638 * * ease: Animation accelerates and decelerates. Defaults to ease-in.
1639 *
1640 * Returns an [AnimationTriggerMetadata] object with boolean states for a rotation animation.
1641 *
1642 * usage: [@tdRotate]="{ value: true | false, params: { degreesEnd: 90 }}"
1643 */
1644const tdRotateAnimation = trigger('tdRotate', [
1645 state('0', style({
1646 transform: 'rotate({{ degressStart }}deg)',
1647 }), { params: { degressStart: 0 } }),
1648 state('1', style({
1649 transform: 'rotate({{ degreesEnd }}deg)',
1650 }), { params: { degreesEnd: 180 } }),
1651 transition('0 <=> 1', [
1652 group([
1653 query('@*', animateChild(), { optional: true }),
1654 animate('{{ duration }}ms {{ delay }}ms {{ ease }}'),
1655 ]),
1656 ], { params: { duration: 250, delay: '0', ease: 'ease-in' } }),
1657]);
1658
1659/**
1660 * const tdCollapseAnimation
1661 *
1662 * Parameter Options:
1663 * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.
1664 * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.
1665 * * easeOnClose: Animation accelerates and decelerates when closing. Defaults to ease-in.
1666 * * easeOnOpen: Animation accelerates and decelerates when opening. Defaults to ease-out.
1667 *
1668 * Returns an [AnimationTriggerMetadata] object with boolean states for a collapse/expand animation.
1669 *
1670 * usage: [@tdCollapse]="{ value: true | false, params: { duration: 500 }}"
1671 */
1672const tdCollapseAnimation = trigger('tdCollapse', [
1673 state('1', style({
1674 height: '0',
1675 overflow: 'hidden',
1676 })),
1677 state('0', style({
1678 height: AUTO_STYLE,
1679 overflow: AUTO_STYLE,
1680 })),
1681 transition('0 => 1', [
1682 style({
1683 overflow: 'hidden',
1684 height: AUTO_STYLE,
1685 }),
1686 group([
1687 query('@*', animateChild(), { optional: true }),
1688 animate('{{ duration }}ms {{ delay }}ms {{ ease }}', style({
1689 height: '0',
1690 overflow: 'hidden',
1691 })),
1692 ]),
1693 ], { params: { duration: 150, delay: '0', ease: 'ease-in' } }),
1694 transition('1 => 0', [
1695 style({
1696 height: '0',
1697 overflow: 'hidden',
1698 }),
1699 group([
1700 query('@*', animateChild(), { optional: true }),
1701 animate('{{ duration }}ms {{ delay }}ms {{ ease }}', style({
1702 overflow: 'hidden',
1703 height: AUTO_STYLE,
1704 })),
1705 ]),
1706 ], { params: { duration: 150, delay: '0', ease: 'ease-out' } }),
1707]);
1708
1709/**
1710 * const tdFadeInOutAnimation
1711 *
1712 * Parameter Options:
1713 * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.
1714 * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.
1715 * * easeOnIn: Animation accelerates and decelerates when fading in. Defaults to ease-in.
1716 * * easeOnOut: Animation accelerates and decelerates when fading out. Defaults to ease-out.
1717 *
1718 * Returns an [AnimationTriggerMetadata] object with boolean states for a fade animation.
1719 *
1720 * usage: [@tdFadeInOut]="{ value: true | false, params: { duration: 200 }}"
1721 */
1722const tdFadeInOutAnimation = trigger('tdFadeInOut', [
1723 state('0', style({
1724 opacity: '0',
1725 visibility: 'hidden',
1726 })),
1727 state('1', style({
1728 opacity: AUTO_STYLE,
1729 visibility: AUTO_STYLE,
1730 })),
1731 transition('0 => 1', [
1732 group([
1733 query('@*', animateChild(), { optional: true }),
1734 animate('{{ duration }}ms {{ delay }}ms {{ easeOnIn }}'),
1735 ]),
1736 ], { params: { duration: 150, delay: '0', easeOnIn: 'ease-in' } }),
1737 transition('1 => 0', [
1738 group([
1739 query('@*', animateChild(), { optional: true }),
1740 animate('{{ duration }}ms {{ delay }}ms {{ easeOnOut }}'),
1741 ]),
1742 ], { params: { duration: 150, delay: '0', easeOnOut: 'ease-out' } }),
1743]);
1744
1745/**
1746 * const tdBounceAnimation
1747 *
1748 * Parameter Options:
1749 * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.
1750 * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.
1751 * * ease: Animation accelerate and decelerate style. Defaults to ease-out.
1752 *
1753 * Returns an [AnimationTriggerMetadata] object with boolean states for a bounce animation.
1754 *
1755 * usage: [@tdBounce]="{ value: true | false, params: { duration: 200 }}"
1756 */
1757const tdBounceAnimation = trigger('tdBounce', [
1758 state('0', style({
1759 transform: 'translate3d(0, 0, 0)',
1760 })),
1761 state('1', style({
1762 transform: 'translate3d(0, 0, 0)',
1763 })),
1764 transition('0 <=> 1', [
1765 group([
1766 query('@*', animateChild(), { optional: true }),
1767 animate('{{ duration }}ms {{ delay }}ms {{ ease }}', keyframes([
1768 style({
1769 animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',
1770 transform: 'translate3d(0, 0, 0)',
1771 offset: 0,
1772 }),
1773 style({
1774 animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',
1775 transform: 'translate3d(0, 0, 0)',
1776 offset: 0.2,
1777 }),
1778 style({
1779 animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',
1780 transform: 'translate3d(0, -30px, 0)',
1781 offset: 0.4,
1782 }),
1783 style({
1784 animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',
1785 transform: 'translate3d(0, -30px, 0)',
1786 offset: 0.43,
1787 }),
1788 style({
1789 animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',
1790 transform: 'translate3d(0, 0, 0)',
1791 offset: 0.53,
1792 }),
1793 style({
1794 animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',
1795 transform: 'translate3d(0, -15px, 0)',
1796 offset: 0.7,
1797 }),
1798 style({
1799 animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',
1800 transform: 'translate3d(0, 0, 0)',
1801 offset: 0.8,
1802 }),
1803 style({ transform: 'translate3d(0, -4px, 0)', offset: 0.9 }),
1804 style({
1805 animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',
1806 transform: 'translate3d(0, 0, 0)',
1807 offset: 1.0,
1808 }),
1809 ])),
1810 ]),
1811 ], { params: { duration: 500, delay: '0', ease: 'ease-out' } }),
1812]);
1813
1814/**
1815 * const tdFlashAnimation
1816 *
1817 * Parameter Options:
1818 * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.
1819 * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.
1820 * * ease: Animation accelerate and decelerate style. Defaults to ease-out.
1821 *
1822 * Returns an [AnimationTriggerMetadata] object with boolean states for a flash animation.
1823 *
1824 * usage: [@tdFlash]="{ value: true | false, params: { duration: 200 }}"
1825 */
1826const tdFlashAnimation = trigger('tdFlash', [
1827 state('0', style({
1828 opacity: 1,
1829 })),
1830 state('1', style({
1831 opacity: 1,
1832 })),
1833 transition('0 <=> 1', [
1834 group([
1835 query('@*', animateChild(), { optional: true }),
1836 animate('{{ duration }}ms {{ delay }}ms {{ ease }}', keyframes([
1837 style({ opacity: 1, offset: 0 }),
1838 style({ opacity: 0, offset: 0.25 }),
1839 style({ opacity: 1, offset: 0.5 }),
1840 style({ opacity: 0, offset: 0.75 }),
1841 style({ opacity: 1, offset: 1.0 }),
1842 ])),
1843 ]),
1844 ], { params: { duration: 500, delay: '0', ease: 'ease-out' } }),
1845]);
1846
1847/**
1848 * const tdHeadshakeAnimation
1849 *
1850 * Parameter Options:
1851 * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.
1852 * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.
1853 * * ease: Animation accelerate and decelerate style. Defaults to ease-out.
1854 *
1855 * Returns an [AnimationTriggerMetadata] object with boolean states for a headshake animation.
1856 *
1857 * usage: [@tdHeadshake]="{ value: true | false, params: { duration: 200 }}"
1858 */
1859const tdHeadshakeAnimation = trigger('tdHeadshake', [
1860 state('0', style({
1861 transform: 'translateX(0)',
1862 })),
1863 state('1', style({
1864 transform: 'translateX(0)',
1865 })),
1866 transition('0 <=> 1', [
1867 group([
1868 query('@*', animateChild(), { optional: true }),
1869 animate('{{ duration }}ms {{ delay }}ms {{ ease }}', keyframes([
1870 style({ transform: 'translateX(0)', offset: 0 }),
1871 style({
1872 transform: 'translateX(-6px) rotateY(-9deg)',
1873 offset: 0.065,
1874 }),
1875 style({
1876 transform: 'translateX(5px) rotateY(7deg)',
1877 offset: 0.185,
1878 }),
1879 style({
1880 transform: 'translateX(-3px) rotateY(-5deg)',
1881 offset: 0.315,
1882 }),
1883 style({
1884 transform: 'translateX(2px) rotateY(3deg)',
1885 offset: 0.435,
1886 }),
1887 style({ transform: 'translateX(0)', offset: 0.5 }),
1888 ])),
1889 ]),
1890 ], { params: { duration: 500, delay: '0', ease: 'ease-out' } }),
1891]);
1892
1893/**
1894 * const tdJelloAnimation
1895 *
1896 * Parameter Options:
1897 * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.
1898 * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.
1899 * * ease: Animation accelerate and decelerate style. Defaults to ease-out.
1900 *
1901 * Returns an [AnimationTriggerMetadata] object with boolean states for a jello animation.
1902 *
1903 * usage: [@tdJello]="{ value: true | false, params: { duration: 200 }}"
1904 */
1905const tdJelloAnimation = trigger('tdJello', [
1906 state('0', style({
1907 transform: 'none',
1908 })),
1909 state('1', style({
1910 transform: 'none',
1911 })),
1912 transition('0 <=> 1', [
1913 group([
1914 query('@*', animateChild(), { optional: true }),
1915 animate('{{ duration }}ms {{ delay }}ms {{ ease }}', keyframes([
1916 style({ transform: 'none', offset: 0 }),
1917 style({ transform: 'none', offset: 0.011 }),
1918 style({
1919 transform: 'skewX(-12.5deg) skewY(-12.5deg)',
1920 offset: 0.222,
1921 }),
1922 style({
1923 transform: 'skewX(6.25deg) skewY(6.25deg)',
1924 offset: 0.333,
1925 }),
1926 style({
1927 transform: 'skewX(-3.125deg) skewY(-3.125deg)',
1928 offset: 0.444,
1929 }),
1930 style({
1931 transform: 'skewX(1.5625deg) skewY(1.5625deg)',
1932 offset: 0.555,
1933 }),
1934 style({
1935 transform: 'skewX(-0.78125deg) skewY(-0.78125deg)',
1936 offset: 0.666,
1937 }),
1938 style({
1939 transform: 'skewX(0.390625deg) skewY(0.390625deg)',
1940 offset: 0.777,
1941 }),
1942 style({
1943 transform: 'skewX(-0.1953125deg) skewY(-0.1953125deg)',
1944 offset: 0.888,
1945 }),
1946 ])),
1947 ]),
1948 ], { params: { duration: 500, delay: '0', ease: 'ease-out' } }),
1949]);
1950
1951/**
1952 * const tdPulseAnimation
1953 *
1954 * Parameter Options:
1955 * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.
1956 * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.
1957 * * ease: Animation accelerate and decelerate style. Defaults to ease-out.
1958 *
1959 * Returns an [AnimationTriggerMetadata] object with boolean states for a pulse animation.
1960 *
1961 * usage: [@tdPulse]="{ value: true | false, params: { duration: 200 }}"
1962 */
1963const tdPulseAnimation = trigger('tdPulse', [
1964 state('0', style({
1965 transform: 'scale3d(1, 1, 1)',
1966 })),
1967 state('1', style({
1968 transform: 'scale3d(1, 1, 1)',
1969 })),
1970 transition('0 <=> 1', [
1971 group([
1972 query('@*', animateChild(), { optional: true }),
1973 animate('{{ duration }}ms {{ delay }}ms {{ ease }}', keyframes([
1974 style({ transform: 'scale3d(1, 1, 1)', offset: 0 }),
1975 style({ transform: 'scale3d(1.05, 1.05, 1.05)', offset: 0.5 }),
1976 style({ transform: 'scale3d(1, 1, 1)', offset: 1.0 }),
1977 ])),
1978 ]),
1979 ], { params: { duration: 500, delay: '0', ease: 'ease-out' } }),
1980]);
1981
1982const noop = () => {
1983 // empty method
1984};
1985/** Mixin to augment a component with ngModel support. */
1986function mixinControlValueAccessor(base, initialValue) {
1987 return class extends base {
1988 _value = initialValue instanceof Array
1989 ? Object.assign([], initialValue)
1990 : initialValue;
1991 _subjectValueChanges;
1992 valueChanges;
1993 constructor(...args) {
1994 super(...args);
1995 this._subjectValueChanges = new Subject();
1996 this.valueChanges = this._subjectValueChanges.asObservable();
1997 }
1998 set value(v) {
1999 if (v !== this._value) {
2000 this._value = v;
2001 this.onChange(v);
2002 this._changeDetectorRef.markForCheck();
2003 this._subjectValueChanges.next(v);
2004 }
2005 }
2006 get value() {
2007 return this._value;
2008 }
2009 writeValue(value) {
2010 this.value = value;
2011 this._changeDetectorRef.markForCheck();
2012 }
2013 registerOnChange(fn) {
2014 this.onChange = fn;
2015 }
2016 registerOnTouched(fn) {
2017 this.onTouched = fn;
2018 }
2019 onChange = (_) => noop;
2020 onTouched = () => noop;
2021 };
2022}
2023
2024/** Mixin to augment a component or directive with a `disabled` property. */
2025function mixinDisabled(base) {
2026 return class extends base {
2027 _disabled = false;
2028 constructor(...args) {
2029 super(...args);
2030 }
2031 get disabled() {
2032 return this._disabled;
2033 }
2034 set disabled(value) {
2035 const newValue = coerceBooleanProperty(value);
2036 if (this._disabled !== newValue) {
2037 this._disabled = newValue;
2038 this.onDisabledChange(this._disabled);
2039 }
2040 }
2041 onDisabledChange(v) {
2042 /** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */
2043 }
2044 };
2045}
2046
2047/** Mixin to augment a component or directive with a `disabled` property. */
2048function mixinDisableRipple(base) {
2049 return class extends base {
2050 _disableRipple = false;
2051 constructor(...args) {
2052 super(...args);
2053 }
2054 get disableRipple() {
2055 return this._disableRipple;
2056 }
2057 set disableRipple(value) {
2058 const newValue = coerceBooleanProperty(value);
2059 if (this._disableRipple !== newValue) {
2060 this._disableRipple = newValue;
2061 this.onDisableRippleChange(this._disableRipple);
2062 }
2063 }
2064 onDisableRippleChange(v) {
2065 /** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */
2066 }
2067 };
2068}
2069
2070class CovalentValidators {
2071 static min(minValue) {
2072 // tslint:disable-next-line:prefer-immediate-return
2073 const func = (c) => {
2074 if (!!Validators.required(c) || (!minValue && minValue !== 0)) {
2075 return {};
2076 }
2077 const v = c.value;
2078 return v < minValue ? { min: { minValue, actualValue: v } } : {};
2079 };
2080 return func;
2081 }
2082 static max(maxValue) {
2083 // tslint:disable-next-line:prefer-immediate-return
2084 const func = (c) => {
2085 if (!!Validators.required(c) || (!maxValue && maxValue !== 0)) {
2086 return {};
2087 }
2088 const v = c.value;
2089 return v > maxValue ? { max: { maxValue, actualValue: v } } : {};
2090 };
2091 return func;
2092 }
2093 static numberRequired(c) {
2094 return Number.isNaN(c.value) ? { required: true } : {};
2095 }
2096}
2097
2098/**
2099 * Assign a text value to the system clipboard. Note: Due to browser
2100 * security restrictions, the copy will only succeed if this method
2101 * is invoked as a result of a user action (eg. user button click).
2102 *
2103 * @param value text value to be assigned to clipboard.
2104 * @returns boolean indicating success/failure of copy operation.
2105 */
2106function copyToClipboard(value) {
2107 // Create a temporary textarea element and append to DOM
2108 const fakeTextArea = document.createElement('textarea');
2109 document.body.appendChild(fakeTextArea);
2110 // Assign value to be copied to clipboard
2111 fakeTextArea.value = value;
2112 fakeTextArea.select();
2113 // Copy to clipboard
2114 const success = document.execCommand('copy');
2115 // Remove temporary textarea
2116 document.body.removeChild(fakeTextArea);
2117 // Return boolean indicating if exec command succeeded
2118 return success;
2119}
2120
2121/**
2122 * Conversion function that takes an array of objects and converts
2123 * them to CSV format. Custom key and line separators can be specified.
2124 *
2125 * @param objects list of strings in JSON format or actual objects
2126 * @param keySeparator optional parameter to specify custom value separator
2127 * @param lineSeparator optional parameter to specify custom end of line separator
2128 * @returns CSV formatted string
2129 */
2130function convertObjectsToCSV(objects, keySeparator = ',', lineSeparator = '\r\n') {
2131 if (!objects) {
2132 return '';
2133 }
2134 let outputString = '';
2135 // Iterate through array, creating one output line per object
2136 objects.forEach((value, key) => {
2137 let line = '';
2138 for (const index of Object.keys(objects[key])) {
2139 if (line !== '') {
2140 line += keySeparator;
2141 }
2142 if (objects[key][index] === null || objects[key][index] === undefined) {
2143 objects[key][index] = '';
2144 }
2145 line += objects[key][index];
2146 }
2147 outputString += `${line}${lineSeparator}`;
2148 });
2149 // Append header row identifying keys into output
2150 if (objects[0]) {
2151 const headers = Object.keys(objects[0]).join(keySeparator);
2152 outputString = `${headers}${lineSeparator}${outputString}`;
2153 }
2154 return outputString;
2155}
2156/**
2157 * Conversion function that takes a CSV representation
2158 * of objects and converts them to JSON.
2159 * The first row in the input must be the object keys.
2160 * Custom key separator and line separator can be specified.
2161 * Indentation size for output JSON can be specified.
2162 *
2163 * @param csv list of strings in JSON format or actual objects
2164 * @param keySeparator optional parameter to specify custom value separator
2165 * @param lineSeparator optional parameter to specify custom end of line separator
2166 * @param indent optional parameter indicating space indentation for pretty output. Default is 2.
2167 * @returns JSON formatted string
2168 */
2169function convertCSVToJSON(csv, keySeparator = ',', lineSeparator = '\r\n', indent = 2) {
2170 if (!csv) {
2171 return '';
2172 }
2173 const csvArray = csv.split(lineSeparator);
2174 // Input CSV must have a minimum of two rows
2175 if (csvArray.length < 2) {
2176 return '';
2177 }
2178 const newObjects = [];
2179 // Extract object keys from header row
2180 const keys = csvArray[0].split(keySeparator);
2181 // Iterate through array, creating one output line per object
2182 for (let i = 1; i < csvArray.length; i++) {
2183 const newObject = {};
2184 const values = csvArray[i].split(keySeparator);
2185 if (values.length !== keys.length) {
2186 continue;
2187 }
2188 for (let j = 0; j < keys.length; j++) {
2189 newObject[keys[j]] = values[j];
2190 }
2191 newObjects.push(newObject);
2192 }
2193 return formatJSON(newObjects, indent);
2194}
2195/**
2196 * Convert object to JSON using stringify. Indentation size for output JSON can be specified.
2197 *
2198 * @param json object to be converted
2199 * @param indent optional parameter indicating space indentation for pretty output. Default is 2.
2200 */
2201function formatJSON(json, indent = 2) {
2202 return JSON.stringify(json, undefined, indent);
2203}
2204
2205/**
2206 * Download CSV content to the specified file with .csv extension
2207 * appended to the provided base file name.
2208 *
2209 * @param fileBaseName base name of destination file
2210 * @param csv CSV contents
2211 */
2212function downloadCSV(fileBaseName, csv) {
2213 downloadFile(`${fileBaseName}.csv`, csv, 'text/csv');
2214}
2215/**
2216 * Download JSON content to the specified file with .json extension
2217 * appended to the provided base file name.
2218 *
2219 * @param fileBaseName base name of destination file
2220 * @param json JSON contents
2221 * @param format indicates if JSON should be prettied
2222 * @param indent optional parameter indicating space indentation for pretty output. Default is 2
2223 */
2224function downloadJSON(fileBaseName, json, format = false, indent = 2) {
2225 downloadFile(`${fileBaseName}.json`, format ? formatJSON(JSON.parse(json), indent) : json, 'application/json');
2226}
2227/**
2228 * Convert objects to CSV format and download to file with .csv
2229 * extension appended to the provided base file name. Custom key
2230 * separator and line separator can be specified.
2231 *
2232 * @param fileBaseName base name of destination file
2233 * @param objects object array to be converted to CSV format
2234 * prior to writing to download destination
2235 * @param keySeparator optional parameter to specify custom value separator
2236 * @param lineSeparator optional parameter to specify custom end of line separator
2237 */
2238function downloadObjectsToCSV(fileBaseName, objects, keySeparator = ',', lineSeparator = '\r\n') {
2239 downloadFile(`${fileBaseName}.csv`, convertObjectsToCSV(objects, keySeparator, lineSeparator), 'text/csv');
2240}
2241/**
2242 * Convert objects to JSON format and download to file with .json
2243 * extension appended to the provided base file name.
2244 *
2245 * @param fileBaseName base name of destination file
2246 * @param objects object array to be converted to JSON format
2247 * prior to writing to download destination
2248 * @param indent optional parameter indicating space indentation for pretty output. Default is 2
2249 */
2250function downloadObjectsToJSON(fileBaseName, objects, indent = 2) {
2251 downloadFile(`${fileBaseName}.json`, formatJSON(objects, indent), 'application/json');
2252}
2253/**
2254 * Download string content to the specified file with desired mime type.
2255 *
2256 * @param fileName full filename (including appropriate extension) of destination file
2257 * @param contents string contents to be written to download destination
2258 * @param mimeType mime type appropriate to file content to support consumption of destination file
2259 */
2260function downloadFile(fileName, contents, mimeType = 'text/plain') {
2261 if (!fileName || !contents) {
2262 return;
2263 }
2264 // Create blob object and assign URL
2265 const blob = new Blob([contents], { type: mimeType });
2266 const url = window.URL.createObjectURL(blob);
2267 // Construct anchor for URL, append to DOM, click and cleanup.
2268 const a = document.createElement('a');
2269 a.setAttribute('style', 'display: none');
2270 a.setAttribute('download', fileName);
2271 a.href = url;
2272 document.body.appendChild(a);
2273 a.click();
2274 window.URL.revokeObjectURL(url);
2275 document.body.removeChild(a);
2276 window.URL.revokeObjectURL(url);
2277}
2278
2279/**
2280 * Read file as UTF-8 text. Return string contents on read completion.
2281 *
2282 * @param file filename or File object
2283 * @returns promise that resolves to file content string
2284 */
2285function readFile(file) {
2286 return new Promise((resolve) => {
2287 const reader = new FileReader();
2288 reader.readAsText(file, 'UTF-8');
2289 reader.onload = () => {
2290 resolve(reader.result);
2291 };
2292 });
2293}
2294
2295/**
2296 * Generated bundle index. Do not edit.
2297 */
2298
2299export { CovalentCommonModule, CovalentValidators, TdAutoTrimDirective, TdBytesPipe, TdDecimalBytesPipe, TdDigitsPipe, TdFullscreenDirective, TdTimeAgoPipe, TdTimeDifferencePipe, TdTimeUntilPipe, TdTruncatePipe, convertCSVToJSON, convertObjectsToCSV, copyToClipboard, downloadCSV, downloadFile, downloadJSON, downloadObjectsToCSV, downloadObjectsToJSON, formatJSON, mixinControlValueAccessor, mixinDisableRipple, mixinDisabled, readFile, tdBounceAnimation, tdCollapseAnimation, tdFadeInOutAnimation, tdFlashAnimation, tdHeadshakeAnimation, tdJelloAnimation, tdPulseAnimation, tdRotateAnimation };
2300//# sourceMappingURL=covalent-core-common.mjs.map