blob: a9d1bcb517a01c015bddeeed4755f72b96c2fc73 [file] [log] [blame]
{"version":3,"file":"covalent-core-json-formatter.umd.js","sources":["../../../../src/platform/core/json-formatter/json-formatter.component.ts","../../../../src/platform/core/json-formatter/json-formatter.module.ts"],"sourcesContent":["import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, Optional } from '@angular/core';\nimport { Dir } from '@angular/cdk/bidi';\nimport { tdCollapseAnimation } from '@covalent/core/common';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'td-json-formatter',\n styleUrls: ['./json-formatter.component.scss'],\n templateUrl: './json-formatter.component.html',\n animations: [tdCollapseAnimation],\n})\nexport class TdJsonFormatterComponent {\n /**\n * Max length for property names. Any names bigger than this get trunctated.\n */\n private static KEY_MAX_LENGTH: number = 30;\n\n /**\n * Max length for preview string. Any names bigger than this get trunctated.\n */\n private static PREVIEW_STRING_MAX_LENGTH: number = 80;\n\n /**\n * Max tooltip preview elements.\n */\n private static PREVIEW_LIMIT: number = 5;\n\n private _key: string;\n private _data: any;\n private _children: string[];\n private _open: boolean = false;\n private _levelsOpen: number = 0;\n\n /**\n * levelsOpen?: number\n * Levels opened by default when JS object is formatted and rendered.\n */\n @Input('levelsOpen')\n set levelsOpen(levelsOpen: number) {\n if (!Number.isInteger(levelsOpen)) {\n throw new Error('[levelsOpen] needs to be an integer.');\n }\n this._levelsOpen = levelsOpen;\n this._open = levelsOpen > 0;\n }\n get levelsOpen(): number {\n return this._levelsOpen;\n }\n\n get open(): boolean {\n return this._open;\n }\n\n /**\n * key?: string\n * Tag to be displayed next to formatted object.\n */\n @Input('key')\n set key(key: string) {\n this._key = key;\n }\n get key(): string {\n const elipsis: string = this._key && this._key.length > TdJsonFormatterComponent.KEY_MAX_LENGTH ? '…' : '';\n return this._key ? this._key.substring(0, TdJsonFormatterComponent.KEY_MAX_LENGTH) + elipsis : this._key;\n }\n\n /**\n * data: any\n * JS object to be formatted.\n */\n @Input('data')\n set data(data: any) {\n this._data = data;\n this.parseChildren();\n }\n get data(): any {\n return this._data;\n }\n\n get children(): string[] {\n return this._children;\n }\n\n get isRTL(): boolean {\n if (this._dir) {\n return this._dir.dir === 'rtl';\n }\n return false;\n }\n\n constructor(private _changeDetectorRef: ChangeDetectorRef, @Optional() private _dir: Dir) {}\n\n /**\n * Refreshes json-formatter and rerenders [data]\n */\n refresh(): void {\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Toggles collapse/expanded state of component.\n */\n toggle(): void {\n this._open = !this._open;\n }\n\n isObject(): boolean {\n return this.getType(this._data) === 'object';\n }\n\n isArray(): boolean {\n return Array.isArray(this._data);\n }\n\n hasChildren(): boolean {\n return this._children && this._children.length > 0;\n }\n\n /**\n * Gets parsed value depending on value type.\n */\n getValue(value: any): string {\n const type: string = this.getType(value);\n if (type === 'undefined' || type === 'null') {\n return type;\n } else if (type === 'date') {\n value = new Date(value).toString();\n } else if (type === 'string') {\n value = '\"' + value + '\"';\n } else if (type === 'function') {\n // Remove content of the function\n return (\n value\n .toString()\n .replace(/[\\r\\n]/g, '')\n .replace(/\\{.*\\}/, '') + '{…}'\n );\n } else if (Array.isArray(value)) {\n return this.getObjectName() + ' [' + value.length + ']';\n }\n return value;\n }\n\n /**\n * Gets type of object.\n * returns 'null' if object is null and 'date' if value is object and can be parsed to a date.\n */\n getType(object: any): string {\n if (typeof object === 'object') {\n if (!object) {\n return 'null';\n }\n if (Array.isArray(object)) {\n return 'object';\n }\n const date: Date = new Date(object);\n if (Object.prototype.toString.call(date) === '[object Date]' && !Number.isNaN(date.getTime())) {\n return 'date';\n }\n }\n return typeof object;\n }\n\n /**\n * Generates string representation depending if its an object or function.\n * see: http://stackoverflow.com/a/332429\n */\n getObjectName(): string {\n const object: any = this._data;\n if (this.isObject() && !object.constructor) {\n return 'Object';\n }\n const funcNameRegex: RegExp = /function (.{1,})\\(/;\n const results: RegExpExecArray = funcNameRegex.exec(object.constructor.toString());\n if (results && results.length > 1) {\n return results[1];\n } else {\n return '';\n }\n }\n\n /**\n * Creates preview of nodes children to render in tooltip depending if its an array or an object.\n */\n getPreview(): string {\n let previewData: string[];\n let startChar: string = '{ ';\n let endChar: string = ' }';\n if (this.isArray()) {\n const previewArray: any[] = this._data.slice(0, TdJsonFormatterComponent.PREVIEW_LIMIT);\n previewData = previewArray.map((obj: any) => {\n return this.getValue(obj);\n });\n startChar = '[';\n endChar = ']';\n } else {\n const previewKeys: string[] = this._children.slice(0, TdJsonFormatterComponent.PREVIEW_LIMIT);\n previewData = previewKeys.map((key: string) => {\n return key + ': ' + this.getValue(this._data[key]);\n });\n }\n const previewString: string = previewData.join(', ');\n const ellipsis: string =\n previewData.length >= TdJsonFormatterComponent.PREVIEW_LIMIT ||\n previewString.length > TdJsonFormatterComponent.PREVIEW_STRING_MAX_LENGTH\n ? '…'\n : '';\n return (\n startChar + previewString.substring(0, TdJsonFormatterComponent.PREVIEW_STRING_MAX_LENGTH) + ellipsis + endChar\n );\n }\n\n private parseChildren(): void {\n if (this.isObject()) {\n this._children = Object.keys(this._data);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdJsonFormatterComponent } from './json-formatter.component';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, MatIconModule],\n declarations: [TdJsonFormatterComponent],\n exports: [TdJsonFormatterComponent],\n})\nexport class CovalentJsonFormatterModule {}\n"],"names":["Component","ChangeDetectionStrategy","tdCollapseAnimation","ChangeDetectorRef","Dir","Optional","Input","NgModule","CommonModule","MatTooltipModule","MatIconModule"],"mappings":"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"}