nxt-highlightjs 19.1.0 → 21.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/nxt-highlightjs-extras.mjs +114 -54
- package/fesm2022/nxt-highlightjs-extras.mjs.map +1 -1
- package/fesm2022/nxt-highlightjs-line-numbers.mjs +6 -10
- package/fesm2022/nxt-highlightjs-line-numbers.mjs.map +1 -1
- package/fesm2022/nxt-highlightjs.mjs +98 -55
- package/fesm2022/nxt-highlightjs.mjs.map +1 -1
- package/package.json +15 -12
- package/types/nxt-highlightjs-extras.d.ts +198 -0
- package/types/nxt-highlightjs-line-numbers.d.ts +18 -0
- package/types/nxt-highlightjs.d.ts +229 -0
- package/extras/code-file-location.d.ts +0 -12
- package/extras/code-from-url.d.ts +0 -10
- package/extras/code-loader.d.ts +0 -22
- package/extras/gist.d.ts +0 -20
- package/extras/gist.model.d.ts +0 -95
- package/extras/highlight-extras.module.d.ts +0 -8
- package/extras/index.d.ts +0 -5
- package/extras/public_api.d.ts +0 -5
- package/index.d.ts +0 -5
- package/lib/highlight-auto.directive.d.ts +0 -27
- package/lib/highlight-base.directive.d.ts +0 -27
- package/lib/highlight.directive.d.ts +0 -30
- package/lib/highlight.loader.d.ts +0 -28
- package/lib/highlight.model.d.ts +0 -22
- package/lib/highlight.module.d.ts +0 -8
- package/lib/highlight.service.d.ts +0 -64
- package/lib/loader-errors.d.ts +0 -7
- package/lib/output.d.ts +0 -103
- package/lib/trusted-types.d.ts +0 -1
- package/line-numbers/index.d.ts +0 -5
- package/line-numbers/line-numbers-lib.d.ts +0 -6
- package/line-numbers/line-numbers.directive.d.ts +0 -12
- package/line-numbers/public_api.d.ts +0 -2
- package/public-api.d.ts +0 -7
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, makeEnvironmentProviders, inject, PendingTasks, Injectable, ElementRef, effect, SecurityContext, Directive, input, signal, output, booleanAttribute, NgModule } from '@angular/core';
|
|
2
|
+
import { InjectionToken, makeEnvironmentProviders, inject, DOCUMENT, PendingTasks, resource, Injectable, ElementRef, effect, SecurityContext, Directive, input, signal, output, booleanAttribute, NgModule } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { DOCUMENT } from '@angular/common';
|
|
4
|
+
import { firstValueFrom, filter } from 'rxjs';
|
|
5
|
+
import { toObservable } from '@angular/core/rxjs-interop';
|
|
7
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
8
10
|
const NXT_HIGHLIGHT_OPTIONS = new InjectionToken('NXT_HIGHLIGHT_OPTIONS');
|
|
9
11
|
function provideHighlightOptions(options) {
|
|
10
12
|
return makeEnvironmentProviders([
|
|
@@ -15,6 +17,9 @@ function provideHighlightOptions(options) {
|
|
|
15
17
|
]);
|
|
16
18
|
}
|
|
17
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
18
23
|
var LoaderErrors;
|
|
19
24
|
(function (LoaderErrors) {
|
|
20
25
|
LoaderErrors["FULL_WITH_CORE_LIBRARY_IMPORTS"] = "The full library and the core library were imported, only one of them should be imported!";
|
|
@@ -74,7 +79,7 @@ class TokenTree {
|
|
|
74
79
|
;
|
|
75
80
|
}
|
|
76
81
|
toJSON() {
|
|
77
|
-
return JSON.stringify(this.rootNode,
|
|
82
|
+
return JSON.stringify(this.rootNode, undefined, 4);
|
|
78
83
|
}
|
|
79
84
|
/**
|
|
80
85
|
* @typedef { import("./html_renderer").Renderer } Renderer
|
|
@@ -296,23 +301,34 @@ function escapeHTML(value) {
|
|
|
296
301
|
}
|
|
297
302
|
|
|
298
303
|
class HighlightLoader {
|
|
304
|
+
/**
|
|
305
|
+
* @deprecated use hljs.value()
|
|
306
|
+
*/
|
|
307
|
+
get ready() {
|
|
308
|
+
return firstValueFrom(this._ready$);
|
|
309
|
+
}
|
|
299
310
|
constructor() {
|
|
300
311
|
this.document = inject(DOCUMENT);
|
|
301
312
|
this.options = inject(NXT_HIGHLIGHT_OPTIONS, { optional: true });
|
|
302
313
|
this.pendingTasks = inject(PendingTasks);
|
|
303
|
-
this.
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
314
|
+
this._t = this.pendingTasks.add();
|
|
315
|
+
this.hljs = resource({
|
|
316
|
+
loader: () => this.loadLibrary()
|
|
317
|
+
.then(async (hljs) => {
|
|
318
|
+
if (this.options?.lineNumbersLoader) {
|
|
319
|
+
const plugin = await this.options.lineNumbersLoader();
|
|
320
|
+
hljs.lineNumbersBlock = plugin.activateLineNumbers(this.document);
|
|
321
|
+
}
|
|
322
|
+
hljs.configure({
|
|
323
|
+
__emitter: TokenTreeEmitter
|
|
324
|
+
});
|
|
325
|
+
if (this.options?.highlightOptions)
|
|
326
|
+
hljs.configure(this.options.highlightOptions);
|
|
327
|
+
return hljs;
|
|
328
|
+
})
|
|
329
|
+
.finally(this._t)
|
|
330
|
+
}).asReadonly();
|
|
331
|
+
this._ready$ = toObservable(this.hljs.value).pipe(filter((v) => !!v));
|
|
316
332
|
if (this.options?.themePath) {
|
|
317
333
|
this.loadTheme(this.options.themePath);
|
|
318
334
|
}
|
|
@@ -373,10 +389,10 @@ class HighlightLoader {
|
|
|
373
389
|
this.themeLinkElement.media = 'screen,print';
|
|
374
390
|
this.document.head.appendChild(this.themeLinkElement);
|
|
375
391
|
}
|
|
376
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
377
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
392
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
393
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightLoader, providedIn: 'root' }); }
|
|
378
394
|
}
|
|
379
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
395
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightLoader, decorators: [{
|
|
380
396
|
type: Injectable,
|
|
381
397
|
args: [{
|
|
382
398
|
providedIn: 'root'
|
|
@@ -386,10 +402,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
386
402
|
class HighlightJS {
|
|
387
403
|
constructor() {
|
|
388
404
|
this.loader = inject(HighlightLoader);
|
|
389
|
-
this.hljs =
|
|
405
|
+
this.hljs = this.loader.hljs.value;
|
|
390
406
|
}
|
|
391
407
|
/**
|
|
392
408
|
* Core highlighting function. Accepts the code to highlight (string) and a list of options (object)
|
|
409
|
+
*
|
|
410
|
+
* @deprecated use hljs().highlight
|
|
393
411
|
*/
|
|
394
412
|
async highlight(code, options) {
|
|
395
413
|
const hljs = await this.loader.ready;
|
|
@@ -397,6 +415,8 @@ class HighlightJS {
|
|
|
397
415
|
}
|
|
398
416
|
/**
|
|
399
417
|
* Highlighting with language detection.
|
|
418
|
+
*
|
|
419
|
+
* @deprecated use hljs().highlightAuto
|
|
400
420
|
*/
|
|
401
421
|
async highlightAuto(value, languageSubset) {
|
|
402
422
|
const hljs = await this.loader.ready;
|
|
@@ -406,6 +426,8 @@ class HighlightJS {
|
|
|
406
426
|
* Applies highlighting to a DOM node containing code.
|
|
407
427
|
* This function is the one to use to apply highlighting dynamically after page load or within initialization code of third-party JavaScript frameworks.
|
|
408
428
|
* The function uses language detection by default but you can specify the language in the class attribute of the DOM node. See the scopes reference for all available language names and scopes.
|
|
429
|
+
*
|
|
430
|
+
* @deprecated use hljs().highlightElement
|
|
409
431
|
*/
|
|
410
432
|
async highlightElement(element) {
|
|
411
433
|
const hljs = await this.loader.ready;
|
|
@@ -414,6 +436,8 @@ class HighlightJS {
|
|
|
414
436
|
/**
|
|
415
437
|
* Applies highlighting to all elements on a page matching the configured cssSelector. The default cssSelector value is 'pre code',
|
|
416
438
|
* which highlights all code blocks. This can be called before or after the page’s onload event has fired.
|
|
439
|
+
*
|
|
440
|
+
* @deprecated use hljs().highlightAll
|
|
417
441
|
*/
|
|
418
442
|
async highlightAll() {
|
|
419
443
|
const hljs = await this.loader.ready;
|
|
@@ -422,6 +446,8 @@ class HighlightJS {
|
|
|
422
446
|
/**
|
|
423
447
|
* Adds new language to the library under the specified name. Used mostly internally.
|
|
424
448
|
* The function is passed the hljs object to be able to use common regular expressions defined within it.
|
|
449
|
+
*
|
|
450
|
+
* @deprecated use hljs().registerLanguage
|
|
425
451
|
*/
|
|
426
452
|
async registerLanguage(languageName, languageDefinition) {
|
|
427
453
|
const hljs = await this.loader.ready;
|
|
@@ -429,6 +455,8 @@ class HighlightJS {
|
|
|
429
455
|
}
|
|
430
456
|
/**
|
|
431
457
|
* Removes a language and its aliases from the library. Used mostly internally
|
|
458
|
+
*
|
|
459
|
+
* @deprecated use hljs().unregisterLanguage
|
|
432
460
|
*/
|
|
433
461
|
async unregisterLanguage(languageName) {
|
|
434
462
|
const hljs = await this.loader.ready;
|
|
@@ -436,6 +464,8 @@ class HighlightJS {
|
|
|
436
464
|
}
|
|
437
465
|
/**
|
|
438
466
|
* Adds new language alias or aliases to the library for the specified language name defined under languageName key.
|
|
467
|
+
*
|
|
468
|
+
* @deprecated use hljs().registerAliases
|
|
439
469
|
*/
|
|
440
470
|
async registerAliases(alias, { languageName }) {
|
|
441
471
|
const hljs = await this.loader.ready;
|
|
@@ -443,6 +473,7 @@ class HighlightJS {
|
|
|
443
473
|
}
|
|
444
474
|
/**
|
|
445
475
|
* @return The languages names list.
|
|
476
|
+
* @deprecated use hljs().listLanguages
|
|
446
477
|
*/
|
|
447
478
|
async listLanguages() {
|
|
448
479
|
const hljs = await this.loader.ready;
|
|
@@ -450,6 +481,8 @@ class HighlightJS {
|
|
|
450
481
|
}
|
|
451
482
|
/**
|
|
452
483
|
* Looks up a language by name or alias.
|
|
484
|
+
*
|
|
485
|
+
* @deprecated use hljs().getLanguage
|
|
453
486
|
*/
|
|
454
487
|
async getLanguage(name) {
|
|
455
488
|
const hljs = await this.loader.ready;
|
|
@@ -457,6 +490,8 @@ class HighlightJS {
|
|
|
457
490
|
}
|
|
458
491
|
/**
|
|
459
492
|
* Enables safe mode. This is the default mode, providing the most reliable experience for production usage.
|
|
493
|
+
*
|
|
494
|
+
* @deprecated use hljs().safeMode
|
|
460
495
|
*/
|
|
461
496
|
async safeMode() {
|
|
462
497
|
const hljs = await this.loader.ready;
|
|
@@ -464,6 +499,8 @@ class HighlightJS {
|
|
|
464
499
|
}
|
|
465
500
|
/**
|
|
466
501
|
* Enables debug/development mode.
|
|
502
|
+
*
|
|
503
|
+
* @deprecated use hljs().debugMode
|
|
467
504
|
*/
|
|
468
505
|
async debugMode() {
|
|
469
506
|
const hljs = await this.loader.ready;
|
|
@@ -471,24 +508,23 @@ class HighlightJS {
|
|
|
471
508
|
}
|
|
472
509
|
/**
|
|
473
510
|
* Display line numbers
|
|
511
|
+
*
|
|
512
|
+
* @deprecated use hljs().lineNumbersBlock
|
|
474
513
|
*/
|
|
475
|
-
async lineNumbersBlock(
|
|
514
|
+
async lineNumbersBlock(code, options) {
|
|
476
515
|
const hljs = await this.loader.ready;
|
|
477
|
-
|
|
478
|
-
hljs.lineNumbersBlock(el, options);
|
|
479
|
-
}
|
|
516
|
+
hljs.lineNumbersBlock(code, options);
|
|
480
517
|
}
|
|
481
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
482
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
518
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightJS, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
519
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightJS, providedIn: 'root' }); }
|
|
483
520
|
}
|
|
484
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightJS, decorators: [{
|
|
485
522
|
type: Injectable,
|
|
486
523
|
args: [{
|
|
487
524
|
providedIn: 'root'
|
|
488
525
|
}]
|
|
489
|
-
}]
|
|
526
|
+
}] });
|
|
490
527
|
|
|
491
|
-
/// <reference types="trusted-types" />
|
|
492
528
|
/**
|
|
493
529
|
* Enable usage of the library together with "trusted-types" HTTP Content-Security-Policy (CSP)
|
|
494
530
|
*
|
|
@@ -498,8 +534,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
498
534
|
* Read more...
|
|
499
535
|
* Angular Security: https://angular.io/guide/security#enforcing-trusted-types
|
|
500
536
|
* Trusted Types: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/trusted-types
|
|
537
|
+
*
|
|
538
|
+
* @internal
|
|
501
539
|
*/
|
|
502
540
|
let policy;
|
|
541
|
+
/**
|
|
542
|
+
* @internal
|
|
543
|
+
*/
|
|
503
544
|
function getPolicy() {
|
|
504
545
|
if (!policy) {
|
|
505
546
|
try {
|
|
@@ -516,6 +557,9 @@ function getPolicy() {
|
|
|
516
557
|
}
|
|
517
558
|
return policy;
|
|
518
559
|
}
|
|
560
|
+
/**
|
|
561
|
+
* @internal
|
|
562
|
+
*/
|
|
519
563
|
function trustedHTMLFromStringBypass(html) {
|
|
520
564
|
return getPolicy()?.createHTML(html) || html;
|
|
521
565
|
}
|
|
@@ -547,10 +591,10 @@ class HighlightBase {
|
|
|
547
591
|
setInnerHTML(content) {
|
|
548
592
|
this.nativeElement.innerHTML = trustedHTMLFromStringBypass(this.sanitizer.sanitize(SecurityContext.HTML, content || null) || '');
|
|
549
593
|
}
|
|
550
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
551
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
594
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
595
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: HighlightBase, isStandalone: true, ngImport: i0 }); }
|
|
552
596
|
}
|
|
553
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
597
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightBase, decorators: [{
|
|
554
598
|
type: Directive
|
|
555
599
|
}], ctorParameters: () => [] });
|
|
556
600
|
|
|
@@ -560,17 +604,17 @@ class HighlightAutoDirective extends HighlightBase {
|
|
|
560
604
|
/**
|
|
561
605
|
* Code to highlight
|
|
562
606
|
*/
|
|
563
|
-
this.code = input(undefined, { alias: 'nxtHighlightAuto' });
|
|
607
|
+
this.code = input(undefined, { ...(ngDevMode ? { debugName: "code" } : {}), alias: 'nxtHighlightAuto' });
|
|
564
608
|
/**
|
|
565
609
|
* Highlighted result
|
|
566
610
|
*/
|
|
567
|
-
this.highlightResult = signal(undefined);
|
|
611
|
+
this.highlightResult = signal(undefined, ...(ngDevMode ? [{ debugName: "highlightResult" }] : []));
|
|
568
612
|
/**
|
|
569
613
|
* An optional array of language names and aliases restricting detection to only those languages
|
|
570
614
|
*
|
|
571
615
|
* The subset can also be set with configure, but the local parameter overrides the option if set.
|
|
572
616
|
*/
|
|
573
|
-
this.languages = input();
|
|
617
|
+
this.languages = input(...(ngDevMode ? [undefined, { debugName: "languages" }] : []));
|
|
574
618
|
/**
|
|
575
619
|
* Stream that emits when code string is highlighted
|
|
576
620
|
*/
|
|
@@ -580,10 +624,10 @@ class HighlightAutoDirective extends HighlightBase {
|
|
|
580
624
|
const hljs = this.hljs.hljs();
|
|
581
625
|
return hljs?.highlightAuto(code, this.languages());
|
|
582
626
|
}
|
|
583
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
584
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
627
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightAutoDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
628
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: HighlightAutoDirective, isStandalone: true, selector: "[nxtHighlightAuto]", inputs: { code: { classPropertyName: "code", publicName: "nxtHighlightAuto", isSignal: true, isRequired: false, transformFunction: null }, languages: { classPropertyName: "languages", publicName: "languages", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { highlighted: "highlighted" }, host: { properties: { "class.hljs": "true" } }, providers: [{ provide: HighlightBase, useExisting: HighlightAutoDirective }], usesInheritance: true, ngImport: i0 }); }
|
|
585
629
|
}
|
|
586
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
630
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightAutoDirective, decorators: [{
|
|
587
631
|
type: Directive,
|
|
588
632
|
args: [{
|
|
589
633
|
selector: '[nxtHighlightAuto]',
|
|
@@ -592,7 +636,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
592
636
|
'[class.hljs]': 'true'
|
|
593
637
|
}
|
|
594
638
|
}]
|
|
595
|
-
}] });
|
|
639
|
+
}], propDecorators: { code: [{ type: i0.Input, args: [{ isSignal: true, alias: "nxtHighlightAuto", required: false }] }], languages: [{ type: i0.Input, args: [{ isSignal: true, alias: "languages", required: false }] }], highlighted: [{ type: i0.Output, args: ["highlighted"] }] } });
|
|
596
640
|
|
|
597
641
|
class HighlightDirective extends HighlightBase {
|
|
598
642
|
constructor() {
|
|
@@ -600,22 +644,20 @@ class HighlightDirective extends HighlightBase {
|
|
|
600
644
|
/**
|
|
601
645
|
* Code to highlight
|
|
602
646
|
*/
|
|
603
|
-
this.code = input(undefined, { alias: 'nxtHighlight' });
|
|
647
|
+
this.code = input(undefined, { ...(ngDevMode ? { debugName: "code" } : {}), alias: 'nxtHighlight' });
|
|
604
648
|
/**
|
|
605
649
|
* Highlighted result
|
|
606
650
|
*/
|
|
607
|
-
this.highlightResult = signal(undefined);
|
|
651
|
+
this.highlightResult = signal(undefined, ...(ngDevMode ? [{ debugName: "highlightResult" }] : []));
|
|
608
652
|
/**
|
|
609
653
|
* The language name highlight only one language
|
|
610
654
|
*/
|
|
611
|
-
this.language = input.required();
|
|
655
|
+
this.language = input.required(...(ngDevMode ? [{ debugName: "language" }] : []));
|
|
612
656
|
/**
|
|
613
657
|
* An optional flag, when set to true it forces highlighting to finish even in case of detecting
|
|
614
658
|
* illegal syntax for the language instead of throwing an exception
|
|
615
659
|
*/
|
|
616
|
-
this.ignoreIllegals = input(undefined, {
|
|
617
|
-
transform: booleanAttribute
|
|
618
|
-
});
|
|
660
|
+
this.ignoreIllegals = input(undefined, { ...(ngDevMode ? { debugName: "ignoreIllegals" } : {}), transform: booleanAttribute });
|
|
619
661
|
/**
|
|
620
662
|
* Stream that emits when code string is highlighted
|
|
621
663
|
*/
|
|
@@ -628,10 +670,10 @@ class HighlightDirective extends HighlightBase {
|
|
|
628
670
|
ignoreIllegals: this.ignoreIllegals()
|
|
629
671
|
});
|
|
630
672
|
}
|
|
631
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
632
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
673
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
674
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: HighlightDirective, isStandalone: true, selector: "[nxtHighlight]", inputs: { code: { classPropertyName: "code", publicName: "nxtHighlight", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: true, transformFunction: null }, ignoreIllegals: { classPropertyName: "ignoreIllegals", publicName: "ignoreIllegals", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { highlighted: "highlighted" }, host: { properties: { "class.hljs": "true" } }, providers: [{ provide: HighlightBase, useExisting: HighlightDirective }], usesInheritance: true, ngImport: i0 }); }
|
|
633
675
|
}
|
|
634
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
676
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightDirective, decorators: [{
|
|
635
677
|
type: Directive,
|
|
636
678
|
args: [{
|
|
637
679
|
selector: '[nxtHighlight]',
|
|
@@ -640,14 +682,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
640
682
|
'[class.hljs]': 'true'
|
|
641
683
|
}
|
|
642
684
|
}]
|
|
643
|
-
}] });
|
|
685
|
+
}], propDecorators: { code: [{ type: i0.Input, args: [{ isSignal: true, alias: "nxtHighlight", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: true }] }], ignoreIllegals: [{ type: i0.Input, args: [{ isSignal: true, alias: "ignoreIllegals", required: false }] }], highlighted: [{ type: i0.Output, args: ["highlighted"] }] } });
|
|
644
686
|
|
|
687
|
+
/** @deprecated use standalone imports */
|
|
645
688
|
class HighlightModule {
|
|
646
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
647
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
648
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
689
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
690
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: HighlightModule, imports: [HighlightDirective, HighlightAutoDirective], exports: [HighlightDirective, HighlightAutoDirective] }); }
|
|
691
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightModule }); }
|
|
649
692
|
}
|
|
650
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
693
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightModule, decorators: [{
|
|
651
694
|
type: NgModule,
|
|
652
695
|
args: [{
|
|
653
696
|
imports: [HighlightDirective, HighlightAutoDirective],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nxt-highlightjs.mjs","sources":["../../../packages/highlightjs/src/lib/highlight.model.ts","../../../packages/highlightjs/src/lib/loader-errors.ts","../../../packages/highlightjs/src/lib/output.ts","../../../packages/highlightjs/src/lib/highlight.loader.ts","../../../packages/highlightjs/src/lib/highlight.service.ts","../../../packages/highlightjs/src/lib/trusted-types.ts","../../../packages/highlightjs/src/lib/highlight-base.directive.ts","../../../packages/highlightjs/src/lib/highlight-auto.directive.ts","../../../packages/highlightjs/src/lib/highlight.directive.ts","../../../packages/highlightjs/src/lib/highlight.module.ts","../../../packages/highlightjs/src/nxt-highlightjs.ts"],"sourcesContent":["import { InjectionToken, makeEnvironmentProviders } from '@angular/core'\r\nimport type { HLJSApi, HLJSOptions, LanguageFn } from 'highlight.js'\r\n\r\n/**\r\n * Full documentation is available here https://highlightjs.readthedocs.io/en/latest/api.html\r\n */\r\n\r\nexport interface LineNumbersOptions {\r\n startFrom?: number\r\n singleLine?: boolean\r\n}\r\n\r\nexport interface HighlightJSOptions {\r\n highlightOptions?: Partial<HLJSOptions>\r\n lineNumbersOptions?: LineNumbersOptions\r\n languages?: Record<string, () => Promise<LanguageFn>>\r\n coreLibraryLoader?: () => Promise<HLJSApi>\r\n fullLibraryLoader?: () => Promise<HLJSApi>\r\n lineNumbersLoader?: () => Promise<{ activateLineNumbers: (document: Document) => (code: string, options?: LineNumbersOptions) => string }>\r\n themePath?: string\r\n}\r\n\r\nexport const NXT_HIGHLIGHT_OPTIONS = new InjectionToken<HighlightJSOptions>('NXT_HIGHLIGHT_OPTIONS')\r\n\r\nexport function provideHighlightOptions(options: HighlightJSOptions) {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: NXT_HIGHLIGHT_OPTIONS,\r\n useValue: options\r\n }\r\n ])\r\n}\r\n","export enum LoaderErrors {\r\n FULL_WITH_CORE_LIBRARY_IMPORTS = 'The full library and the core library were imported, only one of them should be imported!',\r\n FULL_WITH_LANGUAGE_IMPORTS = 'The highlighting languages were imported they are not needed!',\r\n CORE_WITHOUT_LANGUAGE_IMPORTS = 'The highlighting languages were not imported!',\r\n LANGUAGE_WITHOUT_CORE_IMPORTS = 'The core library was not imported!',\r\n NO_FULL_AND_NO_CORE_IMPORTS = 'Highlight.js library was not imported!'\r\n}\r\n","// @ts-nocheck\r\n\r\nconst BREAK_LINE_REGEXP = /\\r\\n|\\r|\\n/g\r\n\r\n/**\r\n * The contents of this file is from highlight.js, with a small modification to HTMLRenderer to make sure spans don't contain line breaks (important to improve performance of line numbers).\r\n */\r\n\r\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\r\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\r\n/** @typedef {import('highlight.js').Emitter} Emitter */\r\n/** */\r\n\r\n/** @returns */\r\nconst newNode = (opts = {}) => {\r\n /** @type DataNode */\r\n const result = { children: [] }\r\n Object.assign(result, opts)\r\n return result\r\n}\r\n\r\nclass TokenTree {\r\n constructor() {\r\n /** @type DataNode */\r\n this.rootNode = newNode()\r\n this.stack = [this.rootNode]\r\n }\r\n\r\n get top() {\r\n return this.stack[this.stack.length - 1]\r\n }\r\n\r\n get root() {\r\n return this.rootNode\r\n }\r\n\r\n /** @param node */\r\n add(node) {\r\n this.top.children.push(node)\r\n }\r\n\r\n /** @param scope */\r\n openNode(scope) {\r\n /** @type Node */\r\n const node = newNode({ scope })\r\n this.add(node)\r\n this.stack.push(node)\r\n }\r\n\r\n closeNode() {\r\n if (this.stack.length > 1) {\r\n return this.stack.pop()\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n closeAllNodes() {\r\n while (this.closeNode());\r\n }\r\n\r\n toJSON() {\r\n return JSON.stringify(this.rootNode, null, 4)\r\n }\r\n\r\n /**\r\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\r\n * @param builder\r\n */\r\n walk(builder) {\r\n // this does not\r\n return this.constructor._walk(builder, this.rootNode)\r\n // this works\r\n // return TokenTree._walk(builder, this.rootNode);\r\n }\r\n\r\n /**\r\n * @param builder\r\n * @param node\r\n */\r\n static _walk(builder, node) {\r\n if (typeof node === 'string') {\r\n builder.addText(node)\r\n } else if (node.children) {\r\n builder.openNode(node)\r\n node.children.forEach((child) => this._walk(builder, child))\r\n builder.closeNode(node)\r\n }\r\n return builder\r\n }\r\n\r\n /**\r\n * @param node\r\n */\r\n static _collapse(node) {\r\n if (typeof node === 'string') return\r\n if (!node.children) return\r\n\r\n if (node.children.every(el => typeof el === 'string')) {\r\n // node.text = node.children.join(\"\");\r\n // delete node.children;\r\n node.children = [node.children.join('')]\r\n } else {\r\n node.children.forEach((child) => {\r\n TokenTree._collapse(child)\r\n })\r\n }\r\n }\r\n}\r\n\r\n/**\r\n Currently this is all private API, but this is the minimal API necessary\r\n that an Emitter must implement to fully support the parser.\r\n\r\n Minimal interface:\r\n\r\n - addText(text)\r\n - __addSublanguage(emitter, subLanguageName)\r\n - startScope(scope)\r\n - endScope()\r\n - finalize()\r\n - toHTML()\r\n\r\n */\r\n\r\n/**\r\n * @implements {Emitter}\r\n */\r\nexport class TokenTreeEmitter extends TokenTree {\r\n /**\r\n * @param options\r\n */\r\n constructor(options) {\r\n super()\r\n this.options = options\r\n }\r\n\r\n /**\r\n * @param text\r\n */\r\n addText(text) {\r\n if (text === '') {\r\n return\r\n }\r\n\r\n this.add(text)\r\n }\r\n\r\n /** @param scope */\r\n startScope(scope) {\r\n this.openNode(scope)\r\n }\r\n\r\n endScope() {\r\n this.closeNode()\r\n }\r\n\r\n /**\r\n * @param emitter\r\n * @param name\r\n */\r\n __addSublanguage(emitter, name) {\r\n /** @type DataNode */\r\n const node = emitter.root\r\n if (name) node.scope = `language:${name}`\r\n\r\n this.add(node)\r\n }\r\n\r\n toHTML() {\r\n const renderer = new HTMLRenderer(this, this.options)\r\n return renderer.value()\r\n }\r\n\r\n finalize() {\r\n this.closeAllNodes()\r\n return true\r\n }\r\n}\r\n\r\n/**\r\n * @typedef {object} Renderer\r\n * @property {(text: string) => void} addText\r\n * @property {(node: Node) => void} openNode\r\n * @property {(node: Node) => void} closeNode\r\n * @property {() => string} value\r\n */\r\n\r\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\r\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\r\n/** */\r\n\r\nconst SPAN_CLOSE = '</span>'\r\n\r\n/**\r\n * Determines if a node needs to be wrapped in <span>\r\n *\r\n * @param node */\r\nconst emitsWrappingTags = (node) =>\r\n // rarely we can have a sublanguage where language is undefined\r\n // TODO: track down why\r\n !!node.scope\r\n\r\n/**\r\n *\r\n * @param name\r\n * @param options\r\n */\r\nconst scopeToCSSClass = (name, { prefix }) => {\r\n // sub-language\r\n if (name.startsWith('language:')) {\r\n return name.replace('language:', 'language-')\r\n }\r\n // tiered scope: comment.line\r\n if (name.includes('.')) {\r\n const pieces = name.split('.')\r\n return [\r\n `${prefix}${pieces.shift()}`,\r\n ...(pieces.map((x, i) => `${x}${'_'.repeat(i + 1)}`))\r\n ].join(' ')\r\n }\r\n // simple scope\r\n return `${prefix}${name}`\r\n}\r\n\r\n/** @type {Renderer} */\r\nexport class HTMLRenderer {\r\n /**\r\n * Creates a new HTMLRenderer\r\n *\r\n * @param parseTree - the parse tree (must support `walk` API)\r\n * @param options\r\n */\r\n constructor(parseTree, options) {\r\n this.buffer = ''\r\n this.classPrefix = options.classPrefix\r\n this.openStack = []\r\n parseTree.walk(this)\r\n }\r\n\r\n /**\r\n * Adds texts to the output stream\r\n *\r\n * @param text */\r\n addText(text) {\r\n const lines = text.split(BREAK_LINE_REGEXP).map(escapeHTML)\r\n const lineBreak = new Array(this.openStack.length).fill(SPAN_CLOSE).join('') + '\\n' + this.openStack.join('')\r\n this.buffer += lines.join(lineBreak)\r\n }\r\n\r\n /**\r\n * Adds a node open to the output stream (if needed)\r\n *\r\n * @param node */\r\n openNode(node) {\r\n if (!emitsWrappingTags(node)) return\r\n\r\n const className = scopeToCSSClass(node.scope,\r\n { prefix: this.classPrefix })\r\n this.span(className)\r\n }\r\n\r\n /**\r\n * Adds a node close to the output stream (if needed)\r\n *\r\n * @param node */\r\n closeNode(node) {\r\n if (!emitsWrappingTags(node)) return\r\n\r\n this.buffer += SPAN_CLOSE\r\n this.openStack.pop()\r\n }\r\n\r\n /**\r\n * returns the accumulated buffer\r\n */\r\n value() {\r\n return this.buffer\r\n }\r\n\r\n // helpers\r\n\r\n /**\r\n * Builds a span element\r\n *\r\n * @param className */\r\n span(className) {\r\n const span = `<span class=\"${className}\">`\r\n this.buffer += span\r\n this.openStack.push(span)\r\n }\r\n}\r\n\r\n/**\r\n * @param value\r\n * @returns\r\n */\r\nexport function escapeHTML(value) {\r\n return value\r\n .replace(/&/g, '&')\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''')\r\n}\r\n","import { DOCUMENT } from '@angular/common'\r\nimport { Injectable, PendingTasks, inject } from '@angular/core'\r\nimport type { HLJSApi } from 'highlight.js'\r\nimport { NXT_HIGHLIGHT_OPTIONS } from './highlight.model'\r\nimport { LoaderErrors } from './loader-errors'\r\nimport { TokenTreeEmitter } from './output'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HighlightLoader {\r\n\r\n private readonly document: Document = inject(DOCUMENT)\r\n private readonly options = inject(NXT_HIGHLIGHT_OPTIONS, { optional: true })\r\n private readonly pendingTasks = inject(PendingTasks)\r\n\r\n readonly ready: Promise<HLJSApi> = this.pendingTasks.run(() => this.loadLibrary()\r\n .then(async hljs => {\r\n if (this.options?.lineNumbersLoader) {\r\n const plugin = await this.options.lineNumbersLoader();\r\n (hljs as any).lineNumbersBlock = plugin.activateLineNumbers(this.document)\r\n }\r\n\r\n hljs.configure({\r\n __emitter: TokenTreeEmitter\r\n })\r\n\r\n if (this.options?.highlightOptions)\r\n hljs.configure(this.options.highlightOptions)\r\n\r\n return hljs\r\n })\r\n )\r\n\r\n private themeLinkElement?: HTMLLinkElement\r\n\r\n constructor() {\r\n if (this.options?.themePath) {\r\n this.loadTheme(this.options.themePath)\r\n }\r\n }\r\n\r\n /**\r\n * Lazy-Load highlight.js library\r\n */\r\n private async loadLibrary(): Promise<HLJSApi> {\r\n if (this.options) {\r\n if (this.options.fullLibraryLoader && this.options.coreLibraryLoader) {\r\n throw new Error(LoaderErrors.FULL_WITH_CORE_LIBRARY_IMPORTS)\r\n }\r\n if (this.options.fullLibraryLoader && this.options.languages) {\r\n throw new Error(LoaderErrors.FULL_WITH_LANGUAGE_IMPORTS)\r\n }\r\n if (this.options.coreLibraryLoader && !this.options.languages) {\r\n throw new Error(LoaderErrors.CORE_WITHOUT_LANGUAGE_IMPORTS)\r\n }\r\n if (!this.options.coreLibraryLoader && this.options.languages) {\r\n throw new Error(LoaderErrors.LANGUAGE_WITHOUT_CORE_IMPORTS)\r\n }\r\n if (this.options.fullLibraryLoader) {\r\n return this.options.fullLibraryLoader()\r\n }\r\n if (this.options.coreLibraryLoader && this.options.languages && Object.keys(this.options.languages).length) {\r\n return this.options.coreLibraryLoader().then(hljs => this.loadLanguages(hljs))\r\n }\r\n }\r\n throw new Error(LoaderErrors.NO_FULL_AND_NO_CORE_IMPORTS)\r\n }\r\n\r\n /**\r\n * Lazy-load highlight.js languages\r\n */\r\n private async loadLanguages(hljs: HLJSApi) {\r\n await Promise.all(Object.entries(this.options?.languages || {})\r\n .map(([langName, langLoader]) => langLoader().then(langFunc => hljs.registerLanguage(langName, langFunc))))\r\n return hljs\r\n }\r\n\r\n /**\r\n * Reload theme styles\r\n */\r\n setTheme(path: string): void {\r\n if (this.themeLinkElement) {\r\n this.themeLinkElement.href = path\r\n } else {\r\n this.loadTheme(path)\r\n }\r\n }\r\n\r\n /**\r\n * Load theme\r\n */\r\n private loadTheme(path: string): void {\r\n this.themeLinkElement = this.document.createElement('link')\r\n this.themeLinkElement.href = path\r\n this.themeLinkElement.type = 'text/css'\r\n this.themeLinkElement.rel = 'stylesheet'\r\n this.themeLinkElement.media = 'screen,print'\r\n this.document.head.appendChild(this.themeLinkElement)\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core'\r\nimport { toSignal } from '@angular/core/rxjs-interop'\r\nimport type {\r\n AutoHighlightResult,\r\n HLJSApi,\r\n HighlightOptions,\r\n HighlightResult,\r\n LanguageFn\r\n} from 'highlight.js'\r\nimport { from } from 'rxjs'\r\nimport { HighlightLoader } from './highlight.loader'\r\nimport { LineNumbersOptions } from './highlight.model'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HighlightJS {\r\n\r\n private readonly loader = inject(HighlightLoader)\r\n\r\n readonly hljs = toSignal(from(this.loader.ready))\r\n\r\n constructor() { }\r\n\r\n /**\r\n * Core highlighting function. Accepts the code to highlight (string) and a list of options (object)\r\n */\r\n async highlight(code: string, options: HighlightOptions): Promise<HighlightResult> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n return hljs.highlight(code, options)\r\n }\r\n\r\n /**\r\n * Highlighting with language detection.\r\n */\r\n async highlightAuto(value: string, languageSubset?: string[]): Promise<AutoHighlightResult> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n return hljs.highlightAuto(value, languageSubset)\r\n }\r\n\r\n /**\r\n * Applies highlighting to a DOM node containing code.\r\n * This function is the one to use to apply highlighting dynamically after page load or within initialization code of third-party JavaScript frameworks.\r\n * The function uses language detection by default but you can specify the language in the class attribute of the DOM node. See the scopes reference for all available language names and scopes.\r\n */\r\n async highlightElement(element: HTMLElement): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.highlightElement(element)\r\n }\r\n\r\n /**\r\n * Applies highlighting to all elements on a page matching the configured cssSelector. The default cssSelector value is 'pre code',\r\n * which highlights all code blocks. This can be called before or after the page’s onload event has fired.\r\n */\r\n async highlightAll(): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.highlightAll()\r\n }\r\n\r\n /**\r\n * Adds new language to the library under the specified name. Used mostly internally.\r\n * The function is passed the hljs object to be able to use common regular expressions defined within it.\r\n */\r\n async registerLanguage(languageName: string, languageDefinition: LanguageFn): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.registerLanguage(languageName, languageDefinition)\r\n }\r\n\r\n /**\r\n * Removes a language and its aliases from the library. Used mostly internally\r\n */\r\n async unregisterLanguage(languageName: string): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.unregisterLanguage(languageName)\r\n }\r\n\r\n /**\r\n * Adds new language alias or aliases to the library for the specified language name defined under languageName key.\r\n */\r\n async registerAliases(alias: string | string[], { languageName }: { languageName: string }): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.registerAliases(alias, { languageName })\r\n }\r\n\r\n /**\r\n * @return The languages names list.\r\n */\r\n async listLanguages(): Promise<string[]> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n return hljs.listLanguages()\r\n }\r\n\r\n /**\r\n * Looks up a language by name or alias.\r\n */\r\n async getLanguage(name: string): Promise<any> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n return hljs.getLanguage(name)\r\n }\r\n\r\n /**\r\n * Enables safe mode. This is the default mode, providing the most reliable experience for production usage.\r\n */\r\n async safeMode(): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.safeMode()\r\n }\r\n\r\n /**\r\n * Enables debug/development mode.\r\n */\r\n async debugMode(): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.debugMode()\r\n }\r\n\r\n /**\r\n * Display line numbers\r\n */\r\n async lineNumbersBlock(el: HTMLElement, options: LineNumbersOptions): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n if ((hljs as any).lineNumbersBlock) {\r\n (hljs as any).lineNumbersBlock(el, options)\r\n }\r\n }\r\n}\r\n","/// <reference types=\"trusted-types\" />\r\n\r\nimport { TrustedTypePolicy } from 'trusted-types/lib'\r\n\r\n/**\r\n * Enable usage of the library together with \"trusted-types\" HTTP Content-Security-Policy (CSP)\r\n *\r\n * Can be added to angular.json -> serve -> options -> headers to try it out in DEV mode\r\n * \"Content-Security-Policy\": \"trusted-types nxt-highlightjs; require-trusted-types-for 'script'\"\r\n *\r\n * Read more...\r\n * Angular Security: https://angular.io/guide/security#enforcing-trusted-types\r\n * Trusted Types: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/trusted-types\r\n */\r\nlet policy: Pick<TrustedTypePolicy<{\r\n createHTML: (s: string) => string\r\n}>, 'name' | 'createHTML'> | undefined\r\n\r\nfunction getPolicy() {\r\n if (!policy) {\r\n try {\r\n policy = window?.trustedTypes?.createPolicy('nxt-highlightjs', {\r\n createHTML: (s: string) => s\r\n })\r\n } catch {\r\n // trustedTypes.createPolicy throws if called with a name that is\r\n // already registered, even in report-only mode. Until the API changes,\r\n // catch the error not to break the applications functionally. In such\r\n // cases, the code will fall back to using strings.\r\n }\r\n }\r\n return policy\r\n}\r\n\r\nexport function trustedHTMLFromStringBypass(html: string) {\r\n return getPolicy()?.createHTML(html) || html\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n InputSignal,\r\n OutputEmitterRef,\r\n SecurityContext,\r\n WritableSignal,\r\n effect,\r\n inject\r\n} from '@angular/core'\r\nimport { DomSanitizer } from '@angular/platform-browser'\r\nimport type { AutoHighlightResult, HighlightResult } from 'highlight.js'\r\nimport { HighlightJS } from './highlight.service'\r\nimport { trustedHTMLFromStringBypass } from './trusted-types'\r\n\r\n@Directive()\r\nexport abstract class HighlightBase {\r\n\r\n protected readonly hljs: HighlightJS = inject(HighlightJS)\r\n\r\n private readonly nativeElement: HTMLElement = inject(ElementRef<HTMLElement>).nativeElement\r\n private readonly sanitizer: DomSanitizer = inject(DomSanitizer)\r\n\r\n /**\r\n * Code to highlight\r\n */\r\n abstract code: InputSignal<string | null | undefined>\r\n\r\n /**\r\n * Highlighted result\r\n */\r\n abstract highlightResult: WritableSignal<HighlightResult | AutoHighlightResult | undefined>\r\n\r\n /**\r\n * Stream that emits when code string is highlighted\r\n */\r\n abstract highlighted: OutputEmitterRef<HighlightResult | AutoHighlightResult | undefined>\r\n\r\n constructor() {\r\n effect(() => {\r\n const code = this.code()\r\n if (code) {\r\n const res = this.highlightElement(code)\r\n if (res) {\r\n this.setInnerHTML(res?.value ?? undefined)\r\n this.highlightResult.set(res)\r\n // Forward highlight response to the highlighted output\r\n this.highlighted.emit(res)\r\n }\r\n } else {\r\n this.setTextContent('')\r\n }\r\n })\r\n }\r\n\r\n protected abstract highlightElement(code: string): HighlightResult | AutoHighlightResult | undefined\r\n\r\n private setTextContent(content: string): void {\r\n this.nativeElement.textContent = content\r\n }\r\n\r\n private setInnerHTML(content: string | undefined): void {\r\n this.nativeElement.innerHTML = trustedHTMLFromStringBypass(\r\n this.sanitizer.sanitize(SecurityContext.HTML, content || null) || ''\r\n ) as any\r\n }\r\n}\r\n","import {\r\n Directive,\r\n input,\r\n output,\r\n OutputEmitterRef,\r\n signal\r\n} from '@angular/core'\r\nimport type { AutoHighlightResult } from 'highlight.js'\r\nimport { HighlightBase } from './highlight-base.directive'\r\n\r\n@Directive({\r\n selector: '[nxtHighlightAuto]',\r\n providers: [{ provide: HighlightBase, useExisting: HighlightAutoDirective }],\r\n host: {\r\n '[class.hljs]': 'true'\r\n }\r\n})\r\nexport class HighlightAutoDirective extends HighlightBase {\r\n\r\n /**\r\n * Code to highlight\r\n */\r\n code = input<string | null>(undefined, { alias: 'nxtHighlightAuto' })\r\n\r\n /**\r\n * Highlighted result\r\n */\r\n highlightResult = signal<AutoHighlightResult | undefined>(undefined)\r\n\r\n /**\r\n * An optional array of language names and aliases restricting detection to only those languages\r\n *\r\n * The subset can also be set with configure, but the local parameter overrides the option if set.\r\n */\r\n readonly languages = input<string[]>()\r\n\r\n /**\r\n * Stream that emits when code string is highlighted\r\n */\r\n highlighted: OutputEmitterRef<AutoHighlightResult> = output<AutoHighlightResult>()\r\n\r\n protected highlightElement(code: string) {\r\n const hljs = this.hljs.hljs()\r\n return hljs?.highlightAuto(code, this.languages())\r\n }\r\n}\r\n\r\n","import {\r\n booleanAttribute,\r\n Directive,\r\n input,\r\n InputSignal,\r\n output,\r\n signal\r\n} from '@angular/core'\r\nimport type { HighlightResult } from 'highlight.js'\r\nimport { HighlightBase } from './highlight-base.directive'\r\n\r\n@Directive({\r\n selector: '[nxtHighlight]',\r\n providers: [{ provide: HighlightBase, useExisting: HighlightDirective }],\r\n host: {\r\n '[class.hljs]': 'true'\r\n }\r\n})\r\nexport class HighlightDirective extends HighlightBase {\r\n\r\n /**\r\n * Code to highlight\r\n */\r\n code = input<string | null>(undefined, { alias: 'nxtHighlight' })\r\n\r\n /**\r\n * Highlighted result\r\n */\r\n highlightResult = signal<HighlightResult | undefined>(undefined)\r\n\r\n /**\r\n * The language name highlight only one language\r\n */\r\n readonly language: InputSignal<string> = input.required<string>()\r\n\r\n /**\r\n * An optional flag, when set to true it forces highlighting to finish even in case of detecting\r\n * illegal syntax for the language instead of throwing an exception\r\n */\r\n readonly ignoreIllegals = input<boolean, unknown>(undefined, {\r\n transform: booleanAttribute\r\n })\r\n\r\n /**\r\n * Stream that emits when code string is highlighted\r\n */\r\n highlighted = output<HighlightResult>()\r\n\r\n highlightElement(code: string) {\r\n const hljs = this.hljs.hljs()\r\n return hljs?.highlight(code, {\r\n language: this.language(),\r\n ignoreIllegals: this.ignoreIllegals()\r\n })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { HighlightAutoDirective } from './highlight-auto.directive'\r\nimport { HighlightDirective } from './highlight.directive'\r\n\r\n@NgModule({\r\n imports: [HighlightDirective, HighlightAutoDirective],\r\n exports: [HighlightDirective, HighlightAutoDirective]\r\n})\r\nexport class HighlightModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nxt-highlightjs.mjs","sources":["../../../packages/highlightjs/src/lib/highlight.model.ts","../../../packages/highlightjs/src/lib/loader-errors.ts","../../../packages/highlightjs/src/lib/output.ts","../../../packages/highlightjs/src/lib/highlight.loader.ts","../../../packages/highlightjs/src/lib/highlight.service.ts","../../../packages/highlightjs/src/lib/trusted-types.ts","../../../packages/highlightjs/src/lib/highlight-base.directive.ts","../../../packages/highlightjs/src/lib/highlight-auto.directive.ts","../../../packages/highlightjs/src/lib/highlight.directive.ts","../../../packages/highlightjs/src/lib/highlight.module.ts","../../../packages/highlightjs/src/nxt-highlightjs.ts"],"sourcesContent":["import { InjectionToken, makeEnvironmentProviders } from '@angular/core'\r\nimport type { HLJSApi, HLJSOptions, LanguageFn } from 'highlight.js'\r\n\r\n/**\r\n * Full documentation is available here https://highlightjs.readthedocs.io/en/latest/api.html\r\n */\r\n\r\nexport interface LineNumbersOptions {\r\n startFrom?: number\r\n singleLine?: boolean\r\n}\r\n\r\nexport interface HighlightJSOptions {\r\n highlightOptions?: Partial<HLJSOptions>\r\n lineNumbersOptions?: LineNumbersOptions\r\n languages?: Record<string, () => Promise<LanguageFn>>\r\n coreLibraryLoader?: () => Promise<HLJSApi>\r\n fullLibraryLoader?: () => Promise<HLJSApi>\r\n lineNumbersLoader?: () => Promise<{ activateLineNumbers: (document: Document) => (code: string, options?: LineNumbersOptions) => string }>\r\n themePath?: string\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport const NXT_HIGHLIGHT_OPTIONS = new InjectionToken<HighlightJSOptions>('NXT_HIGHLIGHT_OPTIONS')\r\n\r\nexport function provideHighlightOptions(options: HighlightJSOptions) {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: NXT_HIGHLIGHT_OPTIONS,\r\n useValue: options\r\n }\r\n ])\r\n}\r\n","/**\r\n * @internal\r\n */\r\nexport enum LoaderErrors {\r\n FULL_WITH_CORE_LIBRARY_IMPORTS = 'The full library and the core library were imported, only one of them should be imported!',\r\n FULL_WITH_LANGUAGE_IMPORTS = 'The highlighting languages were imported they are not needed!',\r\n CORE_WITHOUT_LANGUAGE_IMPORTS = 'The highlighting languages were not imported!',\r\n LANGUAGE_WITHOUT_CORE_IMPORTS = 'The core library was not imported!',\r\n NO_FULL_AND_NO_CORE_IMPORTS = 'Highlight.js library was not imported!'\r\n}\r\n","// @ts-nocheck\r\n\r\nconst BREAK_LINE_REGEXP = /\\r\\n|\\r|\\n/g\r\n\r\n/**\r\n * The contents of this file is from highlight.js, with a small modification to HTMLRenderer to make sure spans don't contain line breaks (important to improve performance of line numbers).\r\n */\r\n\r\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\r\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\r\n/** @typedef {import('highlight.js').Emitter} Emitter */\r\n/** */\r\n\r\n/** @returns */\r\nconst newNode = (opts = {}) => {\r\n /** @type DataNode */\r\n const result = { children: [] }\r\n Object.assign(result, opts)\r\n return result\r\n}\r\n\r\nclass TokenTree {\r\n constructor() {\r\n /** @type DataNode */\r\n this.rootNode = newNode()\r\n this.stack = [this.rootNode]\r\n }\r\n\r\n get top() {\r\n return this.stack[this.stack.length - 1]\r\n }\r\n\r\n get root() {\r\n return this.rootNode\r\n }\r\n\r\n /** @param node */\r\n add(node) {\r\n this.top.children.push(node)\r\n }\r\n\r\n /** @param scope */\r\n openNode(scope) {\r\n /** @type Node */\r\n const node = newNode({ scope })\r\n this.add(node)\r\n this.stack.push(node)\r\n }\r\n\r\n closeNode() {\r\n if (this.stack.length > 1) {\r\n return this.stack.pop()\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n closeAllNodes() {\r\n while (this.closeNode());\r\n }\r\n\r\n toJSON() {\r\n return JSON.stringify(this.rootNode, undefined, 4)\r\n }\r\n\r\n /**\r\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\r\n * @param builder\r\n */\r\n walk(builder) {\r\n // this does not\r\n return this.constructor._walk(builder, this.rootNode)\r\n // this works\r\n // return TokenTree._walk(builder, this.rootNode);\r\n }\r\n\r\n /**\r\n * @param builder\r\n * @param node\r\n */\r\n static _walk(builder, node) {\r\n if (typeof node === 'string') {\r\n builder.addText(node)\r\n } else if (node.children) {\r\n builder.openNode(node)\r\n node.children.forEach((child) => this._walk(builder, child))\r\n builder.closeNode(node)\r\n }\r\n return builder\r\n }\r\n\r\n /**\r\n * @param node\r\n */\r\n static _collapse(node) {\r\n if (typeof node === 'string') return\r\n if (!node.children) return\r\n\r\n if (node.children.every(el => typeof el === 'string')) {\r\n // node.text = node.children.join(\"\");\r\n // delete node.children;\r\n node.children = [node.children.join('')]\r\n } else {\r\n node.children.forEach((child) => {\r\n TokenTree._collapse(child)\r\n })\r\n }\r\n }\r\n}\r\n\r\n/**\r\n Currently this is all private API, but this is the minimal API necessary\r\n that an Emitter must implement to fully support the parser.\r\n\r\n Minimal interface:\r\n\r\n - addText(text)\r\n - __addSublanguage(emitter, subLanguageName)\r\n - startScope(scope)\r\n - endScope()\r\n - finalize()\r\n - toHTML()\r\n\r\n */\r\n\r\n/**\r\n * @implements {Emitter}\r\n */\r\nexport class TokenTreeEmitter extends TokenTree {\r\n /**\r\n * @param options\r\n */\r\n constructor(options) {\r\n super()\r\n this.options = options\r\n }\r\n\r\n /**\r\n * @param text\r\n */\r\n addText(text) {\r\n if (text === '') {\r\n return\r\n }\r\n\r\n this.add(text)\r\n }\r\n\r\n /** @param scope */\r\n startScope(scope) {\r\n this.openNode(scope)\r\n }\r\n\r\n endScope() {\r\n this.closeNode()\r\n }\r\n\r\n /**\r\n * @param emitter\r\n * @param name\r\n */\r\n __addSublanguage(emitter, name) {\r\n /** @type DataNode */\r\n const node = emitter.root\r\n if (name) node.scope = `language:${name}`\r\n\r\n this.add(node)\r\n }\r\n\r\n toHTML() {\r\n const renderer = new HTMLRenderer(this, this.options)\r\n return renderer.value()\r\n }\r\n\r\n finalize() {\r\n this.closeAllNodes()\r\n return true\r\n }\r\n}\r\n\r\n/**\r\n * @typedef {object} Renderer\r\n * @property {(text: string) => void} addText\r\n * @property {(node: Node) => void} openNode\r\n * @property {(node: Node) => void} closeNode\r\n * @property {() => string} value\r\n */\r\n\r\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\r\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\r\n/** */\r\n\r\nconst SPAN_CLOSE = '</span>'\r\n\r\n/**\r\n * Determines if a node needs to be wrapped in <span>\r\n *\r\n * @param node */\r\nconst emitsWrappingTags = (node) =>\r\n // rarely we can have a sublanguage where language is undefined\r\n // TODO: track down why\r\n !!node.scope\r\n\r\n/**\r\n *\r\n * @param name\r\n * @param options\r\n */\r\nconst scopeToCSSClass = (name, { prefix }) => {\r\n // sub-language\r\n if (name.startsWith('language:')) {\r\n return name.replace('language:', 'language-')\r\n }\r\n // tiered scope: comment.line\r\n if (name.includes('.')) {\r\n const pieces = name.split('.')\r\n return [\r\n `${prefix}${pieces.shift()}`,\r\n ...(pieces.map((x, i) => `${x}${'_'.repeat(i + 1)}`))\r\n ].join(' ')\r\n }\r\n // simple scope\r\n return `${prefix}${name}`\r\n}\r\n\r\n/** @type {Renderer} */\r\nexport class HTMLRenderer {\r\n /**\r\n * Creates a new HTMLRenderer\r\n *\r\n * @param parseTree - the parse tree (must support `walk` API)\r\n * @param options\r\n */\r\n constructor(parseTree, options) {\r\n this.buffer = ''\r\n this.classPrefix = options.classPrefix\r\n this.openStack = []\r\n parseTree.walk(this)\r\n }\r\n\r\n /**\r\n * Adds texts to the output stream\r\n *\r\n * @param text */\r\n addText(text) {\r\n const lines = text.split(BREAK_LINE_REGEXP).map(escapeHTML)\r\n const lineBreak = new Array(this.openStack.length).fill(SPAN_CLOSE).join('') + '\\n' + this.openStack.join('')\r\n this.buffer += lines.join(lineBreak)\r\n }\r\n\r\n /**\r\n * Adds a node open to the output stream (if needed)\r\n *\r\n * @param node */\r\n openNode(node) {\r\n if (!emitsWrappingTags(node)) return\r\n\r\n const className = scopeToCSSClass(node.scope,\r\n { prefix: this.classPrefix })\r\n this.span(className)\r\n }\r\n\r\n /**\r\n * Adds a node close to the output stream (if needed)\r\n *\r\n * @param node */\r\n closeNode(node) {\r\n if (!emitsWrappingTags(node)) return\r\n\r\n this.buffer += SPAN_CLOSE\r\n this.openStack.pop()\r\n }\r\n\r\n /**\r\n * returns the accumulated buffer\r\n */\r\n value() {\r\n return this.buffer\r\n }\r\n\r\n // helpers\r\n\r\n /**\r\n * Builds a span element\r\n *\r\n * @param className */\r\n span(className) {\r\n const span = `<span class=\"${className}\">`\r\n this.buffer += span\r\n this.openStack.push(span)\r\n }\r\n}\r\n\r\n/**\r\n * @param value\r\n * @returns\r\n */\r\nexport function escapeHTML(value) {\r\n return value\r\n .replace(/&/g, '&')\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''')\r\n}\r\n","import { Injectable, PendingTasks, inject, DOCUMENT, resource } from '@angular/core'\r\nimport type { HLJSApi } from 'highlight.js'\r\nimport { filter, firstValueFrom } from 'rxjs'\r\nimport { toObservable } from '@angular/core/rxjs-interop'\r\nimport { NXT_HIGHLIGHT_OPTIONS } from './highlight.model'\r\nimport { LoaderErrors } from './loader-errors'\r\nimport { TokenTreeEmitter } from './output'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HighlightLoader {\r\n\r\n private readonly document: Document = inject(DOCUMENT)\r\n private readonly options = inject(NXT_HIGHLIGHT_OPTIONS, { optional: true })\r\n private readonly pendingTasks = inject(PendingTasks)\r\n\r\n private _t = this.pendingTasks.add()\r\n readonly hljs = resource({\r\n loader: () => this.loadLibrary()\r\n .then(async hljs => {\r\n if (this.options?.lineNumbersLoader) {\r\n const plugin = await this.options.lineNumbersLoader();\r\n (hljs as any).lineNumbersBlock = plugin.activateLineNumbers(this.document)\r\n }\r\n\r\n hljs.configure({\r\n __emitter: TokenTreeEmitter\r\n })\r\n\r\n if (this.options?.highlightOptions)\r\n hljs.configure(this.options.highlightOptions)\r\n\r\n return hljs\r\n })\r\n .finally(this._t)\r\n }).asReadonly()\r\n\r\n private readonly _ready$ = toObservable(this.hljs.value).pipe(filter((v): v is HLJSApi => !!v))\r\n\r\n /**\r\n * @deprecated use hljs.value()\r\n */\r\n get ready() {\r\n return firstValueFrom(this._ready$)\r\n }\r\n\r\n private themeLinkElement?: HTMLLinkElement\r\n\r\n constructor() {\r\n if (this.options?.themePath) {\r\n this.loadTheme(this.options.themePath)\r\n }\r\n }\r\n\r\n /**\r\n * Lazy-Load highlight.js library\r\n */\r\n private async loadLibrary(): Promise<HLJSApi> {\r\n if (this.options) {\r\n if (this.options.fullLibraryLoader && this.options.coreLibraryLoader) {\r\n throw new Error(LoaderErrors.FULL_WITH_CORE_LIBRARY_IMPORTS)\r\n }\r\n if (this.options.fullLibraryLoader && this.options.languages) {\r\n throw new Error(LoaderErrors.FULL_WITH_LANGUAGE_IMPORTS)\r\n }\r\n if (this.options.coreLibraryLoader && !this.options.languages) {\r\n throw new Error(LoaderErrors.CORE_WITHOUT_LANGUAGE_IMPORTS)\r\n }\r\n if (!this.options.coreLibraryLoader && this.options.languages) {\r\n throw new Error(LoaderErrors.LANGUAGE_WITHOUT_CORE_IMPORTS)\r\n }\r\n if (this.options.fullLibraryLoader) {\r\n return this.options.fullLibraryLoader()\r\n }\r\n if (this.options.coreLibraryLoader && this.options.languages && Object.keys(this.options.languages).length) {\r\n return this.options.coreLibraryLoader().then(hljs => this.loadLanguages(hljs))\r\n }\r\n }\r\n throw new Error(LoaderErrors.NO_FULL_AND_NO_CORE_IMPORTS)\r\n }\r\n\r\n /**\r\n * Lazy-load highlight.js languages\r\n */\r\n private async loadLanguages(hljs: HLJSApi) {\r\n await Promise.all(Object.entries(this.options?.languages || {})\r\n .map(([langName, langLoader]) => langLoader().then(langFunc => hljs.registerLanguage(langName, langFunc))))\r\n return hljs\r\n }\r\n\r\n /**\r\n * Reload theme styles\r\n */\r\n setTheme(path: string): void {\r\n if (this.themeLinkElement) {\r\n this.themeLinkElement.href = path\r\n } else {\r\n this.loadTheme(path)\r\n }\r\n }\r\n\r\n /**\r\n * Load theme\r\n */\r\n private loadTheme(path: string): void {\r\n this.themeLinkElement = this.document.createElement('link')\r\n this.themeLinkElement.href = path\r\n this.themeLinkElement.type = 'text/css'\r\n this.themeLinkElement.rel = 'stylesheet'\r\n this.themeLinkElement.media = 'screen,print'\r\n this.document.head.appendChild(this.themeLinkElement)\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core'\r\nimport type {\r\n AutoHighlightResult,\r\n HLJSApi,\r\n HighlightOptions,\r\n HighlightResult,\r\n LanguageFn\r\n} from 'highlight.js'\r\nimport { LineNumbersOptions } from './highlight.model'\r\nimport { HighlightLoader } from './highlight.loader'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HighlightJS {\r\n\r\n private readonly loader = inject(HighlightLoader)\r\n\r\n readonly hljs = this.loader.hljs.value\r\n\r\n /**\r\n * Core highlighting function. Accepts the code to highlight (string) and a list of options (object)\r\n *\r\n * @deprecated use hljs().highlight\r\n */\r\n async highlight(code: string, options: HighlightOptions): Promise<HighlightResult> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n return hljs.highlight(code, options)\r\n }\r\n\r\n /**\r\n * Highlighting with language detection.\r\n *\r\n * @deprecated use hljs().highlightAuto\r\n */\r\n async highlightAuto(value: string, languageSubset?: string[]): Promise<AutoHighlightResult> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n return hljs.highlightAuto(value, languageSubset)\r\n }\r\n\r\n /**\r\n * Applies highlighting to a DOM node containing code.\r\n * This function is the one to use to apply highlighting dynamically after page load or within initialization code of third-party JavaScript frameworks.\r\n * The function uses language detection by default but you can specify the language in the class attribute of the DOM node. See the scopes reference for all available language names and scopes.\r\n *\r\n * @deprecated use hljs().highlightElement\r\n */\r\n async highlightElement(element: HTMLElement): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.highlightElement(element)\r\n }\r\n\r\n /**\r\n * Applies highlighting to all elements on a page matching the configured cssSelector. The default cssSelector value is 'pre code',\r\n * which highlights all code blocks. This can be called before or after the page’s onload event has fired.\r\n *\r\n * @deprecated use hljs().highlightAll\r\n */\r\n async highlightAll(): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.highlightAll()\r\n }\r\n\r\n /**\r\n * Adds new language to the library under the specified name. Used mostly internally.\r\n * The function is passed the hljs object to be able to use common regular expressions defined within it.\r\n *\r\n * @deprecated use hljs().registerLanguage\r\n */\r\n async registerLanguage(languageName: string, languageDefinition: LanguageFn): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.registerLanguage(languageName, languageDefinition)\r\n }\r\n\r\n /**\r\n * Removes a language and its aliases from the library. Used mostly internally\r\n *\r\n * @deprecated use hljs().unregisterLanguage\r\n */\r\n async unregisterLanguage(languageName: string): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.unregisterLanguage(languageName)\r\n }\r\n\r\n /**\r\n * Adds new language alias or aliases to the library for the specified language name defined under languageName key.\r\n *\r\n * @deprecated use hljs().registerAliases\r\n */\r\n async registerAliases(alias: string | string[], { languageName }: { languageName: string }): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.registerAliases(alias, { languageName })\r\n }\r\n\r\n /**\r\n * @return The languages names list.\r\n * @deprecated use hljs().listLanguages\r\n */\r\n async listLanguages(): Promise<string[]> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n return hljs.listLanguages()\r\n }\r\n\r\n /**\r\n * Looks up a language by name or alias.\r\n *\r\n * @deprecated use hljs().getLanguage\r\n */\r\n async getLanguage(name: string): Promise<any> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n return hljs.getLanguage(name)\r\n }\r\n\r\n /**\r\n * Enables safe mode. This is the default mode, providing the most reliable experience for production usage.\r\n *\r\n * @deprecated use hljs().safeMode\r\n */\r\n async safeMode(): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.safeMode()\r\n }\r\n\r\n /**\r\n * Enables debug/development mode.\r\n *\r\n * @deprecated use hljs().debugMode\r\n */\r\n async debugMode(): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready\r\n hljs.debugMode()\r\n }\r\n\r\n /**\r\n * Display line numbers\r\n *\r\n * @deprecated use hljs().lineNumbersBlock\r\n */\r\n async lineNumbersBlock(code: string, options: LineNumbersOptions): Promise<void> {\r\n const hljs: HLJSApi = await this.loader.ready;\r\n (hljs as any).lineNumbersBlock(code, options)\r\n }\r\n}\r\n","/// <reference types=\"trusted-types\" />\r\nimport { TrustedTypePolicy } from 'trusted-types/lib'\r\n\r\n/**\r\n * Enable usage of the library together with \"trusted-types\" HTTP Content-Security-Policy (CSP)\r\n *\r\n * Can be added to angular.json -> serve -> options -> headers to try it out in DEV mode\r\n * \"Content-Security-Policy\": \"trusted-types nxt-highlightjs; require-trusted-types-for 'script'\"\r\n *\r\n * Read more...\r\n * Angular Security: https://angular.io/guide/security#enforcing-trusted-types\r\n * Trusted Types: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/trusted-types\r\n *\r\n * @internal\r\n */\r\nlet policy: Pick<TrustedTypePolicy<{\r\n createHTML: (s: string) => string\r\n}>, 'name' | 'createHTML'> | undefined\r\n\r\n/**\r\n * @internal\r\n */\r\nfunction getPolicy() {\r\n if (!policy) {\r\n try {\r\n policy = window?.trustedTypes?.createPolicy('nxt-highlightjs', {\r\n createHTML: (s: string) => s\r\n })\r\n } catch {\r\n // trustedTypes.createPolicy throws if called with a name that is\r\n // already registered, even in report-only mode. Until the API changes,\r\n // catch the error not to break the applications functionally. In such\r\n // cases, the code will fall back to using strings.\r\n }\r\n }\r\n return policy\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function trustedHTMLFromStringBypass(html: string) {\r\n return getPolicy()?.createHTML(html) || html\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n InputSignal,\r\n OutputEmitterRef,\r\n SecurityContext,\r\n WritableSignal,\r\n effect,\r\n inject\r\n} from '@angular/core'\r\nimport { DomSanitizer } from '@angular/platform-browser'\r\nimport type { AutoHighlightResult, HighlightResult } from 'highlight.js'\r\nimport { HighlightJS } from './highlight.service'\r\nimport { trustedHTMLFromStringBypass } from './trusted-types'\r\n\r\n@Directive()\r\nexport abstract class HighlightBase {\r\n\r\n protected readonly hljs: HighlightJS = inject(HighlightJS)\r\n\r\n private readonly nativeElement: HTMLElement = inject(ElementRef<HTMLElement>).nativeElement\r\n private readonly sanitizer: DomSanitizer = inject(DomSanitizer)\r\n\r\n /**\r\n * Code to highlight\r\n */\r\n abstract readonly code: InputSignal<string | undefined>\r\n\r\n /**\r\n * Highlighted result\r\n */\r\n abstract readonly highlightResult: WritableSignal<HighlightResult | AutoHighlightResult | undefined>\r\n\r\n /**\r\n * Stream that emits when code string is highlighted\r\n */\r\n abstract readonly highlighted: OutputEmitterRef<HighlightResult | AutoHighlightResult | undefined>\r\n\r\n constructor() {\r\n effect(() => {\r\n const code = this.code()\r\n if (code) {\r\n const res = this.highlightElement(code)\r\n if (res) {\r\n this.setInnerHTML(res?.value ?? undefined)\r\n this.highlightResult.set(res)\r\n // Forward highlight response to the highlighted output\r\n this.highlighted.emit(res)\r\n }\r\n } else {\r\n this.setTextContent('')\r\n }\r\n })\r\n }\r\n\r\n protected abstract highlightElement(code: string): HighlightResult | AutoHighlightResult | undefined\r\n\r\n private setTextContent(content: string): void {\r\n this.nativeElement.textContent = content\r\n }\r\n\r\n private setInnerHTML(content: string | undefined): void {\r\n this.nativeElement.innerHTML = trustedHTMLFromStringBypass(\r\n this.sanitizer.sanitize(SecurityContext.HTML, content || null) || ''\r\n ) as any\r\n }\r\n}\r\n","import {\r\n Directive,\r\n input,\r\n output,\r\n signal\r\n} from '@angular/core'\r\nimport type { AutoHighlightResult } from 'highlight.js'\r\nimport { HighlightBase } from './highlight-base.directive'\r\n\r\n@Directive({\r\n selector: '[nxtHighlightAuto]',\r\n providers: [{ provide: HighlightBase, useExisting: HighlightAutoDirective }],\r\n host: {\r\n '[class.hljs]': 'true'\r\n }\r\n})\r\nexport class HighlightAutoDirective extends HighlightBase {\r\n\r\n /**\r\n * Code to highlight\r\n */\r\n readonly code = input<string>(undefined, { alias: 'nxtHighlightAuto' })\r\n\r\n /**\r\n * Highlighted result\r\n */\r\n readonly highlightResult = signal<AutoHighlightResult | undefined>(undefined)\r\n\r\n /**\r\n * An optional array of language names and aliases restricting detection to only those languages\r\n *\r\n * The subset can also be set with configure, but the local parameter overrides the option if set.\r\n */\r\n readonly languages = input<string[]>()\r\n\r\n /**\r\n * Stream that emits when code string is highlighted\r\n */\r\n readonly highlighted = output<AutoHighlightResult>()\r\n\r\n protected highlightElement(code: string) {\r\n const hljs = this.hljs.hljs()\r\n return hljs?.highlightAuto(code, this.languages())\r\n }\r\n}\r\n\r\n","import {\r\n booleanAttribute,\r\n Directive,\r\n input,\r\n output,\r\n signal\r\n} from '@angular/core'\r\nimport type { HighlightResult } from 'highlight.js'\r\nimport { HighlightBase } from './highlight-base.directive'\r\n\r\n@Directive({\r\n selector: '[nxtHighlight]',\r\n providers: [{ provide: HighlightBase, useExisting: HighlightDirective }],\r\n host: {\r\n '[class.hljs]': 'true'\r\n }\r\n})\r\nexport class HighlightDirective extends HighlightBase {\r\n\r\n /**\r\n * Code to highlight\r\n */\r\n readonly code = input<string>(undefined, { alias: 'nxtHighlight' })\r\n\r\n /**\r\n * Highlighted result\r\n */\r\n readonly highlightResult = signal<HighlightResult | undefined>(undefined)\r\n\r\n /**\r\n * The language name highlight only one language\r\n */\r\n readonly language = input.required<string>()\r\n\r\n /**\r\n * An optional flag, when set to true it forces highlighting to finish even in case of detecting\r\n * illegal syntax for the language instead of throwing an exception\r\n */\r\n readonly ignoreIllegals = input<boolean, unknown>(undefined, {\r\n transform: booleanAttribute\r\n })\r\n\r\n /**\r\n * Stream that emits when code string is highlighted\r\n */\r\n readonly highlighted = output<HighlightResult>()\r\n\r\n highlightElement(code: string) {\r\n const hljs = this.hljs.hljs()\r\n return hljs?.highlight(code, {\r\n language: this.language(),\r\n ignoreIllegals: this.ignoreIllegals()\r\n })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { HighlightAutoDirective } from './highlight-auto.directive'\r\nimport { HighlightDirective } from './highlight.directive'\r\n\r\n/** @deprecated use standalone imports */\r\n@NgModule({\r\n imports: [HighlightDirective, HighlightAutoDirective],\r\n exports: [HighlightDirective, HighlightAutoDirective]\r\n})\r\nexport class HighlightModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|