nxt-json-view
Version:
Angular component for interactive json view.
1 lines • 12.7 kB
Source Map (JSON)
{"version":3,"file":"nxt-json-view.mjs","sources":["../../../packages/json-view/src/lib/utils/utils.ts","../../../packages/json-view/src/lib/json-view-item/json-view-item.component.ts","../../../packages/json-view/src/lib/json-view-item/json-view-item.component.html","../../../packages/json-view/src/lib/json-view/json-view.component.ts","../../../packages/json-view/src/lib/json-view/json-view.component.html","../../../packages/json-view/src/lib/json-view.module.ts","../../../packages/json-view/src/nxt-json-view.ts"],"sourcesContent":["/** @internal */\r\nexport function isObject(value: any): value is object {\r\n return value !== null && typeof value === 'object'\r\n}\r\n\r\n/** @internal */\r\nexport function isArray(value: any): value is unknown[] {\r\n return Array.isArray(value)\r\n}\r\n\r\n/** @internal */\r\nexport function isUndefined<T>(value: T | undefined): value is undefined {\r\n return typeof value === 'undefined'\r\n}\r\n\r\n/** @internal */\r\nexport function isString(value: any): value is string {\r\n return typeof value === 'string'\r\n}\r\n\r\n/** @internal */\r\nexport function isNumber(value: any): value is number {\r\n return typeof value === 'number'\r\n}\r\n\r\n/** @internal */\r\nexport function isBoolean(value: any): value is boolean {\r\n return typeof value === 'boolean'\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core'\r\nimport { LevelLabels } from '../utils/interfaces'\r\nimport { isArray, isBoolean, isNumber, isObject, isString, isUndefined } from '../utils/utils'\r\n\r\n/** @internal */\r\n@Component({\n selector: 'nxt-json-view-item',\n templateUrl: './json-view-item.component.html',\n styleUrls: ['./json-view-item.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n standalone: false\n})\r\nexport class JsonViewItemComponent implements OnInit {\r\n private _data?: any\r\n @Input()\r\n set data(data: any | undefined) {\r\n this._data = data\r\n if (this.isInit) {\r\n this.init()\r\n }\r\n }\r\n get data(): any | undefined {\r\n return this._data\r\n }\r\n @Input() key?: string\r\n @Input() level: number = 0\r\n @Input() levelOpen?: number\r\n @Input() levelLabels?: LevelLabels\r\n\r\n isOpen: boolean = false\r\n childrenKeys?: string[]\r\n hasChildren: boolean = false\r\n dataType?: string\r\n value: any\r\n valueType?: string\r\n isObject: boolean = false\r\n isArray: boolean = false\r\n isInit: boolean = false\r\n _levelLabels: { [key: string]: string } = {}\r\n\r\n ngOnInit() {\r\n this.init()\r\n this.isInit = true\r\n }\r\n\r\n init() {\r\n this.levelLabelHandle()\r\n this.levelOpenHandle()\r\n this.childrenKeysHandle()\r\n this.dataHandle()\r\n }\r\n\r\n levelLabelHandle() {\r\n if (this.levelLabels !== undefined) {\r\n this._levelLabels = this.levelLabels[this.level] || {}\r\n }\r\n }\r\n\r\n levelOpenHandle() {\r\n if (!isUndefined(this.levelOpen) && (this.level <= this.levelOpen)) {\r\n this.isOpen = true\r\n }\r\n }\r\n\r\n childrenKeysHandle() {\r\n if (isObject(this.data)) {\r\n this.childrenKeys = Object.keys(this.data)\r\n if (this.childrenKeys && this.childrenKeys.length) {\r\n this.hasChildren = true\r\n }\r\n }\r\n }\r\n\r\n dataHandle() {\r\n if (isObject(this.data)) {\r\n this.isObject = true\r\n this.dataType = 'Object'\r\n if (isArray(this.data)) {\r\n this.isArray = true\r\n this.dataType = 'Array'\r\n }\r\n if (this.key && this._levelLabels[this.key]) {\r\n this.dataType = this._levelLabels[this.key]\r\n }\r\n } else {\r\n this.value = this.data\r\n if (isString(this.data)) {\r\n this.valueType = 'string'\r\n } else if (isNumber(this.data)) {\r\n this.valueType = 'number'\r\n } else if (isBoolean(this.data)) {\r\n this.valueType = 'boolean'\r\n } else if (null === this.data) {\r\n this.valueType = 'null'\r\n this.value = 'null'\r\n }\r\n }\r\n }\r\n\r\n toggle() {\r\n if (!(this.childrenKeys && this.childrenKeys.length)) {\r\n return\r\n }\r\n this.isOpen = !this.isOpen\r\n }\r\n\r\n}\r\n","<div class=\"json-view\">\r\n <a (click)=\"toggle()\"\r\n tabindex=\"0\"\r\n (keydown.space)=\"toggle()\">\r\n <span class=\"toggler\"\r\n [ngClass]=\"{'collapse': isOpen, 'expand': !isOpen}\"\r\n [style.visibility]=\"hasChildren?'visible':'hidden'\"></span>\r\n <span class=\"key\"\r\n *ngIf=\"key\">\r\n <span>{{key}}</span>\r\n <span>: </span>\r\n </span>\r\n <span class=\"value\">\r\n <span *ngIf=\"isObject\">\r\n {{ dataType }}\r\n <span *ngIf=\"isArray\">[ {{ $any(data)?.length }} ]</span>\r\n </span>\r\n <span *ngIf=\"!isObject && valueType\"\r\n [ngClass]=\"valueType\">{{ value }}</span>\r\n </span>\r\n </a>\r\n <div class=\"children\"\r\n *ngIf=\"hasChildren && isOpen\">\r\n <nxt-json-view-item *ngFor=\"let _key of childrenKeys\"\r\n [data]=\"data[_key]\"\r\n [key]=\"_key\"\r\n [level]=\"level+1\"\r\n [levelOpen]=\"levelOpen\"\r\n [levelLabels]=\"levelLabels\"></nxt-json-view-item>\r\n </div>\r\n</div>\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core'\r\nimport { LevelLabels } from '../utils/interfaces'\r\n\r\n@Component({\n selector: 'nxt-json-view',\n templateUrl: './json-view.component.html',\n styleUrls: ['./json-view.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n standalone: false\n})\r\nexport class JsonViewComponent {\r\n /** JSON data, any valid JSON object */\r\n @Input() data: any\r\n /** Initial number of levels to be expanded */\r\n @Input() levelOpen?: number\r\n /** Custom labels for elements within the hierarcy */\r\n @Input() levelLabels?: LevelLabels\r\n}\r\n","<div class=\"nxt-json-view\">\r\n <nxt-json-view-item [data]=\"data\"\r\n [level]=\"0\"\r\n [levelOpen]=\"levelOpen\"\r\n [levelLabels]=\"levelLabels\"\r\n class=\"json-view\"></nxt-json-view-item>\r\n</div>\r\n","import { CommonModule } from '@angular/common'\r\nimport { NgModule } from '@angular/core'\r\nimport { JsonViewItemComponent } from './json-view-item/json-view-item.component'\r\nimport { JsonViewComponent } from './json-view/json-view.component'\r\n\r\n@NgModule({\r\n declarations: [\r\n JsonViewItemComponent,\r\n JsonViewComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n JsonViewComponent\r\n ]\r\n})\r\nexport class JsonViewModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.JsonViewItemComponent"],"mappings":"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"}