{"version":3,"file":"covalent-core-json-formatter.mjs","sources":["../../../../libs/angular/json-formatter/src/collapse.animation.ts","../../../../libs/angular/json-formatter/src/json-formatter.component.html","../../../../libs/angular/json-formatter/src/json-formatter.component.ts","../../../../libs/angular/json-formatter/src/json-formatter.module.ts","../../../../libs/angular/json-formatter/src/covalent-core-json-formatter.ts"],"sourcesContent":["import {\n  trigger,\n  state,\n  style,\n  transition,\n  animate,\n  AnimationTriggerMetadata,\n  AUTO_STYLE,\n  query,\n  animateChild,\n  group,\n} from '@angular/animations';\n\nexport interface IAnimationOptions {\n  anchor?: string;\n  duration?: number;\n  delay?: number;\n}\n\nexport interface ICollapseAnimation extends IAnimationOptions {\n  easeOnClose?: string;\n  easeOnOpen?: string;\n}\n\n/**\n * const tdCollapseAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * easeOnClose: Animation accelerates and decelerates when closing. Defaults to ease-in.\n * * easeOnOpen: Animation accelerates and decelerates when opening. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a collapse/expand animation.\n *\n * usage: [@tdCollapse]=\"{ value: true | false, params: { duration: 500 }}\"\n */\nexport const tdCollapseAnimation: AnimationTriggerMetadata = trigger(\n  'tdCollapse',\n  [\n    state(\n      '1',\n      style({\n        height: '0',\n        overflow: 'hidden',\n      })\n    ),\n    state(\n      '0',\n      style({\n        height: AUTO_STYLE,\n        overflow: AUTO_STYLE,\n      })\n    ),\n    transition(\n      '0 => 1',\n      [\n        style({\n          overflow: 'hidden',\n          height: AUTO_STYLE,\n        }),\n        group([\n          query('@*', animateChild(), { optional: true }),\n          animate(\n            '{{ duration }}ms {{ delay }}ms {{ ease }}',\n            style({\n              height: '0',\n              overflow: 'hidden',\n            })\n          ),\n        ]),\n      ],\n      { params: { duration: 150, delay: '0', ease: 'ease-in' } }\n    ),\n    transition(\n      '1 => 0',\n      [\n        style({\n          height: '0',\n          overflow: 'hidden',\n        }),\n        group([\n          query('@*', animateChild(), { optional: true }),\n          animate(\n            '{{ duration }}ms {{ delay }}ms {{ ease }}',\n            style({\n              overflow: 'hidden',\n              height: AUTO_STYLE,\n            })\n          ),\n        ]),\n      ],\n      { params: { duration: 150, delay: '0', ease: 'ease-out' } }\n    ),\n  ]\n);\n","<div class=\"td-json-formatter-wrapper\">\n  <a\n    class=\"td-key\"\n    [class.td-key-node]=\"hasChildren()\"\n    [class.td-key-leaf]=\"!hasChildren()\"\n    [tabIndex]=\"isObject() ? 0 : -1\"\n    (keydown.enter)=\"toggle()\"\n    (click)=\"toggle()\"\n  >\n    <mat-icon class=\"td-node-icon\" *ngIf=\"hasChildren()\">\n      {{\n        open\n          ? 'keyboard_arrow_down'\n          : isRTL\n          ? 'keyboard_arrow_left'\n          : 'keyboard_arrow_right'\n      }}\n    </mat-icon>\n    <span *ngIf=\"key\" class=\"key\">{{ key }}:</span>\n    <span class=\"value\">\n      <span\n        [class.td-empty]=\"!hasChildren()\"\n        *ngIf=\"isObject()\"\n        [matTooltip]=\"getPreview()\"\n        matTooltipPosition=\"after\"\n      >\n        <span class=\"td-object-name\">{{ getObjectName() }}</span>\n        <span class=\"td-array-length\" *ngIf=\"isArray()\"\n          >[{{ data['length'] }}]</span\n        >\n      </span>\n      <span *ngIf=\"!isObject()\" [class]=\"getType(data)\">{{\n        getValue(data)\n      }}</span>\n    </span>\n  </a>\n  <div class=\"td-object-children\" [@tdCollapse]=\"!(hasChildren() && open)\">\n    <ng-template let-key ngFor [ngForOf]=\"children\">\n      <td-json-formatter\n        [key]=\"key\"\n        [data]=\"data[key]\"\n        [levelsOpen]=\"levelsOpen - 1\"\n      ></td-json-formatter>\n    </ng-template>\n  </div>\n</div>\n","import {\n  Component,\n  Input,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Optional,\n} from '@angular/core';\nimport { Dir } from '@angular/cdk/bidi';\nimport { tdCollapseAnimation } from './collapse.animation';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\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  imports: [CommonModule, MatIcon, MatTooltip],\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 = 30;\n\n  /**\n   * Max length for preview string. Any names bigger than this get trunctated.\n   */\n  private static PREVIEW_STRING_MAX_LENGTH = 80;\n\n  /**\n   * Max tooltip preview elements.\n   */\n  private static PREVIEW_LIMIT = 5;\n\n  private _key?: string;\n  private _data!: Record<string, any>;\n  private _children?: string[];\n  private _open = false;\n  private _levelsOpen = 0;\n\n  /**\n   * levelsOpen?: number\n   * Levels opened by default when JS object is formatted and rendered.\n   */\n  @Input()\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()\n  set key(key: string) {\n    this._key = key;\n  }\n  get key(): string {\n    const elipsis: string =\n      this._key && this._key.length > TdJsonFormatterComponent.KEY_MAX_LENGTH\n        ? '…'\n        : '';\n    return this._key\n      ? this._key.substring(0, TdJsonFormatterComponent.KEY_MAX_LENGTH) +\n          elipsis\n      : this._key ?? '';\n  }\n\n  /**\n   * data: any\n   * JS object to be formatted.\n   */\n  @Input()\n  set data(data: Record<string, any>) {\n    this._data = data;\n    this.parseChildren();\n  }\n  get data(): Record<string, 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(\n    private _changeDetectorRef: ChangeDetectorRef,\n    @Optional() private _dir: Dir\n  ) {}\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) ?? false;\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 (\n        Object.prototype.toString.call(date) === '[object Date]' &&\n        !Number.isNaN(date.getTime())\n      ) {\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 = /function (.{1,})\\(/;\n    const results = 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 = '{ ';\n    let endChar = ' }';\n    if (this.isArray()) {\n      const previewArray: any[] =\n        Object.entries(this._data).slice(\n          0,\n          TdJsonFormatterComponent.PREVIEW_LIMIT\n        ) ?? [];\n      previewData = previewArray.map((obj: any) => {\n        return this.getValue(obj);\n      });\n      startChar = '[';\n      endChar = ']';\n    } else {\n      const previewKeys: string[] =\n        this._children?.slice(0, TdJsonFormatterComponent.PREVIEW_LIMIT) ?? [];\n      previewData = previewKeys.map((key: string) => {\n        return key + ': ' + this.getValue(this._data[key] ?? undefined);\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 +\n      previewString.substring(\n        0,\n        TdJsonFormatterComponent.PREVIEW_STRING_MAX_LENGTH\n      ) +\n      ellipsis +\n      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 { TdJsonFormatterComponent } from './json-formatter.component';\n\n/**\n * @deprecated This module is deprecated and will be removed in future versions.\n * Please migrate to using standalone components as soon as possible.\n */\n@NgModule({\n  imports: [TdJsonFormatterComponent],\n  exports: [TdJsonFormatterComponent],\n})\nexport class CovalentJsonFormatterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}