ngx-json-viewer
Version:
JSON formatter / viewer for Angular
1 lines • 11.5 kB
Source Map (JSON)
{"version":3,"file":"ngx-json-viewer.mjs","sources":["../../src/ngx-json-viewer/ngx-json-viewer.component.ts","../../src/ngx-json-viewer/ngx-json-viewer.component.html","../../src/ngx-json-viewer.module.ts","../../ngx-json-viewer.ts"],"sourcesContent":["import { Component, OnChanges, Input } from '@angular/core';\n\nexport interface Segment {\n key: string;\n value: any;\n type: undefined | string;\n description: string;\n expanded: boolean;\n}\n\n@Component({\n selector: 'ngx-json-viewer',\n templateUrl: './ngx-json-viewer.component.html',\n styleUrls: ['./ngx-json-viewer.component.scss']\n})\nexport class NgxJsonViewerComponent implements OnChanges {\n\n @Input() json: any;\n @Input() expanded = true;\n @Input() depth = -1;\n\n @Input() _currentDepth = 0;\n\n segments: Segment[] = [];\n\n ngOnChanges() {\n this.segments = [];\n\n // remove cycles\n this.json = this.decycle(this.json);\n\n if (typeof this.json === 'object') {\n Object.keys(this.json).forEach(key => {\n this.segments.push(this.parseKeyValue(key, this.json[key]));\n });\n } else {\n this.segments.push(this.parseKeyValue(`(${typeof this.json})`, this.json));\n }\n }\n\n isExpandable(segment: Segment) {\n return segment.type === 'object' || segment.type === 'array';\n }\n\n toggle(segment: Segment) {\n if (this.isExpandable(segment)) {\n segment.expanded = !segment.expanded;\n }\n }\n\n private parseKeyValue(key: any, value: any): Segment {\n const segment: Segment = {\n key: key,\n value: value,\n type: undefined,\n description: '' + value,\n expanded: this.isExpanded()\n };\n\n switch (typeof segment.value) {\n case 'number': {\n segment.type = 'number';\n break;\n }\n case 'boolean': {\n segment.type = 'boolean';\n break;\n }\n case 'function': {\n segment.type = 'function';\n break;\n }\n case 'string': {\n segment.type = 'string';\n segment.description = '\"' + segment.value + '\"';\n break;\n }\n case 'undefined': {\n segment.type = 'undefined';\n segment.description = 'undefined';\n break;\n }\n case 'object': {\n // yea, null is object\n if (segment.value === null) {\n segment.type = 'null';\n segment.description = 'null';\n } else if (Array.isArray(segment.value)) {\n segment.type = 'array';\n segment.description = 'Array[' + segment.value.length + '] ' + JSON.stringify(segment.value);\n } else if (segment.value instanceof Date) {\n segment.type = 'date';\n } else {\n segment.type = 'object';\n segment.description = 'Object ' + JSON.stringify(segment.value);\n }\n break;\n }\n }\n\n return segment;\n }\n\n private isExpanded(): boolean {\n return (\n this.expanded &&\n !(this.depth > -1 && this._currentDepth >= this.depth)\n );\n }\n\n // https://github.com/douglascrockford/JSON-js/blob/master/cycle.js\n private decycle(object: any) {\n const objects = new WeakMap();\n return (function derez(value, path) {\n let old_path;\n let nu: any;\n\n if (\n typeof value === 'object'\n && value !== null\n && !(value instanceof Boolean)\n && !(value instanceof Date)\n && !(value instanceof Number)\n && !(value instanceof RegExp)\n && !(value instanceof String)\n ) {\n old_path = objects.get(value);\n if (old_path !== undefined) {\n return {$ref: old_path};\n }\n objects.set(value, path);\n\n if (Array.isArray(value)) {\n nu = [];\n value.forEach(function (element, i) {\n nu[i] = derez(element, path + '[' + i + ']');\n });\n } else {\n nu = {};\n Object.keys(value).forEach(function (name) {\n nu[name] = derez(\n value[name],\n path + '[' + JSON.stringify(name) + ']'\n );\n });\n }\n return nu;\n }\n return value;\n }(object, '$'));\n }\n}\n","<section class=\"ngx-json-viewer\">\n <section\n *ngFor=\"let segment of segments\"\n [ngClass]=\"['segment', 'segment-type-' + segment.type]\">\n <section\n (click)=\"toggle(segment)\"\n [ngClass]=\"{\n 'segment-main': true,\n 'expandable': isExpandable(segment),\n 'expanded': segment.expanded\n }\">\n <div *ngIf=\"isExpandable(segment)\" class=\"toggler\"></div>\n <span class=\"segment-key\">{{ segment.key }}</span>\n <span class=\"segment-separator\">: </span>\n <span *ngIf=\"!segment.expanded || !isExpandable(segment)\" class=\"segment-value\">{{ segment.description }}</span>\n </section>\n <section *ngIf=\"segment.expanded && isExpandable(segment)\" class=\"children\">\n <ngx-json-viewer [json]=\"segment.value\" [expanded]=\"expanded\" [depth]=\"depth\" [_currentDepth]=\"_currentDepth+1\"></ngx-json-viewer>\n </section>\n </section>\n</section>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NgxJsonViewerComponent } from './ngx-json-viewer/ngx-json-viewer.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n NgxJsonViewerComponent\n ],\n exports: [\n NgxJsonViewerComponent\n ]\n})\nexport class NgxJsonViewerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}