ngx-highlightjs
Version:
Instant code highlighting, auto-detect language, super easy to use.
1 lines • 11.2 kB
Source Map (JSON)
{"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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"}