{"version":3,"file":"ngx-md.mjs","sources":["../../../projects/ngx-md/src/lib/ngx-md.service.ts","../../../projects/ngx-md/src/lib/ngx-md.component.ts","../../../projects/ngx-md/src/lib/ngx-md.config.ts","../../../projects/ngx-md/src/lib/ngx-md.module.ts","../../../projects/ngx-md/src/public-api.ts","../../../projects/ngx-md/src/ngx-md.ts"],"sourcesContent":["import { Injectable, SecurityContext } from '@angular/core';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { throwError, Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { Renderer, marked } from 'marked';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxMdService {\n  private _renderer: any = new Renderer();\n  constructor(private _http: HttpClient, private _domSanitizer: DomSanitizer) {\n    this.extendRenderer();\n    this.setMarkedOptions({});\n  }\n\n  // get the content from remote resource\n  getContent(path: string): Observable<any> {\n    return this._http.get(path, { responseType: 'text' }).pipe(\n      map(res => this.extractData(res)),\n      catchError(this.handleError)\n    );\n  }\n\n  public get renderer(): Renderer {\n    return this._renderer;\n  }\n\n  // handle data\n  public extractData(res: any): string {\n    return res || '';\n  }\n\n  public setMarkedOptions(options: any) {\n    options = Object.assign(\n      {\n        gfm: true,\n        tables: true,\n        breaks: false,\n        pedantic: false,\n        sanitize: false,\n        smartLists: true,\n        smartypants: false,\n      },\n      options\n    );\n    options.renderer = this._renderer;\n    marked.setOptions(options);\n  }\n\n  // comple markdown to html\n  public compile(data: string, sanitize = true) {\n    return this._domSanitizer.sanitize(\n      sanitize ? SecurityContext.HTML : SecurityContext.NONE,\n      marked.parse(data).trim()\n    );\n  }\n\n  // handle error\n  private handleError(error: HttpErrorResponse): any {\n    const errMsg = error.message ? error.message : error.toString();\n    return throwError(errMsg);\n  }\n\n  // extend marked render to support todo checkbox\n  private extendRenderer() {\n    this._renderer.listitem = function(text: string) {\n      if (/^\\s*\\[[x ]\\]\\s*/.test(text)) {\n        text = text\n          .replace(\n            /^\\s*\\[ \\]\\s*/,\n            '<input type=\"checkbox\" class=\"md-checkbox\" disabled> '\n          )\n          .replace(\n            /^\\s*\\[x\\]\\s*/,\n            '<input type=\"checkbox\" class=\"md-checkbox\" checked disabled> '\n          );\n        return '<li style=\"list-style: none\">' + text + '</li>';\n      } else {\n        return '<li>' + text + '</li>';\n      }\n    };\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  AfterViewInit,\n  Input,\n  PLATFORM_ID,\n  Inject,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { NgxMdService } from './ngx-md.service';\nimport { isPlatformBrowser } from '@angular/common';\nimport * as Prism from 'prismjs';\nimport { Subscribable, Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { decode } from 'he';\n\n@Component({\n    selector: 'markdown,[Markdown],ngx-md,[NgxMd]',\n    template: '<ng-content></ng-content>',\n    styles: [\n        `\n      .token.operator,\n      .token.entity,\n      .token.url,\n      .language-css .token.string,\n      .style .token.string {\n        background: none;\n      }\n      .md-checkbox {\n        vertical-align: middle;\n        margin: 0 0.2em 0.25em -1.6em;\n        font-size: 16px;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class NgxMdComponent implements AfterViewInit {\n  _path: string;\n  _data: string;\n  _md: any;\n  _ext: string;\n  changeLog: string[] = [];\n  @Output() error: EventEmitter<any> = new EventEmitter<any>();\n  @Output() loaded: EventEmitter<any> = new EventEmitter<any>();\n  @Output() rendered: EventEmitter<any> = new EventEmitter<any>();\n\n  constructor(\n    public _mdService: NgxMdService,\n    public _el: ElementRef,\n    @Inject(PLATFORM_ID) public platformId: string\n  ) { \n    this._path = '';\n    this._data = '';\n    this._ext = '';\n\n  }\n\n  @Input()\n  set path(value: string) {\n    if (value) {\n      this._path = value;\n      this.onPathChange();\n    }\n  }\n\n  @Input()\n  set data(value: string) {\n    if (value) {\n      this._data = value;\n      this.onDataChange(value);\n    }\n  }\n\n  /**\n   * Boolean indicating if the markdown content should be sanitized to avoid script injections\n   */\n  @Input() public sanitizeHtml = true;\n\n  // on input\n  onDataChange(data: string) {\n    if (data) {\n      this._el.nativeElement.innerHTML = this._mdService.compile(\n        data,\n        this.sanitizeHtml\n      );\n    } else {\n      this._el.nativeElement.innerHTML = '';\n    }\n    this.highlightContent(false);\n    this.rendered.emit(data);\n  }\n\n  /**\n   *  After view init\n   */\n  ngAfterViewInit() {\n    if (this._path) {\n      this.onPathChange();\n    } else if (!this._data) {\n      this.processRaw();\n    }\n  }\n\n  processRaw() {\n    this._md = this.prepare(decode(this._el.nativeElement.innerHTML));\n    this.onDataChange(this._md);\n  }\n\n  /**\n   * get remote conent;\n   */\n  onPathChange() {\n    this._ext =\n      this._path &&\n      this._path\n        .split('.')\n        .splice(-1)\n        .join();\n    this._mdService\n      .getContent(this._path)\n      .pipe(catchError(this.handleError))\n      .subscribe(data => {\n        this._md =\n          this._ext !== 'md' ? '```' + this._ext + '\\n' + data + '\\n```' : data;\n        this.onDataChange(this.prepare(this._md));\n        this.loaded.emit(data);\n      });\n  }\n\n  /**\n   * catch http error\n   */\n  private handleError(error: any, caught: Observable<any>) {\n    this.error.emit(error);\n    console.error('An error occurred', error); // for demo purposes only\n    return error.message || error;\n  }\n\n  /**\n   * Prepare string\n   */\n  prepare(raw: string) {\n    if (!raw) {\n      return '';\n    }\n    if (this._ext === 'md' || !this.path) {\n      let isCodeBlock = false;\n      return raw\n        .split('\\n')\n        .map((line: string) => {\n          // If the first non-blank chars are an opening/closing code block, toggle the flag\n          if (this.trimLeft(line).substring(0, 3) === '```') {\n            isCodeBlock = !isCodeBlock;\n          }\n          return isCodeBlock ? line : line.trim();\n        })\n        .join('\\n');\n    }\n    return raw.replace(/\\\"/g, '\\'');\n  }\n\n  /**\n   * Trim left whitespace\n   */\n  private trimLeft(line: string) {\n    return line.replace(/^\\s+|\\s+$/g, '');\n  }\n\n  /**\n   * Use Prism to highlight code snippets only on the browser\n   */\n  private highlightContent(async: boolean): void {\n    if (isPlatformBrowser(this.platformId)) {\n      Prism.highlightAll(async);\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class NgxMdConfig {\n  /** config modue */\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NgxMdService } from './ngx-md.service';\nimport { NgxMdConfig } from './ngx-md.config';\nimport { NgxMdComponent } from './ngx-md.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [NgxMdComponent],\n  providers: [NgxMdService],\n  exports: [NgxMdComponent],\n})\nexport class NgxMdModule {\n  public static forRoot(): ModuleWithProviders<NgxMdModule> {\n    return {\n      ngModule: NgxMdModule,\n      providers: [NgxMdConfig],\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-md\n */\n\nexport * from './lib/ngx-md.service';\nexport * from './lib/ngx-md.component';\nexport * from './lib/ngx-md.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}