@qrsln/highlighter
Version:
Based on highlighter.js
1 lines • 19.4 kB
Source Map (JSON)
{"version":3,"file":"qrsln-highlighter.mjs","sources":["../../../projects/highlighter/src/lib/Components/highlighter/highlighter.component.ts","../../../projects/highlighter/src/lib/Components/highlighter/highlighter.component.html","../../../projects/highlighter/src/lib/highlighter.directive.ts","../../../projects/highlighter/src/lib/highlighter.module.ts","../../../projects/highlighter/src/public-api.ts","../../../projects/highlighter/src/qrsln-highlighter.ts"],"sourcesContent":["import {AfterViewInit, Component, inject, Injectable, Input, OnInit, ViewEncapsulation} from '@angular/core';\r\n// @ts-ignore\r\n// import hljs, {HLJSOptions} from 'highlight.js';\r\n\r\n// https://github.com/highlightjs/highlight.js\r\n// It is more efficient to import only the library and register the languages you need:\r\nimport hljs from 'highlight.js/lib/core';\r\nimport {HLJSOptions} from \"highlight.js\";\r\n\r\n// Deprecation (warning): Using file extension in specifier is deprecated,\r\n// use \"highlight.js/lib/languages/typescript\" instead of \"highlight.js/lib/languages/typescript.js\"\r\n// @ts-ignore\r\nimport typescript from 'highlight.js/lib/languages/typescript';\r\n// @ts-ignore\r\nimport html from 'highlight.js/lib/languages/xml';\r\n// @ts-ignore\r\nimport css from 'highlight.js/lib/languages/css';\r\n// @ts-ignore\r\nimport scss from 'highlight.js/lib/languages/scss';\r\n// @ts-ignore\r\nimport less from 'highlight.js/lib/languages/less';\r\n// @ts-ignore\r\nimport csharp from 'highlight.js/lib/languages/csharp';\r\n// @ts-ignore\r\nimport javascript from 'highlight.js/lib/languages/javascript';\r\n// @ts-ignore\r\nimport json from 'highlight.js/lib/languages/json';\r\n// @ts-ignore\r\nimport php from 'highlight.js/lib/languages/php';\r\n// @ts-ignore\r\nimport markdown from 'highlight.js/lib/languages/markdown';\r\n// @ts-ignore\r\nimport python from 'highlight.js/lib/languages/python';\r\n\r\n// Supported Languages: typescript, html, css/scss/less, csharp, javascript, json, php, python, markdown\r\nhljs.registerLanguage('typescript', typescript);\r\nhljs.registerLanguage('html', html);\r\nhljs.registerLanguage('css', css);\r\nhljs.registerLanguage('scss', scss);\r\nhljs.registerLanguage('less', less);\r\nhljs.registerLanguage('csharp', csharp);\r\nhljs.registerLanguage('javascript', javascript);\r\nhljs.registerLanguage('json', json);\r\nhljs.registerLanguage('php', php);\r\nhljs.registerLanguage('python', python);\r\nhljs.registerLanguage('markdown', markdown);\r\n\r\n@Component({\r\n selector: 'ql-highlighter, NgHighlighter, Highlighter',\r\n templateUrl: './highlighter.component.html',\r\n styleUrls: ['./highlighter.component.scss'],\r\n host: {ngSkipHydration: 'true'},\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class HighlighterComponent implements OnInit, AfterViewInit {\r\n\r\n Id = 'Highlighter'.concat('_', Math.random().toString(36).substring(2, 15), '_', Math.random().toString(36).substring(2, 15));\r\n @Input() Options?: Partial<HLJSOptions>;\r\n\r\n @Input() Theme = 'stackoverflow-dark'; // Stackoverflow Dark\r\n @Input() Lang?: string; // Not: don't set this value\r\n @Input() ClassName: string | undefined;// get classes from base element & use them on this component\r\n @Input() Code = '<html lang=\"en\"></html>';\r\n @Input() LineNumbers = false;\r\n\r\n ngOnInit(): void {\r\n if (this.Lang === undefined) {\r\n console.warn(`Language does not set! Lang: ${this.Lang}!! Back to default lang: html :p`);\r\n this.Lang = 'html';\r\n }\r\n if (typeof hljs === 'undefined') {\r\n console.error('highlight.js not detected!');\r\n } else {\r\n this.Code = this.EscapeHTML(this.Code);\r\n\r\n // this.code = hljs.highlight(this.code, {language: this.lang || 'html'}).value;\r\n // console.log('this.code', this.code);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.Options) {\r\n hljs.configure({/*useBR: 'true', */ ...this.Options});\r\n }\r\n\r\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\r\n const parentEl = document.getElementById(this.Id);\r\n if (parentEl) {\r\n const blocks: NodeListOf<HTMLElement> = parentEl.querySelectorAll('pre code');\r\n // console.log('blocks', blocks);\r\n\r\n blocks.forEach((el) => {\r\n hljs.highlightElement(el);\r\n if (this.LineNumbers) {\r\n this.AddLineNumbersTo(el);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n AddLineNumbersTo(elCode: HTMLElement): void {\r\n const lines = elCode.innerHTML.split('\\n');\r\n if (lines.length === 0 || (lines.length === 1 && lines[0].length === 0)) {\r\n return;\r\n }\r\n\r\n const digitsCount = ('' + lines.length).length;\r\n\r\n for (let n = 0; n < lines.length; n++) {\r\n let numberWithZeros = '' + n;\r\n if (numberWithZeros.length < digitsCount) {\r\n let zeros = '';\r\n for (let i = 0; i < digitsCount - numberWithZeros.length; i++) {\r\n zeros += '0';\r\n }\r\n numberWithZeros = `<span class=\"zeros\">${zeros}</span>${n}`;\r\n }\r\n lines[n] = `<span class=\"hljs-ln-numbers\">${numberWithZeros}</span>` + lines[n];\r\n }\r\n elCode.innerHTML = lines.join('\\n');\r\n }\r\n\r\n /* hljs.highlightAuto(this.code).value ==> same result */\r\n EscapeHTML(content: string): string {\r\n return (content || '')\r\n .replace(/&/g, '&')\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n }\r\n\r\n // Transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n // switch (type) {\r\n // case 'html':\r\n // return this.sanitizer.bypassSecurityTrustHtml(value);\r\n // case 'style':\r\n // return this.sanitizer.bypassSecurityTrustStyle(value);\r\n // case 'script':\r\n // return this.sanitizer.bypassSecurityTrustScript(value);\r\n // case 'url':\r\n // return this.sanitizer.bypassSecurityTrustUrl(value);\r\n // case 'resourceUrl':\r\n // return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n // default:\r\n // throw new Error(`Invalid safe type specified: ${type}`);\r\n // }\r\n // }\r\n}\r\n\r\n","<div [id]=\"Id\" class=\"Highlighter {{ClassName}} {{Theme}}\">\r\n <pre><code class=\"Scrollbar {{Lang}}\" [innerHTML]=\"Code\"></code></pre>\r\n <!-- <pre><code [className]=\"lang\" [innerHTML]=\"Transform(code,'html')\"></code></pre>-->\r\n</div>\r\n","import {\r\n ComponentRef, ElementRef, EmbeddedViewRef,\r\n Directive, Input, OnInit, OnDestroy, OnChanges, SimpleChanges, ViewContainerRef\r\n} from '@angular/core';\r\nimport {HighlighterComponent} from './Components/highlighter/highlighter.component';\r\n\r\n@Directive({\r\n selector: '[qlHighlighter], [Highlighter]',\r\n})\r\nexport class HighlighterDirective implements OnInit, OnChanges, OnDestroy {\r\n @Input() Options: Partial<any> | undefined;\r\n @Input() Theme = 'stackoverflow-dark'; // Stackoverflow Dark\r\n @Input() Lang: string | undefined;\r\n @Input() Code = '<html lang=\"en\"></html>';\r\n @Input() LineNumbers = false;\r\n\r\n // @Input() theme: string;\r\n private readonly el: HTMLElement;\r\n private componentRef: ComponentRef<HighlighterComponent> | undefined;\r\n\r\n constructor(private elementRef: ElementRef<HTMLElement>, // private appRef: ApplicationRef,\r\n private viewContainerRef: ViewContainerRef) {\r\n this.el = this.elementRef.nativeElement;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!!changes['Theme'] && !changes['Theme'].firstChange) {\r\n // console.log(changes);\r\n this.Destroy();\r\n this.SetComponent().then();\r\n }\r\n if (!!changes['LineNumbers'] && !changes['LineNumbers'].firstChange) {\r\n // console.log(changes);\r\n this.Destroy();\r\n this.SetComponent().then();\r\n }\r\n if (!!changes['Code'] && !changes['Code'].firstChange) {\r\n // console.log(changes);\r\n this.Destroy();\r\n this.SetComponent().then();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.SetComponent().then();\r\n }\r\n\r\n private async SetComponent(): Promise<void> {\r\n if (this.Code === undefined || this.Code === '<html lang=\"en\"></html>') {\r\n this.Code = await this.GetContent();\r\n }\r\n // console.log(this.code);\r\n\r\n this.componentRef = this.GetComponentRef();\r\n\r\n this.componentRef.instance.Lang = this.Lang;\r\n this.componentRef.instance.ClassName = this.el.className;\r\n this.componentRef.instance.LineNumbers = this.LineNumbers;\r\n if (this.Theme) {\r\n this.componentRef.instance.Theme = this.Theme;\r\n }\r\n this.componentRef.instance.Code = this.Code;\r\n this.componentRef.instance.Options = this.Options;\r\n\r\n // Clear the evidence\r\n // this.el.parentNode.removeChild(this.el);\r\n this.el.style.display = 'none';\r\n }\r\n\r\n private async GetContent(): Promise<string> {\r\n try {\r\n const childNode = await this.el.childNodes[0] as ChildNode; // TextNode\r\n // console.log('GetContent() ChildNode', childNode.textContent);\r\n return childNode.textContent || '';\r\n } catch (e) {\r\n return 'couldn\\'t get innerHTML';\r\n }\r\n }\r\n\r\n private GetComponentRef(): ComponentRef<HighlighterComponent> {\r\n // 1. Create a component reference from the component\r\n const componentRef = this.viewContainerRef.createComponent(HighlighterComponent);\r\n\r\n // 2. Attach component to the appRef so that it's inside the ng component tree\r\n // this.appRef.attachView(componentRef.hostView);\r\n // TODO: Causes Error: NG0902: This view is already attached to a ViewContainer!\r\n\r\n // 3. Get DOM element from component\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n\r\n // 4. Append DOM element to the body\r\n if (this.el.parentNode) {\r\n this.el.parentNode.insertBefore(domElem, this.el.nextSibling);\r\n // console.log('append as Sibling', domElem);\r\n } else {\r\n this.el.appendChild(domElem);\r\n // console.log('appendChild', domElem);\r\n }\r\n\r\n return componentRef;\r\n }\r\n\r\n private Destroy(): void {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.Destroy();\r\n }\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule, NgClass} from '@angular/common';\r\n\r\nimport {HighlighterDirective} from \"./highlighter.directive\";\r\nimport {HighlighterComponent} from \"./Components/highlighter/highlighter.component\";\r\n\r\n@NgModule({\r\n declarations: [HighlighterComponent, HighlighterDirective],\r\n exports: [HighlighterComponent, HighlighterDirective],\r\n imports: [CommonModule, NgClass, NgClass, NgClass]\r\n})\r\nexport class HighlighterModule {\r\n}\r\n","/*\r\n * Public API Surface of highlighter\r\n */\r\n\r\nexport * from './lib/highlighter.module';\r\nexport * from './lib/highlighter.directive';\r\nexport * from './lib/Components/highlighter/highlighter.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}