{"version":3,"file":"moxa-formoxa-mx-json-viewer.mjs","sources":["../../../../libs/formoxa/mx-json-viewer/src/lib/mx-json-viewer.component.ts","../../../../libs/formoxa/mx-json-viewer/src/lib/mx-json-viewer.component.html","../../../../libs/formoxa/mx-json-viewer/src/moxa-formoxa-mx-json-viewer.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';\nimport { Segment } from './models/mx-json-viewer.model';\n\n@Component({\n  selector: 'mx-json-viewer',\n  templateUrl: './mx-json-viewer.component.html',\n  styleUrls: ['./mx-json-viewer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: []\n})\nexport class MxJsonViewerComponent implements OnChanges {\n  @Input() json: any;\n  @Input() expanded = true;\n\n  segments: Segment[] = [];\n\n  ngOnChanges() {\n    this.segments = [];\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.expanded\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","<section class=\"ngx-json-viewer\">\n  @for (segment of segments; track segment) {\n    <section [class]=\"['segment', 'segment-type-' + segment.type]\">\n      <section\n        (click)=\"toggle(segment)\"\n        [class]=\"{\n          'segment-main': true,\n          expandable: isExpandable(segment),\n          expanded: segment.expanded\n        }\"\n      >\n        @if (isExpandable(segment)) {\n          <div class=\"toggler\"></div>\n        }\n        <span class=\"segment-key\">{{ segment.key }}</span>\n        <span class=\"segment-separator\">: </span>\n        @if (!segment.expanded || !isExpandable(segment)) {\n          <span class=\"segment-value\">{{ segment.description }}</span>\n        }\n      </section>\n      @if (segment.expanded && isExpandable(segment)) {\n        <section class=\"children\">\n          <mx-json-viewer [json]=\"segment.value\" [expanded]=\"expanded\"></mx-json-viewer>\n        </section>\n      }\n    </section>\n  }\n</section>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}