{"version":3,"file":"ngx-highlightjs-plus.mjs","sources":["../../../projects/ngx-highlightjs/plus/src/gist.model.ts","../../../projects/ngx-highlightjs/plus/src/code-loader.ts","../../../projects/ngx-highlightjs/plus/src/gist.ts","../../../projects/ngx-highlightjs/plus/src/code-from-url.ts","../../../projects/ngx-highlightjs/plus/src/highlight-plus.module.ts","../../../projects/ngx-highlightjs/plus/src/ngx-highlightjs-plus.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface GistOptions {\r\n  clientId: string;\r\n  clientSecret: string;\r\n}\r\n\r\nexport const GIST_OPTIONS = new InjectionToken<GistOptions>('GIST_OPTIONS');\r\n\r\ninterface Owner {\r\n  login: string;\r\n  id: number;\r\n  node_id: string;\r\n  avatar_url: string;\r\n  gravatar_id: string;\r\n  url: string;\r\n  html_url: string;\r\n  followers_url: string;\r\n  following_url: string;\r\n  gists_url: string;\r\n  starred_url: string;\r\n  subscriptions_url: string;\r\n  organizations_url: string;\r\n  repos_url: string;\r\n  events_url: string;\r\n  received_events_url: string;\r\n  type: string;\r\n  site_admin: boolean;\r\n}\r\n\r\ninterface User {\r\n  login: string;\r\n  id: number;\r\n  node_id: string;\r\n  avatar_url: string;\r\n  gravatar_id: string;\r\n  url: string;\r\n  html_url: string;\r\n  followers_url: string;\r\n  following_url: string;\r\n  gists_url: string;\r\n  starred_url: string;\r\n  subscriptions_url: string;\r\n  organizations_url: string;\r\n  repos_url: string;\r\n  events_url: string;\r\n  received_events_url: string;\r\n  type: string;\r\n  site_admin: boolean;\r\n}\r\n\r\ninterface ChangeStatus {\r\n  total: number;\r\n  additions: number;\r\n  deletions: number;\r\n}\r\n\r\ninterface History {\r\n  user: User;\r\n  version: string;\r\n  committed_at: Date;\r\n  change_status: ChangeStatus;\r\n  url: string;\r\n}\r\n\r\ninterface Files {\r\n  [fileName: string]: {\r\n    filename: string;\r\n    type: string;\r\n    language: string;\r\n    raw_url: string;\r\n    size: number;\r\n    truncated: boolean;\r\n    content: string;\r\n  };\r\n}\r\n\r\nexport interface Gist {\r\n  url: string;\r\n  forks_url: string;\r\n  commits_url: string;\r\n  id: string;\r\n  node_id: string;\r\n  git_pull_url: string;\r\n  git_push_url: string;\r\n  html_url: string;\r\n  files: Files;\r\n  public: boolean;\r\n  created_at: Date;\r\n  updated_at: Date;\r\n  description: string;\r\n  comments: number;\r\n  user?: any;\r\n  comments_url: string;\r\n  owner: Owner;\r\n  forks: any[];\r\n  history: History[];\r\n  truncated: boolean;\r\n}\r\n\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable, EMPTY } from 'rxjs';\r\nimport { catchError, publishReplay, refCount } from 'rxjs/operators';\r\nimport { Gist, GIST_OPTIONS, GistOptions } from './gist.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CodeLoader {\r\n  constructor(private _http: HttpClient, @Optional() @Inject(GIST_OPTIONS) private _options: GistOptions) {\r\n  }\r\n\r\n  /**\r\n   * Get plus code\r\n   * @param id Gist ID\r\n   */\r\n  getCodeFromGist(id: string): Observable<Gist> {\r\n    let params!: HttpParams;\r\n    if (this.isOAuthProvided()) {\r\n      params = new HttpParams().set('client_id', this._options.clientId).set('client_secret', this._options.clientSecret);\r\n    }\r\n    return this.fetchFile(`https://api.github.com/gists/${id}`, { params, responseType: 'json' });\r\n  }\r\n\r\n  /**\r\n   * Get code by URL\r\n   * @param url File raw link\r\n   */\r\n  getCodeFromUrl(url: string): Observable<string> {\r\n    return this.fetchFile(url, { responseType: 'text' });\r\n  }\r\n\r\n  /**\r\n   * Check if OAuth option is provided\r\n   */\r\n  private isOAuthProvided(): boolean {\r\n    return !!this._options && !!this._options.clientId && !!this._options.clientSecret;\r\n  }\r\n\r\n  private fetchFile(url: string, options: any): Observable<any> {\r\n    // Check if URL is valid\r\n    if (isUrl(url)) {\r\n      return this._http.get(url, options).pipe(\r\n        // Catch response\r\n        publishReplay(1),\r\n        refCount(),\r\n        catchError((err: Error) => {\r\n          console.error('[NgxHighlight]: Unable to fetch the URL!', err.message);\r\n          return EMPTY;\r\n        })\r\n      );\r\n    }\r\n    return EMPTY;\r\n  }\r\n\r\n}\r\n\r\nfunction isUrl(url: string) {\r\n  const regExp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/;\r\n  return regExp.test(url);\r\n}\r\n","import { Directive, Pipe, Input, Output, PipeTransform, EventEmitter } from '@angular/core';\r\nimport { CodeLoader } from './code-loader';\r\nimport { Gist } from './gist.model';\r\n\r\n@Directive({\r\n  selector: '[gist]'\r\n})\r\nexport class GistDirective {\r\n\r\n  constructor(private _loader: CodeLoader) {\r\n  }\r\n\r\n  @Input()\r\n  private set gist(value: string) {\r\n    if (value) {\r\n      this._loader.getCodeFromGist(value).subscribe((gist: Gist) => this.gistLoad.emit(gist));\r\n    }\r\n  }\r\n\r\n  @Output() gistLoad = new EventEmitter<Gist>();\r\n}\r\n\r\n@Pipe({\r\n  name: 'gistFile'\r\n})\r\nexport class GistFilePipe implements PipeTransform {\r\n  transform(gist: Gist, fileName: string): string | null {\r\n    return (gist && gist.files && gist.files[fileName]) ? gist.files[fileName].content : null;\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { CodeLoader } from './code-loader';\r\n\r\n@Pipe({\r\n  name: 'codeFromUrl'\r\n})\r\nexport class CodeFromUrlPipe implements PipeTransform {\r\n\r\n  constructor(private _loader: CodeLoader) {\r\n  }\r\n\r\n  transform(url: string): Observable<string> {\r\n    return this._loader.getCodeFromUrl(url);\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { HighlightModule } from 'ngx-highlightjs';\r\n// Uncomment the following line for development\r\n// import { HighlightModule } from '../../src/public-api';\r\nimport { GistFilePipe, GistDirective } from './gist';\r\nimport { CodeFromUrlPipe } from './code-from-url';\r\n\r\n@NgModule({\r\n  imports: [\r\n    HighlightModule,\r\n    HttpClientModule\r\n  ],\r\n  declarations: [\r\n    GistDirective,\r\n    GistFilePipe,\r\n    CodeFromUrlPipe\r\n  ],\r\n  exports: [\r\n    HighlightModule,\r\n    GistDirective,\r\n    GistFilePipe,\r\n    CodeFromUrlPipe\r\n  ]\r\n})\r\nexport class HighlightPlusModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.CodeLoader"],"mappings":"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"}